{"version":3,"file":"vendor.b4c0bd238fad8f7d.js","mappings":"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CAEDC,UAAa,EAGV,MAAMC,WAAeR,GACxB9B,iBACI/yG,MAAM+yG,iBAENU,GAAO1xH,KAAM,CACTyH,KAAM,UACNuqH,YAAa,GACbuB,SAAU,IACVC,SAAU,EACVC,SAAU,EACVC,eAAgB,IAChBC,gBAAiB,CACb57F,EAAK,KACL67F,EAAK,KACLC,EAAK,SACLC,EAAK,UAETlC,aAAc,CACV,EAAK,CAAEN,QAAW,YAAappH,MAAS,GACxC,EAAK,CAAEopH,QAAW,YAAappH,MAAS,GACxC,EAAK,CAAEopH,QAAW,YAAappH,MAAS,GACxC,EAAK,CAAEopH,QAAW,YAAappH,MAAS,GACxC,EAAK,CAAEopH,QAAW,YAAappH,MAAS,GACxC,EAAK,CAAEopH,QAAW,YAAappH,MAAS,GACxC,EAAK,CAAEopH,QAAW,YAAappH,MAAS,GACxC,EAAK,CAAEopH,QAAW,YAAappH,MAAS,GACxC,EAAK,CAAEopH,QAAW,YAAappH,MAAS,GACxC,EAAK,CAAEopH,QAAW,YAAappH,MAAS,GACxC6rH,EAAK,CAAEzC,QAAW,YAAappH,MAAS,IACxC2rH,EAAK,CAAEvC,QAAW,YAAappH,MAAS,IACxC8rH,EAAK,CAAE1C,QAAW,YAAappH,MAAS,IACxC+rH,EAAK,CAAE3C,QAAW,YAAappH,MAAS,IACxCgsH,EAAK,CAAE5C,QAAW,YAAappH,MAAS,IACxCisH,EAAK,CAAE7C,QAAW,YAAappH,MAAS,IACxCksH,EAAK,CAAE9C,QAAW,YAAappH,MAAS,IACxCmsH,EAAK,CAAE/C,QAAW,YAAappH,MAAS,IACxCosH,EAAK,CAAEhD,QAAW,YAAappH,MAAS,IACxCqsH,EAAK,CAAEjD,QAAW,YAAappH,MAAS,IACxCssH,EAAK,CAAElD,QAAW,YAAappH,MAAS,IACxCusH,EAAK,CAAEnD,QAAW,YAAappH,MAAS,IACxCwsH,EAAK,CAAEpD,QAAW,YAAappH,MAAS,IACxCysH,EAAK,CAAErD,QAAW,YAAappH,MAAS,IACxC0sH,EAAK,CAAEtD,QAAW,YAAappH,MAAS,IACxC2sH,EAAK,CAAEvD,QAAW,YAAa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AkB,oBAG1BC,YAAa,CACT98X,KAAM,iBACNq6X,KAAM,cACNx6X,OAAQ,YACRy6X,MAAO,UAEX57U,YAAa,CACT1+C,KAAM,kBACNq6X,KAAM,YACNx6X,OAAQ,WACRy6X,MAAO,UAEXpnV,KAAM,CACFvN,OAAQ,CACJo3V,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJz9U,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJg7U,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ0C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJz9U,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJg7U,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ0C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,cAIZhqV,OAAQ,CACJrN,OAAQ,CACJo3V,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJz9U,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ09U,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJz9U,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ09U,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,cAIZC,SAAU,CACNt3V,OAAQ,CACJo3V,YAAa,CACT,KACA,KACA,KACA,MAEJz9U,OAAQ,CACJ,IACA,IACA,IACA,KAEJ09U,KAAM,CACF,cACA,cACA,cACA,gBAGR,cAAe,CACXD,YAAa,CACT,KACA,KACA,KACA,MAEJz9U,OAAQ,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Aojc1D,GApjc0DA,MAojc1D,+BApjc0DA,CAojc1D,yDApjc0DA,MA2tc/F,wBA3tc+FA,cA6tcvF,wBA7tcuFA,CA6tcvF,kBA7tcuFA,CA6tcvF,kBA7tcuFA,CA6tcvF,kCA7tcuFA,CA6tcvF,0CA7tcuFA,CA6tcvF,wCA7tcuFA,CA6tcvF,yCA7tcuFA,CA6tcvF,qCA7tcuFA,CA6tcvF,4FA7tcuFA,MAgienF,uCAhiemFA,eAiie/E,wCAjie+EA,CAiie/E,uEAjie+EA,MAqie/E,GArie+EA,MAsie3E,GAtie2EA,sEAsie3E,GAtie2EA,MAsie3E,IAtie2EA,MAsie3E,gEAtie2EA,MAoienF,GApiemFA,MAqie/E,0BArie+EA,qCAqiezC,GArieyCA,MAqiezC,oDArieyCA,MAyienF,GAziemFA,MAyie/C,GAzie+CA,wDAyie/C,GAzie+CA,YAyie/C,0EAzie+CA,MA0ienF,GA1iemFA,MA2ie/E,aA3ie+EA,qCA6ie3E,GA7ie2EA,MA6ie3E,yCA7ie2EA,MA8ie3E,2BA9ie2EA,CA8ie3E,iEA9ie2EA,MA+hevF,GA/heuFA,MAgienF,gBAhiemFA,MAoienF,0BApiemFA,MAyienF,0BAziemFA,MA0ienF,0BA1iemFA,qCAgierE,GAhieqEA,MAgierE,6BAhieqEA,MAoiepE,GApieoEA,MAoiepE,uBApieoEA,MAyiepE,GAzieoEA,MAyiepE,wBAzieoEA,MA0iepE,GA1ieoEA,MA0iepE,wHA1ieoEA,MAmjenF,sCAnjemFA,eAqje/E,qCArje+EA,CAqje/E,0BArje+EA,MAqje/E,sCArje+EA,MAwjenF,qCAxjemFA,MAmjenF,gBAnjemFA,MAwjenF,gCAxjemFA,eAoje9E,0BApje8EA,MAwje7E,GAxje6EA,MAwje7E,sDAxje6EA,MA8he3F,GA9he2FA,MA+hevF,0BA/heuFA,MAkjevF,8BAljeuFA,sDA+hexE,GA/hewEA,MA+hexE,sBA/hewEA,CA+hexE,0DA/hewEA,MA4jevF,uCA5jeuFA,eA8jenF,4CA9jemFA,CA8jenF,2EA9jemFA,MAkkenF,0CAlkemFA,eAoke/E,kBApke+EA,CAoke/E,yEApke+EA,MAykenF,sCAzkemFA,eA2ke/E,kBA3ke+EA,CA2ke/E,yEA3ke+EA,MAglenF,2BAhlemFA,eAole/E,yEAple+EA,MAwlenF,2BAxlemFA,eA4le/E,0EA5le+EA,MAikevF,KAjkeuFA,MAkkenF,oCAlkemFA,MAykenF,gCAzkemFA,MAglenF,qBAhlemFA,MAwlenF,qBAxlemFA,qCAikezE,4BAjkeyEA,MAmke9E,GAnke8EA,MAmke9E,0BAnke8EA,MA0ke9E,GA1ke8EA,MA0ke9E,uBA1ke8EA,MAile9E,GAjle8EA,MAile9E,qDAjle8EA,MA2je3F,GA3je2FA,MA4jevF,iBA5jeuFA,MAikevF,4BAjkeuFA,oCA6jelF,GA7jekFA,MA6jelF,iCA7jekFA,MAike7C,GAjke6CA,MAike7C,yDAjke6CA,MA+we3F,oCA/we2FA,MA8we/F,GA9we+FA,MA+we3F,iBA/we2FA,oCAixezE,GAjxeyEA,MAixezE,gEAjxeyEA,MAqyenF,GAryemFA,MAsyenF,GAtyemFA,wDAsyenF,GAtyemFA,MAsyenF,8BAtyemFA,MAsyenF,qSAtyemFA,cA8xevF,GA9xeuFA,MA+xenF,SA/xemFA,MA+xezD,mBA/xeyDA,MA+xezDuE,WA/xeyDvE,MA+xezD,UA/xeyDA,MA+xehDgE,sBAAT,GA/xeyDhE,cAqyenF,2BAryemFA,MAwyenF,0BAxyemFA,uCAiye/E,GAjye+EA,MAiye/E,UAjye+EA,MAiye/E,kCAjye+EA,MAkye/E,2BAlye+EA,CAkye/E,iCAlye+EA,MAqyepE,GAryeoEA,MAqyepE,uCAryeoEA,MAyye/E,GAzye+EA,MAyye/E,kBAzye+EA,MAyye/E,kPAzye+EA,MAmxe/F,SAnxe+FA,CAmxe/F,SAnxe+FA,MA8xevF,4BA9xeuFA,sCAwxe3F,oCAxxe2FA,CAwxe3F,oBAxxe2FA,CAwxe3F,yCAxxe2FA,CAwxe3F,mBAxxe2FA,CAwxe3F,8BAxxe2FA,MAmxe3F,8BAnxe2FA,CAmxe3F,oBAnxe2FA,CAmxe3F,8BAnxe2FA,MA8xexE,GA9xewEA,MA8xexE,4KA9xewEA,MAk0evF,wCAl0euFA,mCAk0e9B,kDAl0e8BA,CAk0e9B,0BAl0e8BA,MAk0e9B,uMAl0e8BA,MAwze3F,UAxze2FA,MAk0evF,iBAl0euFA,6DA4zevF,oCA5zeuFA,CA4zevF,sBA5zeuFA,CA4zevF,sBA5zeuFA,CA4zevF,mBA5zeuFA,CA4zevF,aA5zeuFA,MAk0ezE,GAl0eyEA,MAk0ezE,kEAl0eyEA,MAuze/F,GAvze+FA,MAwze3F,iBAxze2FA,oCAwzepE,GAxzeoEA,MAwzepE,uDAxzeoEA,MAkwfvF,oCAlwfuFA,MAiwf3F,GAjwf2FA,MAkwfvF,iBAlwfuFA,qCAkwfhD,GAlwfgDA,MAkwfhD,8CAlwfgDA,MAowf3F,uBApwf2FA,eAuwfnF,yCAvwfmFA,CAuwfnF,+CAvwfmFA,MA4wf3F,gDA5wf2FA,eAqxfvF,4BArxfuFA,MAmxfvF,kCAnxfuFA,MA8wfnF,cA9wfmFA,CA8wfnF,qCA9wfmFA,CA8wfnF,WA9wfmFA,CA8wfnF,WA9wfmFA,CA8wfnF,yBA9wfmFA,CA8wfnF,qBA9wfmFA,CA8wfnF,sDA9wfmFA,CA8wfnF,yCA9wfmFA,CA8wfnF,uCA9wfmFA,CA8wfnF,qBA9wfmFA,MAuxfvF,gDAvxfuFA,MA0vfnG,GA1vfmGA,MA2vf/F,UA3vf+FA,MAiwf3F,2BAjwf2FA,MAowf3F,iBApwf2FA,MA4wf3F,kBA5wf2FA,4CA6vfvF,GA7vfuFA,MA6vfvF,yCA7vfuFA,CA6vfvF,yCA7vfuFA,CA6vfvF,qCA7vfuFA,CA6vfvF,iDA7vfuFA,MAiwf5E,GAjwf4EA,MAiwf5E,+BAjwf4EA,MAqwftF,GArwfsFA,MAqwftF,iEArwfsFA,MA4wfpE,GA5wfoEA,MA4wfpE,oBA5wfoEA,CA4wfpE,yHA5wfoEA,MAkyf3F,wCAlyf2FA,eAoyfvF,kBApyfuFA,MAoyfvF,iGApyfuFA,MAwyf3F,GAxyf2FA,MAyyfvF,GAzyfuFA,qCAyyfvF,GAzyfuFA,MAyyfvF,oDAzyfuFA,MAgyfnG,UAhyfmGA,CAgyfnG,QAhyfmGA,MAkyf3F,iBAlyf2FA,MAwyf3F,2BAxyf2FA,sCAiyf3F,GAjyf2FA,MAiyf3F,qBAjyf2FA,MAmyftF,GAnyfsFA,MAmyftF,uEAnyfsFA,MAwyf5E,GAxyf4EA,MAwyf5E,gGAxyf4EA,MA+yf/F,wBA/yf+FA,gDAizfvF,oBAjzfuFA,CAizfvF,kBAjzfuFA,CAizfvF,SAjzfuFA,CAizfvF,sEAjzfuFA,CAizfvF,4CAjzfuFA,CAizfvF,8CAjzfuFA,CAizfvF,0CAjzfuFA,CAizfvF,eAjzfuFA,CAizfvF,wCAjzfuFA,CAizfvF,uCAjzfuFA,CAizfvF,yCAjzfuFA,CAizfvF,qCAjzfuFA,CAizfvF,8EAjzfuFA,MAi1fvF,oCAj1fuFA,MAg1f3F,GAh1f2FA,MAi1fvF,iBAj1fuFA,qCAi1fhD,GAj1fgDA,MAi1fhD,sDAj1fgDA,cA61fvF,UA71fuFA,MAk2f5D,mBAl2f4DA,MAk2f5D+1O,WAl2f4D/1O,MAk2f5D,eAl2f4DA,QAk2f5D,OAl2f4DA,MAk2fnDo1O,4BAAT,GAl2f4Dp1O,2DA+1fnF,mCA/1fmFA,MAg2fnF,+BAh2fmFA,CAg2fnF,gEAh2fmFA,MAm1f3F,WAn1f2FA,MA61fvF,iBA71fuFA,uEAs1fnF,uCAt1fmFA,CAs1fnF,oBAt1fmFA,CAs1fnF,uBAt1fmFA,CAs1fnF,kBAt1fmFA,CAs1fnF,uBAt1fmFA,MA81flF,GA91fkFA,MA81flF,0EA91fkFA,MAo2f3F,gDAp2f2FA,kDAu3fnF,iCAv3fmFA,CAu3fnF,4DAv3fmFA,CAu3fnF,+DAv3fmFA,CAu3fnF,+CAv3fmFA,CAu3fnF,iFAv3fmFA,MAs2fnF,mBAt2fmFA,CAs2fnF,sCAt2fmFA,CAs2fnF,WAt2fmFA,CAs2fnF,kBAt2fmFA,CAs2fnF,yBAt2fmFA,CAs2fnF,yBAt2fmFA,CAs2fnF,yCAt2fmFA,CAs2fnF,wCAt2fmFA,CAs2fnF,wCAt2fmFA,CAs2fnF,uBAt2fmFA,CAs2fnF,kBAt2fmFA,CAs2fnF,aAt2fmFA,CAs2fnF,oBAt2fmFA,CAs2fnF,qBAt2fmFA,CAs2fnF,wDAt2fmFA,MAw2fnF,uDAx2fmFA,CAw2fnF,gEAx2fmFA,CAw2fnF,mGAx2fmFA,MAg0f/F,WAh0f+FA,MAg1f3F,2BAh1f2FA,MAm1f3F,kBAn1f2FA,MAo2f3F,mBAp2f2FA,sEAy0f3F,+CAz0f2FA,MAy0f3F,uBAz0f2FA,CAy0f3F,mBAz0f2FA,CAy0f3F,wEAz0f2FA,CAy0f3F,0CAz0f2FA,CAy0f3F,yDAz0f2FA,MAm0fvF,uBAn0fuFA,CAm0fvF,kBAn0fuFA,CAm0fvF,uCAn0fuFA,CAm0fvF,yCAn0fuFA,CAm0fvF,qCAn0fuFA,CAm0fvF,gDAn0fuFA,CAm0fvF,qBAn0fuFA,MAm0fvF,wBAn0fuFA,MA80f3F,sCA90f2FA,MAg1f5E,GAh1f4EA,MAg1f5E,+BAh1f4EA,MAo1ftF,GAp1fsFA,MAo1ftF,iEAp1fsFA,MA+3fpE,GA/3foEA,MA+3fpE,oBA/3foEA,CA+3fpE,wDA/3foEA,MAg5f3F,2HAh5f2FA,MAk4f/F,WAl4f+FA,MAg5f3F,kBAh5f2FA,MAi5f3F,WAj5f2FA,MAk5f3F,WAl5f2FA,MA65fvF,2BA75fuFA,wEAw4f3F,oBAx4f2FA,MA04fvF,uBA14fuFA,CA04fvF,kBA14fuFA,CA04fvF,yCA14fuFA,CA04fvF,qBA14fuFA,CA04fvF,uBA14fuFA,MAg5fpD,GAh5foDA,MAg5fpD,oBAh5foDA,MAq5fnF,GAr5fmFA,MAq5fnF,yCAr5fmFA,CAq5fnF,oBAr5fmFA,CAq5fnF,uBAr5fmFA,CAq5fnF,kBAr5fmFA,CAq5fnF,aAr5fmFA,CAq5fnF,8BAr5fmFA,MAm5fvF,yBAn5fuFA,MA85fnF,GA95fmFA,MA85fnF,gDA95fmFA,CA85fnF,0BA95fmFA,MA85fnF,qDA95fmFA,MAk7fvF,qCAl7fuFA,MAi7f3F,GAj7f2FA,MAk7fvF,kBAl7fuFA,qCAk7fhD,GAl7fgDA,MAk7fhD,8CAl7fgDA,MAo7f3F,uBAp7f2FA,+BAu7fnF,uCAv7fmFA,CAu7fnF,0KAv7fmFA,MA47f3F,WA57f2FA,MAi8fvF,2BAj8fuFA,4FA67fnF,uCA77fmFA,CA67fnF,wCA77fmFA,MA+7fvF,mCA/7fuFA,MAk8fnF,GAl8fmFA,MAk8fnF,kBAl8fmFA,MAk8fnF,sJAl8fmFA,MAu6f/F,WAv6f+FA,MAi7f3F,2BAj7f2FA,MAo7f3F,iBAp7f2FA,MA47f3F,mBA57f2FA,oDA66fvF,uCA76fuFA,CA66fvF,yCA76fuFA,CA66fvF,qCA76fuFA,CA66fvF,iDA76fuFA,MAi7f5E,GAj7f4EA,MAi7f5E,+BAj7f4EA,MAq7ftF,GAr7fsFA,MAq7ftF,iEAr7fsFA,MAg8fpE,GAh8foEA,MAg8fpE,0BAh8foEA,CAg8fpE,4DAh8foEA,MA8yfnG,GA9yfmGA,MA+yf/F,mBA/yf+FA,MAg0f/F,mBAh0f+FA,MAk4f/F,mBAl4f+FA,MAu6f/F,kBAv6f+FA,kDA+yf1F,GA/yf0FA,MA+yf1F,uEA/yf0FA,MAi0f1F,GAj0f0FA,MAi0f1F,oEAj0f0FA,MAk4f1F,GAl4f0FA,MAk4f1F,0LAl4f0FA,MAu6f1F,GAv6f0FA,MAu6f1F,+KAv6f0FA,cA88fnG,4BA98fmGA,MA88f5D,oBA98f4DA,MA88f5D4yY,WA98f4D5yY,QA88f5D,OA98f4DA,MA88flD6yY,kBAAV,GA98f4D7yY,sMA+5hBnG,cA/5hBmGA,CA+5hBnG,UA/5hBmGA,CA+5hBnG,iBA/5hBmGA,MA26hBvF,eA36hBuFA,CA26hBvF,cA36hBuFA,cAq8hB3F,yBAr8hB2FA,cAu8hB/F,WAv8hB+FA,MAw8hB3F,SAx8hB2FA,sCAg6hB9E,4BAh6hB8EA,MAi6hB/F,4BAj6hB+FA,MAi6hB/F,4EAj6hB+FA,CAi6hB/F,WAj6hB+FA,MA06hBd,GA16hBcA,MA06hBd,4BA16hBcA,MA06hBpF,aA16hBoFA,MA66hBnF,GA76hBmFA,MA66hBnF,kBA76hBmFA,CA66hBnF,8BA76hBmFA,CA66hBnF,mCA76hBmFA,MAm7hBnF,GAn7hBmFA,MAm7hBnF,kBAn7hBmFA,CAm7hBnF,cAn7hBmFA,CAm7hBnF,cAn7hBmFA,CAm7hBnF,mBAn7hBmFA,CAm7hBnF,8BAn7hBmFA,CAm7hBnF,yCAn7hBmFA,CAm7hBnF,kCAn7hBmFA,CAm7hBnF,gCAn7hBmFA,CAm7hBnF,cAn7hBmFA,CAm7hBnF,0BAn7hBmFA,CAm7hBnF,oBAn7hBmFA,CAm7hBnF,0BAn7hBmFA,CAm7hBnF,sBAn7hBmFA,CAm7hBnF,sBAn7hBmFA,CAm7hBnF,wBAn7hBmFA,CAm7hBnF,6CAn7hBmFA,MAw8hBtF,GAx8hBsFA,MAw8hBtF,oDAx8hBsFA,MAg/hB3F,+CAh/hB2FA,MAk/hB/F,mDAl/hB+FA,MAs/hB/F,YAt/hB+FA,MAu/hB3F,SAv/hB2FA,oCAu/hBtF,GAv/hBsFA,MAu/hBtF,gFAv/hBsFA,MAutiB3F,eAvtiB2FA,MAwtiBvF,yCAxtiBuFA,MA4tiB3F,eA5tiB2FA,MA6tiBvF,mEA7tiBuFA,MAiuiB3F,UAjuiB2FA,MA2uiBvF,0BA3uiBuFA,4DAwuiBvF,iCAxuiBuFA,MAouiBnF,oCApuiBmFA,CAouiBnF,0CApuiBmFA,CAouiBnF,wBApuiBmFA,CAouiBnF,uDApuiBmFA,MA4uiBnF,GA5uiBmFA,MA4uiBnF,kBA5uiBmFA,MA4uiBnF,iFA5uiBmFA,MAq0iB/F,GAr0iB+FA,MAs0iB3F,YAt0iB2FA,MAs0iB9D,GAt0iB8DA,cAu0iB3F,UAv0iB2FA,CAu0iB3F,WAv0iB2FA,oCAs0iB9D,GAt0iB8DA,MAs0iB9D64K,2DAt0iB8D74K,MA00iB/F,uCA10iB+FA,cA00iB1D,4KA10iB0DA,MAmvnB/F,4DAnvnB+FA,cAovnB/F,oBApvnB+FA,MA8vnB3F,yBA9vnB2FA,MA8vnB3Fy5K,WA9vnB2Fz5K,QA8vnB3F,OA9vnB2FA,MA8vnB7EiE,mBAAiB,QAAjBge,GAAd,GA9vnB2FjiB,sCAsvnB3F,8CAtvnB2FA,CAsvnB3F,2BAtvnB2FA,CAsvnB3F,sBAtvnB2FA,CAsvnB3F,qBAtvnB2FA,CAsvnB3F,cAtvnB2FA,CAsvnB3F,sBAtvnB2FA,MAuvnB3F,yFAvvnB2FA,cAgwnB/F,+BAhwnB+FA,MAownB3F,qBApwnB2FA,MAownB3FixT,WApwnB2FjxT,QAownB3F,OApwnB2FA,MAownBjFk5K,sBAAV,GApwnB2Fl5K,sCAkwnB3F,4BAlwnB2FA,CAkwnB3F,6CAlwnB2FA,MAixnBvF,cAjxnBuFA,CAixnBvF,cAjxnBuFA,MAuxnB/E,gBAvxnB+EA,CAuxnB/E,cAvxnB+EA,uCAqxnBlF,4BArxnBkFA,MAsxnBxC,GAtxnBwCA,MAsxnBxC,4BAtxnBwCA,MAsxnB5E,aAtxnB4EA,MAyxnB3E,GAzxnB2EA,MAyxnB3E,8BAzxnB2EA,CAyxnB3E,iBAzxnB2EA,CAyxnB3E,mCAzxnB2EA,MA8xnB3E,GA9xnB2EA,MA8xnB3E,wBA9xnB2EA,CA8xnB3E,gBA9xnB2EA,CA8xnB3E,0BA9xnB2EA,CA8xnB3E,wCA9xnB2EA,CA8xnB3E,cA9xnB2EA,CA8xnB3E,iBA9xnB2EA,CA8xnB3E,kBA9xnB2EA,CA8xnB3E,0BA9xnB2EA,CA8xnB3E,6BA9xnB2EA,CA8xnB3E,4BA9xnB2EA,CA8xnB3E,sBA9xnB2EA,CA8xnB3E,iCA9xnB2EA,CA8xnB3E,0CA9xnB2EA,CA8xnB3E,yCA9xnB2EA,CA8xnB3E,kCA9xnB2EA,CA8xnB3E,0EA9xnB2EA,MA+0nBnF,YA/0nBmFA,MAg1nB/E,SAh1nB+EA,qCAg1nB1E,GAh1nB0EA,MAg1nB1E,0EAh1nB0EA,MA6wnB3F,YA7wnB2FA,MAixnBvF,oBAjxnBuFA,MAgznBjF,cAhznBiFA,CAgznBjF,cAhznBiFA,MAoznB/E,gBApznB+EA,CAoznB/E,cApznB+EA,cA+0nBnF,mBA/0nBmFA,uCAgxnBvF,2BAhxnBuFA,MAixnBjF,GAjxnBiFA,MAixnBjF,mBAjxnBiFA,MAiznBnF,GAjznBmFA,MAiznBnF,2DAjznBmFA,CAiznBnF,gDAjznBmFA,MAmznBxD,GAnznBwDA,MAmznBxD,+BAnznBwDA,MAmznBtB,mCAnznBsBA,MAsznB3E,GAtznB2EA,MAsznB3E,8BAtznB2EA,CAsznB3E,oBAtznB2EA,MAsznB3E,eAtznB2EA,CAsznB3E,mCAtznB2EA,MA2znB3E,GA3znB2EA,MA2znB3E,wBA3znB2EA,CA2znB3E,gBA3znB2EA,CA2znB3E,0BA3znB2EA,CA2znB3E,wCA3znB2EA,CA2znB3E,cA3znB2EA,CA2znB3E,kBA3znB2EA,CA2znB3E,0BA3znB2EA,CA2znB3E,6BA3znB2EA,CA2znB3E,4BA3znB2EA,CA2znB3E,oBA3znB2EA,MA2znB3E,eA3znB2EA,CA2znB3E,sBA3znB2EA,CA2znB3E,iCA3znB2EA,CA2znB3E,0CA3znB2EA,CA2znB3E,gDA3znB2EA,CA2znB3E,yCA3znB2EA,CA2znB3E,kCA3znB2EA,CA2znB3E,+CA3znB2EA,MA+0nB7E,GA/0nB6EA,MA+0nB7E,oDA/0nB6EA,MAs3nBvF,WAt3nBuFA,CAs3nBvF,cAt3nBuFA,MA23nB/E,gBA33nB+EA,CA23nB/E,cA33nB+EA,uCAy3nBnF,4BAz3nBmFA,MA03nBxC,GA13nBwCA,MA03nBxC,4BA13nBwCA,MA03nBxD,aA13nBwDA,MA43nB3E,GA53nB2EA,MA43nB3E,8BA53nB2EA,CA43nB3E,iBA53nB2EA,CA43nB3E,mCA53nB2EA,MAi4nB3E,GAj4nB2EA,MAi4nB3E,gBAj4nB2EA,CAi4nB3E,iBAj4nB2EA,CAi4nB3E,8BAj4nB2EA,CAi4nB3E,kCAj4nB2EA,CAi4nB3E,6DAj4nB2EA,MAk3nB3F,YAl3nB2FA,MAs3nBvF,oBAt3nBuFA,MAw4nBjF,cAx4nBiFA,CAw4nBjF,cAx4nBiFA,MA64nB/E,gBA74nB+EA,CA64nB/E,cA74nB+EA,yCAq3nBvF,2BAr3nBuFA,MAu3nBlF,GAv3nBkFA,MAu3nBlF,mCAv3nBkFA,MA04nBnF,GA14nBmFA,MA04nBnF,2DA14nBmFA,CA04nBnF,gDA14nBmFA,MA44nBxD,GA54nBwDA,MA44nBxD,+BA54nBwDA,MA84nB3E,GA94nB2EA,MA84nB3E,iCA94nB2EA,CA84nB3E,oBA94nB2EA,MA84nB3E,eA94nB2EA,CA84nB3E,mCA94nB2EA,MAm5nB3E,GAn5nB2EA,MAm5nB3E,iCAn5nB2EA,CAm5nB3E,gBAn5nB2EA,CAm5nB3E,oBAn5nB2EA,MAm5nB3E,eAn5nB2EA,CAm5nB3E,iCAn5nB2EA,CAm5nB3E,gDAn5nB2EA,CAm5nB3E,qEAn5nB2EA,cA4wnB/F,GA5wnB+FA,MA6wnB3F,oBA7wnB2FA,MAo1nB3F,wBAp1nB2FA,MAm2nBvF,yBAn2nBuFA,MAm2nBvF22O,WAn2nBuF32O,QAm2nBvF,OAn2nBuFA,MAm2nBzE42O,mBAAiB,OAAjB30N,GAAd,EAn2nBuFjiB,CAm2nBvF,0BAn2nBuFA,MAm2nBvF22O,WAn2nBuF32O,QAm2nBvF,OAn2nBuFA,MA22nBvE62O,uBARhB,EAn2nBuF72O,CAm2nBvF,4BAn2nBuFA,MAm2nBvF22O,WAn2nBuF32O,QAm2nBvF,OAn2nBuFA,MA42nBtE61O,wBATjB,GAn2nBuF71O,cAk3nB3F,oBAl3nB2FA,sCA6wnBrF,GA7wnBqFA,MA6wnBrF,sBA7wnBqFA,MAq1nBvF,GAr1nBuFA,MAq1nBvF,cAr1nBuFA,CAq1nBvF,wBAr1nBuFA,CAq1nBvF,oCAr1nBuFA,CAq1nBvF,qBAr1nBuFA,CAq1nBvF,kBAr1nBuFA,CAq1nBvF,iBAr1nBuFA,CAq1nBvF,wBAr1nBuFA,CAq1nBvF,cAr1nBuFA,CAq1nBvF,oBAr1nBuFA,CAq1nBvF,6BAr1nBuFA,CAq1nBvF,0BAr1nBuFA,CAq1nBvF,0BAr1nBuFA,CAq1nBvF,kCAr1nBuFA,CAq1nBvF,wCAr1nBuFA,CAq1nBvF,sBAr1nBuFA,CAq1nBvF,wBAr1nBuFA,CAq1nBvF,oBAr1nBuFA,CAq1nBvF,wBAr1nBuFA,CAq1nBvF,yFAr1nBuFA,CAq1nBvF,6EAr1nBuFA,CAq1nBvF,kCAr1nBuFA,CAq1nBvF,iCAr1nBuFA,MAm3nBtF,GAn3nBsFA,MAm3nBtF,+CAn3nBsFA,MAq6nBvF,2BAr6nBuFA,eAu6nBnF,wBAv6nBmFA,CAu6nBnF,gBAv6nBmFA,CAu6nBnF,2BAv6nBmFA,CAu6nBnF,wCAv6nBmFA,CAu6nBnF,iBAv6nBmFA,CAu6nBnF,6BAv6nBmFA,CAu6nBnF,4BAv6nBmFA,CAu6nBnF,cAv6nBmFA,CAu6nBnF,sBAv6nBmFA,CAu6nBnF,kBAv6nBmFA,CAu6nBnF,0BAv6nBmFA,CAu6nBnF,iCAv6nBmFA,CAu6nBnF,0CAv6nBmFA,CAu6nBnF,kCAv6nBmFA,CAu6nBnF,yEAv6nBmFA,MAw8nBvF,2BAx8nBuFA,eA08nBnF,gBA18nBmFA,CA08nBnF,iCA18nBmFA,CA08nBnF,iBA18nBmFA,CA08nBnF,wBA18nBmFA,CA08nBnF,8DA18nBmFA,MA85nB/F,GA95nB+FA,MA+5nB3F,WA/5nB2FA,MAg6nBvF,iBAh6nBuFA,MAq6nBvF,sBAr6nBuFA,MAu7nBvF,cAv7nBuFA,MAw8nBvF,qBAx8nBuFA,4CA+5nBpF,GA/5nBoFA,MA+5nBpF,yCA/5nBoFA,MAi6nBnF,GAj6nBmFA,MAi6nBnF,wBAj6nBmFA,CAi6nBnF,iBAj6nBmFA,CAi6nBnF,mCAj6nBmFA,MAs6nBlF,GAt6nBkFA,MAs6nBlF,sBAt6nBkFA,MAw7nBnF,GAx7nBmFA,MAw7nBnF,sBAx7nBmFA,CAw7nBnF,iBAx7nBmFA,CAw7nBnF,cAx7nBmFA,CAw7nBnF,cAx7nBmFA,CAw7nBnF,wBAx7nBmFA,CAw7nBnF,0BAx7nBmFA,CAw7nBnF,0BAx7nBmFA,CAw7nBnF,wCAx7nBmFA,CAw7nBnF,kCAx7nBmFA,CAw7nBnF,sCAx7nBmFA,CAw7nBnF,oBAx7nBmFA,CAw7nBnF,sBAx7nBmFA,CAw7nBnF,iCAx7nBmFA,MAy8nBlF,GAz8nBkFA,MAy8nBlF,+CAz8nBkFA,MAk9nB/F,yBAl9nB+FA,cAk9nB1F,uEAl9nB0FA,cAq9nB/F,oBAr9nB+FA,MA89nB3F,yBA99nB2FA,MA89nB3F8yY,WA99nB2F9yY,QA89nB3F,OA99nB2FA,MA89nB7Eo1O,mBAAiB,QAAjBnzN,GAAd,GA99nB2FjiB,sCAu9nB3F,8CAv9nB2FA,CAu9nB3F,2BAv9nB2FA,CAu9nB3F,sBAv9nB2FA,CAu9nB3F,qBAv9nB2FA,CAu9nB3F,cAv9nB2FA,CAu9nB3F,sBAv9nB2FA,MAw9nB3F,8EAx9nB2FA,MAg+nB/F,4DAh+nB+FA,cAsysB3F,YAtysB2FA,MAsysBtD,GAtysBsDA,cAuysB3F,6BAvysB2FA,MA6ysBvF,oBA7ysBuFA,MA6ysBvFi5K,WA7ysBuFj5K,QA6ysBvF,OA7ysBuFA,MA6ysB9EsE,aAAT,EA7ysBuFtE,CA6ysBvF,2BA7ysBuFA,MA6ysBvFi5K,WA7ysBuFj5K,QA6ysBvF,OA7ysBuFA,MA8ysBvEoE,cADhB,GA7ysBuFpE,sCAsysBtD,GAtysBsDA,MAsysBtDu4K,+BAtysBsDv4K,MAwysBvF,GAxysBuFA,MAwysBvF,oBAxysBuFA,CAwysBvF,+CAxysBuFA,CAwysBvF,+CAxysBuFA,CAwysBvF,sBAxysBuFA,CAwysBvF,gCAr7sBhB,MAAM+yY,GAAc,QAId9tY,GAAaC,GAAoB,MAAVA,EAIvB+uN,GAAW/uN,GAAoB,MAAVA,EAIrBmnB,GAAWnnB,GAAU/G,MAAMkuB,QAAQnnB,GAInC2qN,GAAY3qN,KAAYA,EAIxB6uO,GAAuB7uO,GAAU+uN,GAAQ/uN,IAAU6tY,GAAYrxY,KAAKwD,GAIpE++E,GAAWw4F,MAASxiK,QAAMy9K,MAAGjb,GAAOA,EAAKxzK,SAIzC+pY,GAAc,WAAa3yY,SAAa,IAIxC+sB,GAAYloB,GAA2B,iBAAVA,EAI7BgoB,GAAYhoB,GAA2B,iBAAVA,IAAuBioB,MAAMjoB,GAI1D+tY,GAAiB9mW,GACf/e,GAAS+e,KAAY4nM,GAAoB5nM,IAAWA,EAAOs5J,WAAW,OAC/Dt5J,EAAOztC,MAAM,EAAGytC,EAAO7uC,OAAS,GAEpC6uC,EAKLgmL,GAAO3kM,GAAO,IAAIpW,KAAUoW,EAAG2D,MAAM,KAAM/Z,GAI3C87X,GAAK,IAAIC,IAAgBjuY,GAAUiuY,EAAWxwX,OAAO,CAACC,EAAKyC,IAAMzC,GAAOyC,EAAEngB,IAAQ,GAIlFkuY,GAAM,IAAID,IAAgBjuY,GAAUiuY,EAAWxwX,OAAO,CAACC,EAAKyC,IAAMzC,GAAOyC,EAAEngB,IAAQ,GAyBnFmuY,IArBO,IAAIz2Y,MAAe,QAuBhC,SAAS02Y,KACL,GAAsB,mBAAX1iD,QAAyBA,OAAOyiD,SACvC,OAAOziD,OAAOyiD,SAElB,MAAM18W,EAAOta,OAAOk3X,oBAAoBvlP,IAAI5vJ,WACtC84B,EAAQ82H,IAAI5vJ,UAClB,QAASoU,EAAI,EAAGA,EAAImkB,EAAKr5B,SAAUkV,EAAG,CAClC,MAAMokB,EAAMD,EAAKnkB,GACjB,GAAY,YAARokB,GAA6B,SAARA,GAAkBM,EAAMN,KAASM,EAAMs8W,QAC5D,OAAO58W,CAEd,CACJ,CAdgB08W,IAejB,MACMnzW,UAAatR,OAAW,IAAcA,OAAS,GAE/CwR,GAAwBF,GAAIE,uBAAyBF,GAAIM,0BAA4BhxB,GAAYC,WAAWD,EAH3F,qBAKjB8nK,GAAuBp3I,GAAIo3I,sBAAwBp3I,GAAIszW,+BAAiCvlY,aAoBxF4O,GAA4B,CAACD,EAASpY,EAAMS,IAAU2X,EAAQxf,QAAQ,IAAIoE,OAAQ,QAAQgD,SAAc,KAAMS,GAQpH,MAAMwuY,GACF52Y,cACIE,KAAK0jB,WAAY,CACpB,CACGizX,iBACA,OAAO1uY,GAAUjI,KAAKwU,MACzB,CACGoiY,qBACA,OAAO52Y,KAAKwU,KACf,EAELkiY,GAAoB3zY,UAApB,0BAAiH2zY,GAAjH,EACAA,GAAoBngY,UADmFvT,MACvG,MAAqG0zY,GAArGnjY,qGADuGvQ,MACvG,+BADuGA,MACvG,uBADuGA,CACvG,kHAuBA,MAAM6zY,GACF/2Y,cACIE,KAAK0oL,UAAY,IAAIx9K,MACrBlL,KAAK82Y,cAAgB,IAAI5rY,MACzBlL,KAAK+2Y,YAAc,IAAI7rY,MACvBlL,KAAKwK,MAAQ,IAAIU,MACjBlL,KAAKgV,QAAU,IAAI9J,MACnBlL,KAAKoR,MAAQ,IAAIlG,MACjBlL,KAAKg3Y,QAAU,IAAI9rY,MACnBlL,KAAKi3Y,SAAW,IAAI/rY,MACpBlL,KAAKk3Y,WAAa,IAAIhsY,KACzB,EAEL2rY,GAAiB9zY,UAAjB,0BAA8G8zY,GAA9G,EACAA,GAAiB5zY,WAtCsFD,MAsCvG,OAAkH6zY,GAAlH3zY,QAAkH2zY,GAAlH,YAQA,MAAMM,GACFr3Y,cACIE,KAAKiM,QAAU,IAAIf,KACtB,EAELisY,GAAwBp0Y,UAAxB,0BAAqHo0Y,GAArH,EACAA,GAAwBl0Y,WApD+ED,MAoDvG,OAAyHm0Y,GAAzHj0Y,QAAyHi0Y,GAAzH,YAQA,MAAMC,GACFt3Y,YAAYmb,GACRjb,KAAKib,kBAAoBA,CAC5B,CACD7J,QACIpR,KAAKib,kBAAkBo8X,WAC1B,CACDn4X,OAAOO,GACHzf,KAAKib,kBAAkBiE,OAAOO,EACjC,CACD87S,WACI,OAAO,CACV,CACDp7B,WACI,OAAOngS,KAAKib,kBAAkBklR,UACjC,CACDm3G,cACI,OAAO,CACV,EAML,MAAMC,GACFz3Y,YAAYizG,GACR/yG,KAAK+yG,MAAQA,EACb/yG,KAAKiM,QAAU,IAAI5B,IACnBrK,KAAKw3Y,UAAY,EACjBx3Y,KAAKy3Y,UAAY,EACjBz3Y,KAAK03Y,WAAa,EAClB13Y,KAAK23Y,WAAa,CACrB,CACGtkV,UACA,OAAOrzD,KAAK+yG,MAAM6kS,QAAQ53Y,KAAKw3Y,UAClC,CACG5tQ,WACA,MAAMv2E,EAAMrzD,KAAKqzD,IACjB,GAAIA,EACA,OAAOrzD,KAAK+yG,MAAMwiM,SAASv1S,KAAKy3Y,UAAWpkV,EAElD,CACGwkV,mBACA,MAAMxkV,EAAMrzD,KAAKqzD,IACjB,OAAIA,EACOA,EAAIwkV,cAER,CACV,CAID9vU,MAAMkiE,EAAWjqI,KAAKw3Y,UAAWlkF,EAAWtzT,KAAKy3Y,UAAWlxT,GAAQ,GAC5DvmF,KAAKqW,SAAS4zH,EAAUqpL,EAAU/sO,KAClCvmF,KAAK23Y,WAAa1tQ,EAClBjqI,KAAK03Y,WAAapkF,EAEzB,CACDj9S,SAAS4zH,EAAUqpL,EAAU/sO,GACzB,IAAKA,GAASvmF,KAAK83Y,cAAc7tQ,EAAUqpL,GACvC,OAAO,EAEX,MAAMykF,EAAe/3Y,KAAKy3Y,UACpBO,EAAeh4Y,KAAKw3Y,UAC1B,YAAKC,UAAYnkF,EACjBtzT,KAAKw3Y,UAAYvtQ,EACjBjqI,KAAKiM,QAAQhH,KAAK,CACdquT,WACAykF,eACAC,eACA/tQ,cAEG,CACV,CACD6tQ,cAAc7tQ,EAAUqpL,GACpB,GAAItzT,KAAKw3Y,YAAcvtQ,EACnB,OAAO,EAEX,MAAML,EAAO5pI,KAAK4pI,MACVjvH,QAAOG,OAAQ9a,KAAK+yG,MAAMklS,UAAUruQ,GAC5C,OAAQv3F,QAAQu3F,IAAUjvH,GAAS24S,GAAYA,GAAYx4S,CAC9D,CAIDo9X,OAAOjuQ,EAAWjqI,KAAKw3Y,UAAWlkF,EAAWtzT,KAAKy3Y,WAC9Cz3Y,KAAK23Y,WAAa1tQ,EAClBjqI,KAAK03Y,WAAapkF,EAClBtzT,KAAKy3Y,UAAYnkF,EACjBtzT,KAAKw3Y,UAAYvtQ,CACpB,CAIDkuQ,WACIn4Y,KAAKiM,QAAQhH,KAAK,CACdquT,SAAUtzT,KAAKy3Y,UACfM,aAAc/3Y,KAAKy3Y,UACnBO,aAAch4Y,KAAKw3Y,UACnBvtQ,SAAUjqI,KAAKw3Y,WAEtB,CACDY,oBAAoBxuQ,GAChB,MAAMyuQ,EAAWr4Y,KAAK+yG,MAAMslS,SAASzuQ,GAC/BquQ,EAAYj4Y,KAAK+yG,MAAMklS,UAAUruQ,GACjC6tQ,EAAYz3Y,KAAKy3Y,UACjBD,EAAYx3Y,KAAKw3Y,UACvB,GAAIa,EAAS19X,OAAS68X,GAAaA,GAAaa,EAASv9X,KACrDm9X,EAAUt9X,OAAS88X,GAAaA,GAAaQ,EAAUn9X,IACvD,YAAK08X,UAAY5tQ,EAAKK,SACtBjqI,KAAKy3Y,UAAY7tQ,EAAK0pL,UACf,CAEd,CACD7qI,SAASx+C,EAAUqpL,GACf,OAAOtzT,KAAKy3Y,YAAcnkF,GAAYtzT,KAAKw3Y,YAAcvtQ,CAC5D,CACDg8C,OAAOt9J,EAAS,GACZ,OAAO3oB,KAAKs4Y,WAAW3vX,EAC1B,CACDq9J,SAASr9J,EAAS,GACd,OAAO3oB,KAAKs4Y,UAAU3vX,EACzB,CACD4vX,SAAS5vX,EAAS,GACd,OAAO3oB,KAAKw4Y,WAAW7vX,EAC1B,CACD8vX,UAAU9vX,EAAS,GACf,OAAO3oB,KAAKw4Y,UAAU7vX,EACzB,CACD+vX,cAAcrlV,GACV,OAAOrzD,KAAK24Y,SAAS/kJ,QAAQglJ,oBAAoBt4Y,OAAS,IACrDN,KAAK24Y,SAASE,mBAAuBxlV,GAAQA,EAAIylV,UAAiB,EAAJ,EACtE,CACDN,UAAU7vX,GACN,MAAMkuR,EAAU72S,KAAK+yG,MAAM6kS,QAAQ53Y,KAAK23Y,YAClCxhY,EAAYnW,KAAK04Y,cAAc7hG,GAC/B6gG,EAAa13Y,KAAK03Y,WACxB13Y,KAAK03Y,WAAahjX,KAAK7Z,IAAI,EAAG6Z,KAAK9Z,IAAI88X,EAAa/uX,EAAQxS,IAC5D,IAAI4iY,EAAe/4Y,KAAK03Y,WACpBsB,EAAeh5Y,KAAK23Y,WACpB/tQ,GAAO5pI,KAAK+yG,MAAMwiM,SAASv1S,KAAK03Y,WAAY7gG,GAChD,IAAKjtK,IAAQ5pI,KAAK24Y,SAASM,eACvB,OAAOj5Y,KAAKqW,SAAS2iY,EAAcD,GAEvC,GAAInvQ,GAAKk/C,QAAU,GAAKl/C,GAAK0pL,UAAYokF,GAAcA,EAAa9tQ,GAAK0pL,SAAW1pL,GAAKk/C,QAAS,CAC9FiwN,EAAepwX,EAAS,EAAI+L,KAAK9Z,IAAIgvH,GAAK0pL,SAAW1pL,GAAKk/C,QAAS3yK,GAAaue,KAAK7Z,IAAI,EAAG+uH,GAAK0pL,SAAW3qS,GAC5G,MAAM6sR,GAAWx1S,KAAK+yG,MAAMwiM,SAASwjG,EAAcliG,GAC/CjtK,KAAS4rK,IACT5rK,GAAO4rK,GACPx1S,KAAK03Y,WAAa9tQ,GAAK0pL,UAGvBtzT,KAAK03Y,WAAaA,CAEzB,CACD,OAAO13Y,KAAKqW,SAASuzH,GAAKK,SAAUL,GAAK0pL,SAC5C,CACDglF,UAAU3vX,GACN,IAAIowX,EAAe/4Y,KAAK03Y,WACxB,GAAI13Y,KAAK24Y,UAAY34Y,KAAK24Y,SAASO,UAAW,CAC1C,MAAM5yJ,EAAWtmP,KAAK24Y,SAASQ,mBAC/B,IAAIj6J,EAAYxqN,KAAK7Z,IAAI,EAAG6Z,KAAK9Z,IAAI5a,KAAKw3Y,UAAY7uX,EAAQ29N,IAC1DtmP,KAAK24Y,SAASE,oBAAsB74Y,KAAK+yG,MAAM6kS,QAAQ14J,KACvDA,EAAYv2N,EAAS,EAAIu2N,EAAY,EAAIA,EAAY,EACrDA,EAAYxqN,KAAK7Z,IAAI,EAAG6Z,KAAK9Z,IAAIskO,EAAWoH,KAE5CtmP,KAAK24Y,SAASE,mBAAqB35J,IAAcoH,GAC7CtmP,KAAK+yG,MAAMuiR,QAAQ9oX,QAAU85O,GAE7BpH,IAGR,MAAM6+D,GAAU/9S,KAAK+yG,MAAM6kS,QAAQ14J,GACnC,GAAI6+D,GAAS,CAET,IAAIn0K,GAAO5pI,KAAK+yG,MAAMwiM,SAASv1S,KAAK03Y,WAAY35F,IAC5Cn0K,GAAKK,UAAYjqI,KAAK23Y,YAAchvX,EAAS,GAAKihH,GAAKilL,QAAU,IACjEjlL,GAAO5pI,KAAK+yG,MAAMwiM,SAASv1S,KAAK03Y,WAAY13Y,KAAK+yG,MAAM6kS,QAAQhuQ,GAAKK,SAAWL,GAAKilL,QAAU,EAAIlmS,KAEtGu2N,EAAYt1G,GAAKK,SACjB8uQ,EAAenvQ,GAAK0pL,QACvB,CACD,YAAKqkF,WAAaz4J,EACXl/O,KAAKqW,SAAS6oO,EAAW65J,EACnC,CACD,MAAMh7F,EAAU/9S,KAAK+yG,MAAM6kS,QAAQ53Y,KAAK23Y,WAAahvX,IAAW3oB,KAAK+yG,MAAMgrM,QAAQ/9S,KAAK23Y,WAAYhvX,GACpG,IAAKo1R,EACD,OAAO,EAEX,IAAIn0K,EAAO5pI,KAAK+yG,MAAMwiM,SAASv1S,KAAK03Y,WAAY35F,GAChD,GAAIn0K,GAAQA,EAAKK,UAAYjqI,KAAK23Y,YAAchvX,EAAS,GAAKihH,EAAKilL,QAAU,EAAG,CAC5E,MAAMuqF,EAAUxvQ,EAAKK,SAAWL,EAAKilL,QAAU,EAAIlmS,EACnDihH,EAAO5pI,KAAK+yG,MAAMwiM,SAASv1S,KAAK03Y,WAAY13Y,KAAK+yG,MAAM6kS,QAAQwB,GAClE,CACD,OAAKxvQ,GAAQ5pI,KAAK24Y,SAASM,eAChBj5Y,KAAKqW,SAASrW,KAAK23Y,WAAahvX,EAAQ3oB,KAAK03Y,aAExD13Y,KAAK23Y,WAAa/tQ,EAAKK,SAChBjqI,KAAKqW,SAASrW,KAAK23Y,WAAY/tQ,EAAK0pL,UAC9C,EAML,MAAM+lF,GACFv5Y,cACIE,KAAKw0C,MAAQ,EACbx0C,KAAK6jC,MAAQ,EAChB,CACG9tB,YACA,GAAI/V,KAAKw0C,MAAQ,EAAG,CAChB,IAAI5iB,EACJ,YAAKnhB,QAAQ+V,IACToL,EAASpL,GACF,IAEJoL,CACV,CACJ,CACG5b,WACA,GAAIhW,KAAKw0C,MAAQ,EAAG,CAChB,MAAM7a,EAAOta,OAAOsa,KAAK35B,KAAK6jC,OAC9B,OAAO7jC,KAAK6jC,MAAMlK,EAAKA,EAAKr5B,OAAS,GACxC,CACJ,CACDikO,WAAW3qM,GACH55B,KAAK6jC,MAAMjK,YACJ55B,KAAK6jC,MAAMjK,GAClB55B,KAAKw0C,QAEZ,CACD8kW,QAAQ1/W,EAAKpT,GACJxmB,KAAK6jC,MAAMjK,IACZ55B,KAAKw0C,QAETx0C,KAAK6jC,MAAMjK,GAAOpT,CACrB,CACD+yX,QAAQ3/W,GACJ,OAAO55B,KAAK6jC,MAAMjK,EACrB,CACDxkB,UACI,MAAMwc,EAAS,GACf,YAAKnhB,QAAQ+V,IACToL,EAAO5V,KAAKwK,EAAZ,GAEGoL,CACV,CACDnhB,QAAQgC,GACJ,QAASmnB,KAAO55B,KAAK6jC,MACjB,GAAI7jC,KAAK6jC,MAAMzhC,eAAew3B,IAAQnnB,EAASzS,KAAK6jC,MAAMjK,IACtD,OAAO55B,KAAK6jC,MAAMjK,EAG7B,CACDvU,KAAK5S,GACD,OAAOzS,KAAKyQ,QAAQgC,EACvB,EAQL,MAAM+mN,GACF15N,cACIE,KAAKiuC,KAAO,IAAIorW,EACnB,CACGG,eACA,OAAOx5Y,KAAKiuC,KAAKl4B,KACpB,CACGu/W,cACA,OAAOt1X,KAAKiuC,KAAKj4B,IACpB,CACDyjY,aAAa7vQ,GACT,MAAMv2E,EAAMrzD,KAAKiuC,KAAKsrW,QAAQ3vQ,EAAK8vQ,iBACnC,IAAKrmV,EACD,OAEJ,MAAMigQ,EAAW1pL,EAAK+vQ,gBAChBC,EAAY,CACdC,IAAKjwQ,EAAKiwQ,IACVvmF,WACArpL,SAAU52E,EAAI7mD,MACds8K,QAASl/C,EAAKk/C,QACd+lI,QAASjlL,EAAKilL,QACdirF,iBAAkBlwQ,EAAKkwQ,iBACvB3hY,SAAUk7C,EAAIl7C,SACd0/X,aAAcxkV,EAAIwkV,aAClBkC,WAAYnwQ,EAAKmwQ,YAErB1mV,SAAI0uH,MAAMu3N,QAAQhmF,EAAUsmF,GACxBhwQ,EAAKkvQ,YACLzlV,EAAIylV,UAAYlvQ,EAAKkvQ,WAElBc,CACV,CACDI,eAAextY,EAAOy9H,EAAUL,GAC5B,MAAMv2E,EAAMrzD,KAAKiuC,KAAKsrW,QAAQtvQ,GAC9B,GAAI52E,EAAK,CACL,MAAMxgC,EAAQwgC,EAAI0uH,MAAMw3N,QAAQ/sY,GAC5BqmB,GAASA,EAAMgnX,MAAQjwQ,EAAKiwQ,KAC5BxmV,EAAI0uH,MAAMwiD,WAAW/3N,EAE5B,CACJ,CACDytY,YAAY5mV,GACR,MAAM6mV,EAAW,CACbL,IAAKxmV,EAAIwmV,IACTrtY,MAAO6mD,EAAIqmV,gBACXvhY,SAAUk7C,EAAIl7C,SACd0/X,aAAcxkV,EAAIwkV,aAClB91N,MAAO,IAAIs3N,IAEfr5Y,KAAKiuC,KAAKqrW,QAAQjmV,EAAIqmV,gBAAiBQ,EAC1C,CACDC,UAAU9mV,GACN,MAAMh+C,EAAUrV,KAAKiuC,KAAKsrW,QAAQlmV,EAAIqmV,iBAClCrkY,GACAgK,OAAOC,OAAOjK,EAAS,CACnB8C,SAAUk7C,EAAIl7C,SACd0/X,aAAcxkV,EAAIwkV,cAG7B,CACDuC,cAAc5tY,EAAO6mD,GACjB,MAAMxgC,EAAQ7yB,KAAKiuC,KAAKsrW,QAAQ/sY,GAC5BqmB,GAASA,EAAMgnX,MAAQxmV,EAAIwmV,KAC3B75Y,KAAKiuC,KAAKs2L,WAAW/3N,EAE5B,CACDyrY,UAAUruQ,GACN,GAAIA,EAAM,CAGN,MAAO,CACHjvH,MAHUivH,EAAK0pL,SAIfx4S,IAHQ8uH,EAAK0pL,UAAY1pL,EAAKk/C,SAAW,GAAK,EAKrD,CACD,MAAO,EACV,CACDuvN,SAASzuQ,GACL,GAAIA,EAAM,CAGN,MAAO,CACHjvH,MAHUivH,EAAKK,SAIfnvH,IAHQ8uH,EAAKK,UAAYL,EAAKilL,SAAW,GAAK,EAKrD,CACD,MAAO,EACV,CACD9Q,QAAQ9zK,EAAUthH,GACd,MAAMslB,EAAOjuC,KAAKiuC,KAAK74B,UACjBi+C,EAAMrzD,KAAKiuC,KAAKsrW,QAAQtvQ,GACxBtnG,EAAWsL,EAAKhtC,QAAQoyD,GAE9B,OADaplB,EAAKtL,EAAWha,EAEhC,CACDivX,QAAQprY,GACJ,OAAOxM,KAAKiuC,KAAKsrW,QAAQ/sY,EAC5B,CACD+oS,SAAS/oS,EAAO6mD,GACZ,IAAKA,EACD,OAEJ,MAAM42E,EAAW52E,EAAI7mD,MACrB,IAAIo9H,EAAOv2E,EAAI0uH,MAAMw3N,QAAQ/sY,GACzBywI,EAAehT,EACnB,MAAQL,GAAQv2E,GACZA,EAAMrzD,KAAKiuC,KAAKsrW,QAAQt8P,GACxBrT,EAAO5pI,KAAKq6Y,QAAQ7tY,EAAO6mD,GAC3B4pF,IAEJ,OAAIrT,GAAQK,GAAY52E,EAAI7mD,OAASo9H,EAAKilL,SAAW,GAAK,EAC/CjlL,OADX,CAGH,CACDywQ,QAAQ7tY,EAAO6mD,GACX,IAAKA,IAAQA,EAAI0uH,MAAMvtI,MACnB,OAEJ,MAAMmrU,EAAYtsT,EAAI0uH,MAAMhsK,MAC5B,IAAI6zH,EAAMqT,EAAezwI,EACzB,MAAQo9H,GAAQqT,GAAgB0iO,EAAUrsD,UACtC1pL,EAAOv2E,EAAI0uH,MAAMw3N,QAAQt8P,GACzBA,IAEJ,OAAIrT,GAAQp9H,GAASo9H,EAAK0pL,UAAY1pL,EAAKk/C,SAAW,GAAK,EAChDl/C,OADX,CAGH,EAGL,MAAM27E,GAAiB,sDACjB+0L,GAAuB,GACvBh1L,GAAepzM,GAAexR,OAAOwR,GAAYJ,OAAO/P,MAAM,KAI9DmxB,GAAa,CAACxqB,EAASwJ,KACzB,MAAMwzM,EAAYJ,GAAYpzM,GAC9B,OAAOmgC,QAAQizK,GAAY58M,EAAQqK,WAAWsS,KAAMtS,GAAc2yM,EAAUzkN,QAAQ8R,IAAc,GAApF,EAKZwnY,GAAkBroY,GAAgBxJ,GAAYwqB,GAAWxqB,EAASwJ,GAIlEsoY,GAAmBnpK,IAChBipK,GAAqBjpK,KACtBipK,GAAqBjpK,GAAa3oO,GAAYhI,OAAOgI,EAAQ2oO,UAAUt2N,gBAAkBs2N,EAASt2N,eAE/Fu/X,GAAqBjpK,IAK1B5oO,GAAU,CAACQ,EAAMoxB,KACnB,KAAOpxB,IAASoxB,EAAUpxB,IACtBA,EAAOA,EAAKC,WAEhB,OAAOD,GAKL09K,GAAiB,CAAC19K,EAAMoxB,EAAWo3I,KACrC,KAAOxoK,GAAQA,IAASwoK,IAAUp3I,EAAUpxB,IACxCA,EAAOA,EAAKC,WAEhB,GAAID,IAASwoK,EACT,OAAOxoK,GAiBT88M,GAAar9M,IACf,MAAM8gC,EAAO9gC,EAAQqiB,wBACf6U,EAAU4J,EAAKh1B,MAAQ,GAAKg1B,EAAK3S,OAAS,EAC1C4jX,EAAyB,IAAXjxW,EAAKnhB,GAAsB,IAAXmhB,EAAKlhB,EAGzC,OAAQsX,GAAW66W,IAAgE,WAAhD5oX,OAAOC,iBAAiBppB,GAASy2G,UAAe,EAKjFwmG,GAAej9M,IACjB,IAAKA,EAAQ8G,QACT,OAAO,EAEX,MAAMA,EAAU9G,EAAQ8G,QAAQuL,cAC1B2/X,EAAcroW,QAAQ3pC,EAAQ8gB,aAAa,aAEjD,OADmB9gB,EAAQ0E,UAAYm4M,GAAe7gN,KAAK8K,IACvCkrY,GAKlBC,GAAwB,CAACjyY,EAASk9M,GAAkB,KACtD,IAAKD,GAAYj9M,GACb,OAAO,EAEX,MAAM48B,GAAWsgL,GAAmBG,GAAUr9M,GACxCkyY,EAAqD,SAAxClyY,EAAQ8gB,aAAa,eAClCjd,EAAW7D,EAAQ8gB,aAAa,YACtC,OAAO8b,IAAYs1W,GAA2B,OAAbruY,CAAa,EAK5CsuY,GAAc,CAAC5xY,EAAMoxB,EAAWygX,GAAY,KAC9C,GAAK7xY,EAGL,IAAI6xY,GAAazgX,EAAUpxB,GACvB,OAAOA,EAGX,IADAA,EAAOA,EAAKsJ,WACLtJ,GAAM,CACT,GAAsB,IAAlBA,EAAKT,SAAgB,CACrB,MAAME,EAAUmyY,GAAY5xY,EAAMoxB,GAClC,GAAI3xB,EACA,OAAOA,CAEd,CACDO,EAAOA,EAAKukQ,WACf,IAwBCutI,GAAqB,CAACryY,EAASk9M,GAAkB,IAC5Ci1L,GAAYnyY,EAAUO,GAAS0xY,GAAsB1xY,EAAM28M,IAAkB,GAKlFo1L,GAAyB,CAACtyY,EAASk9M,GAAkB,IAzBnC,EAAC38M,EAAMoxB,EAAWygX,GAAY,KAClD,IAAI9kY,EAAO,KACX6kY,UAAY5xY,EAAOA,IACXoxB,EAAUpxB,KACV+M,EAAO/M,IAEJ,GACR6xY,GACI9kY,GAkBAilY,CAAgBvyY,EAAUO,GAAS0xY,GAAsB1xY,EAAM28M,IAAkB,GAmB5F,MAAMs1L,GACFp7Y,cACIE,KAAKiM,QAAU,IAAI5B,IACnBrK,KAAKy4L,WAAa,IAAIpuL,GACzB,CACG8wY,kBACA,OAAOn7Y,KAAKg0C,KAAOh0C,KAAK4hO,QAC3B,CACD5nE,cAAc/tJ,GACVjM,KAAK2nC,MAAQ17B,EAAQ07B,MACrB3nC,KAAK4hO,SAAW31N,EAAQ21N,SACxB5hO,KAAKg0C,KAAO/nC,EAAQ+nC,KACpBh0C,KAAKiM,QAAQhH,KAAKgH,EACrB,CACD61O,WAAW+2G,GACP74V,KAAKy4L,WAAWxzL,KAAK,CAAE+uC,KAAM6kT,EAAO74V,KAAK4hO,SAAUl3M,KAAM1qB,KAAK4hO,UACjE,CACDw5K,eAAelzY,GACXlI,KAAKy4L,WAAWxzL,KAAK,CAAE+uC,KAAM,EAAGtpB,KAAMxiB,GACzC,CACDy5O,WACI,MAAMA,EAAW3hP,KAAKm7Y,YAAc,EAChCx5J,EAAW3hP,KAAK4hO,SAAW5hO,KAAK2nC,OAChC3nC,KAAK8hP,WAAWH,EAEvB,CACDE,WACI,MAAMA,EAAW7hP,KAAKm7Y,YAAc,EAChCt5J,EAAW7hP,KAAK4hO,UAAY,GAC5B5hO,KAAK8hP,WAAWD,EAEvB,EAML,MAAMw5J,GACFv7Y,cACIE,KAAKs7Y,SAAW,IAAIjxY,GACvB,CACDukJ,SAAS9rJ,GACL9C,KAAKs7Y,SAASr2Y,KAAKnC,EACtB,EAELu4Y,GAAqBt4Y,UAArB,0BAAkHs4Y,GAAlH,EACAA,GAAqBp4Y,WAppBkFD,MAopBvG,OAAsHq4Y,GAAtHn4Y,QAAsHm4Y,GAAtH,YAQA,MAAME,GAAmBzC,GAChB7wY,GAAU6wY,GAGR,CAAEhsW,MAAOgsW,EAAUv5X,KAAMk/N,WAAYq6J,EAAUtsY,MAAOgvY,YAAaD,GAAgBzC,EAAU0C,cAFzF,KASf,MAAMC,GACF37Y,cACIE,KAAKiM,QAAU,IAAI5B,IACnBrK,KAAK07Y,SAAW,IAAIpgX,GACvB,CACDysC,QACI/nE,KAAK07Y,SAASvgX,OACjB,CACDtqB,cACI7Q,KAAK+nE,OACR,CACDkuJ,WAAW0lL,GACP,OAAI37Y,KAAK47Y,aACE57Y,KAAK47Y,aAAaD,IAErB37Y,KAAK07Y,SAASzgX,IAAI0gX,EAAUl9J,WACvC,CACDo9J,kBAAkB/C,GACd,IAAIgD,GAAW,EACf,KAAOhD,GAAagD,GAChBA,EAAW97Y,KAAKi2N,WAAW,CACvBnpL,MAAOgsW,EAAUv5X,KACjBk/N,WAAYq6J,EAAUtsY,MACtBgvY,YAAaD,GAAgBzC,EAAU0C,eAE3C1C,EAAYA,EAAU0C,YAE1B,OAAOM,CACV,CACDC,UAAUjD,GACN,MAAM0C,EAAcD,GAAgBzC,EAAU0C,aACxC58W,GAAU5+B,KAAKi2N,WAAW,CAAEnpL,MAAOgsW,EAAUv5X,KAAMk/N,WAAYq6J,EAAUtsY,MAAOgvY,gBACtFx7Y,KAAKiM,QAAQhH,KAAK,CAAE6nC,MAAOgsW,EAAUv5X,KAAMqf,SAAQ6/M,WAAYq6J,EAAUtsY,MAAOgvY,iBAE5Ex7Y,KAAK47Y,eAGLh9W,EACA5+B,KAAK07Y,SAASxgX,OAAO49W,EAAUtsY,OAG/BxM,KAAK07Y,SAAS1vY,IAAI8sY,EAAUtsY,OAEnC,CACDwvY,eAAexlL,GACXx2N,KAAK07Y,SAASjrY,QAAQjE,GAjDT,EAACwiO,EAAaxY,IAAgBA,IAAgBwY,GAAeA,EAAYvmC,WAAW+tB,GAiDlEylL,CAAazvY,EAAOgqN,IAAgBx2N,KAAK07Y,SAASxgX,OAAO1uB,GAC3F,EAELivY,GAAc14Y,UAAd,0BAA2G04Y,GAA3G,EACAA,GAAcx4Y,WAxtByFD,MAwtBvG,OAA+Gy4Y,GAA/Gv4Y,QAA+Gu4Y,GAA/G,YAQA,MAAM9nY,GACF7T,cACIE,KAAK4T,WAAY,CACpB,CAMDC,iBACI7T,KAAK4T,WAAY,CACpB,CAQDE,qBACI,OAAO9T,KAAK4T,SACf,EAML,MAAMsoY,WAA4BvoY,GAC9B7T,YAAYsa,GACR6D,QACAoB,OAAOC,OAAOtf,KAAMoa,EACvB,EAML,MAAM+hY,WAA0BxoY,GAC5B7T,YAAYsa,GACR6D,QACAoB,OAAOC,OAAOtf,KAAMoa,EACvB,EAML,MAAMgiY,GACFt8Y,cACIE,KAAKiM,QAAU,IAAI5B,IACnBrK,KAAK07Y,SAAW,IAAIpgX,GACvB,CACDzqB,cACI7Q,KAAK07Y,SAASvgX,OACjB,CACD86L,WAAWzpN,EAAO2L,GACd,OAAInY,KAAK47Y,aACE57Y,KAAK47Y,aAAa,CAAEpvY,QAAO2L,aAE/BnY,KAAK07Y,SAASzgX,IAAIzuB,EAC5B,CACDuvY,UAAUvvY,EAAO2L,GACTnY,KAAKi2N,WAAWzpN,EAAO2L,GACvBnY,KAAKq8Y,YAAY7vY,EAAO2L,GAGxBnY,KAAKs8Y,UAAU9vY,EAAO2L,EAE7B,CACDmkY,UAAU9vY,EAAO2L,IACKnY,KAAKojM,UAAU,CAAEjrL,WAAU3L,QAAOoyB,QAAQ,MACzC5+B,KAAK47Y,cACpB57Y,KAAK07Y,SAAS1vY,IAAIQ,EAEzB,CACD6vY,YAAY7vY,EAAO2L,IACGnY,KAAKojM,UAAU,CAAEjrL,WAAU3L,QAAOoyB,QAAQ,MACzC5+B,KAAK47Y,cACpB57Y,KAAK07Y,SAASxgX,OAAO1uB,EAE5B,CACD42L,UAAUhpL,GACN,MAAMmiY,EAAW,IAAKniY,EAAKwkB,OAASu9W,GAAoBD,IAAqB9hY,GAC7E,YAAKnO,QAAQhH,KAAKs3Y,GACXA,EAASzoY,oBACnB,EAELsoY,GAAer5Y,UAAf,0BAA4Gq5Y,GAA5G,EACAA,GAAen5Y,WAxzBwFD,MAwzBvG,OAAgHo5Y,GAAhHl5Y,QAAgHk5Y,GAAhH,YAQA,MAAMI,GAAoB,IAAI58Y,MAAe,mCAI7C,MAAM68Y,GACF38Y,YAAY2f,GAAS,GACjBzf,KAAKyf,OAASA,EACdzf,KAAKqsC,OAAS,IAAI/Q,GACrB,CACDohX,cAAc5vW,GACN9sC,KAAKyf,QACLzf,KAAKqsC,OAAOrgC,IAAI8gC,EAEvB,CACD6vW,gBAAgB7vW,GACR9sC,KAAKyf,QACLzf,KAAKqsC,OAAOnR,OAAO4R,EAE1B,CACDz2B,WACQrW,KAAKyf,QACLzf,KAAKqsC,OAAO57B,QAAQrI,GAAKA,EAAEiO,WAElC,CACDR,aACQ7V,KAAKyf,QACLzf,KAAKqsC,OAAO57B,QAAQrI,GAAKA,EAAEyN,aAElC,EAEL4mY,GAAU15Y,UAAV,0BAAuG05Y,IA91BAz5Y,MA81B2Bw5Y,GAAlI,KACAC,GAAUx5Y,WA/1B6FD,MA+1BvG,OAA2Gy5Y,GAA3Gv5Y,QAA2Gu5Y,GAA3G,YAaA,MAAMG,WAAuBjpY,GACzB7T,YAAYkG,GACRiY,QAIAje,KAAKsa,OAAS,YACd+E,OAAOC,OAAOtf,KAAMgG,EACvB,EAML,MAQM62Y,GAAYrwY,IAAoB,IAAVA,QAA0BuI,IAAVvI,EAI5C,MAAMswY,GACFh9Y,YAAYgL,GACR9K,KAAK8K,OAASA,EACd9K,KAAKiM,QAAU,IAAIf,MACnBlL,KAAK+8Y,cAAgB,GACrB/8Y,KAAKg9Y,cAAe,EACpBh9Y,KAAKi9Y,aAAc,EACnBj9Y,KAAKk9Y,cAAgB,IAAI7yY,IACzBrK,KAAKwR,QAAUxR,KAAKk9Y,cAAc3yY,eAAe9E,QAAK2oN,MAAU,IAAMpuN,KAAK8K,OAAO88M,SAASr9M,eAAe9E,QAAKilB,MAAK,KACvH,CACDyyX,QAAQ3wY,EAAOsgC,GACX9sC,KAAK+8Y,cAAc/gY,KAAK,CAAExP,QAAOsgC,UACjC9sC,KAAKo9Y,WACR,CACD1/F,OAAO5wQ,GACH9sC,KAAKq9Y,aAAe,CAAEvwW,SACtB9sC,KAAKo9Y,WACR,CACDE,SAASrzQ,EAAU3tB,EAAQxvE,GACnB+vW,GAAS5yQ,KAAiC,IAApB3tB,EAAO4jL,WAAwB5jL,EAAOihS,eAAgBjhS,EAAO9qF,QAGvFxxB,KAAKw9Y,mBACAx9Y,KAAKy9Y,cACNz9Y,KAAKm9Y,QAAQlzQ,EAAUn9F,GACvB9sC,KAAKs8G,OAASA,EACdt8G,KAAKo9Y,aAEZ,CACDM,YACI,OAAO19Y,KAAK+8Y,cAAcz8Y,OAAS,CACtC,CACDq9Y,gBACI,OAAO39Y,KAAK09Y,kBAA+B3oY,IAAhB/U,KAAKs8G,MACnC,CACGshS,iBACA,OAAO31Y,GAAUjI,KAAKq9Y,aACzB,CACGQ,kBACA,OAAI79Y,KAAK49Y,WACE59Y,KAAKq9Y,aAAavwW,MAAM5kC,MAE5B,EACV,CACD0R,MAAMpN,GACEqwY,GAASrwY,GACTxM,KAAKq9Y,kBAAetoY,GAGxB/U,KAAK+8Y,cAAgB/8Y,KAAK+8Y,cAAcznY,OAzD5B9I,IAAWga,GAASA,EAAKha,QAAUA,EAyDAsxY,CAAWtxY,WACnDxM,KAAKs8G,OACZt8G,KAAKo9Y,YACR,CACDK,UAAU94X,GACN,GAAI3kB,KAAKs8G,SAAWt8G,KAAKi9Y,YACrB,OAAOj9Y,KAAK8K,OAAO4G,IAAI,KACnB,MAAQlF,QAAOsgC,SAAU9sC,KAAK+8Y,cAAc,GACtC3iY,EAAO,IAAIwiY,GAAe,CAC5BtgS,OAAQt8G,KAAKs8G,OACbyhS,UAAWjxW,EACXnoB,cAAeA,EACfslH,SAAUz9H,IAEd,YAAKywY,aAAc,EACnBj9Y,KAAKiM,QAAQmE,KAAKgK,GAClBpa,KAAKi9Y,aAAc,EACd7iY,EAAKtG,sBACN9T,KAAKg+Y,aAEF5jY,EAAKtG,oBAAL,EAGlB,CACDkqY,aACQh+Y,KAAKs8G,SACLt8G,KAAK+8Y,cAAgB,UACd/8Y,KAAKs8G,OACZt8G,KAAKo9Y,YAEZ,CACDa,kBACI,OAAOj+Y,KAAKs8G,SAAWt8G,KAAKg9Y,YAC/B,CACDQ,mBACIx9Y,KAAK8K,OAAO+E,kBAAkB,KAC1BgiB,OAAO3gB,aAAalR,KAAKk+Y,iBACzBl+Y,KAAKg9Y,cAAe,EACpBh9Y,KAAKk+Y,gBAAkBrsX,OAAOnf,WAAW,KACrC1S,KAAKg9Y,cAAe,GACrB,EAFoB,EAI9B,CACDvlY,QAAQjL,GACJ,OAAIqwY,GAASrwY,GACFxM,KAAKq9Y,aAETr9Y,KAAKm+Y,YAAY3xY,EAC3B,CACD4xY,cAAc5xY,EAAO8vG,GACjB,OAAIugS,GAASrwY,GACFxM,KAAKq9Y,aAEXr9Y,KAAKs8G,QAAUA,IAAWt8G,KAAKs8G,YAApC,EACWt8G,KAAKm+Y,YAAY3xY,EAE/B,CACD6xY,SAAS7xY,GACL,SAAIqwY,GAASrwY,KAAUvE,GAAUjI,KAAKq9Y,iBAG9Br9Y,KAAKs8G,QAAUr0G,GAAUjI,KAAKm+Y,YAAY3xY,GACrD,CACD8xY,UAAU9xY,GACN,OAAOvE,GAAUjI,KAAKyX,QAAQjL,GACjC,CACD+xY,eAAe/xY,EAAO8vG,GAClB,SAAIt8G,KAAKs8G,QAAUt8G,KAAKs8G,SAAWA,IACxBr0G,GAAUjI,KAAKm+Y,YAAY3xY,GAGzC,CACDgyY,UAAUv0Q,GACNjqI,KAAKiM,QAAQmE,KAAK,CAAEkK,OAAQ,OAAQ2vH,YACvC,CACDw0Q,WACIz+Y,KAAKiM,QAAQmE,KAAK,CAAEkK,OAAQ,OAC/B,CACDokY,QAAQz0Q,GACJ,MAAQn9F,MAAOixW,GAAc/9Y,KAAKyX,QAAQwyH,GAC1CjqI,KAAKiM,QAAQmE,KAAK,CAAEkK,OAAQ,SAAU2vH,WAAU8zQ,YAAWY,MAAO9B,GAAS5yQ,IAC9E,CACDt4C,KAAKs4C,GACD,MAAQn9F,MAAOixW,GAAc/9Y,KAAKyX,QAAQwyH,GAC1CjqI,KAAKiM,QAAQmE,KAAK,CAAEkK,OAAQ,OAAQ2vH,WAAU8zQ,YAAWY,MAAO9B,GAAS5yQ,IAC5E,CACDtyH,OAAOsyH,GACHjqI,KAAKiM,QAAQmE,KAAK,CAAEkK,OAAQ,SAAU2vH,YACzC,CACDk0Q,YAAY3xY,GACR,OAAOxM,KAAK+8Y,cAAc13X,KAvJjB7Y,IAAWga,GAASA,EAAKha,QAAUA,EAuJborK,CAAQprK,GAC1C,CACD4wY,YACIp9Y,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKk9Y,cAAcj4Y,MAAnB,EAEP,EAEL63Y,GAAY/5Y,UAAZ,0BAAyG+5Y,IAzhCF95Y,MAyhC+BA,OAAtI,EACA85Y,GAAY75Y,WA1hC2FD,MA0hCvG,OAA6G85Y,GAA7G55Y,QAA6G45Y,GAA7G,YAKA,MAAMj+K,GAAW27K,GAAgB,UAC3BoE,GAAapE,GAAgB,SAC7BqE,GAAiB,mDAEjBvH,GAAc5uY,IAAYA,EAAQ0E,WAAayxN,GAASn2N,IADrCA,IAAWk2Y,GAAWl2Y,IAAYm2Y,GAAen6Y,KAAKgE,EAAQ+V,MACbqgY,CAAiBp2Y,IAI3F,MAAMq2Y,GACFj/Y,YAAYoE,EAAMyG,GACd3K,KAAK2K,SAAWA,EAChB3K,KAAK0I,QAAUxE,EAAKiI,cACpBnM,KAAK8lN,UAreS,EAACp9M,EAASk9M,GAAkB,IACvCi1L,GAAYnyY,EAAUO,GAAS0xY,GAAsB1xY,EAAM28M,IAoe7Co5L,CAAch/Y,KAAK0I,SAAS,IAAU1I,KAAK0I,OAC/D,CACGg3I,cACA,OAAO1/I,KAAK8lN,YAAc9lN,KAAK8lN,UAAU14M,QAC5C,CACGk4B,cACA,OAAOtlC,KAAK8lN,WAAaC,GAAU/lN,KAAK8lN,UAC3C,CACDwxL,cACI,OAAOt3Y,KAAKu7T,YAAc+7E,GAAYt3Y,KAAK0I,QAC9C,CACDwW,OAAOO,GACHzf,KAAK2K,SAASiF,aAAa5P,KAAK8lN,UAAW,WAAYrmM,EAAS,IAAM,KACzE,CACDrO,QACQpR,KAAK8lN,WACL9lN,KAAK8lN,UAAU10M,OAEtB,CACDmqT,WACI,OAAOv7T,KAAKslC,SAAWtlC,KAAK0/I,OAC/B,CACDygJ,WACI,OAAO98R,SAASi7K,gBAAkBt+K,KAAK0I,SAAWD,GAAQpF,SAASi7K,cAAe75J,GAAKA,IAAMzkB,KAAK0I,QACrG,EAML,MAAMu2Y,GAAe,IAAIr/Y,MAAe,qBAsDxC,MAAMsX,GACFpX,YAAY4qL,EAAal/J,EAAa7gB,GAClC3K,KAAK0qL,YAAcA,EACnB1qL,KAAKwrB,YAAcA,EACnBxrB,KAAK2K,SAAWA,EAChB3K,KAAKyf,QAAS,EACdzf,KAAKk/Y,UAAW,EACZl/Y,KAAK0qL,cACL1qL,KAAK8sC,MAAQ9sC,KAAK0qL,YAAYqvN,YAE9B/5Y,KAAK8sC,OACL9sC,KAAK8sC,MAAMqyW,gBAAgBn/Y,KAElC,CAIG0/I,YAAQx3I,IAEJA,EADU,KAAVA,GAIQmqC,QAAQnqC,MAENlI,KAAK0/I,UACf1/I,KAAKk/Y,SAAWh3Y,EACZlI,KAAK0I,SACL1I,KAAK0I,QAAQwW,OAAOlf,KAAKyf,QAAUvX,GAG9C,CACGw3I,cACA,OAAO1/I,KAAKk/Y,QACf,CACD1uY,kBACSxQ,KAAK0I,UACN1I,KAAK0I,QAAU,IAAIq2Y,GAAwB/+Y,KAAKwrB,YAAaxrB,KAAK2K,WAElE3K,KAAK8sC,OAAS9sC,KAAK0I,SACnB1I,KAAKkf,OAAOlf,KAAK8sC,MAAM27I,SAE9B,CACD53K,cACQ7Q,KAAK8sC,OACL9sC,KAAK8sC,MAAMsyW,kBAAkBp/Y,KAEpC,CAIDkf,OAAOO,GACCzf,KAAK0I,SAAW+W,IAAWzf,KAAKyf,SAChCzf,KAAK0I,QAAQwW,OAAOlf,KAAK0/I,SAAWjgI,GACpCzf,KAAKyf,OAASA,EAErB,CAID87S,WACI,OAAOv7T,KAAK0/I,SAAW1/I,KAAK0I,SAAW1I,KAAK0I,QAAQ6yT,UACvD,CAID+7E,cACI,OAAOt3Y,KAAK0/I,SAAW1/I,KAAK0I,SAAW1I,KAAK0I,QAAQ4uY,aACvD,CAIDlmY,QACQpR,KAAK0/I,SAAW1/I,KAAK0I,SACrB1I,KAAK0I,QAAQ0I,OAEpB,CAID+uR,WACI,OAAOngS,KAAK0/I,SAAW1/I,KAAK0I,SAAW1I,KAAK0I,QAAQy3R,UACvD,CAIDg/G,gBAAgBz2Y,GACZ1I,KAAK0I,QAAUA,CAClB,EAELwO,GAAmBnU,UAAnB,0BAAgHmU,IAxtCTlU,MAwtC6Ci8Y,GAApJ,IAxtCuGj8Y,MAwtCsGA,OAxtCtGA,MAwtCgIA,OAAvO,EACAkU,GAAmB5D,UAztCoFtQ,MAytCvG,MAAoGkU,GAApG3D,kQAwBA,MAAM8rY,GAAe,CAAC32Y,EAAS42Y,IAAgB72Y,GAAQC,EAAS8xY,GAAgB,iBAAmB8E,EAC7FC,GAAkB/E,GAAgB,MAClCgF,GAAgBhF,GAAgB,MAChCiF,GAAkBjF,GAAgB,qBAClCkF,GAAah3Y,GAAY82Y,GAAc92Y,IAAY62Y,GAAgB72Y,IAAY+2Y,GAAgB/2Y,GAQ/Fi3Y,GAAa,CAAC9iY,EAAQyiY,KACxB,MAAM11Q,EARO,EAAClhI,EAAS42Y,KACvB,IAAIziY,EAASpU,GAAQC,EAASg3Y,IAC9B,KAAO7iY,IAAWwiY,GAAaxiY,EAAQyiY,IACnCziY,EAASpU,GAAQoU,EAAO+a,cAAe8nX,IAE3C,OAAO7iY,GAGM+iY,CAAS/iY,EAAQyiY,GACxBjsV,EAAM5qD,GAAQmhI,EAAM4wQ,GAAgB,OAC1C,GAAI5wQ,GAAQv2E,EAAK,CACb,IAAI42E,EAAW52E,EAAI7pC,aAAa,iBAChCygH,EAAWA,EAAWrzG,SAASqzG,EAAU,IAAM,EAAI,KACnD,IAAIqpL,EAAW1pL,EAAKpgH,aAAa,iBAEjC,GADA8pS,EAAWA,EAAW18R,SAAS08R,EAAU,IAAM,EAAI,KAClC,OAAbrpL,GAAkC,OAAbqpL,EACrB,MAAO,CAAEA,WAAUrpL,WAAUvhI,QAASkhI,EAE7C,GAICi2Q,GAAkB3vY,GAFLA,IAAWA,IAAYC,gBAAkBD,IAAYC,iBACpED,IAAYC,cAAgBD,IAAYC,eACT2vY,CAAW5vY,IAC1CA,IAAYC,aAAeD,IAAYC,eACvCD,IAAYC,WAAaD,IAAYC,SACnC4vY,GAAUvF,GAAgB,SAMhC,MAAMwF,GACFlgZ,YAAY23L,EAAgBC,GACxB13L,KAAKy3L,eAAiBA,EACtBz3L,KAAK03L,cAAgBA,CACxB,CACDuoN,YAAYpI,GAER,OADkBA,EAAe,GACZA,GAAgB73Y,KAAKy3L,gBAAkBogN,GAAgB73Y,KAAK03L,aACpF,CACDwoN,WAAWvlY,EAAOG,GACd,OAAQH,GAAS3a,KAAKy3L,gBAAkBz3L,KAAK03L,eAAiB58K,GACzD9a,KAAKy3L,gBAAkB98K,GAASA,GAAS3a,KAAK03L,eAC9C13L,KAAKy3L,gBAAkB38K,GAAOA,GAAO9a,KAAK03L,aAClD,EAKL,MAAMh+K,GACF5Z,YAAYwe,EAAMk2F,EAAW2rS,EAAqBC,EAAsBC,EAAeC,EAAgBC,GAAWhrK,GAAanV,GAAIv1N,GAAc21Y,IAC7IxgZ,KAAKse,KAAOA,EACZte,KAAKw0G,UAAYA,EACjBx0G,KAAKmgZ,oBAAsBA,EAC3BngZ,KAAKogZ,qBAAuBA,EAC5BpgZ,KAAKqgZ,cAAgBA,EACrBrgZ,KAAKsgZ,eAAiBA,EACtBtgZ,KAAKugZ,UAAYA,GACjBvgZ,KAAKu1O,YAAcA,GACnBv1O,KAAKogO,GAAKA,GACVpgO,KAAK6K,aAAeA,GACpB7K,KAAKwgZ,gBAAkBA,GACvBxgZ,KAAKygZ,YAAc,IAAIv1Y,MACvBlL,KAAK0gZ,eAAiB,EACtB1gZ,KAAK2gZ,OAAQ,EACb3gZ,KAAKyf,QAAS,EACdzf,KAAKshI,KAAO,EACZthI,KAAK+yG,MAAQ,IAAIymH,GACjBx5N,KAAKipC,OAAS,IAAIsuW,GAAiBv3Y,KAAK+yG,OACxC/yG,KAAK4gZ,kBAAmB,EACxB5gZ,KAAK6gZ,kBAAmB,EACxB7gZ,KAAKiM,QAAUjM,KAAKipC,OAAOh9B,OAC9B,CACG0sY,aAASzwY,GACTlI,KAAKy1I,KAAOvtI,EACZlI,KAAKipC,OAAO0vW,SAAWzwY,CAC1B,CACGywY,eACA,OAAO34Y,KAAKy1I,IACf,CACGiK,cACA,OAAO1/I,KAAK2gZ,KACf,CACGG,mBACA,OAAO9gZ,KAAK2gZ,OAAS3gZ,KAAK4gZ,gBAC7B,CACGG,mBACA,OAAO/gZ,KAAK2gZ,OAAS3gZ,KAAK6gZ,gBAC7B,CACGG,iBACA,GAAkB,IAAdhhZ,KAAKshI,KACL,OAAOthI,KAAKipC,OAAO2gG,IAE1B,CACG4tQ,gBACA,GAAkB,IAAdx3Y,KAAKshI,KACL,OAAOjiH,OAAOC,OAAO,GAAItf,KAAKipC,OAAOoqB,IAAK,CACtC0uH,MAAO/hL,KAAKipC,OAAOoqB,IAAI0uH,MAAM3sK,WAGxC,CACG6rY,oBACA,OAAOvsX,KAAK7Z,IAAI,EAAG7a,KAAK0gZ,eAAiB1gZ,KAAKy1I,KAAKoqO,WACtD,CACDthN,KAAK9oB,EAAMyrQ,GACPlhZ,KAAKmhZ,kBAAkBD,GACvBlhZ,KAAK2gZ,OAAQ,EACb3gZ,KAAKugZ,UAAU9gY,QAAS,EACxBzf,KAAK24Y,SAAWljQ,EAChB,MAAM2rQ,EAAqB,IAAI7oL,IAAen+M,GAASpa,KAAKse,KAAK+iY,YAC7D77Y,KAAK,EAAC,IAAOC,QAAKpE,MAAI,IAAM+Y,IAC5Bpa,KAAKse,KAAKspM,SAASniN,QAAKilB,MAAK,IAAD,EAAKrpB,MAAI,IAAM+Y,MAAUm+M,GACnD3Q,EAAWw5L,IAuBjB,GAtBAphZ,KAAK2L,KAAO,IAAIC,MAChB5L,KAAK2L,KAAKK,IAAIhM,KAAKipC,OAAOh9B,QACrBC,UAAUkO,GAAQpa,KAAKshZ,gBAAgBlnY,KAC5Cpa,KAAK2L,KAAKK,IAAIhM,KAAKw0G,UAAUpjG,MAAM3L,QAAK2oN,MAAUxG,IAC7C17M,UAAWkO,GAASpa,KAAKuhZ,WAAWnnY,EAAKyC,UAC9C7c,KAAK2L,KAAKK,IAAIhM,KAAKw0G,UAAUyiS,SAASxxY,QAAK6P,MAAO,IAAoB,IAAdtV,KAAKshI,OAAZ,EAAuC8sF,MAAUgzL,KAAmB5zL,MAAUxtN,KAAKw0G,UAAUpjG,UACzIlF,UAAUkO,GAAQpa,KAAKwhZ,WAAWpnY,KACvCpa,KAAK2L,KAAKK,IAAIhM,KAAKw0G,UAAU0iS,WAAWzxY,QAAK6P,MAAO,IAAoB,IAAdtV,KAAKshI,OAC1Dp1H,UAAU,IAAMlM,KAAKyhZ,iBAC1BzhZ,KAAK2L,KAAKK,IAGVhM,KAAKu1O,YAAYtpO,QAAQxG,QAAK6P,MAAOmP,GAAkB,SAAbA,EAAEnK,QAAmC,IAAdta,KAAKshI,OAAlC,EAA6DhsH,MAAQmP,GAAmB,cAAbA,EAAEnK,SAA2BmK,EAAE7Q,YAAvC,EAAmDw6M,MAAUxG,IAC/J17M,UAAU,IAAMlM,KAAK0hZ,cAC1B1hZ,KAAK2L,KAAKK,IAAIhM,KAAKmgZ,oBAAoB1nN,WAClCvsL,UAAU,IAAMlM,KAAKipC,OAAO8+B,MAAM,EAAG,KAC1C/nE,KAAK2L,KAAKK,IAAIhM,KAAKw0G,UAAUx/F,QACxB9I,UAAUkO,GAAQpa,KAAK2hZ,UAAUvnY,KACtCpa,KAAK2L,KAAKK,IAAIhM,KAAKw0G,UAAUx/F,QAAQvP,QAAK6P,MAAO8E,GAAQA,EAAKlK,UAAYC,UAA0B,IAAdnQ,KAAKshI,MAA2B+oM,GAAYrqU,KAAKw0G,UAAUyiS,SAASxxY,QAAK+nN,SAE/J3/J,MAAS,GAAGpoD,QAAKilB,MAAK,QACjBxe,UAAU,IAAMlM,KAAK4hZ,aACtB5hZ,KAAKwgZ,gBAAiB,CACtB,MAAM93Y,EAAU,IAAI0uY,GAAqBp3Y,MACzCA,KAAKwgZ,gBAAgBrB,gBAAgBz2Y,EACxC,CACD1I,KAAK6hZ,oBACR,CACDhxY,cACQ7Q,KAAK2L,MACL3L,KAAK2L,KAAKsF,cAEdjR,KAAK2gZ,OAAQ,CAChB,CACDlH,aAAa7vQ,GACT,GAAIA,EAAK8vQ,kBAAoB15Y,KAAK8hZ,gBAAiB,CAC/C,MAAMlI,EAAY55Y,KAAK+yG,MAAM0mS,aAAa7vQ,GACtC5pI,KAAK+hZ,aAAe/hZ,KAAKipC,OAAOmvW,oBAAoBwB,KACpD55Y,KAAK+hZ,aAAc,EAE1B,CACJ,CACDC,yBAAyBp4Q,GACjBA,EAAK8vQ,kBAAoB15Y,KAAK8hZ,iBAC9B9hZ,KAAK+yG,MAAM0mS,aAAa7vQ,EAE/B,CACDowQ,eAAextY,EAAOy9H,EAAUL,GAC5B5pI,KAAK+yG,MAAMinS,eAAextY,EAAOy9H,EAAUL,EAC9C,CACDqwQ,YAAY5mV,GACRrzD,KAAK+yG,MAAMknS,YAAY5mV,GACvBrzD,KAAK8hZ,gBAAkBzuV,EAAIqmV,eAC9B,CACDS,UAAU9mV,GACNrzD,KAAK+yG,MAAMonS,UAAU9mV,EACxB,CACD+mV,cAAc5tY,EAAO6mD,GACjBrzD,KAAK+yG,MAAMqnS,cAAc5tY,EAAO6mD,GAChC,MAAMiiU,EAAUt1X,KAAK+yG,MAAMuiR,QAC3B,GAAIA,GAAyB,IAAdt1X,KAAKshI,KAA0B,CAC1C,MAAMglH,EAAYtmP,KAAKiiZ,iBAAmBjiZ,KAAKkiZ,SAAYliZ,KAAKkiZ,SAASxqN,cAAgB49L,EAAQ9oX,MAC7FxM,KAAK0gZ,eAAiBp6J,GACtBtmP,KAAKipC,OAAO8+B,MAAM,EAAG,EAE5B,CACJ,CACDo6U,gBAAgBv4Q,GACZ,OAAO5pI,KAAK2gZ,OACR3gZ,KAAKyf,QACS,IAAdzf,KAAKshI,MACLthI,KAAKipC,OAAOw/I,SAAS7+C,EAAK8vQ,gBAAiB9vQ,EAAK+vQ,gBACvD,CACDyI,cAAcx4Q,GACV,OAAqB,IAAd5pI,KAAKshI,MAA2BthI,KAAKmiZ,gBAAgBv4Q,EAC/D,CACD23Q,WAAWz4Y,GACP,IAAK9I,KAAK2gZ,MACN,OAEJ,MAAM/2Q,EAAO+1Q,GAAW72Y,EAAI9I,KAAKy1I,KAAK6pQ,YAAYnzY,eAClD,IAAKy9H,EACD,OAEJ,MAAMy4Q,EAAUriZ,KAAKshI,KACfghR,EAt8BK,EAAC3qX,EAAQ1uB,EAAM6xY,GAAY,KAE1C,IADiBryY,GAAQQ,EAAO09B,GAAUA,IAAUhP,GAEhD,OAAO,EAEX,MAAM7uB,EAAKL,GAAQQ,EAAO09B,GAAUA,IAAU19B,GAC9C,OAAOH,IAAOgyY,GAAahyY,IAAO6uB,IAg8BV4qX,CAAW34Q,EAAKlhI,QAASrF,SAASi7K,eAChDkkO,EAAwC,IAAdxiZ,KAAKshI,MACjCthI,KAAK0gZ,iBAAmB92Q,EAAKK,UAC7BnhI,IAAO8gI,EAAKlhI,QAChB,GAAI45Y,EACAtiZ,KAAKshI,KAAO,EACZthI,KAAKipC,OAAO8+B,MAAM6hE,EAAKK,SAAUL,EAAK0pL,UACtCtzT,KAAKyiZ,mBAAL,IAEMD,EAAyB,CAC/BxiZ,KAAKshI,KAAO,EACZthI,KAAK6hZ,qBACL,MAAMa,EAAgB1iZ,KAAKipC,OAAOw/I,SAAS7+C,EAAKK,SAAUL,EAAK0pL,UAClC,IAAZ+uF,GAA8BK,GAE3C1iZ,KAAKipC,OAAO8+B,MAAM6hE,EAAKK,SAAUL,EAAK0pL,SAE7C,CACJ,CACDqvF,SAAS75Y,GACL9I,KAAK4iZ,mBACL,MAAM98L,EAAYi1L,GAAmBjyY,GACrC,GAAIg9M,EAAW,CACX,MAAMl8E,EAAO+1Q,GAAW75L,EAAW9lN,KAAKy1I,KAAK6pQ,YAAYnzY,eACrDy9H,IACA5pI,KAAKipC,OAAO8+B,MAAM6hE,EAAKK,SAAUL,EAAK0pL,UACtCtzT,KAAK6hZ,qBACL7hZ,KAAK6iZ,aAET/8L,EAAU10M,OACb,MAEGpR,KAAK6hZ,qBAET,QAAS/7L,CACZ,CACDm8L,gBACI,OAAOjiZ,KAAKy1I,MAAQz1I,KAAKy1I,KAAKyjQ,SACjC,CACD4J,YAAYrrN,EAAgBC,GAExB,GADA13L,KAAKkiZ,SAAW,IAAIlC,GAAmBvoN,EAAgBC,GACnD13L,KAAKy1I,MAAQz1I,KAAKy1I,KAAKyjQ,WAAal5Y,KAAKihZ,eAAgB,EAAI,CAC7D,MAAMpJ,EAAe73Y,KAAKihZ,cAEpB8B,EAASlL,EAAengN,EADhBD,EAAiBogN,EAEnB,EACR73Y,KAAKipC,OAAO8+B,MAAM0vH,EAAiBz3L,KAAKy1I,KAAKoqO,YAExCkjC,EAAS,GACd/iZ,KAAKipC,OAAO8+B,MAAM2vH,EAAgB13L,KAAKy1I,KAAKoqO,WAEnD,CACJ,CACDmjC,kBAAkBvrN,EAAgBC,GAC9B13L,KAAKijZ,eAAiB,IAAIjD,GAAmBvoN,EAAgBC,EAChE,CACD2/M,UAAUptQ,EAAsBqpL,GAC5B,YAAKhyL,KAAO,EACZthI,KAAKipC,OAAO8+B,MAAMkiE,EAAUqpL,GACrBtzT,KAAKghZ,UACf,CACDkC,mBAAmBp6Y,GACf,MAAM8gI,EAAO+1Q,GAAW72Y,EAAI9I,KAAKy1I,KAAK6pQ,YAAYnzY,eAClD,GAAIy9H,EACA,OAAO5pI,KAAKq3Y,UAAUztQ,EAAKK,SAAUL,EAAK0pL,SAEjD,CACD6vF,cAAcllX,GAAO,GACjB,OAAOj+B,KAAKojZ,mBAAkB,EAAMnlX,EACvC,CACDolX,cAAcplX,GAAO,GACjB,OAAOj+B,KAAKojZ,mBAAkB,EAAOnlX,EACxC,CACD/e,OAAOO,GACHzf,KAAKyf,OAASA,EACdzf,KAAKipC,OAAOkvW,UACf,CACDh4G,WACI,OAAqB,IAAdngS,KAAKshI,MAAyC,IAAdthI,KAAKshI,IAC/C,CACDgiR,cAAc3oY,EAAOG,GACjB,OAAQ9a,KAAKy1I,KAAKwjQ,gBAAkBn+X,EAAM9a,KAAKy1I,KAAKm+G,QAAQ2vJ,kBAAkBjjZ,QAAUN,KAAKijZ,eAAe/C,WAAWvlY,EAAOG,EACjI,CACDqmY,kBAAkBD,GACdlhZ,KAAK4gZ,iBAAmBM,EAAiB58Y,SAAS,SAClDtE,KAAK6gZ,iBAAmBK,EAAiB58Y,SAAS,QACrD,CACD8+Y,kBAAkBI,EAAKvlX,GACnBj+B,KAAKq3Y,YACL,IAAIoM,EAAUD,EAAMxjZ,KAAK0jZ,gBAAkB1jZ,KAAK2jZ,gBAChD,GAAI1lX,IAASwlX,IACTA,EAAUD,EAAMxjZ,KAAKipC,OAAO+8I,SAAS,GAAKhmL,KAAKipC,OAAOg9I,OAAO,GACzDw9N,GAAS,CACT,MAAMpwV,EAAMrzD,KAAKipC,OAAOoqB,IAClBuwV,EAASJ,EAAM,EAAIxjZ,KAAKipC,OAAOyvW,cAAcrlV,GACnDrzD,KAAKipC,OAAO8+B,MAAM1U,EAAI7mD,MAAOo3Y,EAChC,CAEL,OAAIH,EACOzjZ,KAAKghZ,YAGZhhZ,KAAKshI,KAAO,EACZthI,KAAKipC,OAAOkvW,WAET,KACV,CACD0K,YACI,MAAMj5Q,EAAO5pI,KAAKipC,OAAO2gG,KACzB,IAAKA,EACD,OAEJ,MAAM98F,EAAQ88F,EAAKmwQ,WACbj0L,EAAYh5K,GAASA,EAAMyuR,WACjCv7T,KAAKshI,KAAOwkF,EAAY,EAAkB,EAC1C9lN,KAAKipC,OAAOkvW,WACRryL,IACA9lN,KAAKyiZ,cACL31W,EAAM17B,QAEb,CACDswY,YACI,MAAM93Q,EAAO5pI,KAAKipC,OAAO2gG,KACzB,IAAKA,EACD,OAEJ,MAAM98F,EAAQ88F,EAAKmwQ,WACDjtW,GAASA,EAAMyuR,YAE7Bv7T,KAAK6hZ,qBAET7hZ,KAAKshI,KAAO,EACZthI,KAAKipC,OAAOkvW,UACf,CACDyK,mBACI5iZ,KAAKugZ,UAAUlqY,UAClB,CACDwrY,qBACI7hZ,KAAKugZ,UAAU1qY,YAClB,CACD4sY,cACIziZ,KAAKipC,OAAOoqB,IAAI0uH,MACXtxK,QAAQm5H,GAAQA,EAAKmwQ,YAAcnwQ,EAAKmwQ,WAAW1jY,WAC3D,CACDqtY,gBACI,OAAO1jZ,KAAK6K,aAAakB,IAAM/L,KAAKipC,OAAOsvW,WAAav4Y,KAAKipC,OAAOwvW,WACvE,CACDkL,gBACI,OAAO3jZ,KAAK6K,aAAakB,IAAM/L,KAAKipC,OAAOwvW,YAAcz4Y,KAAKipC,OAAOsvW,UACxE,CACDsL,gBAAgBzpY,GACZ,IAAIvG,GAAiB,EACrB,MAAM0vK,EAAWnpK,EAAK6+E,SAAW7+E,EAAKwwK,QAChCnwK,EAAO8oK,EAAW,EAAI,EAC5B,IAAKvjL,KAAK8jZ,cAAc1pY,GACpB,OAEJ,MAAMi5C,EAAMrzD,KAAKipC,OAAOoqB,IACxB,OAAQj5C,EAAKlK,cACJC,eACD0D,EAAiB7T,KAAKipC,OAAO+8I,SAASvrK,GACtC,WACCtK,aACD0D,EAAiB7T,KAAKipC,OAAOg9I,OAAOxrK,GACpC,WACCtK,gBACD0D,EAAiB7T,KAAK0jZ,gBACtB,WACCvzY,eACD0D,EAAiB7T,KAAK2jZ,gBACtB,WACCxzY,cACD,GAAInQ,KAAK24Y,SAASO,WAAal5Y,KAAKkiZ,SAAU,CAC1C,IAAInnL,GAAgB/6N,KAAKy1I,KAAKoqO,WAAa7/W,KAAKkiZ,SAASxqN,cAAgB,EACrE13L,KAAK24Y,SAASE,mBACd99K,KAEJA,GAAgBrmM,KAAK9Z,IAAI5a,KAAKy1I,KAAK0jQ,mBAAoBp+K,IACvD/6N,KAAKipC,OAAO8+B,MAAMgzJ,IAClBlnN,GAAiB,CACpB,MACQ7T,KAAK24Y,SAASoL,WACnB/jZ,KAAKse,KAAK5M,IAAI,IAAM1R,KAAKmgZ,oBAAoBx+J,YAC7C9tO,GAAiB,GAErB,WACC1D,YACD,GAAInQ,KAAK24Y,SAASO,WAAal5Y,KAAKkiZ,SAAU,CAC1C,IAAI8B,GAAehkZ,KAAKkiZ,SAASxqN,cAAgB13L,KAAKkiZ,SAASzqN,eAC3DA,GAAiBz3L,KAAKkiZ,SAASzqN,eAC/BsjC,GAAgBrmM,KAAK7Z,IAAI7a,KAAKy1I,KAAKoqO,WAAYpoL,GAAiBusN,GAAe,GACnFhkZ,KAAKipC,OAAO8+B,MAAMgzJ,IAClBlnN,GAAiB,CACpB,MACQ7T,KAAK24Y,SAASoL,WACnB/jZ,KAAKse,KAAK5M,IAAI,IAAM1R,KAAKmgZ,oBAAoBt+J,YAC7ChuO,GAAiB,GAErB,WACC1D,UACGozK,EACIvjL,KAAKy1I,KAAKyjQ,UACVl5Y,KAAKipC,OAAO8+B,MAAM/nE,KAAKy1I,KAAKoqO,WAAY,GAAG,GAG3C7/W,KAAKipC,OAAO8+B,MAAM/nE,KAAK+yG,MAAMymS,SAAShtY,MAAO,GAAG,GAIpDxM,KAAKipC,OAAO8+B,MAAM1U,EAAI7mD,MAAO,GAAG,GAEpCqH,GAAiB,EACjB,WACC1D,SACD,GAAIozK,EACA,GAAIvjL,KAAKy1I,KAAKyjQ,UAAW,CACrB,IAAI+K,GAAejkZ,KAAKy1I,KAAK0jQ,mBACzBn5Y,KAAKy1I,KAAKojQ,mBACVoL,KAEJjkZ,KAAKipC,OAAO8+B,MAAMk8U,GAAcjkZ,KAAKipC,OAAOyvW,iBAAiB,EAChE,MAEG14Y,KAAKipC,OAAO8+B,MAAM/nE,KAAK+yG,MAAMuiR,QAAQ9oX,MAAOxM,KAAKipC,OAAOyvW,cAAc14Y,KAAK+yG,MAAMuiR,UAAU,OAG9F,CACD,MAAMn/W,GAAYnW,KAAKipC,OAAOyvW,cAAcrlV,GACtCu2E,GAAO5pI,KAAK+yG,MAAMwiM,SAASp/R,GAAWk9C,GACxCu2E,GACA5pI,KAAKipC,OAAO8+B,MAAM6hE,GAAKK,SAAUL,GAAK0pL,UAGtCtzT,KAAKipC,OAAO8+B,MAAM1U,EAAI7mD,MAAO2J,GAEpC,CACDtC,GAAiB,EACjB,WACC1D,gBACAA,QACD,MAAM2oY,EAAYzlV,EAAIylV,UAClBA,EACA94Y,KAAKse,KAAK5M,IAAI,IAAM1R,KAAKqgZ,cAActE,UAAUjD,IAE5C94Y,KAAKipC,OAAO2gG,KAAKkwQ,iBACtB95Y,KAAKse,KAAK5M,IAAI,IAAM1R,KAAKsgZ,eAAevE,UAAU1oV,EAAIwkV,aAAcxkV,EAAIl7C,YAGxEnY,KAAK6iZ,YACA7iZ,KAAKipC,OAAO2gG,KAAKmwQ,WAAWzC,gBAC7BzjY,GAAiB,IAGzB,eAEKuG,EAAK6+E,UAAY7+E,EAAKI,QA1abra,IAAuB,IAAfA,EAAIG,QAAgBH,EAAI0yB,MAAM,MA0afqxX,CAAqB9pY,EAAKwf,MAC3D55B,KAAK6iZ,YAGbhvY,GACAuG,EAAKvG,gBAEZ,CACDswY,iBAAiB/pY,GACb,IAAKpa,KAAK8jZ,cAAc1pY,GACpB,OAEJ,MAAMwvO,GAAWxvO,EAAKksR,kBAAoBlsR,EAAKlK,UAAYC,YAvb/CzH,IAAWA,GAAWq3Y,GAAQr3Y,IAA2C,SAA/BA,EAAQ+V,KAAK1D,cAubMqpY,CAAYhqY,EAAK6rE,YACtF7rE,EAAKlK,UAAYC,aAAeiK,EAAKlK,UAAYC,SAAWy5O,GAC5D5pP,KAAK0hZ,YACL1hZ,KAAKipC,OAAO8+B,QACZ3tD,EAAK6lF,mBAEA4/S,GAAgBzlY,EAAKlK,UAAYlQ,KAAKipC,OAAO2gG,KAAKmwQ,WAAWzC,gBAClEt3Y,KAAK6jZ,gBAAgBzpY,GACjBA,EAAKksR,kBACLtmS,KAAK0hZ,YAGhB,CACDoC,cAAc1pY,GACV,GAAIpa,KAAKu1O,YAAYooK,gBAAiB,CAClC,MAAM/zJ,EAAUxvO,EAAKlK,UAAYC,WAC3B+hF,EAAS93E,EAAKlK,UAAYC,YAC1B+D,EAAW2rY,GAAgBzlY,EAAKlK,SACtC,GAAI05O,EACA5pP,KAAKu1O,YAAYkoK,UAAUrjY,QAA3B,GAEK83E,EACLlyF,KAAKu1O,YAAYkoK,UAAUrjY,GAC3Bpa,KAAKogO,GAAGj5M,qBAAR,GAEKjT,EACL,OAAO,CAEd,CACD,YAAKusY,YAAYrwY,KAAKgK,IACf,CACV,CACDknY,gBAAgBlnY,GACZpa,KAAK0gZ,eAAiBtmY,EAAK6vH,SAC3B,MAAM4tQ,EAAe73Y,KAAKihZ,cAO1B,GANIjhZ,KAAKy1I,MAASz1I,KAAKy1I,KAAKyjQ,WACxB9+X,EAAK6vH,UAAYjqI,KAAKy1I,KAAKoqO,YAC3B7/W,KAAKkiZ,WACJliZ,KAAKkiZ,SAASjC,YAAYpI,IAAiBA,GAAe,GAC3D73Y,KAAKogZ,qBAAqBxxP,SAAS,CAAEv7F,IAAKwkV,IAE1C73Y,KAAKy1I,KAAKwjQ,gBAAkB7+X,EAAKk5S,UAAYtzT,KAAKy1I,KAAKm+G,QAAQ2vJ,kBAAkBjjZ,OAAQ,CACzF,MAAMspI,EAAO5pI,KAAKghZ,YACVrmY,QAAOG,OAAQ9a,KAAK+yG,MAAMklS,UAAUruQ,GACvCA,IACD5pI,KAAK+hZ,aAAc,KAEjBn4Q,GAAsB,IAAd5pI,KAAKshI,MAA8BsI,IAAS5pI,KAAKijZ,eAAe/C,WAAWvlY,EAAOG,KAC5F9a,KAAKogZ,qBAAqBxxP,SAAS,CAAEtyC,OAAQliG,EAAKk5S,UAAYtzT,KAAK24Y,SAASE,kBAAoB,EAAI,IAE3G,CACJ,CACD2I,WAAWpnY,GACH2rM,GAAU3rM,EAAKyC,QACf7c,KAAKshI,KAAO,EAKZthI,KAAKshI,KAAO,EAEhBthI,KAAK6hZ,qBACL7hZ,KAAKipC,OAAOkvW,UACf,CACDsJ,eACIzhZ,KAAKshI,KAAO,EACZthI,KAAK6hZ,qBACL7hZ,KAAKipC,OAAOkvW,UACf,CACDwJ,UAAUvnY,GACY,IAAdpa,KAAKshI,KACLthI,KAAK6jZ,gBAAgBzpY,GAEF,IAAdpa,KAAKshI,MACVthI,KAAKmkZ,iBAAiB/pY,EAE7B,CACDwnY,WAGQ5hZ,KAAKipC,OAAO2gG,KAAKmwQ,WAAWzC,gBAKhCt3Y,KAAK0hZ,YACL1hZ,KAAKipC,OAAO8+B,QACf,EAELruD,GAAkB3W,UAAlB,0BAA+G2W,IAhyDR1W,MAgyD2CA,OAhyD3CA,MAgyDiE6zY,IAhyDjE7zY,MAgyD8Fk4Y,IAhyD9Fl4Y,MAgyD8Hq4Y,IAhyD9Hr4Y,MAgyD+Jy4Y,IAhyD/Jz4Y,MAgyDyLo5Y,IAhyDzLp5Y,MAgyDoNy5Y,IAhyDpNz5Y,MAgyD0O85Y,IAhyD1O95Y,MAgyDkQA,OAhyDlQA,MAgyDmSqQ,OAhyDnSrQ,MAgyDsUkU,GAA7a,KACAwC,GAAkBzW,WAjyDqFD,MAiyDvG,OAAmH0W,GAAnHxW,QAAmHwW,GAAnH,YAUA,MAAMi1K,GACF7uL,YAAY00G,EAAW6vS,EAAyBppY,GAC5Cjb,KAAKw0G,UAAYA,EACjBx0G,KAAKqkZ,wBAA0BA,EAC/BrkZ,KAAKib,kBAAoBA,EACzBjb,KAAKiM,QAAU,IAAIf,MACnBlL,KAAKskZ,wBAA0B,EAC/BtkZ,KAAK0gS,iBAAmB,GACxB1gS,KAAKukZ,kBAAmB,EACxBvkZ,KAAKyf,QAAS,EACdzf,KAAK8pS,UAAW,EAChB9pS,KAAKyhN,kBACR,CACG+iM,oBACA,MAAMC,EAAezkZ,KAAKof,UAAqC,iBAAlBpf,KAAKof,UAAyBpf,KAAKof,SAASqlY,aACzF,IAAKzkZ,KAAKof,UAAYqlY,EAClB,OAAO,EAEX,MAAMC,EAAqB1kZ,KAAKof,SAAS4gN,WACnC2kL,EAAkD,iBAAxBD,GAC5Bz8Y,GAAUy8Y,IACkB,aAA5BA,EAAmBpjR,OACY,IAA/BojR,EAAmBhlQ,UAClBglQ,EAAmBD,cACpBC,EAAmBnwS,KACvB,OAAOv0G,KAAKyf,QAAUklY,CACzB,CACDpmP,KAAKn/I,GAGD,GAFApf,KAAKof,SAAWA,EAChBpf,KAAK0gS,iBAAmB,GACpBthR,EAAS4gN,aAA8C,IAAhC5gN,EAAS4gN,WAAWtgF,QAAmB,CAC9D,MAAM22P,EAAWr2Y,KAAK4kZ,cACtB5kZ,KAAK6kZ,iBAAkB,EACvB,IAAIr+X,EAAO6vX,EAASpxY,OACpB,MAAQuhB,EAAKmgI,MAAM,CACf,GAAIngI,EAAKte,OAA6B,SAApBse,EAAKte,MAAMuW,KAAiB,CAC1C,MAAMqmY,EAAU,CACZ3sY,SAAUqO,EAAKte,MAAMqX,KACrB/S,MAAOga,EAAKte,MAAMsE,OAElB4S,EAAS2lY,YAAYD,GACrB9kZ,KAAK0gS,iBAAiBl6Q,EAAKte,MAAMsE,OAASs4Y,EAG1C9kZ,KAAK6kZ,qBAAkB9vY,CAE9B,CACDyR,EAAO6vX,EAASpxY,MACnB,CACoC,IAAjCjF,KAAK0gS,iBAAiBpgS,SACtBN,KAAK6kZ,iBAAkB,EAE9B,CACJ,CACDliO,WAAWn2K,GACP,GAAIxM,KAAKof,UAAYpf,KAAKyf,OACtB,OAAOzf,KAAKgG,QAAQ05I,SAAWz3I,GAAUjI,KAAK0gS,iBAAiBl0R,GAEtE,CACDwnL,YAAYxtK,EAAMxW,GACd,GAAIhQ,KAAK8pS,SAEL,YADA9pS,KAAK8pS,UAAW,GAGpB,IAAI5/E,EACJ,MAAMjxH,EAAUjpF,EAAMipF,SAAWjpF,EAAM46K,QACb,WAAtB5qL,KAAKgG,QAAQs7H,MAAqBroC,GAAWj5F,KAAK2iL,WAAWn8J,EAAKha,OAClE09M,EAAKlqN,KAAKkf,OAAOsH,GAEU,aAAtBxmB,KAAKgG,QAAQs7H,OACdroC,IAAYjpF,EAAMkpF,SAClBgxH,EAAKlqN,KAAKkf,OAAOsH,GAEZxW,EAAMkpF,WACXgxH,EAAKlqN,KAAKglZ,SAASx+X,EAAMyyE,KAG5BhxF,GAAUiiN,KACXA,EAAKlqN,KAAK61G,OAAOrvF,GACjBxmB,KAAK0gS,iBAAiBl6Q,EAAKha,OAAS,CAChC2L,SAAUqO,EAAKjH,KACf/S,MAAOga,EAAKha,SAGf09M,EAAG+6L,aAAa3kZ,QAAW4pN,EAAGg7L,eAAe5kZ,UAGlD4pN,EAAGjxH,QAAUA,EACbixH,EAAGhxH,SAAWlpF,EAAMkpF,SACpBl5F,KAAKiM,QAAQmE,KAAK85M,GACrB,CACDhrM,OAAOsH,GACH,IAAIy+X,EAAe,GACfC,EAAiB,GACrBllZ,KAAKskZ,wBAA0B99X,EAAKha,MACpC,MAAMs4Y,EAAU,CAAE3sY,SAAUqO,EAAKjH,KAAM/S,MAAOga,EAAKha,OACnD,OAAIxM,KAAK2iL,WAAWn8J,EAAKha,OACrB04Y,EAAelpY,KAAK8oY,GAGpBG,EAAajpY,KAAK8oY,GAEf,CACHI,eAAgBA,EAChBD,aAAcA,EAErB,CACDE,cAAc34Y,GACV,MAAM6pY,EAAWr2Y,KAAK4kZ,cAClB5kZ,KAAKukZ,kBAAoBvkZ,KAAK2iL,WAAWn2K,KACzCxM,KAAKukZ,kBAAmB,GAE5B,IAAI/9X,EAAO6vX,EAASpxY,OACpB,MAAQuhB,EAAKmgI,MAAM,CACf,GAAIngI,EAAKte,OAA6B,SAApBse,EAAKte,MAAMuW,MAAmB+H,EAAKte,MAAMsE,QAAUA,EAAO,CACxE,MAAM44Y,EAAe,CACjB7lY,KAAMiH,EAAKte,MAAMqX,KACjB/S,MAAOga,EAAKte,MAAMsE,OAEtB,OAAIxM,KAAK2iL,WAAWn2K,IAAgC,aAAtBxM,KAAKgG,QAAQs7H,KAChCthI,KAAKkf,OAAOkmY,GAGZplZ,KAAK61G,OAAOuvS,EAE1B,CACD5+X,EAAO6vX,EAASpxY,MACnB,CACJ,CACD4wG,OAAOrvF,GACH,IAAI0+X,EAAiB,GACjBD,EAAe,GACnB,YAAKX,wBAA0B99X,EAAKha,MAC/BxM,KAAK2iL,WAAWn8J,EAAKha,QACtBy4Y,EAAajpY,KAAK,CAAE7D,SAAUqO,EAAKjH,KAAM/S,MAAOga,EAAKha,QAEzDxM,KAAK0gS,iBAAiBjwR,QAAS4iD,IACvBA,EAAI7mD,QAAUga,EAAKha,OACnB04Y,EAAelpY,KAAKq3C,EAApB,GAGD,CACH6xV,eAAgBA,EAChBD,aAAcA,EAErB,CAEDI,SAASC,GACL,MAAMjP,EAAWr2Y,KAAK4kZ,cACtB,IAAIp+X,EAAO6vX,EAASpxY,OACpB,MAAQuhB,EAAKmgI,MAAM,CACf,GAAIngI,EAAKte,OAA6B,SAApBse,EAAKte,MAAMuW,MAAmB+H,EAAKte,MAAMqX,OAAS+lY,EAAa,CAC7E,MAAMR,EAAU,CACZ3sY,SAAUqO,EAAKte,MAAMqX,KACrB/S,MAAOga,EAAKte,MAAMsE,OAEtB,GAAIxM,KAAK2iL,WAAWmiO,EAAQt4Y,OAAQ,CAChC,IAAI09M,EAAK,CACLjxH,SAAS,EACTisT,eAAgB,CAACJ,GACjBG,aAAc,IAElBjlZ,KAAKiM,QAAQmE,KAAK85M,EACrB,CACJ,CACD1jM,EAAO6vX,EAASpxY,MACnB,CACJ,CACD+/Y,SAASx+X,EAAMyyE,GACX,IAAIgsT,EAAe,GACfC,EAAiB,GACrB,MAAMvqY,EAAQ+Z,KAAK9Z,IAAI5a,KAAKskZ,wBAAyB99X,EAAKha,OACpDsO,EAAM4Z,KAAK7Z,IAAI7a,KAAKskZ,wBAAyB99X,EAAKha,OAClD6pY,GAAWr2Y,KAAK4kZ,cACtB,IAAI3/Y,GAAOoxY,GAASpxY,OACpB,MAAQA,GAAK0hJ,MAAM,CACf,GAAI1hJ,GAAKiD,OAA6B,SAApBjD,GAAKiD,MAAMuW,KAAiB,CAC1C,MAAM3d,GAAMmE,GAAKiD,MAAMsE,MACjBs4Y,GAAU,CAAE3sY,SAAUlT,GAAKiD,MAAMqX,KAAM/S,MAAO1L,KAC/CA,GAAM6Z,GAAS7Z,GAAMga,IAAQ9a,KAAK2iL,WAAW7hL,MAASm4F,GACvDisT,EAAelpY,KAAK8oY,IAEnBhkZ,IAAO6Z,GAAS7Z,IAAOga,IAAS9a,KAAK2iL,WAAW7hL,KACjDmkZ,EAAajpY,KAAK8oY,GAEzB,CACD7/Y,GAAOoxY,GAASpxY,MACnB,CACD,MAAO,CACHigZ,eAAgBA,EAChBD,aAAcA,EAErB,CACDM,UAAUhB,GACNvkZ,KAAKukZ,iBAAmBA,EACxB,IAAIU,EAAe,GACfC,EAAiB,GACrB,MAAM7O,EAAWr2Y,KAAK4kZ,cACtB,IAAI3/Y,EAAOoxY,EAASpxY,OACpB,MAAQA,EAAK0hJ,MAAM,CACf,GAAI1hJ,EAAKiD,OAA6B,SAApBjD,EAAKiD,MAAMuW,KAAiB,CAC1C,MAAM3d,GAAMmE,EAAKiD,MAAMsE,MACjBs4Y,GAAU,CAAE3sY,SAAUlT,EAAKiD,MAAMqX,KAAM/S,MAAO1L,IAChDd,KAAK2iL,WAAW7hL,MAASyjZ,GACzBW,EAAelpY,KAAK8oY,KAEnB9kZ,KAAK2iL,WAAW7hL,KAAQyjZ,GACzBU,EAAajpY,KAAK8oY,GAEzB,CACD7/Y,EAAOoxY,EAASpxY,MACnB,CACD,IAAKggZ,EAAa3kZ,SAAW4kZ,EAAe5kZ,OACxC,OAEJ,IAAI4pN,EAAK,CACLjxH,SAAS,EACTisT,eAAgBA,EAChBD,aAAcA,EACd/rT,UAAU,GAEdl5F,KAAKiM,QAAQmE,KAAK85M,EACrB,CACDs7L,YAAYpkW,EAAYC,GACpB,IAAI4jW,EAAe,GACfC,EAAiB,GACrB,MAAMvqY,EAAQ+Z,KAAK9Z,IAAIwmC,EAAYC,GAC7BvmC,EAAM4Z,KAAK7Z,IAAIumC,EAAYC,GAC3Bg1V,GAAWr2Y,KAAK4kZ,cACtB,IAAI3/Y,GAAOoxY,GAASpxY,OACpB,MAAQA,GAAK0hJ,MAAM,CACf,GAAI1hJ,GAAKiD,OAA6B,SAApBjD,GAAKiD,MAAMuW,KAAiB,CAC1C,MAAM3d,GAAMmE,GAAKiD,MAAMsE,MACjBs4Y,GAAU,CAAE3sY,SAAUlT,GAAKiD,MAAMqX,KAAM/S,MAAO1L,KAC/CA,GAAM6Z,GAAS7Z,GAAMga,IAAQ9a,KAAK2iL,WAAW7hL,KAC9CokZ,EAAelpY,KAAK8oY,IAEnBhkZ,IAAO6Z,GAAS7Z,IAAOga,IAAS9a,KAAK2iL,WAAW7hL,KACjDmkZ,EAAajpY,KAAK8oY,GAEzB,CACD7/Y,GAAOoxY,GAASpxY,MACnB,CACD,MAAO,CACHigZ,eAAgBA,EAChBD,aAAcA,EAErB,CACGQ,qBACA,OAAOzlZ,KAAK6kZ,eACf,CACGx4Y,eACA,OAAOrM,KAAK0gS,iBAAiBr/R,IAAKmlB,GACvBA,EAAKha,OACb8I,OAAQwlN,GAAmB,iBAANA,EAC3B,CACG90N,cACA,MAAMgpC,EAAiB,CACnBy1W,cAAc,EACd/kQ,SAAS,EACTpe,KAAM,YAEV,OAAKr5H,GAAUjI,KAAKof,UAGoB,kBAA7Bpf,KAAKof,SAAS4gN,WACd,CACHykL,cAAc,EACd/kQ,QAAS1/I,KAAKof,SAAS4gN,WACvB1+F,KAAM,YAIHjiH,OAAOC,OAAO0vB,EAAgBhvC,KAAKof,SAAS4gN,YAV5ChxL,CAYd,CACDn+B,cACI7Q,KAAK0lZ,qBACR,CACDC,aACI,MAAO,CACHn5Y,MAAOxM,KAAK4lZ,mBAAmB37Q,SAC/B9xH,SAAUnY,KAAK4lZ,mBAAmBztY,SAEzC,CACDspM,mBACSzhN,KAAK6lZ,wBACN7lZ,KAAK6lZ,sBAAwB7lZ,KAAKw0G,UAAUk0E,UAAUx8K,UAAWkO,IACzDpa,KAAKgG,QAAQ05I,UAAY1/I,KAAKgG,QAAQy+Y,cAA8B,gBAAdrqY,EAAKqE,MACvDze,KAAKyf,QACLzf,KAAKg0L,YAAY,CAAExnL,MAAO4N,EAAK6vH,SAAU1qH,KAAMnF,EAAKjC,UAAYiC,EAAKuK,cAArE,IAKX3kB,KAAK8lZ,wBACN9lZ,KAAK8lZ,sBAAwB9lZ,KAAKw0G,UAAUsiS,cAAc5qY,UAAWkO,IACjEpa,KAAK4lZ,mBAAqBxrY,EACrBpa,KAAKgG,QAAQ05I,WAAa1/I,KAAKgG,QAAQs7H,MAA8B,aAAtBthI,KAAKgG,QAAQs7H,QAC5DthI,KAAKgG,QAAQy+Y,cAAgBrqY,EAAKuK,cAAcu0E,UAC7Cl5F,KAAKyf,SACLrF,EAAKuK,cAAc9Q,iBACnB7T,KAAKib,kBAAkBioY,mBAAmB9oY,EAAKuK,cAAc9H,QAA7D,IAKZ7c,KAAKqkZ,0BAA4BrkZ,KAAK+lZ,0BACtC/lZ,KAAK+lZ,wBAA0B/lZ,KAAKqkZ,wBAAwBp4Y,QAAQC,UAAWkO,IACvEpa,KAAKyf,QACDxX,GAAUmS,EAAKE,SAA2B,WAAhBF,EAAKE,QAC/Bta,KAAKqlZ,SAASjrY,EAAKoM,KAAnB,GAKnB,CACDo+X,cACI,MAAMoB,EAAWhmZ,KAAKof,SAAS68H,KAAK+pQ,WACpC,GAAKA,EAGL,OAAOA,EAAS3P,KACnB,CACDqP,sBACQ1lZ,KAAK6lZ,wBACL7lZ,KAAK6lZ,sBAAsB50Y,cAC3BjR,KAAK6lZ,sBAAwB,MAE7B7lZ,KAAK8lZ,wBACL9lZ,KAAK8lZ,sBAAsB70Y,cAC3BjR,KAAK8lZ,sBAAwB,MAE7B9lZ,KAAK+lZ,0BACL/lZ,KAAK+lZ,wBAAwB90Y,cAC7BjR,KAAK+lZ,wBAA0B,KAEtC,EAELp3N,GAAiB5rL,UAAjB,0BAA8G4rL,IA9nEP3rL,MA8nEyC6zY,IA9nEzC7zY,MA8nEsEm0Y,IA9nEtEn0Y,MA8nE0G0W,IAAjN,EACAi1K,GAAiB1rL,WA/nEsFD,MA+nEvG,OAAkH2rL,GAAlHzrL,QAAkHyrL,GAAlH,YAQA,MAAMs3N,GACFnmZ,YAAY00G,EAAW6vS,EAAyBppY,GAC5Cjb,KAAKw0G,UAAYA,EACjBx0G,KAAKqkZ,wBAA0BA,EAC/BrkZ,KAAKib,kBAAoBA,EACzBjb,KAAKiM,QAAU,IAAIf,MACnBlL,KAAKkmZ,aAAe,IAAIh7Y,MACxBlL,KAAK0gS,iBAAmB,GACxB1gS,KAAKyf,QAAS,EACdzf,KAAK8pS,UAAW,EAChB9pS,KAAKmmZ,oBAAqB,EAC1BnmZ,KAAKomZ,kBAAoB,CAAE5+K,QAAS,EAAG6+K,UAAW,GAClDrmZ,KAAKsmZ,0BAA4B,EACjCtmZ,KAAKumZ,0BAA4B,EACjCvmZ,KAAKyhN,kBACR,CACG+iM,oBACA,MAAMC,EAAezkZ,KAAKof,UAAqC,iBAAlBpf,KAAKof,UAAyBpf,KAAKof,SAASqlY,aACzF,IAAKzkZ,KAAKof,UAAYqlY,EAClB,OAAO,EAEX,MAAMC,EAAqB1kZ,KAAKof,SAAS4gN,WACnC2kL,EAAkD,iBAAxBD,GAC5Bz8Y,GAAUy8Y,IACkB,aAA5BA,EAAmBpjR,MACnBojR,EAAmB96Q,OACY,IAA/B86Q,EAAmBhlQ,SACnBglQ,EAAmBnwS,KACvB,OAAOv0G,KAAKyf,QAAUklY,CACzB,CACDpmP,KAAKn/I,GAGD,GAFApf,KAAKof,SAAWA,EAChBpf,KAAK0gS,iBAAmB,GACpBthR,EAAS4gN,aAA8C,IAAhC5gN,EAAS4gN,WAAWtgF,QAAmB,CAC9D,MAAM22P,EAAWr2Y,KAAK4kZ,cACtB,IAAIp+X,EAAO6vX,EAASpxY,OACpB,MAAQuhB,EAAKmgI,MAAM,CACf,GAAIngI,EAAKte,OAA6B,SAApBse,EAAKte,MAAMuW,KAAiB,CAC1C,MAAMqmY,EAAU,CACZ3sY,SAAUqO,EAAKte,MAAMqX,KACrB/S,MAAOga,EAAKte,MAAMsE,OAEtB4S,EAASw0O,QAAQnjP,QAAQo0R,IACrB,MAAM2hH,EAAmBpnY,EAASqnY,aAAa3B,EAASjgH,EAAKA,EAAI6hH,WAC7DF,EAAiBn6Y,UACjBrM,KAAK0gS,iBAAiB1kR,KAAKwqY,EAAiBhgY,KAA5C,EAGX,CACDA,EAAO6vX,EAASpxY,MACnB,CACJ,CACJ,CACD0hZ,eAAengY,EAAMq+Q,GACjB,GAAI7kS,KAAKof,UAAYpf,KAAKyf,OAAQ,CAC9B,MAAM+mY,EAAmBxmZ,KAAKof,SAASqnY,aAAa,CAAEtuY,SAAUqO,EAAKjH,KAAM/S,MAAOga,EAAKha,OAASq4R,EAAKA,EAAI6hH,WACzG,OAAO1mZ,KAAKgG,QAAQ05I,SAAW8mQ,EAAiBn6Y,QACnD,CACD,OAAO,CACV,CACD2nL,YAAYxtK,EAAMxW,GACd,GAAIhQ,KAAK8pS,SAEL,YADA9pS,KAAK8pS,UAAW,GAGpB,IAAI5/E,EACJ,MAAMjxH,EAAUjpF,EAAMipF,SAAWjpF,EAAM46K,QACvC,GAA0B,WAAtB5qL,KAAKgG,QAAQs7H,MAAqBroC,GAAWj5F,KAAK2mZ,eAAengY,EAAMA,EAAK81F,QAC5E4tG,EAAKlqN,KAAKkf,OAAOsH,QAAZ,GAEsB,aAAtBxmB,KAAKgG,QAAQs7H,KAClB,GAAIroC,IAAYjpF,EAAMkpF,SAClBgxH,EAAKlqN,KAAKkf,OAAOsH,QAAZ,GAEAxW,EAAMkpF,SAAU,CACrB,MAAM0tT,EAAgBlyX,KAAK9Z,IAAI5a,KAAKsmZ,0BAA2B9/X,EAAKha,OAC9Dq6Y,EAAgBnyX,KAAK9Z,IAAI5a,KAAKumZ,0BAA2B//X,EAAK81F,OAAOoqS,WACrEI,GAAcpyX,KAAK7Z,IAAI7a,KAAKsmZ,0BAA2B9/X,EAAKha,OAC5Du6Y,GAAcryX,KAAK7Z,IAAI7a,KAAKumZ,0BAA2B//X,EAAK81F,OAAOoqS,WACzEx8L,EAAKlqN,KAAKwlZ,YAAYoB,EAAeC,EAAeC,GAAaC,GACpE,CAEA9+Y,GAAUiiN,KACXA,EAAKlqN,KAAK61G,OAAOrvF,GACjBxmB,KAAK0gS,iBAAmB,CAAC1gS,KAAKomZ,qBAE7Bl8L,EAAG88L,cAAc1mZ,QAAW4pN,EAAG+8L,gBAAgB3mZ,UAGpD4pN,EAAGjxH,QAAUA,EACbixH,EAAGhxH,SAAWlpF,EAAMkpF,SACpBl5F,KAAKiM,QAAQmE,KAAK85M,GACrB,CACDhrM,OAAOsH,GACH,IAAIwgY,EAAgB,GAChBC,EAAkB,GACtB,YAAKb,kBACDpmZ,KAAKof,SAASqnY,aAAa,CAAEtuY,SAAUqO,EAAKjH,KAAM/S,MAAOga,EAAKha,OAASga,EAAK81F,OAAQ91F,EAAK81F,OAAOoqS,WAAWlgY,KAC/GxmB,KAAKsmZ,0BAA4B9/X,EAAKha,MACtCxM,KAAKumZ,0BAA4B//X,EAAK81F,OAAOoqS,UACzC1mZ,KAAK2mZ,eAAengY,EAAMA,EAAK81F,QAC/B2qS,EAAgBjrY,KAAKhc,KAAKomZ,mBAG1BY,EAAchrY,KAAKhc,KAAKomZ,mBAErB,CACHa,kBACAD,gBAEP,CACDnxS,OAAOrvF,GACH,MAAMwgY,EAAgB,GAChBC,EAAkB,GACxB,YAAKb,kBACDpmZ,KAAKof,SAASqnY,aAAa,CAAEtuY,SAAUqO,EAAKjH,KAAM/S,MAAOga,EAAKha,OAASga,EAAK81F,OAAQ91F,EAAK81F,OAAOoqS,WAAWlgY,KAC/GxmB,KAAKsmZ,0BAA4B9/X,EAAKha,MACtCxM,KAAKumZ,0BAA4B//X,EAAK81F,OAAOoqS,UACxC1mZ,KAAK2mZ,eAAengY,EAAMA,EAAK81F,SAChC0qS,EAAchrY,KAAKhc,KAAKomZ,mBAE5BpmZ,KAAK0gS,iBAAiBjwR,QAASy2Y,KACvBA,EAAa1/K,UAAYxnO,KAAKomZ,kBAAkB5+K,SAAW0/K,EAAab,YAAcrmZ,KAAKomZ,kBAAkBC,YAC7GY,EAAgBjrY,KAAKkrY,EAArB,GAGD,CACHD,kBACAD,gBAEP,CAED3B,SAASC,GACL,MAAMjP,EAAWr2Y,KAAK4kZ,cACtB,IACIE,EADAt+X,EAAO6vX,EAASpxY,OAEpB,MAAQuhB,EAAKmgI,MAAM,CACf,GAAIngI,EAAKte,OAA6B,SAApBse,EAAKte,MAAMuW,MAAmB+H,EAAKte,MAAMqX,OAAS+lY,EAAa,CAC7ER,EAAU,CACN3sY,SAAUqO,EAAKte,MAAMqX,KACrB/S,MAAOga,EAAKte,MAAMsE,OAEtB,KACH,CACDga,EAAO6vX,EAASpxY,MACnB,CACD,GAAI6/Y,EAAS,CACT,MAAMqC,EAAgBnnZ,KAAK0gS,iBAAiBprR,OAAO4xY,IAC/C,MAAME,GAAYpnZ,KAAKof,SAASqnY,aAAa3B,EAAS,KAAM,MAAMt+X,KAClE,OAAO0gY,EAAa1/K,UAAY4/K,GAAU5/K,UAE9C,GAAI2/K,EAAc7mZ,OAAQ,CACtB,IAAI4pN,EAAK,CACLjxH,SAAS,EACTguT,gBAAiBE,EACjBH,cAAe,IAEnBhnZ,KAAKiM,QAAQmE,KAAK85M,EACrB,CACJ,CACJ,CACDs7L,YAAYoB,EAAeC,EAAeC,EAAaC,GACnD,MAAMC,EAAgB,GAChBC,EAAkB,GAClBI,GAAoB3yX,KAAK9Z,IAAIgsY,EAAeE,GAC5CQ,GAAoB5yX,KAAK9Z,IAAIisY,EAAeE,GAC5CQ,GAAkB7yX,KAAK7Z,IAAI+rY,EAAeE,GAC1CU,GAAkB9yX,KAAK7Z,IAAIgsY,EAAeE,GAC1C1Q,GAAWr2Y,KAAK4kZ,cACtB,IAAI3/Y,GAAOoxY,GAASpxY,OACpB,MAAQA,GAAK0hJ,MAAM,CACf,GAAI1hJ,GAAKiD,OAA6B,SAApBjD,GAAKiD,MAAMuW,KAAiB,CAC1C,MAAM3d,GAAMmE,GAAKiD,MAAMsE,MAEjBs4Y,GAAU,CACZ3sY,SAFSlT,GAAKiD,MAAMqX,KAGpB/S,MAAO1L,IAEXd,KAAKof,SAASw0O,QAAQnjP,QAAQo0R,KAC1B,MAAQr+Q,SAASxmB,KAAKof,SAASqnY,aAAa3B,GAASjgH,GAAKA,GAAI6hH,WACxDr6Y,GAAWrM,KAAK2mZ,eAAe1hZ,GAAKiD,MAAO28R,IAC3C4iH,GAAeJ,IAAqBvmZ,IAAOA,IAAOymZ,GAClDG,GAAeJ,IAAqBziH,GAAI6hH,WAAa7hH,GAAI6hH,WAAac,GACtEG,GAAoBF,IAAgBC,IACrCC,IAAqBt7Y,IACtB46Y,EAAgBjrY,KAAKwK,IAErBmhY,KAAsBt7Y,IACtB26Y,EAAchrY,KAAKwK,GAAnB,EAGX,CACDvhB,GAAOoxY,GAASpxY,MACnB,CACD,MAAO,CACHgiZ,kBACAD,gBAEP,CACGhhZ,cACA,MAAMgpC,EAAiB,CACnBy1W,cAAc,EACd/kQ,SAAS,EACTpe,KAAM,YAEV,OAAKr5H,GAAUjI,KAAKof,UAGoB,kBAA7Bpf,KAAKof,SAAS4gN,WACd,CACHykL,cAAc,EACd/kQ,QAAS1/I,KAAKof,SAAS4gN,WACvB1+F,KAAM,YAIHjiH,OAAOC,OAAO0vB,EAAgBhvC,KAAKof,SAAS4gN,YAV5ChxL,CAYd,CACDn+B,cACI7Q,KAAK0lZ,qBACR,CACDjkM,mBACSzhN,KAAK6lZ,wBACN7lZ,KAAK6lZ,sBAAwB7lZ,KAAKw0G,UAAUk0E,UAAUx8K,UAAWkO,IACzDpa,KAAKgG,QAAQ05I,UAAY1/I,KAAKgG,QAAQy+Y,cAA8B,gBAAdrqY,EAAKqE,MACvDze,KAAKyf,QACLzf,KAAKg0L,YAAY,CAAExnL,MAAO4N,EAAK6vH,SAAU1qH,KAAMnF,EAAKjC,SAAUmkG,OAAQliG,EAAKkiG,QAAUliG,EAAKuK,cAA1F,IAKX3kB,KAAK8lZ,wBACN9lZ,KAAK8lZ,sBAAwB9lZ,KAAKw0G,UAAUsiS,cAAc5qY,UAAWkO,IACjEpa,KAAK4lZ,mBAAqBxrY,EACtBpa,KAAKgG,QAAQ05I,WAAa1/I,KAAKgG,QAAQs7H,MAA8B,aAAtBthI,KAAKgG,QAAQs7H,QAC3DthI,KAAKgG,QAAQy+Y,cAAgBrqY,EAAKuK,cAAcu0E,UAC7Cl5F,KAAKyf,SACLrF,EAAKuK,cAAc9Q,iBACnB7T,KAAKib,kBAAkBioY,mBAAmB9oY,EAAKuK,cAAc9H,QAA7D,IAKZ7c,KAAKqkZ,0BAA4BrkZ,KAAK+lZ,0BACtC/lZ,KAAK+lZ,wBAA0B/lZ,KAAKqkZ,wBAAwBp4Y,QAAQC,UAAWkO,IACvEpa,KAAKyf,QACDxX,GAAUmS,EAAKE,SAA2B,WAAhBF,EAAKE,QAC/Bta,KAAKqlZ,SAASjrY,EAAKoM,KAAnB,GAKnB,CACDo+X,cACI,MAAMoB,EAAWhmZ,KAAKof,SAAS68H,KAAK+pQ,WACpC,GAAKA,EAGL,OAAOA,EAAS3P,KACnB,CACDqP,sBACQ1lZ,KAAK6lZ,wBACL7lZ,KAAK6lZ,sBAAsB50Y,cAC3BjR,KAAK6lZ,sBAAwB,MAE7B7lZ,KAAK8lZ,wBACL9lZ,KAAK8lZ,sBAAsB70Y,cAC3BjR,KAAK8lZ,sBAAwB,MAE7B9lZ,KAAK+lZ,0BACL/lZ,KAAK+lZ,wBAAwB90Y,cAC7BjR,KAAK+lZ,wBAA0B,KAEtC,EAELE,GAAqBljZ,UAArB,0BAAkHkjZ,IA35EXjjZ,MA25EiD6zY,IA35EjD7zY,MA25E8Em0Y,IA35E9En0Y,MA25EkH0W,IAAzN,EACAusY,GAAqBhjZ,WA55EkFD,MA45EvG,OAAsHijZ,GAAtH/iZ,QAAsH+iZ,GAAtH,YAKA,MAUMnwN,GAAU,CACZpoJ,QAAS,CAAErlB,EAHQ,EAGWC,EAHX,GAInBwnB,SAAU,CAAEznB,GAJO,EAIaC,EAJb,GAKnBynB,WAAY,CAAE1nB,EALK,EAKcC,GALd,GAMnBslB,YAAa,CAAEvlB,GANI,EAMgBC,GANhB,IAWvB,MAAMs/X,GACF9nZ,YAAYwxK,EAAWr9J,EAAW4zY,EAAerzS,GAC7Cx0G,KAAKsxK,UAAYA,EACjBtxK,KAAKiU,UAAYA,EACjBjU,KAAK6nZ,cAAgBA,EACrB7nZ,KAAKw0G,UAAYA,EACjBx0G,KAAK8nZ,kBAAmB,CAC3B,CACGC,0BACA,OAAQ/nZ,KAAK6nZ,cAAcrD,eAAiBxkZ,KAAKiU,UAAUuwY,cAAiB,OAAS,IACxF,CACGwD,oBACA,OAAQhoZ,KAAK6nZ,cAAcrD,eAAiBxkZ,KAAKiU,UAAUuwY,aAC9D,CACDl1Y,WACItP,KAAKknB,cAAiBlnB,KAAKsxK,UAAUL,WAAW/kK,UAAUlM,KAAK2a,MAAMzN,KAAKlN,OAC1EA,KAAKknB,cAAclb,IAAIhM,KAAKsxK,UAAUJ,UAAUhlK,UAAUlM,KAAKioZ,YAAY/6Y,KAAKlN,OACnF,CACD6Q,cACI7Q,KAAKknB,cAAcjW,cACnBjR,KAAKmgH,OACR,CACDxlG,MAAMP,GACEA,EAAKuK,cAAc9H,OAAO6/K,UAAUh/K,SAAS,cAC7C1d,KAAKkoZ,UAAY,MAGrBloZ,KAAKkoZ,UAAY9tY,EACjBpa,KAAKmoZ,YAAc,KACtB,CACDF,YAAY7tY,GACHpa,KAAKmoZ,cACNnoZ,KAAKmoZ,YAAcnoZ,KAAK6nZ,cAAcpoY,OAASzf,KAAK6nZ,cAAcjC,mBAAqB5lZ,KAAKiU,UAAU2xY,oBAE1G,MAAMrlT,EAAQvgG,KAAKkoZ,UACnB,IAAK3nT,EACD,OAEJ,IAAKvgG,KAAK8nZ,iBAEN,MADiBpzX,KAAK6I,KAAK7I,KAAKwH,IAAK9hB,EAAK6a,MAAQsrE,EAAMtrE,MAAQ,GAAKP,KAAKwH,IAAK9hB,EAAK+a,MAAQorE,EAAMprE,MAAQ,IAjDxF,GAwDd,OALAn1B,KAAK8nZ,kBAAmB,EACxB9nZ,KAAKooZ,uBAAsBnrY,KAAMjd,KAAKw0G,UAAUuiS,YAAYtxY,QAAKilB,MAAK,IAAK1qB,KAAKsxK,UAAUH,aAAa1rK,QAAKy+B,MAAM,IAAD,EAAKxZ,MAAK,KACtHxe,UAAUlM,KAAKqoZ,aAAan7Y,KAAKlN,MAGtC,CAGRA,KAAKsoZ,cACL,MAAM5/Y,EAAU1I,KAAKuoZ,eACfC,EAAkBxoZ,KAAKyoZ,mBAAmBruY,EAAK6a,MAAO7a,EAAK+a,MAAOorE,EAAMtrE,MAAOsrE,EAAMprE,OAC3F,IAAIjK,EAAOwJ,KAAK9Z,IAAIR,EAAK6a,MAAOsrE,EAAMtrE,OAClCpJ,EAAM6I,KAAK9Z,IAAIR,EAAK+a,MAAOorE,EAAMprE,OACrC,MAAM3gB,GAAQkgB,KAAKsH,IAAI5hB,EAAK6a,MAAQsrE,EAAMtrE,OACpC4B,GAASnC,KAAKsH,IAAI5hB,EAAK+a,MAAQorE,EAAMprE,OACvCqzX,IACAt9X,GAAQ4qK,GAAQ0yN,GAAiBngY,EACjCwD,GAAOiqK,GAAQ0yN,GAAiBlgY,GAEpC5f,EAAQ6iB,MAAML,KAAQ,GAAEA,MACxBxiB,EAAQ6iB,MAAMM,IAAO,GAAEA,MACvBnjB,EAAQ6iB,MAAM/W,MAAS,GAAEA,OACzB9L,EAAQ6iB,MAAMsL,OAAU,GAAEA,MAC7B,CACDwxX,aAAajuY,IACS,YAAdA,EAAKqE,MAAoC,aAAdrE,EAAKqE,QAC5Bze,KAAK6nZ,cAAcpoY,QACnBzf,KAAK6nZ,cAAc/9G,UAAW,EAC9B9pS,KAAK6nZ,cAAc57Y,QAAQmE,KAAKpQ,KAAK6nZ,cAAcrC,YAAYxlZ,KAAKmoZ,YAAYl+Q,SAAUjqI,KAAKmoZ,YAAY7rS,OAAOoqS,UAAWtsY,EAAK6vH,SAAU7vH,EAAKkiG,OAAOoqS,aAEnJ1mZ,KAAKiU,UAAUwL,SACpBzf,KAAKiU,UAAU61R,UAAW,EAC1B9pS,KAAKiU,UAAUhI,QAAQmE,KAAKpQ,KAAKiU,UAAUuxY,YAAYxlZ,KAAKmoZ,YAAYl+Q,SAAU7vH,EAAK6vH,aAG/FjqI,KAAKmgH,OACR,CACDA,QACQngH,KAAKuoZ,iBACLllZ,SAAS0nE,KAAKn4D,YAAY5S,KAAKuoZ,gBAC/BvoZ,KAAKuoZ,eAAiB,MAEtBvoZ,KAAKooZ,qBACLpoZ,KAAKooZ,oBAAoBn3Y,cAE7BjR,KAAKooZ,oBAAsB,KAC3BpoZ,KAAKmoZ,YAAc,KACnBnoZ,KAAKkoZ,UAAY,KACjBloZ,KAAK8nZ,kBAAmB,EAExB9nZ,KAAK6nZ,cAAcpoY,OAASzf,KAAK6nZ,cAAc/9G,UAAW,EAAQ9pS,KAAKiU,UAAU61R,UAAW,CAC/F,CACDw+G,cACStoZ,KAAKuoZ,iBACNvoZ,KAAKuoZ,eAlHO,MACpB,MAAM9uT,EAAUp2F,SAAS0O,cAAc,OACvC0nF,EAAQ1mF,UAAY,YACpB,MAAM4mF,EAAet2F,SAAS0O,cAAc,OAC5C4nF,SAAa5mF,UAAY,kBACzB0mF,EAAQznF,YAAY2nF,GACbF,GA4GuBivT,GACtBrlZ,SAAS0nE,KAAK/4D,YAAYhS,KAAKuoZ,gBAEtC,CACDE,mBAAmBE,EAAUC,EAAUx1H,EAAQC,GAC3C,MAAMw1H,EAAWF,EAAWv1H,EACtB01H,EAAYH,EAAWv1H,EACvB21H,GAAUH,EAAWv1H,EACrB21H,GAAaJ,EAAWv1H,EAC9B,OAAIw1H,GAAYE,GACL,UAEPF,GAAYG,GACL,aAEPF,GAAaC,GACN,WAEPD,GAAaE,GACN,cAEJ,IACV,EAELpB,GAAqB7kZ,UAArB,0BAAkH6kZ,IA3iFX5kZ,MA2iFiDyrL,MA3iFjDzrL,MA2iFqF2rL,IA3iFrF3rL,MA2iFkHijZ,IA3iFlHjjZ,MA2iFmJ6zY,IAA1P,EACA+Q,GAAqBt0Y,UA5iFkFtQ,MA4iFvG,MAAsG4kZ,GAAtGr0Y,4FA5iFuGvQ,MA4iFvG,6CA5iFuGA,MA4iFvG,wCAiBA,MAAMimZ,WAA8B/9Y,MAChCpL,YAAYgL,EAAQo+Y,GAAU,GAC1BjrY,MAAMirY,GACNlpZ,KAAK8K,OAASA,CACjB,CACDoB,UAAUi9Y,EAAiBxtX,EAAOm7D,GAC9B,IAAIsyT,EACAC,EAAWlqO,IAAM,KACjBmqO,EAAa,IAAM,KACvB,OAAIH,GAA8C,iBAApBA,GAC1BC,EAAelhZ,KAAYlI,KAAK8K,OAAO4G,IAAI,IAAMy3Y,EAAgBlkZ,KAAKiD,IAA3C,EACvBihZ,EAAgBxtX,QAChB0tX,EAAW55N,KAAUzvL,KAAK8K,OAAO4G,IAAI,IAAMy3Y,EAAgBxtX,MAAM8zJ,IAA5C,GAErB05N,EAAgBryT,WAChBwyT,EAAa,KAAQtpZ,KAAK8K,OAAO4G,IAAI,IAAMy3Y,EAAgBryT,WAAtC,KAIzBsyT,EAAelhZ,KAAYlI,KAAK8K,OAAO4G,IAAI,IAAMy3Y,EAAgBjhZ,IAAtC,EACvByzB,IACA0tX,EAAW55N,KAAUzvL,KAAK8K,OAAO4G,IAAI,IAAMiqB,EAAM8zJ,IAA5B,GAErB34F,IACAwyT,EAAa,KAAQtpZ,KAAK8K,OAAO4G,IAAI,IAAMolF,IAAtB,IAGtB74E,MAAM/R,UAAUk9Y,EAAaC,EAASC,EAChD,EAML,MAAM9hZ,GAAkB,CACpBC,KAAM,+BACNC,YAAa,uBACbC,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbC,QAAS,GACTC,iBAAkB,+JAiDtB,MAAMmnL,GACFnvL,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAELq3K,GAAsBlsL,UAAtB,0BAAmHksL,IA3pFZjsL,MA2pFmDA,MAA1J,KACAisL,GAAsB37K,UA5pFiFtQ,MA4pFvG,MAAuGisL,GAAvG17K,8CA8DA,MAAMwhY,GACFj1Y,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAELm9X,GAA6BhyY,UAA7B,0BAA0HgyY,IA/tFnB/xY,MA+tFiEA,MAAxK,KACA+xY,GAA6BzhY,UAhuF0EtQ,MAguFvG,MAA8G+xY,GAA9GxhY,qDAgCA,MAAMyhY,GACFl1Y,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAELo9X,GAAmCjyY,UAAnC,0BAAgIiyY,IArwFzBhyY,MAqwF6EA,MAApL,KACAgyY,GAAmC1hY,UAtwFoEtQ,MAswFvG,MAAoHgyY,GAApHzhY,2DAwBA,MAAMg2Y,GACFzpZ,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAEL2xY,GAAsBxmZ,UAAtB,0BAAmHwmZ,IAnyFZvmZ,MAmyFmDA,MAA1J,KACAumZ,GAAsBj2Y,UApyFiFtQ,MAoyFvG,MAAuGumZ,GAAvGh2Y,8CA0DA,MAAM0hY,GACFn1Y,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAELq9X,GAA6BlyY,UAA7B,0BAA0HkyY,IAn2FnBjyY,MAm2FiEA,MAAxK,KACAiyY,GAA6B3hY,UAp2F0EtQ,MAo2FvG,MAA8GiyY,GAA9G1hY,qDA2DA,MAAMspO,GACF/8O,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAELilO,GAAwB95O,UAAxB,0BAAqH85O,IAp6Fd75O,MAo6FuDA,MAA9J,KACA65O,GAAwBvpO,UAr6F+EtQ,MAq6FvG,MAAyG65O,GAAzGtpO,gDA8DA,MAAMupO,GACFh9O,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAELklO,GAAwB/5O,UAAxB,0BAAqH+5O,IAx+Fd95O,MAw+FuDA,MAA9J,KACA85O,GAAwBxpO,UAz+F+EtQ,MAy+FvG,MAAyG85O,GAAzGvpO,gDAkDA,MAAMi2Y,GACF1pZ,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAEL4xY,GAA4BzmZ,UAA5B,0BAAyHymZ,IAhiGlBxmZ,MAgiG+DA,MAAtK,KACAwmZ,GAA4Bl2Y,UAjiG2EtQ,MAiiGvG,MAA6GwmZ,GAA7Gj2Y,oDAWA,IAAIkZ,GAAW,EAIf,MAAMg9X,GACF3pZ,cACIE,KAAKq1I,OAAU,SAAQ5oH,IAC1B,CACDi9X,SACI,OAAO1pZ,KAAKq1I,MACf,CACDs0Q,OAAO1/Q,EAAUqpL,GACb,MAAQ,GAAEtzT,KAAKq1I,WAAWpL,KAAYqpL,GACzC,CACDs2F,oBAAoBnwN,GAChB,MAAQ,GAAEz5L,KAAKq1I,kBAAkBokD,GACpC,CACDowN,sBACI,MAAQ,GAAE7pZ,KAAKq1I,mBAClB,EAELo0Q,GAAU1mZ,UAAV,0BAAuG0mZ,GAAvG,EACAA,GAAUxmZ,WAlkG6FD,MAkkGvG,OAA2GymZ,GAA3GvmZ,QAA2GumZ,GAA3G,YAQA,MAAMK,GAAextS,GAAUA,EAAOwtS,aAIhCC,GAAmBztS,GAAUA,EAAOytS,iBAK1C,MAAMzV,GAIFx0Y,YAAY63B,EAAQqyX,GAkEhB,GAjEAhqZ,KAAK23B,OAASA,EAId33B,KAAKwzP,cAAe,EAMpBxzP,KAAKiqZ,WAAa,EAIlBjqZ,KAAKkqZ,eAAgB,EAIrBlqZ,KAAK8pZ,cAAe,EAKpB9pZ,KAAKqtN,WAAY,EAKjBrtN,KAAKmqZ,aAAc,EAInBnqZ,KAAKoqZ,kBAAoB,GACzBpqZ,KAAKqqZ,SAAU,EAMfrqZ,KAAKsqZ,QAAS,EAIdtqZ,KAAKuqZ,UAAW,EAIhBvqZ,KAAKwqZ,WAAY,EAIjBxqZ,KAAKyqZ,YAAa,EAIlBzqZ,KAAK0qZ,kBAAmB,EAIxB1qZ,KAAK2qZ,gBAAkB,IAAInW,MAI3Bx0Y,KAAK4qZ,oBAAsB,IAAIpW,MAC/Bx0Y,KAAKgqZ,UAAYA,EACbryX,GAAUqyX,GAAaryX,EAAOqyX,UAAUN,WAAaM,EAAUN,WA1EjDptS,IAAUA,EAAO4tS,eAAiBJ,GAAaxtS,GA0EeuuS,CAAkBlzX,GAC9F,MAAM,IAAIp3B,MAAM,yDAEvB,CAIGmmZ,cAAUx+Y,GACVlI,KAAK8qZ,WAAa5iZ,CACrB,CAIGw+Y,gBACA,OAAO1mZ,KAAK8qZ,UACf,CAIGt2Y,UAAMtM,GACN,GAAqB,iBAAVA,EAAoB,CAC3B,MAAM0rN,EAAc5zN,KAAK+vT,OAASn5R,SAAS1uB,EAAO,KAClD,EAAIoO,UACA2hB,QAAQ80L,KAAM,8DAA6D7kN,mBAAuB0rN,OAEzG,MAEG5zN,KAAK+vT,OAAS7nT,CAErB,CACGsM,YAAU,OAAOxU,KAAK+vT,MAAS,CA6C/BuwD,WAAOp4W,GACPlI,KAAKqqZ,QAAUniZ,CAClB,CACGo4W,aACA,OAAOtgX,KAAKqqZ,OACf,CAIGv4P,YACA,OAAI9xJ,KAAK23B,QAAUmyX,GAAa9pZ,KAAK23B,QAC1B33B,KAAK23B,OAAOm6H,MAEhB9xJ,KAAK23B,OAAS33B,KAAK23B,OAAOm6H,MAAQ,EAAI,CAChD,CAIGsxN,eACA,OAAOpjX,KAAK23B,OAAS33B,KAAK23B,OAAOyrV,SAAWpjX,KAAKsgX,MACpD,CAIGtiN,cACA,OAAO,CACV,CAID84I,QAAQi0G,GACJ,OAAO/qZ,KAAK8xJ,MAAQi5P,EAAqBA,EAAoB/qZ,KAAK8xJ,MAAS,EAAI,CAClF,CAIGk5P,wBACA,MAAM34X,EAAWryB,KAAK2qZ,gBAAgB50Y,MACtC,OAAOsc,EAAWA,EAASza,iBAAc7C,CAC5C,CAIGk2Y,wBACA,OAAOjrZ,KAAK29W,eAAiB39W,KAAK29W,eAAe/lW,iBAAc7C,CAClE,CAIGm2Y,4BACA,MAAM74X,EAAWryB,KAAK4qZ,oBAAoB70Y,MAC1C,OAAOsc,EAAWA,EAASza,YAAc,IAC5C,CAIGuzY,mBACA,OAAOnrZ,KAAKymB,KACf,CAIGs/L,gBACA,OAAQ/lN,KAAKuzP,QAAUvzP,KAAKwzP,YAC/B,EAEL8gJ,GAAWvxY,UAAX,0BAAwGuxY,IAtyGDtxY,MAsyG6BsxY,IAtyG7BtxY,MAsyGoDymZ,IAA3J,EACAnV,GAAW/9X,UAvyG4FvT,MAuyGvG,MAA4FsxY,GAA5F/gY,+EAvyGuGvQ,MAuyGvGwT,EAA2vBsmO,GAA3vB,GAvyGuG95O,MAuyGvGwT,EAAu1BqmO,GAAv1B,GAvyGuG75O,MAuyGvGwT,EAAo6BgzY,GAAp6B,eAvyGuGxmZ,MAuyGvGyT,EAvyGuGzT,WAuyGvGwQ,0BAvyGuGxQ,MAuyGvGyT,EAvyGuGzT,WAuyGvGwQ,qBAvyGuGxQ,MAuyGvGyT,EAvyGuGzT,WAuyGvGwQ,glBAkEA,MAAM43Y,GACFtrZ,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAELwzY,GAA4BroZ,UAA5B,0BAAyHqoZ,IA92GlBpoZ,MA82G+DA,MAAtK,KACAooZ,GAA4B93Y,UA/2G2EtQ,MA+2GvG,MAA6GooZ,GAA7G73Y,oDAcA,MAAM83Y,GACFvrZ,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAgBL,SAAS0zY,GAAkBhvS,GACvB,OAAOr0G,GAAUq0G,EAAO9qF,MAC3B,CAhBD65X,GAA4BtoZ,UAA5B,0BAAyHsoZ,IAl4GlBroZ,MAk4G+DA,MAAtK,KACAqoZ,GAA4B/3Y,UAn4G2EtQ,MAm4GvG,MAA6GqoZ,GAA7G93Y,oDAgEA,MAAM2hY,WAAwBZ,GAC1Bx0Y,YAAY63B,EAAQqyX,GAChB/rY,MAAM0Z,EAAQqyX,GAKdhqZ,KAAKurZ,UAAW,EAKhBvrZ,KAAKwrZ,WAAY,EAajBxrZ,KAAK23T,OAAS,OAYd33T,KAAKsV,OAAS,OAYdtV,KAAK6kO,YAAa,EAYlB7kO,KAAKkgS,UAAW,CACnB,CACGtoR,kBACA,OAAO5X,KAAKqyB,SAAWryB,KAAKqyB,SAASza,iBAAc7C,CACtD,CACG02Y,6BACA,OAAOzrZ,KAAKy9W,oBAAsBz9W,KAAKy9W,oBAAoB7lW,iBAAc7C,CAC5E,CACG22Y,mCACA,OAAO1rZ,KAAK+8W,0BAA4B/8W,KAAK+8W,0BAA0BnlW,iBAAc7C,CACxF,CACG42Y,6BACA,OAAO3rZ,KAAK09W,oBAAsB19W,KAAK09W,oBAAoB9lW,iBAAc7C,CAC5E,CACG62Y,sBACA,OAAO5rZ,KAAKu9Y,aAAev9Y,KAAKu9Y,aAAa3lY,iBAAc7C,CAC9D,CACG82Y,4BACA,OAAO7rZ,KAAK8rZ,mBAAqB9rZ,KAAK8rZ,mBAAmBl0Y,iBAAc7C,CAC1E,CACGg3Y,4BACA,OAAO/rZ,KAAKgsZ,mBAAqBhsZ,KAAKgsZ,mBAAmBp0Y,iBAAc7C,CAC1E,CACGo2Y,mBACA,YAAsBp2Y,IAAf/U,KAAKymB,MAAsBzmB,KAAKwxB,MAAQxxB,KAAKymB,KACvD,EAuEL,SAASwlY,GAAsB3vS,GAC3B,OAAOA,EAAOwtS,YACjB,CAvED5U,GAAgBnyY,UAAhB,0BAA6GmyY,IA3hHNlyY,MA2hHuCsxY,GAA9I,IA3hHuGtxY,MA2hH0GymZ,GAAjN,KACAvU,GAAgB3+X,UA5hHuFvT,MA4hHvG,MAAiGkyY,GAAjG3hY,0EA5hHuGvQ,MA4hHvGwT,EAKqEy4K,GALrE,GA5hHuGjsL,MA4hHvGwT,EAKgLu+X,GALhL,GA5hHuG/xY,MA4hHvGwT,EAKwSw+X,GALxS,GA5hHuGhyY,MA4hHvGwT,EAKgay+X,GALha,GA5hHuGjyY,MA4hHvGwT,EAK2gB+yY,GAL3gB,GA5hHuGvmZ,MA4hHvGwT,EAKqnB40Y,GALrnB,GA5hHuGpoZ,MA4hHvGwT,EAKquB60Y,GALruB,eA5hHuGroZ,MA4hHvGyT,EA5hHuGzT,WA4hHvGwQ,oBA5hHuGxQ,MA4hHvGyT,EA5hHuGzT,WA4hHvGwQ,+BA5hHuGxQ,MA4hHvGyT,EA5hHuGzT,WA4hHvGwQ,qCA5hHuGxQ,MA4hHvGyT,EA5hHuGzT,WA4hHvGwQ,+BA5hHuGxQ,MA4hHvGyT,EA5hHuGzT,WA4hHvGwQ,wBA5hHuGxQ,MA4hHvGyT,EA5hHuGzT,WA4hHvGwQ,8BA5hHuGxQ,MA4hHvGyT,EA5hHuGzT,WA4hHvGwQ,uMA5hHuGxQ,MA4hHqO,CACpU,CACImD,QAASmuY,GACTp2X,eAAaC,OAAW,IAAM+2X,OA/hH6DlyY,OA4hHvGuf,0DAyIA,MAAM2pY,WAA4B5X,GAC9Bx0Y,YAAY63B,EAAQqyX,GAiBhB,GAhBA/rY,MAAM0Z,EAAQqyX,GAIdhqZ,KAAK8pZ,cAAe,EACpB9pZ,KAAKqyB,SAAW,IAAImiX,MACpBx0Y,KAAKu9Y,aAAe,IAAI/I,MAIxBx0Y,KAAKmsZ,aAAe,IAAI3X,MAIxBx0Y,KAAK0qZ,kBAAmB,EACxB1qZ,KAAKosZ,WAAY,EACbz0X,GAAUA,EAAOmyX,aACjB,MAAM,IAAIvpZ,MAAM,wDAEvB,CAqBG2/R,aAASh4R,GACTlI,KAAKosZ,UAAYlkZ,CACpB,CACGg4R,eACA,OAAOj4R,GAAUjI,KAAK4rZ,kBAAoB5rZ,KAAKosZ,SAClD,CAKG53Y,UAAM0sF,GACT,CACG1sF,YACA,OAAOxU,KAAKmsZ,aAAaxmY,OAAO,CAACgiB,EAAO20E,IAAW30E,EAAQ20E,EAAO9nG,MAAO,EAC5E,CAIGkyY,gBACA,OAAO1mZ,KAAKmsZ,aAAap2Y,MAAM2wY,SAClC,CAIG9uY,kBACA,MAAMya,EAAWryB,KAAKqyB,SAAStc,MAC/B,OAAOsc,EAAWA,EAASza,iBAAc7C,CAC5C,CAIG62Y,sBACA,MAAMrO,EAAev9Y,KAAKu9Y,aAAaxnY,MACvC,OAAOwnY,EAAeA,EAAa3lY,iBAAc7C,CACpD,CAIGipJ,cACA,OAAOh+J,KAAKmsZ,aAAa72Y,OAAO/T,GAAKA,EAAEwkN,WAAWzlN,MACrD,CAsDGggX,WAAOp4W,GACPlI,KAAKqqZ,QAAUniZ,CAClB,CACGo4W,aACA,OAAOtgX,KAAKqqZ,SAAWrqZ,KAAKmsZ,aAAa3wU,KAAKj6E,GAAKA,EAAE++W,OACxD,CACG+rC,oBACA,OAAOrsZ,KAAKmsZ,aAAa/2Y,SAC5B,CACG2gN,kBACA,OAAO/1N,KAAKmsZ,aAAa7rZ,OAAS,CACrC,EAEL4rZ,GAAoBnpZ,UAApB,0BAAiHmpZ,IA1zHVlpZ,MA0zH+CsxY,GAAtJ,IA1zHuGtxY,MA0zHkHymZ,GAAzN,KACAyC,GAAoB31Y,UA3zHmFvT,MA2zHvG,MAAqGkpZ,GAArG34Y,+EA3zHuGvQ,MA2zHvGwT,EAKwDy4K,GALxD,GA3zHuGjsL,MA2zHvGwT,EAK4H+yY,GAL5H,GA3zHuGvmZ,MA2zHvGwT,EAKgM0+X,GALhM,eA3zHuGlyY,MA2zHvGyT,EA3zHuGzT,WA2zHvGwQ,cA3zHuGxQ,MA2zHvGyT,EA3zHuGzT,WA2zHvGwQ,kBA3zHuGxQ,MA2zHvGyT,EA3zHuGzT,WA2zHvGwQ,2EA3zHuGxQ,MA2zHsH,CACrN,CACImD,QAASmuY,GACTp2X,eAAaC,OAAW,IAAM+tY,OA9zH6DlpZ,OA2zHvGuf,0DA4CA,MAAM+pY,GAAiB14J,GAAaA,EAAQjuO,OAAO,CAACC,EAAK02F,IAAW12F,EAAIE,OAAOmmY,GAAsB3vS,GAAUA,EAAO+vS,cAAgB,CAAC/vS,IAAU,IAI3IiwS,GAAyB34J,GAAaA,EAAQjuO,OAAO,CAACC,EAAK02F,IAAW12F,EAAIE,OAAOmmY,GAAsB3vS,GACzG,CAACA,GAAQx2F,OAAOw2F,EAAO+vS,eACvB,CAAC/vS,IAAU,IAITkwS,GAAmB54J,GAAa04J,GAAc14J,GAASt+O,OAAO+S,GAAKA,EAAE09L,WACrE0mM,GAAWh6O,GAAUx/I,IAAWA,GAAS,IAAItN,OAAO,CAACywK,EAAMC,IAASD,GAAQC,EAAK5jB,IAAS,GAAI,GAI9Fi6O,GAAkBD,GAAQ,SAI1BE,GAAcF,GAAQ,WACtBG,GAAa,IAAInoZ,OAAQ,iCAazBooZ,GAAcj5J,GACTA,EAAQjuO,OAAO,CAACC,EAAK02F,KACpBA,EAAO4tS,cACPtkY,EAAMA,EAAIE,OAAO+mY,GAPZvwS,IAAUA,EAAO33E,SAASrvB,OAAOqxB,GAASA,IAAU21E,GAO5B33E,CAAS23E,KAEjCA,EAAOwtS,aACZlkY,EAAMA,EAAIE,OAAOw2F,EAAO+vS,eAGxBzmY,EAAI5J,KAAKsgG,GAEN12F,GACR,IAAItQ,OAAO+S,GAAKA,EAAE09L,WAKnB+mM,GAAiB,CAACr6Y,KAAamhP,IAAYi5J,GAAYj5J,GAASp4K,KAAK/oE,GAQrEs6Y,GAAen5J,MAAYo5J,OAAQp5J,EAAS,CAAC,CAAEpiO,MAAO,aAAc7c,IAAK,SAIzEs4Y,GAAoB3wS,GAAWu2G,GAASv2G,EAAO3kF,SAAWs0X,GAAsB3vS,EAAO3kF,QAK7F,SAASu1X,GAAuB5wS,GAC5B,OAAOA,EAAO4tS,aACjB,CAuDD,MAAM/U,WAA6Bb,GAC/Bx0Y,YAAY63B,EAAQqyX,GAehB,GAdA/rY,MAAM0Z,EAAQqyX,GACdhqZ,KAAK23B,OAASA,EAId33B,KAAK0qZ,kBAAmB,EAIxB1qZ,KAAKkqZ,eAAgB,EAIrBlqZ,KAAKoqZ,kBAAoB,GACrBzyX,GAAUA,EAAOmyX,aACjB,MAAM,IAAIvpZ,MAAM,mEAEvB,CAIDu2S,UACI,OAAO,CACV,CAIG94I,cACA,OAAKh+J,KAAK2kC,UAAqC,IAAzB3kC,KAAK2kC,SAASrkC,OAG7BqsZ,GAAY3sZ,KAAK2kC,SACnBrvB,OAAOqxB,GAASA,IAAU3mC,MAAQ2mC,EAAMo/K,YAHlC,CAId,CAIG2gM,gBACA,OAAO1mZ,KAAK2kC,UAAY3kC,KAAKuS,YAAc,IAAIm0Y,WAAY,CAC9D,CACG2F,oBACA,OAAOrsZ,KAAK2kC,SAASrvB,OAAO/T,GAAKA,IAAMvB,KAC1C,CACG+1N,kBACA,OAAO1jL,QAAQryC,KAAKuS,WACvB,CACGA,iBACA,OAAOvS,KAAK2kC,SAAStf,KAAKi3F,GAAUA,IAAWt8G,KAClD,EAELm1Y,GAAqBpyY,UAArB,0BAAkHoyY,IAvhIXnyY,MAuhIiDsxY,GAAxJ,IAvhIuGtxY,MAuhIoHymZ,GAA3N,KACAtU,GAAqB5+X,UAxhIkFvT,MAwhIvG,MAAsGmyY,GAAtG5hY,+EAxhIuGvQ,MAwhIvGwT,EAKwD89X,GALxD,cAxhIuGtxY,MAwhIvGyT,EAxhIuGzT,WAwhIvGwQ,0BAxhIuGxQ,MAwhIqE,CACpK,CACImD,QAASmuY,GACTp2X,eAAaC,OAAW,IAAMg3X,OA3hI6DnyY,OAwhIvGuf,0DAiGA,MAAM4qY,GACFrtZ,YAAY8X,GACR5X,KAAK4X,YAAcA,EACnB5X,KAAKotZ,WAAa,KAAM,CAC3B,CAIGC,WAAO78X,GACP,GAAkB,mBAAPA,EACP,MAAM,IAAIjwB,MAAO,2CAA0C0B,KAAKsiP,UAAU/zN,OAE9ExwB,KAAKotZ,WAAa58X,CACrB,CACG68X,aACA,OAAOrtZ,KAAKotZ,UACf,EAELD,GAAwBpqZ,UAAxB,0BAAqHoqZ,IA3oIdnqZ,MA2oIuDA,MAA9J,KACAmqZ,GAAwB75Y,UA5oI+EtQ,MA4oIvG,MAAyGmqZ,GAAzG55Y,2GAaA,MAAM+5Y,GAAmB,OAAMjgZ,SAAyBhK,SAAS0O,cACjE,IACIw7Y,GADAC,GAAuB,KAEvBC,GAAsB,KA8B1B,MAAMC,GACF5tZ,YAAYwe,EAAMslJ,GACd5jK,KAAKse,KAAOA,EACZte,KAAK4jK,eAAiBA,EACtB5jK,KAAKiM,QAAU,IAAIf,eACR2mB,OAAW,MAGtB7xB,KAAKse,KAAKzO,kBAAkB,KACxB7P,KAAKknB,iBAAgBvK,MAAUkV,OAAQ,UAAUpsB,QAAKk0J,MAAU,MAAMztJ,UAAU,KACxEqhZ,KAAqB17X,OAAO8C,kBAC5BrW,EAAK5M,IAAI,KACL87Y,GAAuB,KACvBxtZ,KAAKiM,QAAQmE,OACbpQ,KAAK4jK,eAAehmJ,cAApB,EAHJ,EAFa,EAU5B,CACD/M,cACQ7Q,KAAKknB,gBACLlnB,KAAKknB,cAAcjW,cACnBjR,KAAKknB,cAAgB,KAE5B,CACGwsO,qBACA,OAxDR,SAASA,KACL,GAA6B,OAAzB85J,IAAiCF,KAAoB,CACrDC,GAAmB17X,OAAO8C,kBAAoB,EAC9C,MAAMgqF,EAAMt7G,SAAS0O,cAAc,OACnC4sG,EAAIpzF,MAAMo0E,QAAU,oEACpBgf,EAAI12B,UAAY,SAChB5kF,SAAS0nE,KAAK/4D,YAAY2sG,GAC1B6uS,GAAuB7uS,EAAIlN,YAAckN,EAAII,YAC7C17G,SAAS0nE,KAAKn4D,YAAY+rG,EAC7B,CACD,OAAO6uS,EACV,CA6Cc95J,EACV,CACGi6J,oBACA,OA/CR,SAASA,KACL,GAA4B,OAAxBF,IAAgCH,KAAoB,CACpD,MAAM3uS,EAAMt7G,SAAS0O,cAAc,OACnC4sG,EAAIpzF,MAAMo0E,QAAU,+HACpBgf,EAAI12B,UAAY,6CAChB5kF,SAAS0nE,KAAK/4D,YAAY2sG,GAC1B,MAAMqoC,EAAUroC,EAAInoF,WACpBmoF,EAAInoF,YAAa,EACjBi3X,GAAsB9uS,EAAInoF,WAAa,EAAImoF,EAAInoF,WAAawwH,EAC5D3jJ,SAAS0nE,KAAKn4D,YAAY+rG,EAC7B,CACD,OAAO8uS,EACV,CAmCcE,EACV,EAELD,GAAsB3qZ,UAAtB,0BAAmH2qZ,IA3tIZ1qZ,MA2tImDA,OA3tInDA,MA2tIyEA,OAAhL,EACA0qZ,GAAsBzqZ,WA5tIiFD,MA4tIvG,OAAuH0qZ,GAAvHxqZ,QAAuHwqZ,GAAvH,YAKA,MAAME,GAAej9X,QACO5b,IAAjB4b,EAAOkT,YACO9uB,IAAjB4b,EAAOa,MAMTq8X,GAAiBxhX,GAAYA,EAAO1mB,OAAO,CAACC,EAAKywK,IAC/Cu3N,GAAYv3N,GACLzwK,EAAIE,OAAO+nY,GAAcx3N,EAAKxyJ,QAElCje,EAAIE,OAAO,CAACuwK,IACpB,IAcGuuN,GAAc,CAACrlY,GAAQuuY,UAASh8P,QAAOi8P,YAAWC,mBAAkBvvK,aAAY+8J,kBAClF,MAAMzlY,GAAQwJ,EAAK,GACnB,OAAItX,GAAU8N,KAAU63Y,GAAY73Y,KAzBZ4a,SACC5b,IAAlB4b,EAAOhI,aACY5T,IAAtB4b,EAAOs9X,WAwBHC,CAAmBn4Y,MACnB0oO,EAAax2O,GAAU8N,GAAM4S,QAAU5S,GAAM4S,OAAS81N,GAEnD,IAAI0vK,GAAc5uY,EAAMuuY,EAASh8P,EAAOi8P,EAAWC,EAAkBvvK,EAAY+8J,IAErF,IAAI4S,GAAa7uY,EAAMwuY,EAAWC,EAAkBxS,EAApD,EAEX,MAAM6S,GACFvuZ,YAAYs6B,EAAKt5B,EAAM,GACnBd,KAAKo6B,IAAMA,EACXp6B,KAAKc,IAAMA,EACXd,KAAKo6B,IAAMA,GAAO,EACrB,CACQk0X,CAARjY,MACG,OAAOr2Y,IACV,CACDiF,OACI,OAAOjF,KAAKc,IAAMd,KAAKo6B,IAAI95B,OAAS,CAChCqmJ,MAAM,EACNz+I,MAAOlI,KAAKo6B,IAAIp6B,KAAKc,QACrB,CAAE6lJ,MAAM,EAAMz+I,WAAO6M,EAC5B,EAKL,MAAMw5Y,GACFzuZ,YAAYs6B,EAAK2zX,EAAY,EAAGS,EAAanmY,IAAMA,IAC/CroB,KAAK+tZ,UAAYA,EACjB/tZ,KAAKwuZ,UAAYA,EACjB,MAAMC,EAAOr0X,EAAIi8W,IACjBr2Y,KAAK0uZ,eAAiBD,EAAOr0X,EAAIi8W,MAAc,IAAIgY,GAAcj0X,EACpE,CACQk0X,CAARjY,MACG,OAAOr2Y,IACV,CACDiF,OACI,OAAOjF,KAAKwuZ,UAAUxuZ,KAAK0uZ,eAAezpZ,OAAQjF,KAAK+tZ,YAC1D,EAKL,MAAMK,WAAqBG,GACvBzuZ,YAAYs6B,EAAK2zX,EAAWtvK,EAAY3xM,GACpC7uB,MAAMmc,EAAK2zX,EAAW,CAAC1lY,EAAGvnB,MACtB6lJ,KAAMt+H,EAAEs+H,KACRz+I,MAAO,CACHqX,KAAM8I,EAAEngB,MACRu2O,WAAYA,EACZjyO,MAAO1L,EACP2d,KAAM,OACNquB,WAGX,CAMGtgC,YACA,OAAOxM,KAAK+tZ,SACf,EASL,MAAMI,GACFruZ,YAAYs6B,EAAKu0X,GAAgB,EAAO78P,EAAQ,EAAGi8P,EAAY,EAAGv3L,EAAc,GAAIioB,EAAa,EAAG+8J,IAChGx7Y,KAAKo6B,IAAMA,EACXp6B,KAAK2uZ,cAAgBA,EACrB3uZ,KAAK8xJ,MAAQA,EACb9xJ,KAAK+tZ,UAAYA,EACjB/tZ,KAAKw2N,YAAcA,EACnBx2N,KAAKy+O,WAAaA,EAClBz+O,KAAKw7Y,YAAcA,GACnBx7Y,KAAK4uZ,kBAAoB,GACzB5uZ,KAAKo6B,IAAMA,GAAO,GAClBp6B,KAAK6uZ,UAAY,IAAIN,GAASvuZ,KAAKo6B,IAAKp6B,KAAK+tZ,UAChD,CACQO,CAARjY,MACG,OAAOr2Y,IACV,CACD8uZ,gBAGI,OAFA9uZ,KAAKqV,QAAUrV,KAAK6uZ,UAAU5pZ,OAAOiD,MACrClI,KAAK0uZ,eAAiB,KAClB1uZ,KAAKqV,SACLrV,KAAK4uZ,kBA3BF,EAAC5rX,EAAG83L,IAEP,GADE93L,GAAIA,EAAI,MACJ83L,IAyBmBzlF,CAAOr1I,KAAKw2N,YAAax2N,KAAKy+O,cAChD,CACH93F,MAAM,EACNz+I,MAAO,CACHqX,KAAMvf,KAAKqV,QACX7I,MAAOxM,KAAK4uZ,kBACZ98P,MAAO9xJ,KAAK8xJ,MACZrzI,KAAM,QACN+8X,YAAax7Y,KAAKw7Y,gBAK1Bx7Y,KAAKqV,QAAU,KACR,CAAEsxI,MAAM,EAAMz+I,WAAO6M,GAEnC,CACDg6Y,aACI,GAAI/uZ,KAAKqV,QAAS,CACd,MAAMy3B,EAAQ9sC,KAAKqV,QACnB,YAAKA,QAAU,KACR,CACHsxI,MAAM,EACNz+I,MAAO,CACHqX,KAAMutB,EACN2xM,WAAYz+O,KAAK4uZ,kBACjB98P,MAAO9xJ,KAAK8xJ,MACZrzI,KAAM,SACNquB,MAAO,CACHvtB,KAAMutB,EACNtgC,MAAOxM,KAAK4uZ,kBACZ98P,MAAO9xJ,KAAK8xJ,MACZrzI,KAAM,QACN+8X,YAAax7Y,KAAKw7Y,cAIjC,CAEG,YAAKnmY,QAAU,KACR,CAAEsxI,MAAM,EAAMz+I,WAAO6M,EAEnC,CACDi6Y,cAAcliX,GACV,OAAK9sC,KAAK0uZ,iBACN1uZ,KAAK0uZ,eAAiB9J,GAAY93W,EAAMjJ,MAAO,CAC3CkqX,UAAW/tZ,KAAK+tZ,UAChBD,QAAS9tZ,KAAK2uZ,cACd78P,MAAO9xJ,KAAK8xJ,MAAQ,EACpBk8P,iBAAkBhuZ,KAAK4uZ,kBACvBpT,YAAa,CACTj8X,KAAMvf,KAAKqV,QACX7I,MAAOxM,KAAK4uZ,kBACZ98P,MAAO9xJ,KAAK8xJ,MACZrzI,KAAM,QACN+8X,YAAax7Y,KAAKw7Y,gBAIvBx7Y,KAAK0uZ,cACf,CACDO,aAAaniX,GAET,MAAMlb,EADW5xB,KAAKgvZ,cAAcliX,GACZ7nC,OACxB,OAAIgD,GAAU2pB,EAAO1pB,SAAW0pB,EAAO+0H,MAA8B,SAAtB/0H,EAAO1pB,MAAMuW,OACxDze,KAAK+tZ,UAAYn8X,EAAO1pB,MAAMsE,MAAQ,GAElColB,EAAO+0H,UAAgB5xI,EAAT6c,CACzB,CACD3sB,OACI,IAAKgD,GAAUjI,KAAKqV,SAChB,OAAOrV,KAAK8uZ,gBAGhB,OADa9uZ,KAAKivZ,aAAajvZ,KAAKqV,WACdrV,KAAK2uZ,cAAgB3uZ,KAAK+uZ,aAAe/uZ,KAAK8uZ,gBACvE,CAMGtiZ,YACA,OAAOxM,KAAK+tZ,UAAY,CAC3B,EAML,MAAMmB,GACFpvZ,YAAY6wB,EAAQqjB,EAAO,EAAGm7W,GAAe,GACzCnvZ,KAAK2wB,OAASA,EACd3wB,KAAKg0C,KAAOA,EACZh0C,KAAKmvZ,aAAeA,EACpBnvZ,KAAK2wB,OAAS3wB,KAAK2wB,OAAS3wB,KAAK2wB,OAAS,GAC1C3wB,KAAKoxB,SAAWpxB,KAAKovZ,iBAAiBpvZ,KAAK2wB,OAC9C,CACDy+X,iBAAiBz+X,GACb,YAAwB5b,IAAjB4b,EAAOgX,YAAuC5yB,IAAhB4b,EAAOpR,IAC/C,CACGooB,YACA,OAAO3nC,KAAKoxB,SAAWpxB,KAAK2wB,OAAOgX,MAAQ3nC,KAAK2wB,OAAOrwB,MAC1D,CACGif,WACA,OAAOvf,KAAKoxB,SAAWpxB,KAAK2wB,OAAOpR,KAAOvf,KAAK2wB,MAClD,CACDtvB,IAAImvB,GACA,OAAOxwB,KAAKuf,KAAKle,IAAImvB,EACxB,CACDlb,OAAOkb,GACH,OAAOxwB,KAAKuf,KAAKjK,OAAOkb,EAC3B,CACD7K,OAAO6K,EAAI+tI,GACP,OAAOv+J,KAAKuf,KAAKoG,OAAO6K,EAAI+tI,EAC/B,CACD9tJ,QAAQ+f,GACJxwB,KAAKuf,KAAK9O,QAAQ+f,EACrB,CACDgrD,KAAKhrD,GACD,OAAOxwB,KAAKuf,KAAKi8D,KAAKhrD,EACzB,CACQ89X,CAARjY,MACG,OAAOuO,GAAY5kZ,KAAKuf,KAAM,CAC1BwuY,UAAW/tZ,KAAKg0C,KAChB85W,QAAS9tZ,KAAKmvZ,aACd1wK,WAAYz+O,KAAKg0C,MAExB,CACDvyC,WAAa,OAAOzB,KAAKuf,KAAK9d,UAAa,EAK/C,MAAM4tZ,GACFvvZ,YAAYkmZ,GACRhmZ,KAAKgmZ,SAAWA,CACnB,CACGr+W,YAAU,OAAO3nC,KAAKgmZ,WAAWr+W,KAAQ,CACzCrnC,aAAW,OAAON,KAAKgmZ,WAAWzmY,KAAKjf,MAAS,CAChDyV,YAAU,OAAO/V,KAAKgmZ,WAAWzmY,KAAK,EAAK,CAC3CvJ,WAAS,OAAOhW,KAAKgmZ,WAAWzmY,KAAKvf,KAAKM,OAAS,EAAK,CAC5DwqR,GAAGt+Q,GACC,MAvPO,EAAC+S,EAAM/S,KAClB,MAAMuJ,EAAQwJ,EAAK,GACnB,OAAItX,GAAU8N,IAAU63Y,GAAY73Y,GACzB83Y,GAActuY,GAAM/S,GAExB+S,EAAK/S,IAkPD4xO,CAAOp+O,KAAKgmZ,WAAWzmY,KAAM/S,EACvC,CACDnL,IAAImvB,GAAM,OAAOxwB,KAAKgmZ,WAAW3kZ,IAAImvB,EAAM,CAC3Clb,OAAOkb,GACH,OAAOxwB,KAAKgmZ,WAAW1wY,OAAOkb,EACjC,CACD7K,OAAO6K,EAAI+tI,GACP,OAAOv+J,KAAKgmZ,WAAWrgY,OAAO6K,EAAI+tI,EACrC,CACD9tJ,QAAQ+f,GACJxwB,KAAKgmZ,WAAWv1Y,QAAQ+f,EAC3B,CACDgrD,KAAKhrD,GACD,OAAOxwB,KAAKgmZ,WAAWxqU,KAAKhrD,EAC/B,CACQ89X,CAARjY,MACG,OAAOr2Y,KAAKgmZ,WAAW3P,KAC1B,CACD50Y,WAAa,OAAOzB,KAAKgmZ,WAAWvkZ,UAAa,EAUrD,MAAM6tZ,GACFxvZ,YAAY+jC,EAAO0rX,EAAWC,GAO1BxvZ,KAAKyvZ,MAAQ,IAAIz+P,IAIjBhxJ,KAAK0vZ,eAAiB,EAClB7rX,GAAS0rX,GAAaC,GACtB3rX,EAAMpzB,QAAQ+V,GAAQxmB,KAAKgM,IAAIwa,EAAK+oY,GAAY/oY,EAAKgpY,IAE5D,CAIGvhZ,WACA,OAAOjO,KAAK0vZ,cACf,CAID1jZ,IAAI2jZ,EAAMC,GACD5vZ,KAAKyvZ,MAAMx0X,IAAI00X,IAChB3vZ,KAAKyvZ,MAAMl8X,IAAIo8X,EAAM,IAAIr0X,KAExBt7B,KAAKi7B,IAAI00X,EAAMC,KAChB5vZ,KAAKyvZ,MAAM1vY,IAAI4vY,GAAM3jZ,IAAI4jZ,GACzB5vZ,KAAK0vZ,gBAAkB,EAE9B,CAIDx0X,OAAOy0X,EAAMC,GACL5vZ,KAAKi7B,IAAI00X,EAAMC,KACf5vZ,KAAKyvZ,MAAM1vY,IAAI4vY,GAAMz0X,OAAO00X,GAC5B5vZ,KAAK0vZ,gBAAkB,EAE9B,CAIDz0X,IAAI00X,EAAMC,GACN,OAAO5vZ,KAAKyvZ,MAAMx0X,IAAI00X,IAAS3vZ,KAAKyvZ,MAAM1vY,IAAI4vY,GAAM10X,IAAI20X,EAC3D,CAIDz0X,QACIn7B,KAAKyvZ,MAAMt0X,QACXn7B,KAAK0vZ,eAAiB,CACzB,CAKDt6Y,QAAQm6Y,EAAWC,GACf,OAAOruZ,MAAMqE,KAAKxF,KAAKyvZ,OAAO9pY,OAAO,CAACkqY,EAAOC,KAEzC,MAAOH,EAAMI,GAASD,EACtB3uZ,aAAMqE,KAAKuqZ,GAAOt/Y,QAAQm/Y,IAAQC,EAAM7zY,KAAK,CAAE8+M,CAACy0L,GAAYI,EAAM//L,CAAC4/L,GAAYI,MACxEC,GACR,GACN,EAYL,MAAMG,IAENA,GAAejtZ,UAAf,0BAA4GitZ,GAA5G,EACAA,GAAe/sZ,WAxlJwFD,MAwlJvG,OAAgHgtZ,GAAhH9sZ,QAAgH8sZ,GAAhH,YAQA,MAAMpxT,GACF9+F,YAAY0T,EAAK4sN,GACbpgO,KAAKwT,IAAMA,EACXxT,KAAKogO,GAAKA,EAIVpgO,KAAKwqO,aAAe,GAIpBxqO,KAAKkqO,mBAAqB,IAAIh/N,MAC9BlL,KAAKiwZ,kBAAoB,IAAI30X,IAC7Bt7B,KAAKkwZ,mBAAqB,IAAIZ,GAC9BtvZ,KAAKu+J,MACR,CACG4xP,0BACA,OAAOloZ,GAAUjI,KAAKwT,IAAIw2V,KAAKhqI,aAAehgO,KAAKwT,IAAIw2V,KAAKhqI,WAAWp2F,IAC1E,CACDv5H,YAAYpE,GAEJhE,GAAUgE,EAAQu+N,eAAiBxqO,KAAKowZ,qBAAuBpwZ,KAAKwqO,cACpExqO,KAAK4nP,SAAS5nP,KAAKwqO,aAE1B,CACDjsE,OACSt2J,GAAUjI,KAAKwT,IAAIw2V,KAAK+6C,eACzB/kZ,KAAKwT,IAAIw2V,KAAK+6C,YAAe1xV,GAAQrzD,KAAKiwZ,kBAAkBh1X,IAAIj7B,KAAKqwZ,WAAWh9V,KAE/EprD,GAAUjI,KAAKwT,IAAIw2V,KAAKy8C,gBACzBzmZ,KAAKwT,IAAIw2V,KAAKy8C,aAAe,CAACpzV,EAAKipD,EAAQg3M,KACvC,MAAM8zF,EAAYpnZ,KAAKswZ,iBAAiBj9V,EAAKipD,EAAQg3M,GACrD,MAAO,CACHjnT,SAAUrM,KAAKkwZ,mBAAmBj1X,IAAImsX,EAAU5/K,QAAS4/K,EAAUf,WACnE7/X,KAAM4gY,EAFH,GAMfpnZ,KAAKuwZ,4BAA8BvwZ,KAAKwT,IAAIw2V,KACvCvlI,gBACAv4N,UAAUlM,KAAKitP,kBAAkB//O,KAAKlN,MAC9C,CAIDmtB,UACIntB,KAAKuwZ,4BAA4Bt/Y,aACpC,CAID82D,QACI/nE,KAAKiwZ,kBAAkB90X,QACvBn7B,KAAKkwZ,mBAAmB/0X,OAC3B,CACDk1X,WAAWh9V,GACP,GAAIrzD,KAAKwwZ,aAAc,CACnB,GAAiC,iBAAtBxwZ,KAAKwwZ,aACZ,OAAOn9V,EAAIl7C,SAASnY,KAAKwwZ,cAE7B,GAAiC,mBAAtBxwZ,KAAKwwZ,aACZ,OAAOxwZ,KAAKwwZ,aAAan9V,EAEhC,CACD,OAAOA,EAAI7mD,KACd,CACD8jZ,iBAAiBj9V,EAAKwxO,EAAKyuB,GACvB,MAAMm9F,EAAkB,GAExB,OADAA,EAAgBjpL,QAAUxnO,KAAKqwZ,WAAWh9V,GACrCprD,GAAU48R,IAAS58R,GAAUqrT,IAG9BtzT,KAAKqmZ,YACyB,iBAAnBrmZ,KAAKqmZ,YACZoK,EAAgBpK,UAAYhzV,EAAIl7C,SAASnY,KAAKqmZ,YAEpB,mBAAnBrmZ,KAAKqmZ,YACZoK,EAAgBpK,UAAYrmZ,KAAKqmZ,UAAUxhH,EAAKyuB,KAGjD,CACH9rF,QAASipL,EAAgBjpL,QACzB6+K,UAAWoK,EAAgBpK,UAAYoK,EAAgBpK,UAAY/yF,IAZ5Dm9F,CAcd,CACDxjK,kBAAkBh5O,GACVA,EAAUgxY,cACVhxY,EAAUixY,eAAez0Y,QAAS+V,IAC9B,MAAMghN,EAAUxnO,KAAKqwZ,WAAW7pY,GAChCxmB,KAAKiwZ,kBAAkB/0X,OAAOssM,EAA9B,GAE0C,WAA1CxnO,KAAKwT,IAAIw2V,KAAK06C,mBAAmBpjR,MAAqBthI,KAAKiwZ,kBAAkBhiZ,KAAO,GACpFjO,KAAK+nE,QAET9zD,EAAUgxY,aAAax0Y,QAAS+V,IAC5B,MAAMghN,EAAUxnO,KAAKqwZ,WAAW7pY,GAChCxmB,KAAKiwZ,kBAAkBjkZ,IAAIw7N,EAA3B,KAIJvzN,EAAUgzY,gBAAgBx2Y,QAAQ,EAAG+2N,UAAS6+K,gBAC1CrmZ,KAAKkwZ,mBAAmBh1X,OAAOssM,EAAS6+K,EAAxC,GAE0C,WAA1CrmZ,KAAKwT,IAAIw2V,KAAK06C,mBAAmBpjR,MAAqBthI,KAAKkwZ,mBAAmBjiZ,KAAO,GACrFjO,KAAK+nE,QAET9zD,EAAU+yY,cAAcv2Y,QAAQ,EAAG+2N,UAAS6+K,gBACxCrmZ,KAAKkwZ,mBAAmBlkZ,IAAIw7N,EAAS6+K,EAArC,IAGRrmZ,KAAKogO,GAAGxiN,eACR5d,KAAK0wZ,cACR,CACDA,eACI1wZ,KAAKowZ,mBAAqBpwZ,KAAK2wZ,eAC/B3wZ,KAAKkqO,mBAAmB95N,KAAKpQ,KAAKowZ,mBACrC,CACDxoK,SAASpd,GACLxqO,KAAK+nE,QACD/nE,KAAKmwZ,oBACLnwZ,KAAKkwZ,mBAAqB,IAAIZ,GAAQ9kL,EAAc,UAAW,aAG/DxqO,KAAKiwZ,kBAAoB,IAAI30X,IAAIkvM,EAExC,CACDmmL,eACI,OAAO3wZ,KAAKmwZ,oBACRnwZ,KAAKkwZ,mBAAmB96Y,QAAQ,UAAW,aAC3CjU,MAAMqE,KAAKxF,KAAKiwZ,kBACvB,EAELrxT,GAAU77F,UAAV,0BAAuG67F,IApuJA57F,MAouJ2BgtZ,IApuJ3BhtZ,MAouJsDA,OAA7J,EACA47F,GAAUtrF,UAruJ6FtQ,MAquJvG,MAA2F47F,GAA3FrrF,mNAruJuGvQ,SAmwJvG,MAAM4tZ,GACF9wZ,YAAY8zP,GACR5zP,KAAK4zP,QAAUA,EACf5zP,KAAKw8W,WAAa,IAAIg4B,MACtBx0Y,KAAK6sZ,YAAc,IAAIrY,MACvBx0Y,KAAK6wZ,cAAgB,IAAIrc,MACzBx0Y,KAAK8wZ,iBAAmB,IAAItc,MAC5Bx0Y,KAAKujZ,kBAAoB,IAAI/O,MAC7Bx0Y,KAAK+wZ,qBAAuB,IAAIvc,MAChCx0Y,KAAKgxZ,YAAc,EACnBhxZ,KAAKiM,QAAU,IAAIf,MACnBlL,KAAK44Y,oBAAsB,GAC3B54Y,KAAKixZ,sBAAwB,GAC7BjxZ,KAAKkxZ,yBAA2B,GAChClxZ,KAAK88W,sBAAuB,EAC5B98W,KAAKmxZ,gBAAiB,EACtBnxZ,KAAKu+W,WAAY,EACjBv+W,KAAKoxZ,cAAgB,CACxB,CACD1+U,UACI,MAAM2+U,EAAgBrxZ,KAAKgxZ,YACrBnE,EAAc,IAAI1rZ,MAClBoiZ,EAAoB,IAAIpiZ,MACxB4vZ,EAAuB,IAAI5vZ,MAC3B0vZ,EAAgB,IAAI1vZ,MACpB2vZ,EAAmB,IAAI3vZ,MACvBq7W,GAAa,IAAIr7W,MACjBy3Y,GAAsB,IAAIz3Y,MAC1B8vZ,GAAwB,IAAI9vZ,MAC5B+vZ,GAA2B,IAAI/vZ,MACrC,IAAI27W,IAAuB,EACvBq0C,IAAiB,EACjB5yC,IAAY,EACZ6yC,GAAgB,EAChB1K,GAAY,EAChB1mZ,KAAKgxZ,YAAc,EACnBhxZ,KAAK4zP,UAAUnjP,QAAQ6rG,KACnB,MAAMg1S,IAA2C,IAApBh1S,GAAO8mQ,SAAoBmgC,EAAoBwN,EACtEQ,IAAuC,IAApBj1S,GAAO8mQ,SAAoBytC,EAAgBC,EAC9DU,IAAwC,IAApBl1S,GAAO8mQ,SAAoB6tC,GAAwBC,GACxEhE,GAAuB5wS,MACxBg1S,GAAqBt1Y,KAAKsgG,IAC1BuwS,EAAY7wY,KAAKsgG,IACjBs8R,GAAoB58X,KAAKmY,MAAMykX,GAAqB4T,GAAgB,CAAClwS,MACrEk1S,GAAkBx1Y,KAAKmY,MAAMq9X,GAAmBhF,GAAgB,CAAClwS,MACjEwgQ,GAAuBA,IAAwBgwC,GAAe2E,IAAQp/W,QAAQo/W,GAAK/F,8BAA+BpvS,IAClH60S,GAAiBA,IAAkBrE,GAAe2E,IAAQp/W,QAAQo/W,GAAK9F,wBAAyBrvS,IAChGiiQ,GAAYA,IAAauuC,GAAe2E,IAAQp/W,QAAQo/W,GAAKxG,mBAAoB3uS,IAC5EA,GAAO8mQ,WACRguC,IAAiB90S,GAAO9nG,OAAS,GAEjC8nG,GAAOwtS,aACPxtS,GAAO6vS,aAAa17Y,QAAQlP,KACxBA,GAAEmlZ,UAAYA,OAIlBpqS,GAAOoqS,UAAYA,MAG3B6K,GAAiBv1Y,KAAKsgG,IACtBkgQ,GAAWxgW,KAAKsgG,IAChBt8G,KAAKgxZ,YAAc10S,GAAOw1C,MAAQ9xJ,KAAKgxZ,YAAc10S,GAAOw1C,MAAQ9xJ,KAAKgxZ,cAE7EhxZ,KAAK88W,qBAAuBA,GAC5B98W,KAAKmxZ,eAAiBA,GACtBnxZ,KAAKu+W,UAAYA,GACjBv+W,KAAK44Y,oBAAsBA,GAC3B54Y,KAAKixZ,sBAAwBA,GAC7BjxZ,KAAKkxZ,yBAA2BA,GAChClxZ,KAAKoxZ,cAAgBA,GACrB,MAAMnlZ,GAnFA,KAAIylZ,KACd,IAAI51X,GAAO,EACX,QAASh7B,EAAM,EAAGA,EAAM4wZ,EAAMpxZ,OAAQQ,IAAO,CACzC,MAAO2+K,EAAMm0E,GAAW89J,EAAM5wZ,GAC9Bg7B,EAAOA,GAAQ2jJ,EAAKn/K,SAAWszP,EAAQtzP,OACvCm/K,EAAK13G,MAAM6rL,EACd,CACD,OAAO93N,GA4EaisC,CAAM,CAAC/nE,KAAK6sZ,YAAaA,GAAc,CAAC7sZ,KAAKujZ,kBAAmBA,GAAoB,CAACvjZ,KAAK+wZ,qBAAsBA,GAAuB,CAAC/wZ,KAAK6wZ,cAAeA,GAAgB,CAAC7wZ,KAAKw8W,WAAYA,IAAa,CAACx8W,KAAK8wZ,iBAAkBA,KAAsBO,IAAkBrxZ,KAAKgxZ,YAChS,OAAI/kZ,IACAjM,KAAKiM,QAAQmE,OAEVnE,EACV,EAGL,MAAM0lZ,GAAgB,CAAClyO,EAAMhtK,KACzBgtK,EAAKhvK,QAAS6rG,IACV7pG,EAAS6pG,GACLA,EAAO4tS,eAAiB5tS,EAAOy5G,aAC/B47L,GAAcr1S,EAAO+vS,cAAe55Y,EAAvB,EAHrB,EAOEm/Y,GAAe,CAACnyO,EAAMhtK,KACxBs6Y,GAAYttO,GACPhvK,QAAS6rG,IACV7pG,EAAS6pG,GACLA,EAAO4tS,eAAiB5tS,EAAOy5G,aAC/B67L,GAAat1S,EAAO+vS,cAAe55Y,EAAvB,EAJpB,EAQEo/Y,GAAkB,CAACpyO,EAAMplJ,KAC3B,MAAMzI,EAAS,GACfm7X,UAAYttO,GACPhvK,QAAS6rG,IACV,GAAIjiF,EAAUiiF,GACV,GAAIA,EAAO4tS,cAAe,CACtB,MAAMvlX,EAAWktX,GAAgBv1S,EAAO+vS,cAAehyX,GACnDsK,EAASrkC,QACTsxB,EAAO5V,KAAKsgG,KAAW33E,EAE9B,OACS23E,EAAOwtS,cAAgB+H,GAAgBv1S,EAAO+vS,cAAehyX,GAAW/5B,SAC9EsxB,EAAO5V,KAAKsgG,EAAZ,GAIL1qF,GAKX,MAAMkgY,GACFhyZ,YAAY8zP,GACR5zP,KAAK4zP,QAAUA,CAClB,CACW7tP,eACR,OAAO,IAAI+rZ,GAAW,IAAItd,MAC7B,CACD/jY,QAAQgC,GACJk/Y,GAAc3xZ,KAAK4zP,QAASnhP,EAC/B,CACD6C,OAAO7C,GACH,MAAMmf,EAAS,GACf+/X,UAAc3xZ,KAAK4zP,QAAUt3I,IACrB7pG,EAAS6pG,IACT1qF,EAAO5V,KAAKsgG,EAAZ,GAGD1qF,CACV,CACDigY,gBAAgBx3X,GACZ,OAAOw3X,GAAgB7xZ,KAAK4zP,QAAQx+O,UAAWilB,EAClD,CACD03X,WAAWt/Y,GACP,MAAMmf,EAAS,GACfggY,UAAa5xZ,KAAK4zP,QAAQx+O,UAAYknG,IAC9B7pG,EAAS6pG,IACT1qF,EAAO5V,KAAKsgG,EAAZ,GAGD1qF,CACV,CACDxc,UACI,MAAMwc,EAAS,GACf+/X,UAAc3xZ,KAAK4zP,QAAUt3I,IACzB1qF,EAAO5V,KAAKsgG,EAAZ,GAEG1qF,CACV,CACDogY,cACI,OAAOhyZ,KAAK4zP,QAAQx+O,SACvB,CACD21Y,oBACI,IAAIiG,EAAc,EAClB,YAAKvgZ,QAAQ6rG,IACT00S,EAAct8X,KAAK7Z,IAAIyhG,EAAOw1C,MAAOk/P,EAAvB,GAEXA,CACV,EAML,MAAMiB,GACFnyZ,cACIE,KAAKkyZ,YAAcJ,GAAW1/U,KACjC,CACGwhL,cACA,OAAO04J,GAActsZ,KAAKkyZ,cAAc98Y,WAAWE,OAAOg2Y,GAC7D,CACD6G,yBAAyBv+J,GACrB5zP,KAAKkyZ,YAAct+J,CACtB,CACDw+J,eAAe5rY,GACX,MAAM81F,EAASt8G,KAAKqyZ,eAAe7rY,GACnC,OAAO81F,EAASA,EAAOntE,OAAS,EACnC,CACDmjX,YAAY/zK,GACR,MAAOjiI,GAAUt8G,KAAK4zP,QAAQt+O,OAAO+S,GAAKA,EAAEmJ,QAAU+sN,GACtD,OAAOjiI,GAASA,EAAOkvS,SAC1B,CACD+G,WAAW/rY,GACP,MAAM81F,EAASt8G,KAAKqyZ,eAAe7rY,GACnC,OAAO81F,EAAUA,EAAO71F,OAAS61F,EAAO9qF,MAASxxB,KAAKu+O,WAAW/3N,EACpE,CACDi3V,oBAAoBj3V,GAChB,MAAM81F,EAASt8G,KAAKqyZ,eAAe7rY,GACnC,OAAO81F,EAASA,EAAOmvS,wBAA0BnvS,EAAOovS,kCAA+B32Y,CAC1F,CACDwpO,WAAWzxM,GACP,OAAOA,EAAMvtB,KAAOutB,EAAMvtB,KAAKiS,MAAQsb,EAAMtb,KAChD,CACD6gY,eAAevlX,GACX,MAAMtb,EAAQxxB,KAAKu+O,WAAWzxM,IACvBwvE,GAAUt8G,KAAK4zP,QAAQt+O,OAAO+S,GAAKA,EAAEmJ,QAAUA,GACtD,OAAO8qF,CACV,EAML,MAAMk2S,GACF1yZ,YAAYgL,GACR9K,KAAK8K,OAASA,EACd9K,KAAKiM,QAAU,IAAIf,KACtB,CACDonC,WACStyC,KAAK+5J,cAAgB/5J,KAAK+5J,aAAa/xH,UACxChoC,KAAK+5J,aAAe/5J,KAAK8K,OAAO88M,SAC3Br9M,eAAe9E,QAAKilB,MAAK,IACzBxe,UAAU,IAAMlM,KAAKiM,QAAQmE,QAEzC,EAELoiZ,GAA0BzvZ,UAA1B,0BAAuHyvZ,IAj+JhBxvZ,MAi+J2DA,OAAlK,EACAwvZ,GAA0BvvZ,WAl+J6ED,MAk+JvG,OAA2HwvZ,GAA3HtvZ,QAA2HsvZ,GAA3H,YAqEA,MAAMC,GACF3yZ,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAEL66Y,GAA2B1vZ,UAA3B,0BAAwH0vZ,IA5iKjBzvZ,MA4iK6DA,MAApK,KACAyvZ,GAA2Bn/Y,UA7iK4EtQ,MA6iKvG,MAA4GyvZ,GAA5Gl/Y,mDAUA,MAAMggB,GAAMrrB,GAAS4nZ,GAAQA,EAAKr/Y,QAAQ4X,GAAKA,EAAEkD,MAAMsL,OAAS3uB,GA0B1DwqZ,GAAiB,CAACC,EAAQC,KAC5B,MAAMt0O,EAAgBj7K,SAASi7K,cACzBrwI,EAxBE,EAAC4kX,EAAMC,KACf,MAAMlhY,EAAS,GACf,QAAS9wB,EAAM,EAAGuzR,EAAMw+H,EAAKvyZ,OAAQQ,EAAMuzR,GAClCy+H,EAAKhyZ,GADkCA,IAI5C8wB,EAAO5V,KAAK,CAAC62Y,EAAK/xZ,GAAMgyZ,EAAKhyZ,KAEjC,OAAO8wB,GAgBM2tS,CAAIozF,EAAO1kX,KAAM2kX,EAAO3kX,MA3BrB4hX,KAASA,EACxBv6Y,OAAO,EAAE4V,EAAMiH,KAAWjH,EAAKK,MAAMsL,QAAU1E,EAAM5G,MAAMsL,QAC3DpmB,QAAQ8iB,GAAI,IAFY,EA4BzBk8L,CAAYxhL,GACZ,MAAM8nJ,EAfS9nJ,IAAQA,EAAK5sC,IAAI,EAAE6pB,EAAMiH,MACxC,MAAM0E,EAAS3L,EAAK6zE,aACdg0T,EAAgB5gY,EAAM4sE,aAC5B,OAAIloE,EAASk8X,EACFA,EAEJl8X,IASSm8X,CAAW/kX,GAC3B,CAAC0kX,EAAQC,GAAQniZ,QAAQ4X,GAAKA,EAAEkD,MAAMuyF,QAAU,QAChD7vE,EAAKx9B,QAlBWslL,IAAW,CAAC1iI,EAAKvyD,IAAQyyB,GAAK,GAAEwiK,EAAQj1L,GAAO,MAAtByyB,CAA6B8/B,GAkBzD4/V,CAAYl9N,IACzB,CAAC48N,EAAQC,GAAQniZ,QAAQ4X,GAAKA,EAAEkD,MAAMuyF,QAAU,IAC5Cz6G,SAASi7K,gBAAkBA,IAC1Bq0O,EAAOj1Y,SAAS4gK,IAAkBs0O,EAAOl1Y,SAAS4gK,KACnDA,EAAcltK,OAAd,EAOR,MAAM8hZ,GACFpzZ,cACIE,KAAKmzZ,cAAe,EACpBnzZ,KAAK2pM,aAAc,CACtB,EAELupN,GAAmBnwZ,UAAnB,0BAAgHmwZ,GAAhH,EACAA,GAAmBjwZ,WAzmKoFD,MAymKvG,OAAoHkwZ,GAApHhwZ,QAAoHgwZ,GAApH,YASA,MAAME,GAIFtzZ,YAAYuzZ,GAIRrzZ,KAAKiM,QAAU,IAAI5B,IACnBrK,KAAKqzZ,mBAAqBA,CAC7B,CAMD/9Y,OAAOpN,GACHlI,KAAKiM,QAAQhH,KAAKiD,EACrB,EAELkrZ,GAAcrwZ,UAAd,0BAA2GqwZ,IAtoKJpwZ,MAsoKmCkwZ,GAA1I,KACAE,GAAcnwZ,WAvoKyFD,MAuoKvG,OAA+GowZ,GAA/GlwZ,QAA+GkwZ,GAA/G,YAkEA,MAAME,GACFxzZ,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAEL07Y,GAAuBvwZ,UAAvB,0BAAoHuwZ,IA9sKbtwZ,MA8sKqDA,MAA5J,KACAswZ,GAAuBhgZ,UA/sKgFtQ,MA+sKvG,MAAwGswZ,GAAxG//Y,2CAaA,MAAMggZ,GACFzzZ,cACIE,KAAKwzZ,QAAU,IAAItoZ,MACnBlL,KAAKyzZ,QAAU,IAAIvoZ,MACnBlL,KAAK0zZ,YAAc,IAAIxoZ,MACvBlL,KAAK2zZ,YAAc,IAAIzoZ,KAC1B,CACDymF,KAAKkvF,GACD7gL,KAAKojM,UAAUpjM,KAAKwzZ,QAAS3yO,EAChC,CACDv+I,KAAKu+I,EAAW/oF,GACZ93F,KAAKojM,UAAUpjM,KAAKyzZ,QAAS,CAAE5yO,YAAW/oF,WAC7C,CAIDsrG,UAAU5/B,EAASppJ,GACf,GAAiC,IAA7BopJ,EAAQjzD,UAAUjwG,QAClB,MAAIgW,SACA,MAAM,IAAI/V,MAAM,iGAIpBijK,EAAQpzJ,KAAKgK,EAEpB,EAELm5Y,GAAWxwZ,UAAX,0BAAwGwwZ,GAAxG,EACAA,GAAWtwZ,WAxvK4FD,MAwvKvG,OAA4GuwZ,GAA5GrwZ,QAA4GqwZ,GAA5G,YAQA,MAAMK,WAAuBjgZ,GAIzB7T,cACIme,OACH,EAML,MAAM41Y,GACF/zZ,cACIE,KAAK8+G,QAAS,CACjB,EAEL+0S,GAAe9wZ,UAAf,0BAA4G8wZ,GAA5G,EACAA,GAAe5wZ,WAlxKwFD,MAkxKvG,OAAgH6wZ,GAAhH3wZ,QAAgH2wZ,GAAhH,YAKA,MAOMC,GAAqBt/J,GAAU3iO,OAAO4iO,WAAWD,GAAO5rP,QAI9D,MAAMmrZ,GACFj0Z,cAIIE,KAAKy0P,WAAaq/J,EACrB,CAIDtgK,aAAagB,GACT,OAAQA,GAASx0P,KAAKy0P,WAtBJD,MACtBw/J,GAAM,qBACNC,GAAM,qBACNC,GAAM,qBACNC,GAAM,qBACN/3B,GAAM,uBACP5nI,IAAUA,GAgB4B4/J,CAAiB5/J,GACrD,EAELu/J,GAAkBhxZ,UAAlB,0BAA+GgxZ,GAA/G,EACAA,GAAkB9wZ,WAjzKqFD,MAizKvG,OAAmH+wZ,GAAnH7wZ,QAAmH6wZ,GAAnH,YAQA,MAAMM,GACFv0Z,cACIE,KAAKs0Z,YAAc,IAAIppZ,MACvBlL,KAAK0zZ,YAAc,IAAIxoZ,KAC1B,CACDymF,KAAKkvF,GACD,GAA0C,IAAtC7gL,KAAKs0Z,YAAY/jT,UAAUjwG,QAC3B,MAAIgW,SACA,MAAM,IAAI/V,MAAM,qGAIpBP,KAAKs0Z,YAAYlkZ,KAAKywK,EAE7B,EAELwzO,GAAatxZ,UAAb,0BAA0GsxZ,GAA1G,EACAA,GAAapxZ,WA10K0FD,MA00KvG,OAA8GqxZ,GAA9GnxZ,QAA8GmxZ,GAA9G,YAgEA,MAAME,GACFz0Z,YAAY8X,GACR5X,KAAK4X,YAAcA,EACnB5X,KAAKo6W,UAAY,KACpB,CAUGz3U,aAASA,GACT3iC,KAAKo6W,UAAYz3U,CACpB,CACGA,eACA,OAAO3iC,KAAKo6W,SACf,EAELm6C,GAAyBxxZ,UAAzB,0BAAsHwxZ,IA/5KfvxZ,MA+5KyDA,MAAhK,KACAuxZ,GAAyBjhZ,UAh6K8EtQ,MAg6KvG,MAA0GuxZ,GAA1GhhZ,8EAgBA,MAAMssL,GACF//L,YAAYgL,GACR9K,KAAK8K,OAASA,EACd9K,KAAKiM,QAAU,IAAI5B,IACnBrK,KAAKioC,SAAW,GAChBjoC,KAAKknB,cAAgB,IAAItb,MACzB5L,KAAKw0Z,mBAAqB,IAAI5oZ,MAC9B5L,KAAKy0Z,iBAAmB,IAAI7oZ,MAC5B5L,KAAKknB,cAAclb,IAAIhM,KAAKiM,QAAQC,UAAUkO,GAAQpa,KAAKw2B,WAAWpc,IACzE,CACDs6Y,gBAAgB5rZ,EAAI6rZ,GAChB30Z,KAAK40Z,WAAWD,GAChB30Z,KAAKioC,SAASjsB,KAAK,CAAEtT,QAASI,EAAI6rZ,gBACf,SAAfA,GAAwC,WAAfA,IACzB30Z,KAAK8K,OAAO+E,kBAAkB,KAC1B,MAAMglZ,KAAMl4Y,MAAU7T,EAAI,UAAUrD,QAAKpE,MAAI,EAAGwb,QAAU2Z,kBAAZ,CAC1CA,aACAm+X,iBAEE56P,EAAe86P,EAAIpvZ,KtDlnLlC,SAASqvZ,GAAqBC,EAAYC,EAAc9zC,MAC3D6zC,SAAaA,GAA4DvqF,MAClEj1G,MAAQ,CAAC5kM,EAAQ6kM,KACpB,IAAIy/L,EACAl/Y,GAAQ,EACZ4a,EAAOzkB,aAAUwpN,MAAyBF,EAAattN,IACnD,MAAM4/N,GAAaktL,EAAY9sZ,IAC3B6N,IAAUg/Y,EAAWE,EAAantL,OAClC/xN,GAAQ,EACRk/Y,EAAcntL,GACdtS,EAAWvwN,KAAKiD,GAAhB,GALR,EASP,CsDomL6C4sZ,CAAqB,CAACzsY,EAAGC,IAAOD,EAAEmO,aAAelO,EAAEkO,aAA/B,EAA6ClhB,MAAO+S,IAAMroB,KAAK2wB,QAAU3wB,KAAK2wB,SAAWtI,EAAEssY,aAAxC,EAAqDt0T,MAAIh4E,GAAKroB,KAAK2wB,OAAStI,EAAEssY,aAC9KzoZ,UAAWmc,GAAMroB,KAAKiM,QAAQhH,KAAKojB,IACxC0xI,EAAa/tJ,IAAI6oZ,EAAIpvZ,QAAK6P,MAAO+S,GAAKroB,KAAK2wB,QAAU3wB,KAAK2wB,SAAWtI,EAAEssY,aAClEzoZ,UAAU,IAAMlM,KAAK2wB,YAAS5b,IAChB,SAAf4/Y,EACA30Z,KAAKy0Z,iBAAiBzoZ,IAAI+tJ,GAG1B/5J,KAAKw0Z,mBAAmBxoZ,IAAI+tJ,EAA5B,EAIf,CAID5sI,UACIntB,KAAKknB,cAAcjW,cACnBjR,KAAKw0Z,mBAAmBvjZ,cACxBjR,KAAKy0Z,iBAAiBxjZ,aACzB,CACDulB,YAAaA,aAAYm+X,eACrB30Z,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKioC,SACA3yB,OAAO+S,GAAKssY,IAAetsY,EAAEssY,YAC7BlkZ,QAAQ,EAAG/H,aAAcA,EAAQ8tB,WAAaA,EAFnD,EAIP,CACDo+X,WAAWD,GACP,MAAMnoZ,EAAQxM,KAAKioC,SAAS1jC,UAAU8jB,GAAKA,EAAEssY,aAAeA,GACxDnoZ,GAAQ,IACW,WAAfmoZ,GACA30Z,KAAKw0Z,mBAAmBvjZ,cACxBjR,KAAKw0Z,mBAAqB,IAAI5oZ,OAEV,SAAf+oZ,IACL30Z,KAAKy0Z,iBAAiBxjZ,cACtBjR,KAAKy0Z,iBAAmB,IAAI7oZ,OAEhC5L,KAAKioC,SAAS4e,OAAOr6C,EAAO,GAEnC,EAELqzL,GAAkB98L,UAAlB,0BAA+G88L,IA9+KR78L,MA8+K2CA,OAAlJ,EACA68L,GAAkB58L,WA/+KqFD,MA++KvG,OAAmH68L,GAAnH38L,QAAmH28L,GAAnH,YAQA,MAAMnuB,GACF5xK,cACIE,KAAKk1Z,mBAAqB,IAAItpZ,MAAa,QAC3C5L,KAAK44L,WAAa,IAAIvuL,IACtBrK,KAAKiM,QAAUjM,KAAK44L,WAAWruL,eAAe9E,QAAKguK,MAAa,KACnE,CACDmxF,QAAQuwJ,GACJn1Z,KAAKk1Z,mBAAmBlpZ,IAAImpZ,EAAQjpZ,UAAUlM,KAAK44L,YACtD,CACDzrK,UACQntB,KAAKk1Z,oBACLl1Z,KAAKk1Z,mBAAmBjkZ,aAE/B,EAELygK,GAAc3uK,UAAd,0BAA2G2uK,GAA3G,EACAA,GAAczuK,WAvgLyFD,MAugLvG,OAA+G0uK,GAA/GxuK,QAA+GwuK,GAA/G,YAQA,MAAM0xM,GAAW9mQ,GAAUA,EAAO3kF,OAASyrV,GAAS9mQ,EAAO3kF,UAAY2kF,EAAOgkQ,OAIxE80C,GAAa,CAAC94S,EAAQwjJ,IAAUzgP,OAAOC,OAAO,CAChDs0O,QAASi5J,GAAY,CAACvwS,IACtBgkQ,OAAQ8C,GAAS9mQ,IAClBwjJ,GAIH,MAAMu1J,GACFv1Z,cACIE,KAAKiM,QAAU,IAAIf,MACnBlL,KAAK8tU,OAAS,GACd9tU,KAAKo9L,MAAQ,IAChB,CACDziL,MAAM2hG,GACFt8G,KAAKs1Z,aAAah5S,GAClB,MAAMs3I,GAAW5zP,KAAKs8G,OAAO4tS,cAAgB,CAAC5tS,GAAU,IACnDx2F,OAAO+mY,GAAY,CAACvwS,KACzBt8G,KAAKiM,QAAQmE,KAAK,CACdwjP,QAASA,EACT0sH,OAAQ8C,GAASpjX,KAAKs8G,QACtB79F,KAAM,SAEb,CACD82Y,cAAcC,GACV,MAAMl7Y,EAAS86Y,GAAWp1Z,KAAKs8G,OAAQ,CACnCk5S,eACA/2Y,KAAM,iBAEVze,KAAKiM,QAAQmE,KAAKkK,EACrB,CACDm7Y,YAAYn5S,EAAQ/nF,GAChB,MAAMja,EAAS86Y,GAAW94S,EAAQ,CAC9B/nF,QACA9V,KAAM,gBAEVze,KAAKiM,QAAQmE,KAAKkK,EACrB,CACDo7Y,cAAcl8X,GACVx5B,KAAK21Z,eAAe35Y,KAAKwd,EAC5B,CACD1e,MACI9a,KAAKiM,QAAQmE,KAAK,CACdwjP,QAAS,GACT+hK,eAAgB31Z,KAAK21Z,eACrBl3Y,KAAM,OAEb,CACDm3Y,cAAcC,GACV,YAAK/nF,OAAO9xT,KAAK65Y,GACO,KACpB71Z,KAAK8tU,OAAOjnR,OAAO7mD,KAAK8tU,OAAO7sU,QAAQ40Z,GAAgB,EAAvD,CAGP,CACDC,eAAe7pW,GACQ,OAAfjsD,KAAKo9L,MACLp9L,KAAKo9L,MAAMphL,QAAQiwC,GAGnBjsD,KAAK+1Z,aAAa9pW,EAAM,IAAMjsD,KAAK8a,MAE1C,CACD2tF,WAAWmrJ,GACP,MAAMk9J,EAAmBl9J,EAAQt+O,OAAOgnG,IAAWA,EAAO8mQ,UAC1DpjX,KAAKg2Z,aAAalF,GAClB9wZ,KAAK+1Z,aAAa/1Z,KAAKo9L,MAAO,KAC1B,GAAI0zN,EAAiBxwZ,OAASszP,EAAQtzP,OAAQ,CAC1C,MAAMuwZ,EAAgBj9J,EAAQt+O,OAAOgnG,GAAUA,EAAO8mQ,UACtDpjX,KAAKg2Z,aAAanF,GAClB7wZ,KAAK+1Z,aAAa/1Z,KAAKo9L,MAAO,IAAMp9L,KAAK8a,MAC5C,MAEG9a,KAAK8a,KAAL,EAGX,CACDw6Y,aAAah5S,GACTt8G,KAAK21Z,eAAiB,GACtB31Z,KAAKs8G,OAASA,CACjB,CACD05S,aAAapiK,GAGT,GAFA5zP,KAAKo9L,MAAQ,GACbp9L,KAAK21Z,eAAiB,GACC,IAAnB/hK,EAAQtzP,OACR,OAEJ,MAAMggX,EAAS1sH,EAAQ,GAAGwvH,SAC1BpjX,KAAKiM,QAAQmE,KAAK,CACdqO,KAAM,QACNm1O,UACA0sH,WAEJtgX,KAAKiM,QAAQmE,KAAK,CACdqO,KAAM,iBACNm1O,UACA0sH,UAEP,CACDy1C,aAAa9pW,EAAMgqW,GACf,MAAM31C,EAASr0T,EAAK3rD,OAAS,GAAI2rD,EAAK,GAAGqwD,OAAO8mQ,SAC1C8yC,EAAcl2Z,KAAK8tU,OACpBx4T,OAAO6/H,GAASA,EAAMmrO,SAAWA,GACjCj/W,IAAI8zI,GAASA,EAAM1sC,QAAQx8C,KAChCkqW,WAASD,GACJzwZ,QAAKilB,MAAK,IACVxe,UAAU2rS,IACX73S,KAAKiM,QAAQmE,KAAK,CACdwjP,QAAS3nM,EAAK5qD,IAAImU,GAAKA,EAAE8mG,QACzB79F,KAAM,kBACNo5R,SACAyoE,WAEA21C,GACAA,GAAU,GAGlBj2Z,KAAKo9L,MAAQ,IAChB,EAELi4N,GAAsBtyZ,UAAtB,0BAAmHsyZ,GAAnH,EACAA,GAAsBpyZ,WA3oLiFD,MA2oLvG,OAAuHqyZ,GAAvHnyZ,QAAuHmyZ,GAAvH,YAQA,MAQMe,GAAgBh3Y,IAA0B,IAAbA,GAA0C,iBAAbA,GAAyBA,EAASne,QAAQ,QAAS,EAcnH,MAAMo1Z,WAAwB1iZ,GAC1B7T,YAAY2kB,GACRxG,QACAje,KAAK2kB,cAAgBF,CACxB,EAOL,MAAM6xY,GACFx2Z,YAAYye,EAAc5T,EAAUG,EAAQ02L,EAAmB32L,GAC3D7K,KAAKue,aAAeA,EACpBve,KAAK2K,SAAWA,EAChB3K,KAAK8K,OAASA,EACd9K,KAAK6K,aAAeA,EAKpB7K,KAAK2nU,QAAU,IAAIt9T,IACnBrK,KAAKu2Z,iBAAmB,IAAI3qZ,MAC5B5L,KAAKq3L,mBAAqBmK,EAAkBv1L,QAAQC,UAAU,IAAMlM,KAAKmtB,UAC5E,CAIDxT,KAAK6H,EAAQ6Q,EAAU7R,EAAU9E,EAtBT,uBAuBpB,IAAI6rQ,EACJ,MAAMroQ,EAASjX,GAAUuY,IAAaxgB,KAAKwgB,WAAaA,EAExD,GADAxgB,KAAKmtB,WACAjO,EAAQ,CACT,MAAMpT,GAAY9L,KAAK6K,aAAakB,IAAM,QAAU,OACpD/L,KAAKwgB,SAAWxgB,KAAKue,aAAa5E,KAAK,CACnCoH,YAAa,CAAEG,SAAU,SAAUD,WAAYnV,IAC/C+U,WAAY,CAAEK,SAAU,MAAOD,WAAYnV,IAC3C0V,OAAQA,EACR9F,WAAYA,EACZ+F,QAAS4Q,EACTvK,aAAc,aAElB9nB,KAAK2K,SAASiF,aAAa5P,KAAKwgB,SAASM,aAAc,MAAO9gB,KAAK6K,aAAakB,IAAM,MAAQ,OAC9F/L,KAAKw2Z,YAAYh1Y,EACpB,CACD,MAAMwJ,GAAmC,QAAxBu8P,EAAKvnR,KAAKwgB,gBAA6B,IAAP+mQ,OAAgB,EAASA,EAAGzmQ,aAC7E,OAAIkK,IACAhrB,KAAKy2Z,qBAAqBzrY,IAEvBhrB,KAAKwgB,QACf,CAID2M,UACQntB,KAAKwgB,WACLxgB,KAAK02Z,cACL12Z,KAAKu2Z,iBAAiBtlZ,cACtBjR,KAAKu2Z,iBAAmB,KACxBv2Z,KAAKwgB,SAAS5G,QACd5Z,KAAKwgB,SAAW,KAEvB,CACD3P,cACI7Q,KAAKmtB,UACLntB,KAAKq3L,mBAAmBpmL,aAC3B,CACDylZ,cACQ12Z,KAAK22Z,aACL32Z,KAAK22Z,aAEZ,CACDH,YAAYI,GACR52Z,KAAK02Z,cACL12Z,KAAK8K,OAAO+E,kBAAkB,IAAM7P,KAAK22Z,YAAc32Z,KAAK2K,SAASmF,OAAO,WAAY,QAAU2U,IAC9F,IAvFO,EAACxb,EAAMoxB,KACtB,KAAOpxB,GAAM,CACT,GAAIoxB,EAAUpxB,GACV,OAAO,EAEXA,EAAOA,EAAKC,UACf,CACD,OAAO,GAgFM2tZ,CAAWpyY,EAAE5H,OAAQwL,GAAKroB,KAAKwgB,SAASM,eAAiBuH,GAAKA,IAAMuuY,GAAc,CACnF,MAAMx8Y,EAAO,IAAIi8Y,GAAgB5xY,GACjCzkB,KAAK2nU,QAAQ1iU,KAAKmV,IACbA,EAAKtG,sBAAwB9T,KAAK82Z,eACnC92Z,KAAKmtB,UAETntB,KAAK82Z,eAAgB,CACxB,IAER,CACDL,qBAAqB3tZ,GACjB9I,KAAKu2Z,iBAAmB,IAAI3qZ,MAC5B5L,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKu2Z,iBAAiBvqZ,IAAIhM,KAAK2K,SAASmF,OAAOhH,EAAI,cAAgB2b,IAC/DA,EAAEmgO,2BACF5kP,KAAK82Z,eAAgB,KAEzB92Z,KAAKu2Z,iBAAiBvqZ,IAAIhM,KAAK2K,SAASmF,OAAOhH,EAAI,YAAa,KAC5D9I,KAAK82Z,eAAgB,IADzB,EAIP,EAELR,GAAmBvzZ,UAAnB,0BAAgHuzZ,IA3wLTtzZ,MA2wL6Cw3T,OA3wL7Cx3T,MA2wL2EA,OA3wL3EA,MA2wLoGA,OA3wLpGA,MA2wL0H68L,IA3wL1H78L,MA2wLwJqQ,OAA/P,EACAijZ,GAAmBrzZ,WA5wLoFD,MA4wLvG,OAAoHszZ,GAApHpzZ,QAAoHozZ,GAApH,YASA,MAAMn+X,GAAUzvB,IACZ,IAAIg+S,GAAW,EACf,MAAO,KACEA,IACDrjT,SAAS0nE,KAAK/4D,YAAYtJ,GAC1Bg+S,GAAW,GAERh+S,IAcTigB,GAASjgB,IACX,MAAQ4tB,YAAWG,cATH/tB,IAAWA,EAAQoiJ,cAAc30H,gBASf4gY,CAAYruZ,IACtC0tB,cAAaG,eANP7tB,IAAWA,EAAQoiJ,cAAcooI,YAMV8jI,CAAUtuZ,IACvCmjB,MAAKX,QAASxiB,EAAQqiB,wBAC9B,MAAO,CACHc,IAAKA,EAAMuK,EAAcE,EACzBpL,KAAMA,EAAOqL,EAAcE,EAFxB,EAWLwgY,GAAiB,CAAC3lP,EAAWz0J,IAA+D,IAAP,EAA5CA,EAAOkyP,wBAAwBz9F,IAQxE5zJ,GAAW,CAAChV,EAASH,IAAcG,IAAYH,GACK,IAAR,GAA7CA,EAAUwmQ,wBAAwBrmQ,IAIjCi6B,GAAW,CAAC9lB,EAAQukP,KACtB,MAAM81J,EAAavuY,GAAO9L,IAClB40F,cAAa1S,gBAAiBliF,EAItC,MAAO,CAAEqO,KAHIgsY,EAAWhsY,MAAQk2O,EAAS,EAAI3vJ,GAG9B5lF,IAFHqrY,EAAWrrY,IAEHgL,OADLkoE,EACR,EAMX,MAAMo4T,GACFr3Z,cACIE,KAAKiM,QAAU,IAAIf,MACnBlL,KAAK4jC,SAAW,GAChB5jC,KAAKo3Z,WAAa,IACrB,CACDprZ,IAAI6Q,GACA7c,KAAK4jC,SAAS5nB,KAAKa,EACtB,CACDlF,OAAOkF,GACH7c,KAAK4jC,SAAW5jC,KAAK4jC,SAAStuB,OAAOD,GAAWA,IAAYwH,EAC/D,CACD82N,WAAWriE,EAAW5oK,EAAS2uZ,GAC3B,MAAMx6Y,EAAS7c,KAAKs3Z,UAAU5uZ,GAC1B1I,KAAKo3Z,aAAev6Y,IAGxB7c,KAAKiM,QAAQhH,KAAK,CACdqsK,YACA+lP,aACAx6Y,OAAQ7c,KAAKo3Z,WACb34Y,KAAM,UAEN5B,GACA7c,KAAKiM,QAAQhH,KAAK,CACdqsK,YACA+lP,aACAx6Y,SACA4B,KAAM,UAGdze,KAAKo3Z,WAAav6Y,EACrB,CACDu3N,WAAW9iE,EAAW+lP,GAClBr3Z,KAAKiM,QAAQhH,KAAK,CACdqsK,YACA+lP,aACAx6Y,OAAQ7c,KAAKo3Z,WACb34Y,KAAM,SAEVze,KAAKo3Z,WAAa,IACrB,CACDE,UAAU5uZ,GACN,MAAM4yG,EAAW59F,GAASxQ,KAAK,KAAMxE,GACrC,OAAO1I,KAAK4jC,SAASve,KAAK,EAAG3c,SAAWyD,oBAAsBmvG,EAASnvG,GAC1E,EAELgrZ,GAAmBp0Z,UAAnB,0BAAgHo0Z,GAAhH,EACAA,GAAmBl0Z,WAl4LoFD,MAk4LvG,OAAoHm0Z,GAApHj0Z,QAAoHi0Z,GAApH,YAKA,MAAMI,GAAc,CAAC7uZ,EAASwiS,KAC1B,MAAMz+R,EAAO/D,EAAQuiB,cAAc,WACnCxe,EAAKsG,UAAYtG,EAAKsG,UACjB1S,QAAQ,gBAAiB6qS,EAAQ,OAAS,SAD9B,EAGfssH,GAAa,CAAC9uZ,EAAS43W,EAAS,QAClC,MAAM7zW,EAAO/D,EAAQu6J,iBAAiB,WAAW,GAC3C/6J,EAAmB,OAAXo4W,EAAkB,GAAMA,EAAS,WAAa,aAC5D7zW,EAAKsG,UAAYtG,EAAKsG,UACjB1S,QAAQ,wBAAyB,IAAO,IAAG6H,KAUpD,MAAMuvZ,GACF33Z,YAAY43Z,GACR13Z,KAAK03Z,SAAWA,CACnB,CACDvrY,OAAO1F,GACHzmB,KAAK0+L,IAAMr7L,SAAS0O,cAAc,OAbxBrJ,KACdA,EAAQqK,UAAY,uBACpBrK,EAAQ6iB,MAAMoX,SAAW,WACzBj6B,EAAQ6iB,MAAMwa,OAAS,SAWnBowU,CAASn2W,KAAK0+L,KACd,MAAMi5N,EAAY33Z,KAAK03Z,SAASE,SAASC,WAAsBpxY,GAC/DzmB,KAAK0+L,IAAIz2G,UAAa,qLAIhB0vU,aAET,CACDhhE,SACI,OAAOx+T,GAAOn4B,KAAK0+L,IACtB,CACD/mL,SAES,IAAU7O,EADX9I,KAAK0+L,KAAO1+L,KAAK0+L,IAAIx1L,aACVJ,EAER9I,KAAK0+L,IADJhsL,WAAW,IAAMrP,SAAS0nE,KAAKn4D,YAAY9J,IAE/C9I,KAAK0+L,IAAM,KAElB,CACDz3J,OACIjnC,KAAK0+L,IAAInzK,MAAMuyF,QAAU,EAC5B,CACDvtE,OACIvwC,KAAK0+L,IAAInzK,MAAMuyF,QAAU,MAC5B,CACD39F,SACIo3Y,GAAYv3Z,KAAK0+L,KAAK,EACzB,CACD3uC,UACIwnQ,GAAYv3Z,KAAK0+L,KAAK,EACzB,CACDo5N,aACIN,GAAWx3Z,KAAK0+L,IACnB,CACDq5N,WAAWz3C,GACPk3C,GAAWx3Z,KAAK0+L,IAAK4hL,EACxB,CACDtiV,KAAKA,GACDh+B,KAAK0+L,IAAInzK,MAAMM,IAAMmS,EAAK7I,MAAQ,KAClCn1B,KAAK0+L,IAAInzK,MAAML,KAAO8S,EAAK/I,MAAQ,IACtC,EAELwiY,GAAgB10Z,UAAhB,0BAA6G00Z,IA38LNz0Z,MA28LuCs5T,OAA9I,EACAm7F,GAAgBx0Z,WA58LuFD,MA48LvG,OAAiHy0Z,GAAjHv0Z,QAAiHu0Z,GAAjH,YAQA,MAAMO,GACF7rY,SACInsB,KAAK0+L,IAAMr7L,SAAS0O,cAAc,OAClC/R,KAAK0+L,IAAI3rL,UAAY,sBACrB/S,KAAKuwC,MACR,CACDomT,SACI,OAAOx+T,GAAOn4B,KAAK0+L,IACtB,CACD/mL,SACQ3X,KAAK0+L,KAAO1+L,KAAK0+L,IAAI9mK,gBACrBv0B,SAAS0nE,KAAKn4D,YAAY5S,KAAK0+L,KAC/B1+L,KAAK0+L,IAAM,KAElB,CACDnuJ,OACIvwC,KAAK0+L,IAAInzK,MAAMuyF,QAAU,MAC5B,CACDn7E,UAAWzX,OAAMW,MAAKgL,WAClB72B,KAAK0+L,IAAInzK,MAAMuyF,QAAU,QACzB99G,KAAK0+L,IAAInzK,MAAMsL,OAASA,EAAS,KACjC72B,KAAK0+L,IAAInzK,MAAMM,IAAMA,EAAM,KAC3B,MAAMrX,EAAQxU,KAAK0+L,IAAIjtF,YAAc,EACrCzxG,KAAK0+L,IAAInzK,MAAML,KAAOA,EAAO1W,EAAQ,IACxC,EAELwjZ,GAAej1Z,UAAf,0BAA4Gi1Z,GAA5G,EACAA,GAAe/0Z,WA/+LwFD,MA++LvG,OAAgHg1Z,GAAhH90Z,QAAgH80Z,GAAhH,YAQA,MAAMC,GACFn4Z,cACIE,KAAKiM,QAAU,IAAIf,KACtB,CACDgtZ,QAAQzzY,GACJzkB,KAAKiM,QAAQmE,KAAKqU,EACrB,EAELwzY,GAAqBl1Z,UAArB,0BAAkHk1Z,GAAlH,EACAA,GAAqBh1Z,WAhgMkFD,MAggMvG,OAAsHi1Z,GAAtH/0Z,QAAsH+0Z,GAAtH,YAQA,MAAME,WAA2BxkZ,GAI7B7T,aAAcw8G,SAAQ0wH,WAAUz/B,aAC5BtvL,QACAje,KAAKs8G,OAASA,EACdt8G,KAAKgtO,SAAWA,EAChBhtO,KAAKutM,SAAWA,CACnB,EAML,MAAM6qN,GACFt4Z,YAAYu4Z,EAAUx4C,EAAYq5B,EAAW6K,EAAUlL,EAAmByG,EAAarG,GAAgBrlJ,IACnG5zP,KAAKq4Z,SAAWA,EAChBr4Z,KAAK6/W,WAAaA,EAClB7/W,KAAKk5Y,UAAYA,EACjBl5Y,KAAK+jZ,SAAWA,EAChB/jZ,KAAK64Y,kBAAoBA,EACzB74Y,KAAKs/Y,YAAcA,EACnBt/Y,KAAKi5Y,eAAiBA,GACtBj5Y,KAAK4zP,QAAUA,EAClB,CACGulJ,yBACA,MAAMkf,EAAWr4Z,KAAK64Y,kBAAoC,EAAhB74Y,KAAKq4Z,SAAer4Z,KAAKq4Z,SACnE,OAAOr4Z,KAAK6/W,WAAaw4C,EAAW,CACvC,EAGL,MAAMC,GAAY,CAAEptY,KAAM,MAAOiH,MAAO,OAIxC,MAAMomY,GACFz4Z,cACIE,KAAKw4Z,iBAAmB,IAAIttZ,MAC5BlL,KAAKy4Z,aAAe,IAAIvtZ,MACxBlL,KAAK04Z,aAAe,IAAIxtZ,MACxBlL,KAAK24Z,kBAAoB,IAAIztZ,MAC7BlL,KAAK44Z,iBAAmB,IAAIhI,GAAiB,IAAM,GACtD,CACGrN,wBACA,OAAOvjZ,KAAK44Z,iBAAiBrV,iBAChC,CACGwN,2BACA,OAAO/wZ,KAAK44Z,iBAAiB7H,oBAChC,CACG3tC,eACA,OAAOpjX,KAAKujZ,kBAAkBjjZ,OAAS,CAC1C,CACG0wZ,kBACA,OAAOhxZ,KAAK44Z,iBAAiB5H,WAChC,CACG6H,oBACA,OAAK74Z,KAAKy/K,KAGHz/K,KAAKy/K,OAAOnqK,OAAOgnG,IAAWA,EAAOypG,WAFjC,EAGd,CACG+yM,uBACA,MAAMllK,EAAU04J,GAActsZ,KAAKy/K,OAAOsyO,WAAWz1S,IAAWA,EAAO4tS,gBAClE50Y,OAAOgnG,GAAUA,EAAOk3I,cAAgBl3I,EAAO6uS,cACpD,SAAO6B,OAAQp5J,EAAS,CAAC,CAAEpiO,MAAO,SAAU7c,IAAK,SACpD,CACGokZ,wBACA,OAAO/4Z,KAAKy/K,OAAOuyO,cAAc18Y,OAAOgnG,IAAWA,EAAOgkQ,QAAUhkQ,EAAOypG,WAAWzlN,MACzF,CACD04Z,oBAAoB18S,GAIhB,GAHKt8G,KAAKi5Z,gBACNj5Z,KAAKi5Z,cAAgBj5Z,KAAKy/K,OAAOuyO,cAAc18Y,OAAOgnG,GAAUA,EAAOguS,SAAWhuS,EAAOgkQ,QAAUhkQ,EAAOypG,YAE5E,IAA9B/lN,KAAKi5Z,cAAc34Z,OACnB,OAAOg4Z,GAEX,MAAM1mY,EAAS5xB,KAAKi5Z,cAActzY,OAAO,CAACC,EAAKywK,KACvCA,EAAKqwN,UAAYpqS,EAAOoqS,UACxB9gY,EAAIsF,MAAQmrK,EAAK7hL,MAEZ6hL,EAAKqwN,UAAYpqS,EAAOoqS,YAC7B9gY,EAAIuM,OAASkkK,EAAK7hL,OAEfoR,GACR,CAAEsF,KAAM,EAAGiH,MAAO,IACrB,MAAO,CACHjH,KAAO,GAAE0G,EAAO1G,SAChBiH,MAAQ,GAAEP,EAAOO,UAExB,CACDosI,KAAKq1F,EAASn0E,GACVz/K,KAAK44Z,iBAAmBhlK,EACxB5zP,KAAKy/K,KAAOA,EACZz/K,KAAKi5Z,cAAgB,IACxB,CACDC,iBAAiBtlK,GACb5zP,KAAKi5Z,cAAgB,KACrBj5Z,KAAKw4Z,iBAAiBpoZ,KAAKwjP,EAC9B,CACDulK,aAAavlK,GACT5zP,KAAKi5Z,cAAgB,KACrBj5Z,KAAKy4Z,aAAaroZ,KAAKwjP,EAC1B,CACDwlK,YAAYxlK,GACR5zP,KAAKi5Z,cAAgB,KACrBj5Z,KAAK04Z,aAAatoZ,KAAKwjP,EAC1B,EAEL2kK,GAAkBx1Z,UAAlB,0BAA+Gw1Z,GAA/G,EACAA,GAAkBt1Z,WAtnMqFD,MAsnMvG,OAAmHu1Z,GAAnHr1Z,QAAmHq1Z,GAAnH,YAQA,MAAMc,GACFv5Z,cACIE,KAAKiM,QAAU,IAAI5B,GACtB,CACDu3B,KAAK15B,GACDlI,KAAKiM,QAAQhH,KAAKiD,EACrB,EAML,MAAMoxZ,GAIFx5Z,YAAY8zP,GACR5zP,KAAK4zP,QAAUA,CAClB,EAML,MAAM2lK,GAIFz5Z,YAAY8zP,GACR5zP,KAAK4zP,QAAUA,CAClB,EAmBL,SAAS4lK,GAAehtZ,EAAOga,GAC3B,MAAkB,SAAdA,EAAK/H,MAAmB+H,EAAKk3X,UACtBl3X,EAAKjH,KAET/S,CACV,CAKD,MAAMitZ,GAIF35Z,YAAY8zP,GACR5zP,KAAK4zP,QAAUA,CAClB,EAmBL,MAAM8lK,GACF55Z,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAEL8hZ,GAA6B32Z,UAA7B,0BAA0H22Z,IAvtMnB12Z,MAutMiEA,MAAxK,KACA02Z,GAA6BpmZ,UAxtM0EtQ,MAwtMvG,MAA8G02Z,GAA9GnmZ,qDAeA,MAAMomZ,GACF75Z,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAEL+hZ,GAAyB52Z,UAAzB,0BAAsH42Z,IA5uMf32Z,MA4uMyDA,OAAhK,EACA22Z,GAAyBrmZ,UA7uM8EtQ,MA6uMvG,MAA0G22Z,GAA1GpmZ,iDAWA,MAAMqmZ,GACF95Z,YAAY0T,GACRxT,KAAKwT,IAAMA,EACXxT,KAAKyX,QAAU,EAClB,CACGkrB,aAASz6B,GACTlI,KAAKyX,QAAQkrB,SAAWz6B,CAC3B,CACG2xZ,yBACA,OAAO75Z,KAAKwT,IAAIw2V,KAAK8vD,gBAAkB95Z,KAAKwT,IAAIw2V,KAAK8vD,gBAAgBliZ,iBAAc7C,CACtF,EAEL6kZ,GAAiB72Z,UAAjB,0BAA8G62Z,IApwMP52Z,MAowMyCgtZ,IAAhJ,EACA4J,GAAiBrjZ,UArwMsFvT,MAqwMvG,MAAkG42Z,GAAlGrmZ,gLArwMuGvQ,MAswM/F,iBADR,KArwMuGA,MAuwM1F,4BAFb,gBAO4CsqB,MAAiFA,OAP7H7U,kBA4BA,MAYMshZ,GAAe36Y,GAZK,GAAG46Y,cAAc,GAAI/tW,QAAO,EAAMxtC,OAAO,UAAW+4N,aAAY,EAAOyiL,gBAAe,EAAMC,cAAa,EAAMv3X,WAAW,aAAzH,CACvBq3X,cACA/tW,OACAurL,WAAyB,IAAdA,EAAqB,CAAC,EAAG,GAAI,IAAMA,EAC9CyiL,eACAx7Y,OACAy7Y,aACAv3X,aAK8Bw3X,EAA+B,IAAb/6Y,EAAoB,GAAKA,GAK7E,MAAMg7Y,GACFt6Z,YAAY6kE,GACR3kE,KAAK2kE,KAAOA,EACZ3kE,KAAKyf,QAAS,EACdzf,KAAK2kC,SAAW,GAChB3kC,KAAK2kE,KAAK+3U,cAAc18Y,KAC3B,CACGq6Z,wBACA,OAAOr6Z,KAAK2kC,SAASrvB,OAAOxM,GAAMA,EAAGyyT,WACxC,CACG9yI,eACA,OAAOzoL,KAAKyf,MACf,CACD5O,cACI7Q,KAAK2kE,KAAKg4U,gBAAgB38Y,KAC7B,CACDm/Y,gBAAgBz2Y,GACZ1I,KAAKo/Y,kBAAkB12Y,GACvB1I,KAAK2kC,SAAS3oB,KAAKtT,EACtB,CACD02Y,kBAAkB12Y,GACd1I,KAAK2kC,SAAW3kC,KAAK2kC,SAASrvB,OAAOlN,GAAKA,IAAMM,EACnD,CAKD4uY,cACI,MAAMxxL,EAAY9lN,KAAKq6Z,kBACvB,OAA4B,IAArBv0M,EAAUxlN,QAAgBwlN,EAAU,GAAGwxL,aACjD,CACD/7E,WACI,OAAOv7T,KAAKq6Z,kBAAkB/5Z,OAAS,CAC1C,CACD8Q,QACQpR,KAAKu7T,aAAev7T,KAAKmgS,YACzBngS,KAAKq6Z,kBAAkB,GAAGjpZ,OAEjC,CACDiF,WACIrW,KAAKs6Z,aAAY,EACpB,CACDzkZ,aACI7V,KAAKs6Z,aAAY,EACpB,CACDn6H,WACI,OAAOngS,KAAK2kC,SAAShf,OAAO,CAAC3O,EAAStO,IAAYsO,GAAWtO,EAAQy3R,YAAY,EACpF,CACDm6H,YAAY76Y,GACJzf,KAAKyf,SAAWA,IAChBzf,KAAKyf,OAASA,EACdzf,KAAK2kC,SAASl0B,QAAQrI,GAAKA,EAAE8W,OAAOO,IAE3C,EAEL26Y,GAAWr3Z,UAAX,0BAAwGq3Z,IAz2MDp3Z,MAy2M6By5Y,IAApI,EACA2d,GAAWn3Z,WA12M4FD,MA02MvG,OAA4Go3Z,GAA5Gl3Z,QAA4Gk3Z,GAA5G,YAQA,MAAMG,GACFz6Z,YAAY+K,EAAc2vZ,EAAcp6L,GACpCpgO,KAAK6K,aAAeA,EACpB7K,KAAKw6Z,aAAeA,EACpBx6Z,KAAKogO,GAAKA,EACVpgO,KAAK2nC,MAAQ3nC,KAAKw6Z,aAAa7yX,MAC/B3nC,KAAKg0C,KAAOh0C,KAAKw6Z,aAAaxmX,KAC9Bh0C,KAAK4hO,SAAW5hO,KAAKw6Z,aAAa54L,QACrC,CAQGu5K,kBACA,OAAOzmX,KAAKI,OAAO90B,KAAKg0C,MAAQ,GAAKh0C,KAAK4hO,UAAY,CACzD,CAQGwnI,iBACA,OAAO10U,KAAKG,MAAM70B,KAAK2nC,OAAS,GAAK3nC,KAAK4hO,SAC7C,CASDi2F,QAAQj+R,GACJ,OAAO55B,KAAK6K,aAAakV,IAAI6Z,EAChC,CAQDkoN,WAAW+2G,GACP,YAAK2hE,aAAa14K,WAAW+2G,IACtB,CACV,CAMDvpV,WACItP,KAAKknB,cAAgBlnB,KAAKw6Z,aAAavuZ,QAAQC,UAAUlM,KAAKy6Z,UAAUvtZ,KAAKlN,OAC7EA,KAAKknB,cAAclb,IAAIhM,KAAK6K,aAAaoB,QAAQC,UAAU,IAAMlM,KAAKogO,GAAGxiN,gBAC5E,CACD/M,cACQ7Q,KAAKknB,eACLlnB,KAAKknB,cAAcjW,aAE1B,EAELspZ,GAAsBx3Z,UAAtB,0BAAmHw3Z,IAp7MZv3Z,MAo7MmDqQ,OAp7MnDrQ,MAo7MsFk4Y,IAp7MtFl4Y,MAo7MsHA,OAA7N,EACAu3Z,GAAsBjnZ,UAr7MiFtQ,MAq7MvG,MAAuGu3Z,KASvG,MAAMG,WAAkCH,GACpCz6Z,YAAY+K,EAAc2vZ,EAAcp6L,EAAInlN,GACxCgD,MAAMpT,EAAc2vZ,EAAcp6L,GAClCpgO,KAAKib,kBAAoBA,CAC5B,CAQG7N,eACA,OAA4B,IAArBpN,KAAKm7Y,cAAsBn7Y,KAAK2nC,KAC1C,CACD8yX,WAAY9yX,QAAOqM,OAAM4tL,aACrB5hO,KAAK2nC,MAAQA,EACb3nC,KAAKg0C,KAAOA,EACZh0C,KAAK4hO,SAAWA,EAChB5hO,KAAKogO,GAAGxiN,cACX,EAEL88Y,GAA0B33Z,UAA1B,0BAAuH23Z,IAp9MhB13Z,MAo9M2DqQ,OAp9M3DrQ,MAo9M8Fk4Y,IAp9M9Fl4Y,MAo9M8HA,OAp9M9HA,MAo9M+J0W,IAAtQ,EACAghZ,GAA0BnkZ,UAr9M6EvT,MAq9MvG,MAA2G03Z,GAA3GnnZ,mDAr9MuGvQ,OAq9MvGuf,qKAr9MuGvf,MAs9M/F,YAt9M+FA,MAy9M3F,0BAAyB,IAAzBwQ,eAA6BA,aAAW,EAAxC,EAz9M2FxQ,CAy9M3F,kCACiC,IADjCwQ,eACqCA,aAAW,EADhD,GAz9M2FxQ,MAk+M3F,YAl+M2FA,cA0+M/F,YA1+M+FA,MA8+M3F,0BAAyB,IAAzBwQ,eAA6BA,2BAAuB,EAApD,EA9+M2FxQ,CA8+M3F,kCACiC,IADjCwQ,eACqCA,2BAAuB,EAD5D,GA9+M2FxQ,MAs/M3F,YAt/M2FA,SAq9MvG,MAr9MuGA,MAu9M3F,iCAv9M2FA,CAu9M3F,oCAv9M2FA,CAu9M3F,UAv9M2FA,MAu9M3F,mBAv9M2FA,MAo+MrF,GAp+MqFA,MAo+MrF,UAp+MqFA,MAo+MrF,QAp+MqFA,MAm+MrF,0CAn+MqFA,MA2+M3F,GA3+M2FA,MA2+M3F,iCA3+M2FA,CA2+M3F,uCA3+M2FA,CA2+M3F,UA3+M2FA,MA2+M3F,mBA3+M2FA,MAw/MrF,GAx/MqFA,MAw/MrF,UAx/MqFA,MAw/MrF,QAx/MqFA,MAu/MrF,6CAlClB,gBAyC4CkU,GAAqRoW,OAzCjU7U,oCA+FA,MAAMkiZ,WAAqCJ,GACvCz6Z,YAAY+K,EAAcu1N,EAAIo6L,GAC1Bv8Y,MAAMpT,EAAc2vZ,EAAcp6L,GAClCpgO,KAAKw6Z,aAAeA,EACpBx6Z,KAAK46Z,kBAAmB,CAC3B,CAQGzlZ,cACA,IAAIyc,EAAS,GACb,QAAS9wB,EAAMd,KAAK2a,MAAO7Z,GAAOd,KAAK8a,IAAKha,IACxC8wB,EAAO5V,KAAKlb,GAEhB,OAAO8wB,CACV,CAIG9W,UACA,OAAO4Z,KAAK9Z,IAAK5a,KAAK2a,MAAQ3a,KAAKg6Z,YAAe,EAAGh6Z,KAAKopW,WAC7D,CAIGzuV,YACA,MAAMk+U,EAAO74V,KAAKm7Y,YACZ6e,EAAch6Z,KAAKg6Z,YACzB,GAAInhE,EAAOmhE,EAAa,CACpB,MAAMa,EAAYhiE,EAAOmhE,EACzB,OAAqB,IAAba,EAAmBhiE,EAAOmhE,EAAe,EAAKnhE,EAAOgiE,EAAY,CAC5E,CACD,OAAO,CACV,CAIDC,UAAUz3P,GACN,MAAM03P,EAAW/6Z,KAAK63T,QAAQ,aAC9B,OAAIkjG,EACOA,EAAW,IAAM13P,EAErBA,EAAI5hK,UACd,CAIDu5Z,eAAev2Y,GACX,MAAM5H,EAAS4H,EAAE5H,OACXo+Y,EAAgB1sY,OAAO1R,EAAO3U,OAC/BqmB,OAAO4B,MAAM8qY,GAIO,oBAAjBp+Y,EAAO3U,MACPlI,KAAK8hP,WAAW9hP,KAAK2a,MAAQ,GAG7B3a,KAAK8hP,WAAW9hP,KAAK8a,KAPzB9a,KAAK8hP,WAAWm5K,EAAgB,EAUvC,CACDR,WAAY9yX,QAAOqM,OAAM4tL,aACrB5hO,KAAK2nC,MAAQA,EACb3nC,KAAKg0C,KAAOA,EACZh0C,KAAK4hO,SAAWA,EAChB5hO,KAAKogO,GAAGxiN,cACX,EAEL+8Y,GAA6B53Z,UAA7B,0BAA0H43Z,IA7nNnB33Z,MA6nNiEqQ,OA7nNjErQ,MA6nNoGA,OA7nNpGA,MA6nNqIk4Y,IAA5O,EACAyf,GAA6BpkZ,UA9nN0EvT,MA8nNvG,MAA8G23Z,GAA9GpnZ,uFA9nNuGvQ,MA8nNvG,yFA9nNuGA,OA8nNvGuf,8rBA9nNuGvf,MA+nN/F,cA/nN+FA,MAmoN3F,4BAAUwQ,mBAAV,GAnoN2FxQ,MAooN3F,qBApoN2FA,MA0oN3F,qBA1oN2FA,MAkpN3F,qBAlpN2FA,cAypN/F,UAzpN+FA,MA0pN3F,iBA1pN2FA,MAoqN3F,iBApqN2FA,MAgrN3F,iBAhrN2FA,SA8nNvG,MA9nNuGA,MAooNlF,GApoNkFA,MAooNlF,kBApoNkFA,MA0oNnE,GA1oNmEA,MA0oNnE,qBA1oNmEA,MAkpNlF,GAlpNkFA,MAkpNlF,2BAlpNkFA,MAypN3F,GAzpN2FA,MAypN3F,UAzpN2FA,MAypN3F,OAzpN2FA,MA0pNtF,GA1pNsFA,MA0pNtF,kBA1pNsFA,MAoqNvE,GApqNuEA,MAoqNvE,qBApqNuEA,MAgrNtF,GAhrNsFA,MAgrNtF,2BAlDjB,gBA6D4CkU,GAAqRoW,MAAiFA,MAA0GA,OA7D5f7U,oCA4IA,MAAMyiZ,GACFp7Z,YAAYoE,EAAMyG,GACd3K,KAAKkE,KAAOA,EACZlE,KAAK2K,SAAWA,CACnB,CACD6F,kBACI,MAAMs6L,EAAe9qM,KAAKkE,KAAKi3Z,aAAahvZ,cAC5CnM,KAAK2K,SAASyH,SAAS04L,EAAc,cACxC,EAELowN,GAAoBn4Z,UAApB,0BAAiHm4Z,IApxNVl4Z,MAoxN+Cw4J,OApxN/Cx4J,MAoxNwFA,OAA/L,EACAk4Z,GAAoB5nZ,UArxNmFtQ,MAqxNvG,MAAqGk4Z,GAArG3nZ,4CAwDA,MAAM6nZ,WAA4Bb,GAC9Bz6Z,YAAY+K,EAAc2vZ,EAAcl8Y,EAAMrD,EAAmBmlN,GAC7DniN,MAAMpT,EAAc2vZ,EAAcp6L,GAClCpgO,KAAKw6Z,aAAeA,EACpBx6Z,KAAKse,KAAOA,EACZte,KAAKib,kBAAoBA,EAQzBjb,KAAK22M,cAAiB3mM,IAClB,IAAIqrZ,GAAgBr7Z,KAAKm7Z,aAAajzZ,OAASlI,KAAKqV,QAChDrF,EAAME,UAAYC,aAClBH,EAAM6D,iBACFwnZ,KAAkBr7Z,KAAKqV,SACvBrV,KAAKse,KAAK5M,IAAI,KACV1R,KAAK8hP,WAAWu5K,GAAgB,EAAhC,GADJ,EAaZr7Z,KAAKsjM,WAAa,KACd,MAAM15K,EAAa5pB,KAAKm7Z,aAAajzZ,MAChC0hB,EAIDA,IAAe5pB,KAAKqV,SACpBrV,KAAKse,KAAK5M,IAAI,KACV1R,KAAK8hP,WAAWl4N,EAAa,EAA7B,GALJ5pB,KAAKm7Z,aAAapmO,WAAW/0L,KAAKqV,QAIlC,CAKX,CAIGA,cACA,OAAOrV,KAAKs7Z,SAAWt7Z,KAAKm7Y,YAAc,CAC7C,CACGmgB,eACA,OAA2B,IAApBt7Z,KAAKopW,UACf,CACDqxD,WAAY9yX,QAAOqM,OAAM4tL,aACrB5hO,KAAK2nC,MAAQA,EACb3nC,KAAKg0C,KAAOA,EACZh0C,KAAK4hO,SAAWA,EAChB5hO,KAAKogO,GAAGxiN,cACX,EAELw9Y,GAAoBr4Z,UAApB,0BAAiHq4Z,IAz4NVp4Z,MAy4N+CqQ,OAz4N/CrQ,MAy4NkFk4Y,IAz4NlFl4Y,MAy4NkHA,OAz4NlHA,MAy4NwI0W,IAz4NxI1W,MAy4NsKA,OAA7Q,EACAo4Z,GAAoB7kZ,UA14NmFvT,MA04NvG,MAAqGo4Z,GAArG7nZ,kEA14NuGvQ,KA04NwHu4Z,MAA/N,cA14NuGv4Z,MA04NvGyT,EA14NuGzT,WA04NvGwQ,oCA14NuGxQ,OA04NvGuf,sPA14NuGvf,MA24NlG,YA34NkGA,MA44N/F,GA54N+FA,MA64N/F,4BA74N+FA,MAg6N/F,GAh6N+FA,SA04NvG,MA14NuGA,MA24N5F,UA34N4FA,MA24N5F,QA34N4FA,MA44N/F,GA54N+FA,MA44N/F,gCA54N+FA,MA+4N3F,GA/4N2FA,MA+4N3F,gCA/4N2FA,CA+4N3F,aA/4N2FA,CA+4N3F,cA/4N2FA,CA+4N3F,aA/4N2FA,CA+4N3F,uBA/4N2FA,CA+4N3F,kBA/4N2FA,CA+4N3F,qBA/4N2FA,CA+4N3F,mBA/4N2FA,CA+4N3F,iBA/4N2FA,CA+4N3F,+CA/4N2FA,CA+4N3F,4BA/4N2FA,MA+4N3F,qCA/4N2FA,MAg6N/F,GAh6N+FA,MAg6N/F,+CAtBR,gBAwB4Cw4J,MAA8bluI,MAA2E4tY,GAAkEhkZ,GAAqRu3K,MAxB54Bh2K,kBA+DA,MAAM+iZ,WAAkCjB,GACpCz6Z,YAAY+K,EAAc2vZ,EAAcp6L,EAAInlN,GACxCgD,MAAMpT,EAAc2vZ,EAAcp6L,GAClCpgO,KAAKib,kBAAoBA,CAC5B,CAQG7N,eACA,OAAOpN,KAAKm7Y,cAAgBn7Y,KAAKopW,aAAeppW,KAAK2nC,KACxD,CACD8yX,WAAY9yX,QAAOqM,OAAM4tL,aACrB5hO,KAAK2nC,MAAQA,EACb3nC,KAAKg0C,KAAOA,EACZh0C,KAAK4hO,SAAWA,EAChB5hO,KAAKogO,GAAGxiN,cACX,EAEL49Y,GAA0Bz4Z,UAA1B,0BAAuHy4Z,IA/9NhBx4Z,MA+9N2DqQ,OA/9N3DrQ,MA+9N8Fk4Y,IA/9N9Fl4Y,MA+9N8HA,OA/9N9HA,MA+9N+J0W,IAAtQ,EACA8hZ,GAA0BjlZ,UAh+N6EvT,MAg+NvG,MAA2Gw4Z,GAA3GjoZ,mDAh+NuGvQ,OAg+NvGuf,oLAh+NuGvf,MAi+N/F,YAj+N+FA,MAq+N3F,wDAAsCwQ,2BAAtC,EAr+N2FxQ,CAq+N3F,gEAC8CwQ,2BAD9C,GAr+N2FxQ,MA8+N3F,YA9+N2FA,cAq/N/F,YAr/N+FA,MAy/N3F,wDAAsCwQ,0BAAsB,EAA5D,EAz/N2FxQ,CAy/N3F,gEAC8CwQ,0BAAsB,EADpE,GAz/N2FxQ,MAkgO3F,YAlgO2FA,SAg+NvG,MAh+NuGA,MAk+N3F,iCAl+N2FA,CAk+N3F,mCAl+N2FA,CAk+N3F,UAl+N2FA,MAk+N3F,mBAl+N2FA,MA++NvF,GA/+NuFA,MA++NvF,UA/+NuFA,MA++NvF,QA/+NuFA,MA8+NzE,yCA9+NyEA,MAs/N3F,GAt/N2FA,MAs/N3F,iCAt/N2FA,CAs/N3F,mCAt/N2FA,CAs/N3F,UAt/N2FA,MAs/N3F,mBAt/N2FA,MAmgOvF,GAngOuFA,MAmgOvF,UAngOuFA,MAmgOvF,QAngOuFA,MAkgOzE,yCAlC9B,gBAyC4CkU,GAAqRoW,OAzCjU7U,oCAgGA,MAAMgjZ,WAA2BlB,GAC7Bz6Z,YAAY+K,EAAcu1N,EAAIo6L,GAC1Bv8Y,MAAMpT,EAAc2vZ,EAAcp6L,GAClCpgO,KAAKw6Z,aAAeA,CACvB,CAQGkB,eACA,OAAOhnY,KAAK9Z,IAAI5a,KAAKm7Y,YAAcn7Y,KAAK4hO,SAAU5hO,KAAK2nC,MAC1D,CAQGg0X,sBACA,OAAO37Z,KAAK2nC,OACP3nC,KAAKm7Y,YAAc,GAAKn7Y,KAAK4hO,SAAW,EACzC,CACP,CAQGj1N,cACA,OAAO,CACV,CACD8tZ,WAAY9yX,QAAOqM,OAAM4tL,aACrB5hO,KAAK2nC,MAAQA,EACb3nC,KAAKg0C,KAAOA,EACZh0C,KAAK4hO,SAAWA,EAChB5hO,KAAKogO,GAAGxiN,cACX,EAEL69Y,GAAmB14Z,UAAnB,0BAAgH04Z,IA5mOTz4Z,MA4mO6CqQ,OA5mO7CrQ,MA4mOgFA,OA5mOhFA,MA4mOiHk4Y,IAAxN,EACAugB,GAAmBllZ,UA7mOoFvT,MA6mOvG,MAAoGy4Z,GAApGloZ,4EA7mOuGvQ,MA6mOvG,yBA7mOuGA,CA6mOvG,gCA7mOuGA,OA6mOvGuf,2CA7mOuGvf,MA6mOgM,GAAvS,KA7mOuGA,MA6mOgM,0GAAvS,sCAmBA,MAAM44Z,GACF97Z,YAAYoE,GACRlE,KAAKkE,KAAOA,EACZlE,KAAKkmO,eAAkBzhN,IACfA,EAAEvU,UAAYC,aAAenQ,KAAKkE,KAAK+a,SACvCwF,EAAEw7E,kBACFjgG,KAAKkE,KAAKgb,QAAO,GAAjB,CAGX,CACD1O,kBAC2BxQ,KAAKkE,KAAK4X,QAAQ3P,cAC1B6pB,iBAAiB,UAAWh2B,KAAKkmO,gBAAgB,EACnE,CACDr1N,cACI7Q,KAAKkE,KAAK4X,QAAQ3P,cAAc4qB,oBAAoB,UAAW/2B,KAAKkmO,eACvE,EAEL01L,GAA2B74Z,UAA3B,0BAAwH64Z,IAlpOjB54Z,MAkpO6D64Z,OAApK,EACAD,GAA2BtoZ,UAnpO4EtQ,MAmpOvG,MAA4G44Z,GAA5GroZ,+CASA,MAAMuoZ,WAAgCvB,GAClCz6Z,YAAY+K,EAAcu1N,EAAIo6L,EAAcv/Y,GACxCgD,MAAMpT,EAAc2vZ,EAAcp6L,GAClCpgO,KAAKw6Z,aAAeA,EACpBx6Z,KAAKib,kBAAoBA,EACzBjb,KAAK+7Z,WAAa,EACrB,CA8FGvkL,cAAUA,GACV,IAAIwkL,EAAkB,GACtBxkL,EAAU/mO,QAAQ+V,IACM,iBAATA,EACPw1Y,EAAgBhgZ,KAAK,CACjB3D,KAAMmO,EAAK/kB,WACXyG,MAAOse,IAIXw1Y,EAAgBhgZ,KAAKwK,EAArB,GAGJxmB,KAAK4hO,WAAao6L,EAAgBxgV,KAAKh1D,GAAQA,EAAKte,QAAUlI,KAAK4hO,YACnEo6L,EAAkB,CAAC,CAAE3jZ,KAAMrY,KAAK4hO,SAASngO,WAAYyG,MAAOlI,KAAK4hO,aAAeo6L,IAEpFh8Z,KAAK+7Z,WAAaC,CACrB,CACGxkL,gBACA,OAAOx3O,KAAK+7Z,UACf,CAMGpvZ,cACA,OAAO,CACV,CAMGsvZ,0BACA,OAOgB,IAPTj8Z,KAAKw3O,UACPliO,OAAOkR,GACkB,iBAAfA,EAAKte,MACLse,EAAKte,QAAUqmB,OAAOvuB,KAAK4hO,UAE/B5hO,KAAK2nC,QAAUpZ,OAAOvuB,KAAK4hO,WAEjCthO,MACR,CAID47Z,eAAeh0Z,GACXlI,KAAK4hO,SAA4B,iBAAV15N,EAAqBA,EAAQlI,KAAK2nC,MACzD3nC,KAAKw6Z,aAAapf,eAAep7Y,KAAK4hO,SACzC,CAID13K,SAAS2uS,GACL,MAA6B,iBAAfA,EAAK3wV,MAAqB2wV,EAAK3wV,MAAQlI,KAAK2nC,KAC7D,CACD8yX,WAAY9yX,QAAOqM,OAAM4tL,aACrB5hO,KAAK2nC,MAAQA,EACb3nC,KAAKg0C,KAAOA,EACZh0C,KAAK4hO,SAA+B,iBAAbA,EAAwBA,EAAW5hO,KAAK2nC,MAC/D3nC,KAAKogO,GAAGxiN,cACX,EAELk+Y,GAAwB/4Z,UAAxB,0BAAqH+4Z,IAh0Od94Z,MAg0OuDqQ,OAh0OvDrQ,MAg0O0FA,OAh0O1FA,MAg0O2Hk4Y,IAh0O3Hl4Y,MAg0O2J0W,IAAlQ,EACAoiZ,GAAwBvlZ,UAj0O+EvT,MAi0OvG,MAAyG84Z,GAAzGvoZ,kFAj0OuGvQ,MAi0OvG,0BAj0OuGA,CAi0OvG,+DAj0OuGA,OAi0OvGuf,sPAj0OuGvf,MAk0O/F,4BAl0O+FA,MA40O3F,iCAAewQ,mBAAf,GA50O2FxQ,cA60O/F,oBAZR,aAj0OuGA,MAi0OvG,GAj0OuGA,MAq0O3F,aAr0O2FA,CAq0O3F,mBAr0O2FA,CAq0O3F,oBAr0O2FA,CAq0O3F,oBAr0O2FA,MA60OlF,GA70OkFA,MA60OlF,QA70OkFA,CA60OlF,sCAZrB,iBAa4C64Z,MAA6f7wO,MAAmI4wO,GAA4E1kZ,IAbxvBuB,oCA+CA,MAAM0jZ,GACFr8Z,YAAY06Z,EAAcv/Y,EAAmBvS,EAASiC,EAAU2T,EAAMiF,EAAqBmnK,GAAa61N,GAAWxG,IAC/G/5Y,KAAKw6Z,aAAeA,EACpBx6Z,KAAKib,kBAAoBA,EACzBjb,KAAK0I,QAAUA,EACf1I,KAAK2K,SAAWA,EAChB3K,KAAKse,KAAOA,EACZte,KAAKujB,oBAAsBA,EAC3BvjB,KAAK0qL,YAAcA,GACnB1qL,KAAKugZ,UAAYA,GACjBvgZ,KAAK+5Y,WAAaA,GAClB/5Y,KAAK2nC,MAAQ,EACb3nC,KAAKg0C,KAAO,EACZh0C,KAAKy4L,WAAa,IAAIvtL,MACtBlL,KAAKo8Z,gBAAiB,EACtBp8Z,KAAKq8Z,gBAAiB,EACtBr8Z,KAAKof,SAAW26Y,GAAY,IAC5B/5Z,KAAKknB,cAAgB,IAAItb,MACzB5L,KAAKs8Z,iBAAmB,GACxBt8Z,KAAK6b,YAAa,EAClB7b,KAAKu8Z,cAAgB,KACjB,MAAM7zZ,GAAU1I,KAAK0I,QAAQyD,cAC7B,GAAInM,KAAKqyB,WAAa3pB,GAClB,OAEJ,MAAM8L,GAAQ9L,GAAQ+oG,YAClBj9F,GApuCqB,KAquCrBxU,KAAK2K,SAASqI,YAAYtK,GAAS,cACnC1I,KAAK2K,SAASyH,SAAS1J,GAAS,eAE3B8L,IAxuCgB,KAwuCyBA,GApuC1B,KAquCpBxU,KAAK2K,SAASyH,SAAS1J,GAAS,cAChC1I,KAAK2K,SAASqI,YAAYtK,GAAS,eAGnC1I,KAAKw8Z,wBAAL,CAGX,CACGx2Z,YAAQkC,GACRlI,KAAKof,SAAW26Y,GAAY7xZ,EAC/B,CACGwG,gBACA,OAAO1O,KAAK6b,UACf,CACG4gZ,qBACA,OAAOz8Z,KAAKib,kBAAkB6lY,aAAe9gZ,KAAK08Z,gBAAa3nZ,CAClE,CAIG2nZ,iBACA,MAAMC,EAAkB38Z,KAAKujB,oBAAoBxD,IAAI,eAAiB,GACtE,OAAOD,GAA0BA,GAA0B68Y,EAAiB,cAAe38Z,KAAKm7Y,YAAY15Y,YAAa,aAAczB,KAAKopW,WAAW3nW,WAC1J,CACGm7Z,wBACA,OAAO58Z,KAAK+5Y,WAAWtxN,SAAW,IAAM,IAC3C,CACDo0O,UAAU7sZ,GACFhQ,KAAKib,kBAAkB6lY,eACE9wY,EAAM6M,SAAW7c,KAAK0I,QAAQyD,eAEnDnM,KAAK6b,YAAa,EAClB7b,KAAKugZ,UAAU1qY,cAGf7V,KAAKugZ,UAAUlqY,WAG1B,CACDmrY,aACQxhZ,KAAKib,kBAAkB6lY,eACvB9gZ,KAAK6b,YAAa,EAEzB,CACDihZ,WACQ98Z,KAAKib,kBAAkB6lY,eACvB9gZ,KAAKugZ,UAAU1qY,aACf7V,KAAK0I,QAAQyD,cAAciF,QAElC,CACD2rZ,QAAQ/sZ,GACAhQ,KAAKib,kBAAkB6lY,cAAgB9wY,EAAM6M,SAAW7c,KAAK0I,QAAQyD,gBACrEnM,KAAKugZ,UAAUlqY,WACfrW,KAAKg9Z,oBAEZ,CACDC,uBAAuBx4Y,GACfzkB,KAAKk9Z,wBAAwBz4Y,EAAE5H,OAAQ7c,KAAKm7Y,YAAc,IAC1Dn7Y,KAAKw6Z,aAAa34K,UAEzB,CACDs7K,mBAAmB14Y,GACXzkB,KAAKk9Z,wBAAwBz4Y,EAAE5H,OAAQ7c,KAAKm7Y,YAAcn7Y,KAAKopW,aAC/DppW,KAAKw6Z,aAAa74K,UAEzB,CACDy7K,oBAAoB34Y,GACZzkB,KAAKk9Z,wBAAwBz4Y,EAAE5H,OAAQ7c,KAAKm7Y,YAAc,IAC1Dn7Y,KAAKw6Z,aAAa14K,WAAW,EAEpC,CACDu7K,mBAAmB54Y,GACXzkB,KAAKk9Z,wBAAwBz4Y,EAAE5H,OAAQ7c,KAAKm7Y,YAAcn7Y,KAAKopW,aAC/DppW,KAAKw6Z,aAAa14K,WAAW9hP,KAAKopW,WAAa,EAEtD,CACGA,iBACA,OAAO10U,KAAKG,MAAM70B,KAAK2nC,OAAS,GAAK3nC,KAAK4hO,SAC7C,CACGu5K,kBACA,OAAOzmX,KAAKI,OAAO90B,KAAKg0C,MAAQ,GAAKh0C,KAAK4hO,UAAY,CACzD,CACGpqN,sBACA,MAAMC,EAAUzX,KAAKs8Z,iBACrB7kZ,SAAQ2xV,WAAappW,KAAKopW,WAC1B3xV,EAAQkwB,MAAQ3nC,KAAK2nC,MACrBlwB,EAAQu8B,KAAOh0C,KAAKg0C,KACpBv8B,EAAQmqN,SAAW5hO,KAAK4hO,SACxBnqN,EAAQ0jY,YAAcn7Y,KAAKm7Y,YACpB1jY,CACV,CACDnI,WACItP,KAAKknB,cAAclb,IAAIhM,KAAKw6Z,aAAa/hO,WAAWvsL,UAAUlM,KAAK8hP,WAAW50O,KAAKlN,QAC/EA,KAAKib,kBAAkB6lY,cACvB9gZ,KAAKugZ,UAAU1qY,YAEtB,CACDmyK,YACIhoL,KAAKs9Z,mBACR,CACDjtZ,YAAYpE,IACR,EAAI2kK,MAAW,CAAC,WAAY,OAAQ,SAAU3kK,GAAS,IACnDjM,KAAKw6Z,aAAaxgQ,cAAc,CAC5B4nE,SAAU5hO,KAAK4hO,SACf5tL,KAAMh0C,KAAKg0C,KACXrM,MAAO3nC,KAAK2nC,QAGhB17B,EAAQomB,WAERpmB,EAAQomB,SAASzR,aAAe5gB,KAAKw8Z,yBAA2Bx8Z,KAAKu8Z,iBAErEtwZ,EAAQjG,UAERhG,KAAKof,SAAS86Y,WAAal6Z,KAAKu8Z,gBAAkBv8Z,KAAKw8Z,yBAE9D,CACD3rZ,cACQ7Q,KAAKknB,eACLlnB,KAAKknB,cAAcjW,aAE1B,CACD6wO,WAAW9xO,GACPhQ,KAAKy4L,WAAWroL,KAAKJ,EACxB,CACDutZ,eAAevtZ,EAAO2yB,GAClB3iC,KAAKse,KAAKspM,SAASniN,QAAKilB,MAAK,IAAIxe,UAAU,KACtB,UAAby2B,EACI3yB,EAAM0F,gBAAkB1V,KAAK0I,QAAQyD,cACrCnM,KAAKg9Z,oBAGLh9Z,KAAKw9Z,mBAITx9Z,KAAKg9Z,mBAAL,EAGX,CACDR,yBACI,MAAM9zZ,EAAU1I,KAAK0I,QAAQyD,cAC7BnM,KAAK2K,SAASqI,YAAYtK,EAAS,cACnC1I,KAAK2K,SAASqI,YAAYtK,EAAS,aACtC,CACDw0Z,wBAAwBrgZ,EAAQs6S,GAC5B,OAAOn3T,KAAKib,kBAAkB6lY,cAC1BjkY,IAAW7c,KAAK0I,QAAQyD,eACxBgrT,CACP,CACD6lG,oBACI,MAAMjnZ,EAAQglY,GAAmB/6Y,KAAK0I,QAAQyD,eAAe,GACzD4J,GACAA,EAAM3E,OAEb,CACDosZ,mBACI,MAAMxnZ,EAAOglY,GAAuBh7Y,KAAK0I,QAAQyD,eAAe,GAC5D6J,GACAA,EAAK5E,OAEZ,CACDksZ,oBACQt9Z,KAAK0qL,cACL1qL,KAAK0qL,YAAYqvN,WAAa/5Y,KAAK+5Y,WAE1C,EAELoiB,GAAep5Z,UAAf,0BAA4Go5Z,IAvjPLn5Z,MAujPqCk4Y,IAvjPrCl4Y,MAujPqE0W,IAvjPrE1W,MAujPmGA,OAvjPnGA,MAujP6HA,OAvjP7HA,MAujPsJA,OAvjPtJA,MAujP4KqQ,OAvjP5KrQ,MAujP+Mi8Y,GAAtT,GAvjPuGj8Y,MAujPwPy5Y,IAvjPxPz5Y,MAujP8Qo3Z,IAArX,EACA+B,GAAe5lZ,UAxjPwFvT,MAwjPvG,MAAgGm5Z,GAAhG5oZ,uEAxjPuGvQ,MAwjPvG,6BAAgGwQ,cAAhG,EAxjPuGxQ,CAwjPvG,6BAAgGwQ,cAAhG,EAxjPuGxQ,CAwjPvG,mCAAgGwQ,YAAhG,EAxjPuGxQ,CAwjPvG,mCAAgGwQ,YAAhG,EAxjPuGxQ,CAwjPvG,uCAAgGwQ,2BAAhG,EAxjPuGxQ,CAwjPvG,oCAAgGwQ,2BAAhG,EAxjPuGxQ,CAwjPvG,wCAAgGwQ,uBAAhG,EAxjPuGxQ,CAwjPvG,sCAAgGwQ,uBAAhG,EAxjPuGxQ,CAwjPvG,kCAAgGwQ,wBAAhG,EAxjPuGxQ,CAwjPvG,iCAAgGwQ,uBAAhG,SAxjPuGxQ,MAwjPvG,+BAxjPuGA,MAwjPvG,gCAxjPuGA,CAwjPvG,gCAxjPuGA,CAwjPvG,0KAxjPuGA,MAwjPm0B,CAAC,CAC/5BmD,QAASq2Y,GACTh2Y,UAAU,GACX,CACCL,QAASs2Y,GACTghB,KAAM,CAACjhB,IACPn2Y,SAAUo2Y,IACX,CACCt2Y,QAASi0Z,GACTqD,KAAM,CAAChhB,IACPp2Y,SAAU+zZ,MAlkPiFp3Z,OAwjPvGuf,kZAxjPuGvf,MAokP/F,kBApkP+FA,MA2kP/F,2BA3kP+FA,MAglP/F,2BAhlP+FA,MA+lP/F,kBA/lP+FA,MAsmP/F,mCA9CR,MAxjPuGA,MAqkP1F,yCArkP0FA,MA4kP1F,GA5kP0FA,MA4kP1F,qDA5kP0FA,MAglPhF,GAhlPgFA,MAglPhF,oDAhlPgFA,MAgmP1F,GAhmP0FA,MAgmP1F,yCAhmP0FA,MAsmPzE,GAtmPyEA,MAsmPzE,8BA9C9B,gBA+C0C03Z,GAA2EC,GAA0GS,GAA8DI,GAA2EC,GAA4DK,GAA8FrtO,KAAiInhK,MAAiFA,OA/CptB7U,kBAsKA,MAAMilZ,GACF59Z,YAAY4I,EAASkC,GACjB5K,KAAK0I,QAAUA,EACf1I,KAAK4K,QAAUA,EACf5K,KAAKyX,QAAU,GACfzX,KAAK6Z,MAAQ,IAAI3O,MACjBlL,KAAKm3G,MAAQ,IAAIjsG,MACjBlL,KAAKkqS,KAAO,IAAIh/R,MAChBlL,KAAKknB,cAAgB,IAAItb,KAC5B,CACD0D,WACItP,KAAK4K,QAAQoB,IAAIhM,MACjB,MAAMiM,EAAUjM,KAAK4K,QAAQqB,QAAQxG,QAAK6P,MAAO,EAAGuH,YAAaA,IAAW7c,OAC5EA,KAAKknB,cAAclb,IAAIC,EAAQxG,QAAK6P,MAAO,EAAGmJ,UAAoB,UAATA,IACpDvS,UAAUuY,IACXzkB,KAAKm3G,MAAMlyG,KAAKjF,KAAKoW,UAAUqO,GAA/B,IAEJzkB,KAAKknB,cAAclb,IAAIC,EAAQxG,QAAK6P,MAAO,EAAGmJ,UAAoB,UAATA,IACpDvS,UAAUuY,IACXzkB,KAAK6Z,MAAM5U,KAAKjF,KAAKoW,UAAUqO,GAA/B,IAEJzkB,KAAKknB,cAAclb,IAAIC,EAAQxG,QAAK6P,MAAO,EAAGmJ,UAAoB,SAATA,IACpDvS,UAAUuY,IACXzkB,KAAKkqS,KAAKjlS,KAAKjF,KAAKoW,UAAUqO,GAA9B,GAEP,CACD5T,cACQ7Q,KAAKknB,eACLlnB,KAAKknB,cAAcjW,aAE1B,CACDmF,UAAUqO,GACN,MAAO,CACH5H,OAAQ7c,KACRq3Z,WAAY5yY,EAAE4yY,WACd/lP,UAAW7sJ,EAAE6sJ,UAEpB,EAELosP,GAAoB36Z,UAApB,0BAAiH26Z,IArwPV16Z,MAqwP+CA,OArwP/CA,MAqwPyEm0Z,IAAhL,EACAuG,GAAoBpqZ,UAtwPmFtQ,MAswPvG,MAAqG06Z,GAArGnqZ,qHAmBA,MAAMoqZ,GACF79Z,cACIE,KAAK49Z,gBAAkB,IAAI1yZ,MAC3BlL,KAAK2X,OAAS,IAAIzM,KACrB,CACG2yZ,0BACA,OAAO,CACV,CACGlpZ,UACA,OAAO3U,KAAK8sC,MAAMn4B,IAAM3U,KAAK8sC,MAAMn4B,IAAM,KAC5C,CACDmpZ,kBACI,YAAKF,gBAAgBxtZ,KAAK,CACtBuE,IAAkB,QAAb3U,KAAK2U,IAAgB,OAAS,MACnC6c,MAAOxxB,KAAK8sC,MAAMtb,SAEf,CACV,CACDusY,mBACI,YAAKpmZ,OAAOvH,KAAK,CACbuE,IAAK3U,KAAK8sC,MAAMn4B,IAChB6c,MAAOxxB,KAAK8sC,MAAMtb,SAEf,CACV,EAELmsY,GAAwB56Z,UAAxB,0BAAqH46Z,GAArH,EACAA,GAAwBpnZ,UApzP+EvT,MAozPvG,MAAyG26Z,GAAzGpqZ,qFApzPuGvQ,MAozPvG,4fApzPuGA,MAqzP/F,SArzP+FA,MAqzPtD,0BAASwQ,mBAAT,GArzPsDxQ,MAszP3F,YAtzP2FA,MAyzP3F,GAzzP2FA,cA0zP/F,SA1zP+FA,MA0zP4C,0BAASwQ,oBAAT,GA1zP5CxQ,MA2zP3F,YA3zP2FA,SAozPvG,MApzPuGA,MAuzPvF,GAvzPuFA,MAuzPvF,gCAvzPuFA,CAuzPvF,mCAvzPuFA,MAyzP3F,GAzzP2FA,MAyzP3F,qBALZ,sCA0CA,MACMg7Z,EAAWjrZ,GAAajK,GAAM,IAAIrE,OAAQ,QAAOsO,UAAkBrO,KAAKoE,EAAGiK,WAC3EkrZ,EAAiB/nB,GAAG8nB,EAAS,oBAAqBA,EAAS,kBAC3DE,EAAahoB,GAAG8nB,EAAS,mBAAoBA,EAAS,qBACtDG,EAAc/nB,GAAIjhL,GAAI8oM,GAAiB9oM,GAAI+oM,GAAa/oM,GAAIwlL,IAAwBxlL,GAAIqlL,GAAgB,WACxG4jB,EAAqB,EAAGlpY,UAASE,aAAc/xB,SAASypO,iBAAiB53M,EAASE,GAUxF,MAAMipY,GACFv+Z,YAAYwxK,EAAW5oK,EAAS4V,EAAM1T,EAASi1G,EAAMy+S,EAAKluI,GAAKzlR,IAC3D3K,KAAKsxK,UAAYA,EACjBtxK,KAAK0I,QAAUA,EACf1I,KAAKse,KAAOA,EACZte,KAAK4K,QAAUA,EACf5K,KAAK6/G,KAAOA,EACZ7/G,KAAKs+Z,IAAMA,EACXt+Z,KAAKowR,IAAMA,GACXpwR,KAAK2K,SAAWA,GAChB3K,KAAKyX,QAAU,GACfzX,KAAKu0G,KAAO,IAAIrpG,MAChBlL,KAAKknB,cAAgB,IAAItb,KAC5B,CACGolK,eAAWtxB,GACX1/I,KAAK0/I,QAAUA,EACf1/I,KAAKu+Z,mBACR,CACG76Y,gBACA,OAAO1jB,KAAK0/I,OACf,CACDpwI,WACItP,KAAKknB,cAAclb,IAAIhM,KAAKse,KAAKzO,kBAAkB,IAAM7P,KAAKsxK,UAAUL,WAAWxrK,QAAK6P,MAAO6pK,GAAKn/K,KAAK0/I,UAAX,EAAqBpqI,MAAO,EAAGqP,eAAiB9H,aAAeA,IAAW7c,KAAK0I,QAAQyD,eAAiBgyZ,EAAYthZ,KAAzF,EAAmGwjF,MAAK57E,IAC7N,MAAME,EAAgBF,EAAEE,cACnBF,EAAEwqJ,SACHtqJ,EAAc9Q,iBAElB7T,KAAKowR,IAAImxH,WAAW58X,EAAc9H,OAAlC,IAL2N,EAM3NuxM,MA3CgBj/C,IAAWo+C,MAAa7yB,MAAG6yB,GAAW9nN,QAAKy+B,MAAM,MAAD,EAAOspL,MAAUr+C,IA2CvEqvP,CAAoBx+Z,KAAKsxK,UAAUH,gBAApC,EAAoD9wE,MAAK8+E,IAClEn/K,KAAK6/G,KAAK1zF,OAAOnsB,KAAKyX,QAAQooG,MAC9B7/G,KAAKs+Z,IAAInyY,QAAT,IAFgE,EAGhEiiM,MAAU/5E,GAAQr0I,KAAKsxK,UAAUJ,UAAUzrK,QAAK46F,MAAK57E,IACjDA,EAAEwqJ,SACFxqJ,EAAEE,cAAc9Q,gBAAhB,IAF+C,EAInDwsF,MAAIrgG,KAAK6/G,KAAK82O,WAAX,EAAsBt2P,MAAIrgG,KAAKs+Z,IAAI3nE,WAAV,EAEhCnpI,MAAUxtN,KAAKsxK,UAAUH,eAAhB,EAA+B9vK,MAAI28B,KAAWA,OAAMq2G,aANhD,EAM4Dh0C,MAAIrgG,KAAKy+Z,YAAYvxZ,KAAKlN,OAAQqqU,GAAYrqU,KAAKsxK,UAAUH,eAAejlK,UAAUlM,KAAKkqS,KAAKh9R,KAAKlN,QACjL,CACD6Q,cACQ7Q,KAAKknB,eACLlnB,KAAKknB,cAAcjW,aAE1B,CACDi5R,KAAKw0H,GACD1+Z,KAAK6/G,KAAKloG,SACV3X,KAAKs+Z,IAAI3mZ,SACT3X,KAAK4K,QAAQwpO,WAAWp0O,KAAM0+Z,EACjC,CACDD,aAAczgY,SACVh+B,KAAK6/G,KAAK7hF,KAAKA,GACf,MAAM2gY,EAAgB3+Z,KAAKo+Z,mBAAmBpgY,GAC1C2gY,GACA3+Z,KAAK4K,QAAQ+oO,WAAW3zO,KAAM2+Z,EAAe3gY,GAEjDh+B,KAAKu0G,KAAKnkG,KAAK,CACXkhK,UAAWtxK,KACXq3Z,WAAYr5X,GAEnB,CACDogY,mBAAmB/G,GACfr3Z,KAAK6/G,KAAKtvE,OACV,IAAI1zB,EAASuhZ,EAAmB/G,GAChC,OAAIx6Y,GAAU,sBAAsBnY,KAAKmY,EAAO9J,aAC5C8J,EAzES,EAACnU,EAASyrV,KAC3BzrV,EAAQ6iB,MAAMuyF,QAAU,OACxB,MAAMlsF,EAASuiU,IACfzrV,SAAQ6iB,MAAMuyF,QAAU,QACjBlsF,GAqEUgtY,CAAa/hZ,EAAQuhZ,EAAmBlxZ,KAAKlN,KAAMq3Z,KAEhEr3Z,KAAK6/G,KAAK54E,OACHpqB,CACV,CACD0hZ,qBACSv+Z,KAAK0I,UAIV1I,KAAK0/I,QAAU1/I,KAAK2K,SAASyH,SAASpS,KAAK0I,QAAQyD,cAAe,uBAC9DnM,KAAK2K,SAASqI,YAAYhT,KAAK0I,QAAQyD,cAAe,uBAC7D,EAELkyZ,GAAyBt7Z,UAAzB,0BAAsHs7Z,IA37Pfr7Z,MA27PyDyrL,KAAhK,GA37PuGzrL,MA27PyGA,OA37PzGA,MA27PmIA,OA37PnIA,MA27PyJm0Z,IA37PzJn0Z,MA27PwLy0Z,IA37PxLz0Z,MA27PoNg1Z,IA37PpNh1Z,MA27P+O0W,IA37P/O1W,MA27P6QA,OAApX,EACAq7Z,GAAyB/qZ,UA57P8EtQ,MA47PvG,MAA0Gq7Z,GAA1G9qZ,sFA57PuGvQ,MA47PvG,mHAmBA,MAAM67Z,GAAe,EAAGrtY,WAAYulN,GAAoBvlN,GAClDstY,GAAiB,EAAGzyX,SAAQ7a,WAAY6a,EAAOmvC,KAAK1uC,GAASA,EAAMtb,QAAUA,GAM7EutY,GAAiB7oB,GALA,EAAGr5X,SAAQ2U,WAAY3U,EAAO2U,QAAUA,EAKrB4kX,GAJnB,EAAGv5X,YAAaA,EAAOu6Y,WAC1B,EAAG/qX,SAAQ7a,WAAY6a,EAAOhrC,IAAIyrC,GAASA,EAAMtb,OAAOvwB,QAAQuwB,KAAW6a,EAAO/rC,OAAS,IAO/G,MAAM0+Z,GACFl/Z,YAAY+/G,EAAMy+S,EAAKW,EAAkBp0Z,EAAcu1N,GACnDpgO,KAAK6/G,KAAOA,EACZ7/G,KAAKs+Z,IAAMA,EACXt+Z,KAAKi/Z,iBAAmBA,EACxBj/Z,KAAK6K,aAAeA,EACpB7K,KAAKogO,GAAKA,EACVpgO,KAAKsQ,OAAS,IAAIpF,MAClBlL,KAAKqsC,OAAS,GACdrsC,KAAKk/Z,YAAc,IAAI1qB,MACvBx0Y,KAAKm/Z,YAAc,GACnBn/Z,KAAK+5J,aAAe,IAAInuJ,KAC3B,CACGwzZ,uBACA,OAAO,CACV,CACG/mZ,SAAKnQ,GACLlI,KAAKq/Z,UAAYn3Z,CACpB,CACGmQ,WACA,OAAOrY,KAAKq/Z,UAAYr/Z,KAAKq/Z,UAAYr/Z,KAAK6K,aAAakV,IAAI,kBAClE,CACDvP,kBACIxQ,KAAK+5J,aAAa/tJ,IAAIi7E,GAAQjnF,KAAKk/Z,aAC9BhzZ,UAAUlM,KAAKs/Z,cAAcpyZ,KAAKlN,OAC1C,CACDsP,WACItP,KAAK+5J,aAAa/tJ,IAAIhM,KAAK6K,aAAaoB,QAAQC,UAAU,IAAMlM,KAAKogO,GAAGxiN,gBAC3E,CACDoqK,YACI,MAAMu3O,EAAgBv/Z,KAAKqsC,OAAOhrC,IAAIyrC,GAAS9sC,KAAKi/Z,iBAAiB1M,WAAWzlX,KAC5EyyX,EAAcj/Z,SAAWN,KAAKm/Z,YAAY7+Z,QAAUi/Z,EAAc/jV,KAAK,CAACnmE,EAASvU,IAAQuU,IAAYrV,KAAKm/Z,YAAYr+Z,OACtHd,KAAKm/Z,YAAcI,EACnBv/Z,KAAKogO,GAAGxiN,eAEf,CACD/M,cACQ7Q,KAAK+5J,cACL/5J,KAAK+5J,aAAa9oJ,cAElBjR,KAAKw/Z,oBACLx/Z,KAAKw/Z,mBAAmBvuZ,aAE/B,CACD2sZ,gBAAgB9wX,GACZ,MAAMtgC,EAAQxM,KAAKqsC,OAAO9nC,UAAU8jB,GAAKA,EAAEmJ,QAAUsb,EAAMtb,OACrD6a,EAAS,IAAIrsC,KAAKqsC,OAAO3qC,MAAM,EAAG8K,GAAQsgC,KAAU9sC,KAAKqsC,OAAO3qC,MAAM8K,EAAQ,IACpFxM,KAAKsQ,OAAOF,KAAKi8B,EACpB,CACD5F,OAAOjV,EAAOhlB,GACV,MAAM6/B,EAASrsC,KAAKqsC,OAAO/2B,OAAO+S,GAAKA,EAAEmJ,QAAUA,IAC/C6a,EAAO/rC,QAAiC,IAAvBN,KAAKqsC,OAAO/rC,SAC7BN,KAAKsQ,OAAOF,KAAK,IAAIi8B,EAAO3qC,MAAM,EAAG8K,GAAQ,CAAEglB,MAAOA,MAAY6a,EAAO3qC,MAAM8K,IAEtF,CACDmL,OAAOm1B,GACH9sC,KAAKsQ,OAAOF,KAAKpQ,KAAKqsC,OAAO/2B,OAAO+S,GAAKA,EAAEmJ,QAAUsb,EAAMtb,OAC9D,CACDiuY,QAAQnuP,EAAWz0J,GAKf,QAJuC,mBAAnBy0J,EAAU7yJ,KAExBsgZ,GAlEOW,IAAiBxpB,GAAG2oB,GAAcC,GAD/Bze,IAAkB,EAAG7uX,YAAa6uX,EAAciS,YAAY9gY,GACbmuY,CAAeD,IAmExEE,CAAY5/Z,KAAKi/Z,mBACT,CACVztY,MAAO8/I,EAAU9/I,MACjB6a,OAAQrsC,KAAKqsC,OACbxvB,UAEP,CACDyiZ,gBACQt/Z,KAAKw/Z,oBACLx/Z,KAAKw/Z,mBAAmBvuZ,cAE5BjR,KAAKw/Z,mBAAqB,IAAI5zZ,MAC9B,MAAMi0Z,EAAc7/Z,KAAKk/Z,YACpBv5Y,OAAO,CAACC,EAAK/I,OAAWI,KAAM2I,EAAK/I,EAAOhD,QAAb,EAAqBrU,KAAK,KACtDs6Z,EAAc9/Z,KAAKk/Z,YACpBv5Y,OAAO,CAACC,EAAK/I,OAAWI,KAAM2I,EAAK/I,EAAOs6F,QAAb,EAAqB3xG,KAAK,KACtDu6Z,EAAa//Z,KAAKk/Z,YACnBv5Y,OAAO,CAACC,EAAK/I,OAAWI,KAAM2I,EAAK/I,EAAOqtR,OAAb,EAAoB1kS,KAAK,KAC3DxF,KAAKw/Z,mBAAmBxzZ,IAAI6zZ,EAAYp6Z,QAAK46F,MAAI8+E,GAAKn/K,KAAK6/G,KAAKi4S,eAAhB,EAA+BxiZ,MAAO,EAAGg8J,YAAWz0J,YAAa7c,KAAKy/Z,QAAQnuP,EAAU75J,QAASoF,EAAOpF,WAAnE,EAA8E4oF,MAAIrgG,KAAK6Z,MAAM3M,KAAKlN,OAAQqqU,GAAY01F,EAAWt6Z,QAAK+nN,MAAUsyM,EAAYr6Z,QAAK46F,MAAIrgG,KAAKm3G,MAAMjqG,KAAKlN,YAAYkM,UAAUlM,KAAKkqS,KAAKh9R,KAAKlN,OAClT,CACD6Z,OAAQy3J,YAAWz0J,WACf7c,KAAK6/G,KAAK1/F,SACV,IAAIihP,EAASvkP,EAAOpF,QAAQ2/Y,YAAcH,GAAe3lP,EAAU5oK,QAAQyD,cAAe0Q,EAAOnU,QAAQyD,eACrGnM,KAAK6K,aAAakB,MAClBq1P,GAAUA,GAEdphQ,KAAKs+Z,IAAI37X,SAASA,GAAS9lB,EAAOnU,QAAQyD,cAAei1P,GAC5D,CACDjqJ,QACIn3G,KAAK6/G,KAAKkwC,UACV/vJ,KAAKs+Z,IAAI/tX,MACZ,CACD25P,MAAOrtR,SAAQy0J,cACX,MAAM9/I,EAAQ8/I,EAAU75J,QAAQ+Z,MAC1BhlB,EAAQxM,KAAKk/Z,YAAY9pZ,UAAUnU,QAAQ4b,GACjD7c,KAAKymC,OAAOjV,EAAOhlB,EACtB,EAELwyZ,GAAoBj8Z,UAApB,0BAAiHi8Z,IA9jQVh8Z,MA8jQ+Cy0Z,IA9jQ/Cz0Z,MA8jQ2Eg1Z,IA9jQ3Eh1Z,MA8jQsGivZ,IA9jQtGjvZ,MA8jQmIqQ,OA9jQnIrQ,MA8jQsKA,OAA7Q,EACAg8Z,GAAoBzoZ,UA/jQmFvT,MA+jQvG,MAAqGg8Z,GAArGzrZ,uEA/jQuGvQ,KA+jQiU06Z,GAAxa,cA/jQuG16Z,MA+jQvGyT,EA/jQuGzT,WA+jQvGwQ,8DA/jQuGxQ,MA+jQvG,uCA/jQuGA,CA+jQvG,+hBA/jQuGA,MAgkQ/F,2BAhkQ+FA,MA0kQ/F,mBA1kQ+FA,MAgmQ/F,mBAjCR,MA/jQuGA,MAgkQhF,4BAhkQgFA,MA0kQxE,GA1kQwEA,MA0kQxE,oBA1kQwEA,MAimQ1F,GAjmQ0FA,MAimQ1F,4BAlCb,gBAuC4C26Z,GAA6JrwY,MAAiFowY,GAAwHpwY,MAA0G+wY,GAA8H5vO,MAvC1nBh2K,oCA0GA,MAAMunZ,GACFlga,cACIE,KAAK4zP,QAAU,GACf5zP,KAAKqsC,OAAS,EACjB,CACGmgX,sBACA,OAAOA,GAAgBxsZ,KAAK4zP,QAC/B,CACD19B,QAAQ1pN,EAAOylP,GACX,OAAOzlP,CACV,EAELwzZ,GAAkBj9Z,UAAlB,0BAA+Gi9Z,GAA/G,EACAA,GAAkBzpZ,UAtrQqFvT,MAsrQvG,MAAmGg9Z,GAAnGzsZ,2TAtrQuGvQ,MAurQnG,GAvrQmGA,MAwrQ/F,kBAxrQ+FA,MAyrQ/F,kBAzrQ+FA,MA0rQ/F,kBA1rQ+FA,SAsrQvG,MAtrQuGA,MAwrQjD,GAxrQiDA,MAwrQjD,oBAxrQiDA,MAyrQ1D,GAzrQ0DA,MAyrQ1D,iEAzrQ0DA,MA0rQvE,GA1rQuEA,MA0rQvE,4BA1rQuEA,CA0rQvE,0BAJhC,gBAM4CsqB,MAA0GA,OANtJ7U,kBA8BA,MAAM+mO,GAAW,CACbygL,aAAa,EACb3+R,KAAM,SACN4+R,aAAa,EACbC,iBAAkB,MAClBC,aAAc,QAKZhoP,GAAY,IAAIh5J,IAAaC,OAAOC,OAAO,GAAIkgO,MAAapgO,GAK5DihZ,GAAY,CAACjhZ,EAAUk9F,KAA+B,IAApBl9F,EAAS9J,QAAoBgnG,EAAO9qF,OAAS8qF,EAAOuoH,WAItFy7L,GAAU,CAAClhZ,EAAUk9F,KAA6B,IAAlBl9F,EAASwiB,MAAkB06E,EAAO9qF,OAAS8qF,EAAOivS,SAIlFgV,GAAU,CAACnhZ,EAAUk9F,IAAWl9F,EAASqzB,MAAQ6pE,EAAOiuS,YAAcjuS,EAAO3kF,SAAW2kF,EAAO3kF,OAAOmyX,cAYtG0W,GAAoBphZ,IAAwC,IAA3BA,EAASqhZ,cAU1CC,IAJsBnoM,GAAa1tN,GAAgBwU,OAAOsa,KAAK4+L,GAAW5yM,OAAO,CAACC,EAAKgU,KACzFhU,EAAI2yM,EAAU3+L,IAAQ/uB,EAAakV,IAAI6Z,GAChChU,GACR,IACG86Y,CAAoC,CACtCC,iBAAoB,KACpBC,oBAAuB,MACvBC,kBAAqB,MACrBC,iBAAoB,KACpBC,kBAAqB,MACrBC,iBAAoB,KACpBC,qBAAwB,SACxBC,wBAA2B,YAC3BC,sBAAyB,UACzBC,yBAA4B,aAC5BC,uBAA0B,WAC1BC,0BAA6B,iBAC7BC,yBAA4B,aAC5BC,uBAA0B,WAC1BC,2BAA8B,WAC9BC,oBAAuB,QACvBC,4BAA+B,YAC/BC,qBAAwB,WAKtBjkK,GAAUq2J,GAAOA,EAAG3yZ,IAAIgnB,GAAKA,EAAEs1O,UAIrC,MAAMkkK,GACF/ha,YAAYk4N,EAAUntN,GAClB7K,KAAKg4N,SAAWA,EAChBh4N,KAAK6K,aAAeA,EACpB7K,KAAKswJ,SAAWowQ,GAAc1ga,KAAK6K,cACnC7K,KAAKunP,MAAQvnP,KAAKswJ,SAAStwJ,KAAKg4N,UAChCh4N,KAAK6K,aAAaoB,QAAQC,UAAUlM,KAAK8ha,YAAY50Z,KAAKlN,MAC7D,CAOGqY,WACA,OAAOrY,KAAKunP,KACf,CACGlvO,SAAKnQ,GACLlI,KAAKunP,MAAQxQ,GAAoB7uO,GAASlI,KAAKswJ,SAAStwJ,KAAKg4N,UAAY9vN,CAC5E,CAIDy1P,SACI,MAAO,CACHtlP,KAAMrY,KAAKqY,KACXnQ,MAAOlI,KAAKg4N,SAEnB,CACD8pM,cACI,MAAMl6V,EAAS5nE,KAAKunP,QAAUvnP,KAAKswJ,SAAStwJ,KAAKg4N,UACjDh4N,KAAKswJ,SAAWowQ,GAAc1ga,KAAK6K,cAC/B+8D,IACA5nE,KAAKunP,MAAQvnP,KAAKswJ,SAAStwJ,KAAKg4N,UAEvC,EAEL6pM,GAAmB9+Z,UAAnB,0BAAgH8+Z,IAj0QT7+Z,MAi0Q6C,kBAj0Q7CA,MAi0Q0EqQ,OAAjL,EACAwuZ,GAAmBtrZ,UAl0QoFvT,MAk0QvG,MAAoG6+Z,GAApGtuZ,+HAcA,MAQMwuZ,GAAY,CAACv1Z,EAAO8I,EAAQkc,EAAOwwY,IACjC/5Z,GAAUqN,IAAWrN,GAAUqN,EAAO2sZ,UAAY3sZ,EAAO2sZ,QAAQ3ha,OAASkM,EACnE8I,EAAO2sZ,QAAQz1Z,GAVF,EAACA,EAAO01Z,EAAY5sZ,MAC5C4sZ,EAAcA,GAAc,CAAED,QAAS,GAAIjjC,MAAO,QACvCijC,QAAQz1Z,GAAS8I,EACrBA,GAUI6sZ,CAAoB31Z,EAAO8I,EAAQ,CACtCkc,QACAwmM,SAAUgqM,IAOhBI,GAAkBv3Z,GAAiB,CACrC,CAAEwN,KAAMxN,EAAakV,IAAI,kBAAmB7X,MAAO,OACnD,CAAEmQ,KAAMxN,EAAakV,IAAI,iBAAkB7X,MAAO,OAKhD41O,GAAWxoO,GACTrN,GAAUqN,EAAO2sZ,SACV3sZ,EAAO2sZ,QAAQt8Y,OAAO,CAACC,EAAKywK,IAASzwK,EAAIE,UAAOu8Y,OAA4BhsO,GAAQynD,GAAQznD,GAAQ,CAACA,IAAQ,IAEjH,GAELisO,GAAoB,CAAChtZ,EAAQkc,KAC3BvpB,GAAUqN,IAAWrN,GAAUqN,EAAO2sZ,WACtC3sZ,EAAO2sZ,QAAU3sZ,EAAO2sZ,QAAQ3sZ,OAAO+S,MAC/Bg6Y,OAA4Bh6Y,IAC5Bi6Y,GAAkBj6Y,EAAGmJ,GACdnJ,EAAE45Y,QAAQ3ha,QAGV+nB,EAAEmJ,QAAUA,GANV,EAcnB+wY,GAAiB,CAACjtZ,EAAQkc,IAAUssN,GAAQxoO,GAAU,IAAIA,OAAO+S,GAAKA,EAAEmJ,QAAUA,GAWlFgxY,GAAe,CAACltZ,EAAQkc,KAC1B8wY,GAAkBhtZ,EAAQkc,GACnBlc,GAKLmtZ,GAAoBlqM,GAAa1tN,GAAgBwU,OAAOsa,KAAK4+L,GAAWl3N,IAAIu4B,KAC9EvhB,KAAMxN,EAAakV,IAAI6Z,GACvB1xB,MAAOqwN,EAAU3+L,MAKrB,MAAM8oY,GACF5ia,YAAY6ia,GACR3ia,KAAK2ia,cAAgBA,EACrB3ia,KAAK4ia,aAAe,IAAIpuB,KAC3B,CACGzwO,kBACA,OAAO,CACV,CACGw0D,gBACA,IAAIgvD,EACJ,OAAmC,QAA1BA,EAAKvnR,KAAK6ia,kBAA+B,IAAPt7I,GAAyBA,EAAGjnR,OAAUN,KAAK6ia,WAAa7ia,KAAK8ia,gBAC3G,CACGvqM,cAAUz9L,GACV96B,KAAK6ia,WAAa/nY,CACrB,CAIDhlB,qBACI9V,KAAK+ia,0BAA4B97U,GAAQjnF,KAAK4ia,cACzCn9Z,QAAKpE,MAAI28I,GAAKA,EAAE5oI,YAAR,EAAoB/T,MAAIs8P,KAChCzxP,UAAUmc,IACXroB,KAAKu4N,UAAYlwM,GAExB,CACDxX,cACQ7Q,KAAK+ia,2BACL/ia,KAAK+ia,0BAA0B9xZ,aAEtC,CACD+xZ,cAAcxxY,GACV,MApDc,EAAClc,EAAQkc,KAC3B,IAAKyxY,GAAiBV,GAAejtZ,EAAQkc,GAC7C,OAAOyxY,GAkDID,CAAchja,KAAKsV,OAAQkc,EACrC,CACD+wY,eAAe/wY,GACX,OAAO+wY,GAAevia,KAAKsV,OAAQkc,EACtC,CACDgxY,aAAahxY,GACT,OAAOgxY,GAAaxia,KAAKsV,OAAQkc,EACpC,CACD0xY,aAAa5tZ,GACT,MAAMqvD,EAAO3kE,KAAKsV,QAAU,CACxB2sZ,QAAS,GACTjjC,MAAO,OAEX,IAAKikC,GAAiBnlL,GAAQn5K,GAAMrvD,OAAO+S,GAAKA,EAAEmJ,QAAUlc,EAAOkc,OACnE,OAAKvpB,GAAUg7Z,GAIX5jZ,OAAOC,OAAO2jZ,EAAe3tZ,GAH7BqvD,EAAKs9V,QAAQjmZ,KAAK1G,GAKfqvD,CACV,CACDw+V,YAAY7tZ,GACRtV,KAAK2ia,cAAcrtZ,OAAOA,EAC7B,EAELotZ,GAAwB3/Z,UAAxB,0BAAqH2/Z,IAr9Qd1/Z,MAq9QuDowZ,IAA9J,EACAsP,GAAwBpvZ,UAt9Q+EtQ,MAs9QvG,MAAyG0/Z,GAAzGU,uCAt9QuGpga,MAs9QvGwT,EAA+RqrZ,GAA/R,cAt9QuG7+Z,MAs9QvGyT,EAt9QuGzT,WAs9QvGwQ,+DAt9QuGxQ,MAs9QvG,gEAcA,MAAMqga,GAAe,CAAClmY,EAAGpF,IAAMoF,EAAE3L,QAAUuG,EAAEvG,OAAS2L,EAAE66L,WAAajgM,EAAEigM,UAAY76L,EAAEj1B,QAAU6vB,EAAE7vB,MAgC3Fo7Z,GAAehuZ,GAbDyd,KAChB,MAAMnB,EAAS,GAEf,GADAvS,OAAOC,OAAOsS,EAAQmB,GAClBA,EAAIjzB,cAAgBuf,OAAQ,CAC5B,MAAM6a,EAAQnH,EAAIjzB,YAAYsB,UAC9Bie,OAAOk3X,oBAAoBr8W,GAAOzpB,QAASmgB,IACtB,gBAAbA,GAA8BsJ,EAAM93B,eAAewuB,KACnDgB,EAAOhB,GAAYmC,EAAInC,KAGlC,CACD,OAAOgB,GAEqB2xY,CAAWjuZ,GAIrCkuZ,GAAgBluZ,IAClB,GAAKA,EAGL,SAAI+sZ,OAA4B/sZ,GACrB,CACH2sZ,QAASuB,GAAaluZ,EAAO2sZ,SAC7BjjC,MAAO1pX,EAAO0pX,OAGb79X,MAAMkuB,QAAQ/Z,GACZA,EAAOjU,IAAImia,IAEfF,GAAYhuZ,EAAD,EAKhBmuZ,GAAc,CAACtmY,EAAGpF,OAChB9vB,GAAUk1B,KAAOl1B,GAAU8vB,KAG1B9vB,GAAUk1B,IAAMl1B,GAAU8vB,KAGxB9vB,GAAUk1B,IAAMl1B,GAAU8vB,IA5DnB,EAACoF,EAAGpF,KAClB,GAAIoF,EAAE78B,SAAWy3B,EAAEz3B,OACf,OAAO,EAEX,QAASQ,EAAM,EAAGuzR,EAAMl3P,EAAE78B,OAAQQ,EAAMuzR,EAAKvzR,IAAO,CAChD,MAAMs1L,EAAOj5J,EAAEr8B,GACTu1L,EAAOt+J,EAAEj3B,GACf,MAAIuha,OAA4BjsO,IAC5B,GAAIqtO,GAAYrtO,EAAMC,EAAKv1L,IACvB,OAAO,UAGNuia,GAAajtO,EAAMC,GACxB,OAAO,CAEd,CACD,OAAO,GA4CgC9lL,CAAU4sB,EAAE8kY,QAASlqY,EAAEkqY,SAMlE,MAAMyB,GACF5ja,YAAYoE,EAAM4nN,GACd9rN,KAAKkE,KAAOA,EACZlE,KAAK8rN,SAAWA,CACnB,CACDx8M,WACItP,KAAK6gL,UAAY7gL,KAAKkE,KAAKkoN,gBAAgBpsN,KAAK8rN,SAASE,wBAAwBhsN,KAAK0J,kBACtF1J,KAAK2ja,cAAc,CACfrnT,OAAQt8G,KAAKs8G,OACbhnG,OAAQtV,KAAKsV,QAEpB,CACDzE,cACQ7Q,KAAK6gL,YACL7gL,KAAK6gL,UAAU1zJ,UACfntB,KAAK6gL,UAAY,KAExB,CACDxwK,YAAYpE,IACR,EAAI2kK,MAAW,CAAC,SAAU,UAAW3kK,IACjCjM,KAAK2ja,cAAc,CACfrnT,OAAQt8G,KAAKs8G,OACbhnG,OAAQtV,KAAKsV,QAGxB,CACDquZ,eAAgBrnT,SAAQhnG,WACpB,MAAMoL,EAAW1gB,KAAK6gL,UAAUngK,SAChCA,EAAS47F,OAASA,EAClB57F,EAASpL,OAASA,CACrB,EAELouZ,GAAoB3ga,UAApB,0BAAiH2ga,IAvkRV1ga,MAukR+CA,OAvkR/CA,MAukR+EA,OAAtL,EACA0ga,GAAoBpwZ,UAxkRmFtQ,MAwkRvG,MAAqG0ga,GAArGnwZ,iGAxkRuGvQ,SAqlRvG,MAAM4ga,GAAoBnB,GAAkB,CACxC9B,iBAAoB,KACpBC,oBAAuB,MACvBS,uBAA0B,WAC1BC,0BAA6B,iBAC7BC,yBAA4B,aAC5BC,uBAA0B,WAC1BP,qBAAwB,SACxBC,wBAA2B,YAC3BC,sBAAyB,UACzBC,yBAA4B,eAKhC,MAAMyC,WAA8BnB,GAChC5ia,YAAY6ia,EAAe93Z,GACvBoT,MAAM0kZ,GACN3ia,KAAK6K,aAAeA,EAKpB7K,KAAKg4N,SAAW,UACnB,CAMGirM,oBACA,OAAOjja,KAAKgja,eAAehja,KAAKs8G,QAAU,IAAI9qF,MACjD,CAMGsyY,sBACA,OAAO9ja,KAAKija,cAAgBjja,KAAKija,cAAcjrM,SAAWh4N,KAAKg4N,QAClE,CACD1oN,WACItP,KAAK+5J,aAAe/5J,KAAK6K,aAAaoB,QAAQC,UAAUlM,KAAK+ja,mBAAmB72Z,KAAKlN,MACxF,CACD6Q,cACQ7Q,KAAK+5J,cACL/5J,KAAK+5J,aAAa9oJ,cAEtBgN,MAAMpN,aACT,CACDkzZ,qBACI/ja,KAAK8ia,iBAAmBc,GAAkB5ja,KAAK6K,cAC3C7K,KAAK4ia,aAAatia,SAClBN,KAAKu4N,UAAYolC,GAAO39P,KAAK4ia,aAAaxtZ,WAEjD,EAELyuZ,GAAsB9ga,UAAtB,0BAAmH8ga,IA9oRZ7ga,MA8oRmDowZ,IA9oRnDpwZ,MA8oR6EqQ,OAApL,EACAwwZ,GAAsBvwZ,UA/oRiFtQ,MA+oRvG,MAAuG6ga,GAAvG3zL,uEA/oRuGltO,SA8pRvG,MAAMgoP,GACFlrP,YAAYkka,EAAgBl5Z,EAAQpC,EAASiC,GACzC3K,KAAK0I,QAAUA,EACf1I,KAAK2K,SAAWA,EAChB3K,KAAKsQ,OAAS,IAAIpF,MAClBlL,KAAKg7R,WAAY,EACjBh7R,KAAKika,YAAc,IACnBjka,KAAKkka,eAAiB,IAAI75Z,IAC1BrK,KAAKgmZ,SAAWge,EAAe,GAC/Bl5Z,EAAO+E,kBAAkB,KACrB,MAAMs0Z,EAAmBx5Z,EAASmF,OAAOpH,EAAQyD,cAAe,mBAAoB,IAAMnM,KAAKg7R,WAAY,GACrGopI,EAAiBz5Z,EAASmF,OAAOpH,EAAQyD,cAAe,iBAAkB,IAAMnM,KAAKg7R,WAAY,GACvGh7R,KAAK0kP,kBAAoB,KACrBy/K,IACAC,GAAc,CACjB,EAER,CACGl8Z,UAAMA,GACNlI,KAAKgmZ,SAASjxN,WAAW7sL,EAC5B,CACGkF,aAASlF,GACTlI,KAAKgmZ,SAAS9wN,iBAAiBhtL,EAClC,CACDsI,kBACIxQ,KAAKqka,oBACLrka,KAAKgmZ,SAAShxN,iBAAiB3sK,GAAKroB,KAAKika,YAAc,EACnDjka,KAAKkka,eAAej/Z,KAAKojB,GACzBroB,KAAKsQ,OAAOF,KAAKiY,IACrBroB,KAAKska,kBACR,CACDj0Z,YAAYpE,IACR,EAAIs4Z,MAAY,cAAet4Z,KAC3BjM,KAAKwka,qBACLxka,KAAKska,mBAEZ,CACDzzZ,cACI7Q,KAAKwka,qBACLxka,KAAK0kP,mBACR,CACD4/K,mBACItka,KAAKyka,2BAA6Bzka,KAAKkka,eAClCz+Z,QAAKmxM,MAAa52M,KAAKika,cAAN,EAAoB3uZ,MAAO,KAAOtV,KAAKg7R,YACxD9uR,UAAUmc,GAAKroB,KAAKsQ,OAAOF,KAAKiY,GACxC,CACDm8Y,qBACQxka,KAAKyka,4BACLzka,KAAKyka,2BAA2BxzZ,aAEvC,CACDozZ,oBACI,MAAMK,EAAY1ka,KAAK2ka,YACvB,GAAI3ka,KAAK4ka,YAAc5ka,KAAK4ka,WAAWx7N,gBAAe/7L,QAAuB,CACzE,MAAMw3Z,EAAmB7ka,KAAK0I,QAAQyD,cAAc8e,cAAe,IAAGjrB,KAAK4ka,WAAWx7N,gBAClFppM,KAAK0I,QAAQyD,cACjBnM,KAAK2K,SAASiF,aAAai1Z,EAAkB,aAAcH,EAC9D,MAEG1ka,KAAK2K,SAASiF,aAAa5P,KAAK0I,QAAQyD,cAAe,aAAcu4Z,EAE5E,EAEL15K,GAAqBjoP,UAArB,0BAAkHioP,IA7tRXhoP,MA6tRiDotL,MAAxJ,GA7tRuGptL,MA6tR2FA,OA7tR3FA,MA6tRiHA,OA7tRjHA,MA6tR2IA,OAAlP,EACAgoP,GAAqB13O,UA9tRkFtQ,MA8tRvG,MAAsGgoP,GAAtGz3O,8EA9tRuGvQ,MA8tRvGwT,EAAgTk9J,KAAhT,cA9tRuG1wK,MA8tRvGyT,EA9tRuGzT,WA8tRvGwQ,6GA9tRuGxQ,SAovRvG,MAAM8ha,GAAwB,IAAIxpY,IAAI,CAAC,SAAU,YAAa,UAAW,eACnEypY,GAAwB/sM,GAAa8sM,GAAsB7pY,IAAI+8L,GAIrE,MAAMgtM,WAAoCtC,GACtC5ia,YAAY6ia,GACR1kZ,MAAM0kZ,EACT,CACGM,oBACA,OAAOjja,KAAKgja,cAAchja,KAAKs8G,OAAO9qF,MACzC,CACGsyY,sBACA,MAAMxuZ,EAAStV,KAAKija,cACpB,OAAKjja,KAAKila,YACNjla,KAAKila,UAAY3vZ,EAASA,EAAO0iN,SAAWh4N,KAAKgia,iBAE9Chia,KAAKila,SACf,CACGnB,oBAAgB57Z,GAChBlI,KAAKila,UAAY/8Z,EACjB,MAAMg9Z,EAAqBH,GAAqB78Z,GAChDlI,KAAKmla,oBAAsBD,EACvBA,EACAlla,KAAKola,mBAAmBl9Z,IAElB+uN,GAAQ/uN,IAAUD,GAAUjI,KAAKija,gBACvCjja,KAAKk9O,SAASl9O,KAAKija,cAAc/6Z,MAExC,CACG85Z,sBACA,OAAKjrL,GAAoB/2O,KAAKqla,kBAGrBrla,KAAKu4N,WAAav4N,KAAKu4N,UAAUj4N,OAC/BN,KAAKu4N,UAAU,GAAGrwN,MAEtB,KALIlI,KAAKqla,gBAMnB,CACGrD,oBAAgB95Z,GAChBlI,KAAKqla,iBAAmBn9Z,CAC3B,CACGi9Z,wBAAoB/3Z,IACfpN,KAAK0Q,QAGV1Q,KAAK0Q,MAAMtD,SAAWA,EACzB,CACD0I,qBACQ7N,GAAUjI,KAAK0Q,SACf1Q,KAAKylP,mBAAqBzlP,KAAK0Q,MAAMJ,OAAOpE,UAAUlM,KAAKk9O,SAAShwO,KAAKlN,OACzEA,KAAKmla,oBAAsBJ,GAAqB/ka,KAAK8ja,iBAE5D,CACDjzZ,cACIoN,MAAMpN,cACF7Q,KAAKylP,oBACLzlP,KAAKylP,mBAAmBx0O,aAE/B,CACDisO,SAASh1O,KACA6uO,GAAoB7uO,IAAUlI,KAAKgja,cAAchja,KAAKs8G,OAAO9qF,SAC9DxxB,KAAK0kO,aAAaqS,GAAoB7uO,GAClClI,KAAKwia,aAAaxia,KAAKs8G,OAAO9qF,OAC9BxxB,KAAKkja,aAAa,CACd1xY,MAAOxxB,KAAKs8G,OAAO9qF,MACnBwmM,SAAUh4N,KAAK8ja,gBACf57Z,MAAOA,IAGtB,CACDo9Z,UACItla,KAAKk9O,SAAS,MACdl9O,KAAKmla,oBAAsBJ,GAAqB/ka,KAAKgia,gBACxD,CACDoD,mBAAmBptM,GACfh4N,KAAK0kO,aAAa1kO,KAAKkja,aAAa,CAChC1xY,MAAOxxB,KAAKs8G,OAAO9qF,MACnBwmM,SAAUA,EACV9vN,MAAO,OAEd,CACDmI,YAAYpE,IACR,EAAIs4Z,MAAY,SAAUt4Z,GAAS,KAC/BjM,KAAKila,UAAY,KACjBjla,KAAKmla,oBAAsBJ,GAAqB/ka,KAAK8ja,iBAE5D,EAELkB,GAA4Bjia,UAA5B,0BAAyHiia,IA70RlBhia,MA60R+DowZ,IAAtK,EACA4R,GAA4B1xZ,UA90R2EtQ,MA80RvG,MAA6Ggia,GAA7G5B,uCA90RuGpga,MA80RvGwT,EAAyRw0O,GAAzR,cA90RuGhoP,MA80RvGyT,EA90RuGzT,WA80RvGwQ,wGA90RuGxQ,eAg2RvG,MAAMuia,GACFzla,YAAYoE,GACRlE,KAAKkE,KAAOA,EACZlE,KAAKkmO,eAAkBzhN,IACfA,EAAEvU,UAAYC,aAAenQ,KAAKkE,KAAK+a,SACvCwF,EAAEw7E,kBACFjgG,KAAKkE,KAAKgb,QAAO,GAAjB,CAGX,CACD1O,kBACI,MAAMg1Z,EAAiBxla,KAAKkE,KAAK4X,QAAQ3P,cACzCq5Z,EAAe51Z,aAAa,aAAc5P,KAAKyla,yBAC/CD,EAAexvY,iBAAiB,UAAWh2B,KAAKkmO,gBAAgB,EACnE,CACDr1N,cACI7Q,KAAKkE,KAAK4X,QAAQ3P,cAAc4qB,oBAAoB,UAAW/2B,KAAKkmO,eACvE,EAELq/L,GAAgCxia,UAAhC,0BAA6Hwia,IAn3RtBvia,MAm3RuE64Z,OAA9K,EACA0J,GAAgCjyZ,UAp3RuEtQ,MAo3RvG,MAAiHuia,GAAjHhyZ,2GAWA,MAAMmyZ,WAAwCV,GAC1Clla,YAAYyjB,GACRtF,MAAM,MACNje,KAAKujB,oBAAsBA,CAC9B,CAIGwgJ,kBACA,OAAO,CACV,CACDvzJ,kBACQxQ,KAAK2la,iBAAmB3la,KAAK2ia,eAAiB3ia,KAAK2ia,cAActP,qBACjErzZ,KAAK2ia,cAActP,mBAAmBvoM,eAAiB9qN,KAAK4la,sBAC5D5la,KAAK4la,sBAAsBx0Z,QAElC,CACDy0Z,eAAe1tZ,GACXnY,KAAK8ja,gBAAkB3rZ,CAC1B,CACDusN,aAAapvN,GACTtV,KAAKmja,YAAY7tZ,EACpB,CAMG2tZ,oBACA,OAAOjja,KAAK8la,cACf,CAMG7C,kBAAc/6Z,GACdlI,KAAK8la,eAAiB59Z,CACzB,CACDg7Z,aAAa5tZ,GACT+J,cAAOC,OAAOtf,KAAKija,cAAe3tZ,GAC3BtV,KAAKsV,MACf,CACD4nO,SAASh1O,GACLlI,KAAK0kO,aAAa1kO,KAAKkja,aAAa,CAChC1xY,MAAOxxB,KAAKs8G,OAAO9qF,MACnBwmM,SAAUh4N,KAAK8ja,gBACf57Z,MAAOA,IAEd,CACD69Z,WAAWthZ,GACPA,EAAEmgO,6BACI5kP,KAAKqzZ,qBAAuBrzZ,KAAKqzZ,mBAAmBF,eAAiBnzZ,KAAK2la,iBAAmB3la,KAAK2ia,cAActP,mBAAmBtoM,gBACrItmM,EAAE5Q,iBACF7T,KAAK2ia,cAActP,mBAAmBtoM,cAAc35M,QAE3D,CACGq0Z,8BACA,MAAM9I,EAAkB38Z,KAAKujB,oBAAoBxD,IAAI,qCAAuC,GACtFimZ,EAAahma,KAAKs8G,OAASt8G,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MAAQ,GAC1E,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,EAELN,GAAgC3ia,UAAhC,0BAA6H2ia,IA97RtB1ia,MA87RuEqQ,OAA9K,EACAqyZ,GAAgCnvZ,UA/7RuEvT,MA+7RvG,MAAiH0ia,GAAjHnyZ,qFA/7RuGvQ,KA+7RsUmoP,MAA7a,cA/7RuGnoP,MA+7RvGyT,EA/7RuGzT,WA+7RvGwQ,4LA/7RuGxQ,OA+7RvG0T,gPA/7RuG1T,cAg8R/F,0BAh8R+FA,MAo8R3F,iCAAewQ,mBAAf,EAp8R2FxQ,CAo8R3F,uCAKqBwQ,eALrB,GAp8R2FxQ,cA28R/F,IAZR,KA/7RuGA,MAk8R3F,oDAl8R2FA,CAk8R3F,mBAl8R2FA,CAk8R3F,0BAl8R2FA,CAk8R3F,oBAHZ,gBAa4C64Z,MAA2gB0J,IAbvjB9sZ,kBAiDA,MAAMwtZ,GACFnma,YAAYyjB,GACRvjB,KAAKujB,oBAAsBA,EAC3BvjB,KAAKu4N,UAAY,EACpB,CACGosM,kBACA,MAAMhI,EAAkB38Z,KAAKujB,oBAAoBxD,IAAI,qBAAuB,GACtEimZ,EAAahma,KAAKs8G,OAASt8G,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MAAQ,GAC1E,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,EAELC,GAA+Blja,UAA/B,0BAA4Hkja,IA3/RrBjja,MA2/RqEqQ,OAA5K,EACA4yZ,GAA+B1vZ,UA5/RwEvT,MA4/RvG,MAAgHija,GAAhH1yZ,ghBA5/RuGvQ,MA6/R/F,4CA7/R+FA,MAugS3F,aAvgS2FA,SA4/RvG,MA5/RuGA,MA8/R3F,kBA9/R2FA,CA8/R3F,kBA9/R2FA,CA8/R3F,wBA9/R2FA,CA8/R3F,6BA9/R2FA,CA8/R3F,gCA9/R2FA,CA8/R3F,gCA9/R2FA,CA8/R3F,oCA9/R2FA,CA8/R3F,2CA9/R2FA,MA0gSvF,GA1gSuFA,MA0gSvF,4BA1gSuFA,CA0gSvF,gBA1gSuFA,CA0gSvF,4DAdhB,gBAkB4C0ia,GAAgMlqQ,MAAqF0qQ,MAA+Pl7K,GAAiHk7K,MAAuFA,OAlBxwBztZ,kBAiEA,MAAM0tZ,WAAkCtC,GACpC/ja,YAAY+K,GACRoT,MAAM,KAAMpT,GACZ7K,KAAKoia,eAAiBA,GAAepia,KAAK6K,cAK1C7K,KAAKsV,OAAS,CAAE2sZ,QAAS,GAAIjjC,MAAO,OAIpCh/X,KAAK8/P,OAAQ,CAChB,CAIG/7F,kBACA,OAAO,CACV,CACGqiQ,kBACA,OAAOrE,GAAU,EAAG/ha,KAAKsV,QAAStV,KAAKs8G,QAAU,IAAI9qF,MAAOxxB,KAAKg4N,SACpE,CACGquM,mBACA,OAAOtE,GAAU,EAAG/ha,KAAKsV,QAAStV,KAAKs8G,QAAU,IAAI9qF,MAAOxxB,KAAKg4N,SACpE,CACDsuM,YAAYp+Z,GACRlI,KAAKsV,OAAO0pX,MAAQ92X,CACvB,CACGu9Z,8BACA,MAAM9I,EAAkB38Z,KAAK6K,aAAakV,IAAI,iCAAmC,GAC3EimZ,EAAahma,KAAKs8G,OAASt8G,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MAAQ,GAC1E,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,CACDjC,qBACI/ja,KAAKoia,eAAiBA,GAAepia,KAAK6K,cAC1CoT,MAAM8lZ,oBACT,EAELoC,GAA0Bpja,UAA1B,0BAAuHoja,IApmShBnja,MAomS2DqQ,OAAlK,EACA8yZ,GAA0B5vZ,UArmS6EvT,MAqmSvG,MAA2Gmja,GAA3G5yZ,yFArmSuGvQ,MAqmSvG,sKArmSuGA,OAqmSvGuf,wqBArmSuGvf,MAsmS/F,2CAtmS+FA,MA+mS/F,iCA/mS+FA,MA0nS/F,mDArBR,MArmSuGA,MAumS3F,8BAvmS2FA,CAumS3F,wBAvmS2FA,CAumS3F,gCAvmS2FA,CAumS3F,kBAvmS2FA,CAumS3F,kBAvmS2FA,CAumS3F,qBAvmS2FA,CAumS3F,2CAvmS2FA,MAgnS1F,GAhnS0FA,MAgnS1F,gBAhnS0FA,MA2nS1F,GA3nS0FA,MA2nS1F,gBAtBb,gBA8B4Cija,GAA6NpK,MAA2gBvuY,MAAiFi4Y,IA9Br2B9sZ,kBAmFA,MAAM8tZ,GAAmB9D,GAAkB,CACvC9B,iBAAoB,KACpBC,oBAAuB,MACvBC,kBAAqB,MACrBC,iBAAoB,KACpBC,kBAAqB,MACrBC,iBAAoB,KACpBC,qBAAwB,SACxBC,wBAA2B,cAK/B,MAAMsF,WAA+B9D,GACjC5ia,YAAY6ia,EAAe93Z,GACvBoT,MAAM0kZ,GACN3ia,KAAK6K,aAAeA,EAKpB7K,KAAKg4N,SAAW,KAKhBh4N,KAAKya,KAAO,EAKZza,KAAK0pM,UAAW,EAChB1pM,KAAK8ia,iBAAmByD,GAAiBvma,KAAK6K,aACjD,CAKGskC,WAAOjnC,GACPlI,KAAKk8M,QAAUh0M,CAClB,CAKGinC,aACA,OAAQ4nM,GAAoB/2O,KAAKk8M,SAA0Bl8M,KAAKyma,aAApBzma,KAAKk8M,OACpD,CAMG+mN,oBACA,OAAOjja,KAAKgja,cAAchja,KAAKs8G,OAAO9qF,MACzC,CAMGsyY,sBACA,OAAO9ja,KAAKija,cAAgBjja,KAAKija,cAAcjrM,SAAWh4N,KAAKg4N,QAClE,CACGyuM,mBACA,OAAOzma,KAAKs8G,SAAWy6H,GAAoB/2O,KAAKs8G,OAAOntE,QACnD8mW,GAAcj2Y,KAAKs8G,OAAOntE,QAAU,IAC3C,CACD7/B,WACItP,KAAK+5J,aAAe/5J,KAAK6K,aAAaoB,QAAQC,UAAUlM,KAAK+ja,mBAAmB72Z,KAAKlN,MACxF,CACD6Q,cACQ7Q,KAAK+5J,cACL/5J,KAAK+5J,aAAa9oJ,cAEtBgN,MAAMpN,aACT,CACDkzZ,qBACI/ja,KAAK8ia,iBAAmByD,GAAiBvma,KAAK6K,cAC1C7K,KAAK4ia,aAAatia,SAClBN,KAAKu4N,UAAYolC,GAAO39P,KAAK4ia,aAAaxtZ,WAEjD,EAELoxZ,GAAuBzja,UAAvB,0BAAoHyja,IA5wSbxja,MA4wSqDowZ,IA5wSrDpwZ,MA4wS+EqQ,OAAtL,EACAmzZ,GAAuBlzZ,UA7wSgFtQ,MA6wSvG,MAAwGwja,GAAxGt2L,+JA7wSuGltO,SAwySvG,MAAM0ja,GACF5ma,YAAY+K,GACR7K,KAAK6K,aAAeA,EACpB7K,KAAKu4N,UAAY,GAKjBv4N,KAAKya,KAAO,EAKZza,KAAK0pM,UAAW,CACnB,CACD46C,WAAW1qN,GACP,OAAO55B,KAAK6K,aAAakV,IAAI6Z,EAChC,CAIG+qY,kBACA,MAAMhI,EAAkB38Z,KAAK6K,aAAakV,IAAI,qBAAuB,GAC/DimZ,EAAahma,KAAKs8G,OAASt8G,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MAAQ,GAC1E,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,EAELU,GAAgC3ja,UAAhC,0BAA6H2ja,IAn0StB1ja,MAm0SuEqQ,OAA9K,EACAqzZ,GAAgCnwZ,UAp0SuEvT,MAo0SvG,MAAiH0ja,GAAjHnzZ,2sBAp0SuGvQ,MAq0S/F,2CAr0S+FA,CAq0S/F,4BAr0S+FA,MA41SvF,qCA51SuFA,WAo0SvG,MAp0SuGA,MAs0S3F,kBAt0S2FA,CAs0S3F,kBAt0S2FA,CAs0S3F,wBAt0S2FA,CAs0S3F,6BAt0S2FA,CAs0S3F,gCAt0S2FA,CAs0S3F,gCAt0S2FA,CAs0S3F,oCAt0S2FA,CAs0S3F,2CAt0S2FA,MAi1SvF,GAj1SuFA,MAi1SvF,4BAj1SuFA,CAi1SvF,4BAj1SuFA,CAi1SvF,iBAj1SuFA,CAi1SvF,yDAj1SuFA,CAi1SvF,kBAj1SuFA,CAi1SvF,sBAj1SuFA,CAi1SvF,sBAj1SuFA,CAi1SvF,YAj1SuFA,CAi1SvF,YAj1SuFA,CAi1SvF,eAj1SuFA,MA61SnF,GA71SmFA,MA61SnF,mDA71SmFA,CA61SnF,oDAzBpB,gBA+B4C0ia,GAAkLlqQ,MAAgbA,MAA+GwvF,IA/B7vBvyO,kBAsHA,MAAMkuZ,WAAmCH,GACrC1ma,YAAY+K,GACRoT,MAAM,KAAMpT,GACZ7K,KAAKoia,eAAiBA,GAAepia,KAAK6K,cAK1C7K,KAAKsV,OAAS,CAAE2sZ,QAAS,GAAIjjC,MAAO,OAIpCh/X,KAAK8/P,OAAQ,EAMb9/P,KAAKika,YAAc,GACtB,CAIGlgQ,kBACA,OAAO,CACV,CACGqiQ,kBACA,OAAOrE,GAAU,EAAG/ha,KAAKsV,QAAStV,KAAKs8G,QAAU,IAAI9qF,MAAOxxB,KAAKg4N,SACpE,CACGquM,mBACA,OAAOtE,GAAU,EAAG/ha,KAAKsV,QAAStV,KAAKs8G,QAAU,IAAI9qF,MAAOxxB,KAAKg4N,SACpE,CACDsuM,YAAYp+Z,GACRlI,KAAKsV,OAAO0pX,MAAQ92X,CACvB,CACGu9Z,8BACA,MAAM9I,EAAkB38Z,KAAK6K,aAAakV,IAAI,iCAAmC,GAC3EimZ,EAAahma,KAAKs8G,OAASt8G,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MAAQ,GAC1E,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,CACDjC,qBACI/ja,KAAKoia,eAAiBA,GAAepia,KAAK6K,cAC1CoT,MAAM8lZ,oBACT,EAEL4C,GAA2B5ja,UAA3B,0BAAwH4ja,IAv+SjB3ja,MAu+S6DqQ,OAApK,EACAszZ,GAA2BpwZ,UAx+S4EvT,MAw+SvG,MAA4G2ja,GAA5GpzZ,0FAx+SuGvQ,MAw+SvG,gMAx+SuGA,OAw+SvGuf,60BAx+SuGvf,MAy+S/F,4CAz+S+FA,MA0/S/F,iCA1/S+FA,MAsgT/F,qDA9BR,MAx+SuGA,MA0+S3F,8BA1+S2FA,CA0+S3F,wBA1+S2FA,CA0+S3F,gCA1+S2FA,CA0+S3F,kBA1+S2FA,CA0+S3F,kBA1+S2FA,CA0+S3F,4BA1+S2FA,CA0+S3F,kBA1+S2FA,CA0+S3F,sBA1+S2FA,CA0+S3F,sBA1+S2FA,CA0+S3F,YA1+S2FA,CA0+S3F,YA1+S2FA,CA0+S3F,cA1+S2FA,CA0+S3F,0CA1+S2FA,CA0+S3F,sBA1+S2FA,MA2/S1F,GA3/S0FA,MA2/S1F,gBA3/S0FA,MAugT1F,GAvgT0FA,MAugT1F,gBA/Bb,gBA8C4C0ja,GAAsS7K,MAA2gBvuY,MAAiFi4Y,IA9C96B9sZ,kBAqHA,MAAMmuZ,GAAgBnE,GAAkB,CACpC9B,iBAAoB,KACpBC,oBAAuB,MACvBa,2BAA8B,MAC9BC,oBAAuB,KACvBC,4BAA+B,MAC/BC,qBAAwB,KACxBX,qBAAwB,SACxBC,wBAA2B,cAK/B,MAAM2F,WAA4BnE,GAC9B5ia,YAAY6ia,EAAe93Z,GACvBoT,MAAM0kZ,GACN3ia,KAAK6K,aAAeA,EAKpB7K,KAAKg4N,SAAW,MAOhBh4N,KAAKmmL,WAAa,QAIlBnmL,KAAK4wL,WAAa,QAIlB5wL,KAAK6wL,QAAU,UAIf7wL,KAAKq6K,YAAa,EAClBr6K,KAAK8ia,iBAAmB8D,GAAc5ma,KAAK6K,aAC9C,CAMGo4Z,oBACA,OAAOjja,KAAKgja,cAAchja,KAAKs8G,OAAO9qF,MACzC,CAKG2d,WAAOjnC,GACPlI,KAAKk8M,QAAUh0M,CAClB,CAQGinC,aACA,OAAQ4nM,GAAoB/2O,KAAKk8M,SAA0Bl8M,KAAKyma,aAApBzma,KAAKk8M,OACpD,CACGuqN,mBACA,OAAOzma,KAAKs8G,SAAWy6H,GAAoB/2O,KAAKs8G,OAAOntE,QACnD8mW,GAAcj2Y,KAAKs8G,OAAOntE,QAAU,GAC3C,CAMG20X,sBACA,OAAO9ja,KAAKija,cAAgBjja,KAAKija,cAAcjrM,SAAWh4N,KAAKg4N,QAClE,CACD1oN,WACItP,KAAK+5J,aAAe/5J,KAAK6K,aAAaoB,QAAQC,UAAUlM,KAAK+ja,mBAAmB72Z,KAAKlN,MACxF,CACD6Q,cACQ7Q,KAAK+5J,cACL/5J,KAAK+5J,aAAa9oJ,cAEtBgN,MAAMpN,aACT,CACDkzZ,qBACI/ja,KAAK8ia,iBAAmB8D,GAAc5ma,KAAK6K,cACvC7K,KAAK4ia,aAAatia,SAClBN,KAAKu4N,UAAYolC,GAAO39P,KAAK4ia,aAAaxtZ,WAEjD,EAELyxZ,GAAoB9ja,UAApB,0BAAiH8ja,IA7rTV7ja,MA6rT+CowZ,IA7rT/CpwZ,MA6rTyEqQ,OAAhL,EACAwzZ,GAAoBtwZ,UA9rTmFvT,MA8rTvG,MAAqG6ja,GAArGtzZ,iTA9rTuGvQ,OA8rTvGuf,0DAoCA,MAAMukZ,GACFhna,YAAYye,EAAcgF,GACtBvjB,KAAKue,aAAeA,EACpBve,KAAKujB,oBAAsBA,EAC3BvjB,KAAKu4N,UAAY,EACpB,CACD1nN,cACQ7Q,KAAK+5J,cACL/5J,KAAK+5J,aAAa9oJ,aAEzB,CACD0I,KAAK8tT,GACDznU,KAAK+5J,aAAe/5J,KAAKue,aAAaopT,QACjCliU,QAAK6P,MAAO,IAAMmyT,EAAOh/I,WACzBv8K,UAAUuY,GAAKA,EAAE5Q,iBACzB,CACDywO,WAAW1qN,GACP,OAAO55B,KAAKujB,oBAAoBxD,IAAI6Z,EACvC,CACG+qY,kBACA,MAAMhI,EAAkB38Z,KAAKujB,oBAAoBxD,IAAI,qBAAuB,GACtEimZ,EAAahma,KAAKs8G,OAASt8G,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MAAQ,GAC1E,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,EAELc,GAA6B/ja,UAA7B,0BAA0H+ja,IA3vTnB9ja,MA2vTiEszZ,IA3vTjEtzZ,MA2vTgGqQ,OAAvM,EACAyzZ,GAA6BvwZ,UA5vT0EvT,MA4vTvG,MAA8G8ja,GAA9GvzZ,o1BA5vTuGvQ,cA6vT/F,2CA7vT+FA,CA6vT/F,0BA7vT+FA,MA4wTvF,kBA5wTuFA,MA4wTvFy2T,WA5wTuFz2T,MA4wTvF,UA5wTuFA,MA4wT/EwQ,UAAR,GA5wTuFxQ,MAwxTvF,iCAxxTuFA,SA4vTvG,OA5vTuGA,MA8vT3F,kBA9vT2FA,CA8vT3F,kBA9vT2FA,CA8vT3F,wBA9vT2FA,CA8vT3F,6BA9vT2FA,CA8vT3F,gCA9vT2FA,CA8vT3F,gCA9vT2FA,CA8vT3F,oCA9vT2FA,CA8vT3F,2CA9vT2FA,MA0wTvF,GA1wTuFA,MA0wTvF,4BA1wTuFA,CA0wTvF,gBA1wTuFA,CA0wTvF,yDA1wTuFA,CA0wTvF,4BA1wTuFA,CA0wTvF,wCA1wTuFA,CA0wTvF,kBA1wTuFA,CA0wTvF,YA1wTuFA,CA0wTvF,YA1wTuFA,CA0wTvF,0BA1wTuFA,CA0wTvF,0BA1wTuFA,CA0wTvF,oBA1wTuFA,CA0wTvF,2BA1wTuFA,MAyxTnF,GAzxTmFA,MAyxTnF,0CAzxTmFA,CAyxTnF,yCA7BpB,gBAmC4C0ia,GAAkLqB,MAAgxBA,MAAuG/7K,IAnCrlCvyO,kBAkIA,MAAMuuZ,WAAgCH,GAClC/ma,YAAY+K,GACRoT,MAAM,KAAMpT,GACZ7K,KAAKoia,eAAiBA,GAAepia,KAAK6K,cAK1C7K,KAAKsV,OAAS,CAAE2sZ,QAAS,GAAIjjC,MAAO,OAIpCh/X,KAAK8/P,OAAQ,CAChB,CAIG/7F,kBACA,OAAO,CACV,CACGqiQ,kBACA,OAAOrE,GAAU,EAAG/ha,KAAKsV,QAAStV,KAAKs8G,QAAU,IAAI9qF,MAAOxxB,KAAKg4N,SACpE,CACGquM,mBACA,OAAOtE,GAAU,EAAG/ha,KAAKsV,QAAStV,KAAKs8G,QAAU,IAAI9qF,MAAOxxB,KAAKg4N,SACpE,CACDsuM,YAAYp+Z,GACRlI,KAAKsV,OAAO0pX,MAAQ92X,CACvB,CACGu9Z,8BACA,MAAM9I,EAAkB38Z,KAAK6K,aAAakV,IAAI,iCAAmC,GAC3EimZ,EAAahma,KAAKs8G,OAASt8G,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MAAQ,GAC1E,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,CACDjC,qBACI/ja,KAAKoia,eAAiBA,GAAepia,KAAK6K,cAC1CoT,MAAM8lZ,oBACT,EAELiD,GAAwBjka,UAAxB,0BAAqHika,IAr6Tdhka,MAq6TuDqQ,OAA9J,EACA2zZ,GAAwBzwZ,UAt6T+EvT,MAs6TvG,MAAyGgka,GAAzGzzZ,uFAt6TuGvQ,MAs6TvG,sKAt6TuGA,OAs6TvGuf,i+BAt6TuGvf,MAu6T/F,yCAv6T+FA,MA07T/F,iCA17T+FA,MAs8T/F,kDAhCR,MAt6TuGA,MAw6T3F,8BAx6T2FA,CAw6T3F,wBAx6T2FA,CAw6T3F,gCAx6T2FA,CAw6T3F,kBAx6T2FA,CAw6T3F,kBAx6T2FA,CAw6T3F,0BAx6T2FA,CAw6T3F,0BAx6T2FA,CAw6T3F,oBAx6T2FA,CAw6T3F,kBAx6T2FA,CAw6T3F,wCAx6T2FA,CAw6T3F,4BAx6T2FA,CAw6T3F,YAx6T2FA,CAw6T3F,YAx6T2FA,CAw6T3F,0BAx6T2FA,CAw6T3F,qBAx6T2FA,CAw6T3F,2CAx6T2FA,MA27T1F,GA37T0FA,MA27T1F,gBA37T0FA,MAu8T1F,GAv8T0FA,MAu8T1F,gBAjCb,gBAmD4C8ja,GAA0UjL,MAA2gBvuY,MAAiFi4Y,IAnDl9B9sZ,kBAgIA,MAAMwuZ,WAA+BvE,GACjC5ia,YAAY6ia,EAAe93Z,GACvBoT,MAAM0kZ,GACN3ia,KAAK6K,aAAeA,EAIpB7K,KAAKg4N,SAAW,KAIhBh4N,KAAK6jC,MAAQ,CACT,CAAExrB,KAAMrY,KAAK6K,aAAakV,IAAI,gBAAiB7X,OAAO,GACtD,CAAEmQ,KAAMrY,KAAK6K,aAAakV,IAAI,iBAAkB7X,OAAO,IAK3DlI,KAAK8+O,YAAc,CAAEzmO,KAAMrY,KAAK6K,aAAakV,IAAI,oBAAqB7X,MAAO,KAChF,CAIG67J,kBACA,OAAO,CACV,CAMGk/P,oBACA,OAAOjja,KAAKgja,cAAchja,KAAKs8G,OAAO9qF,MACzC,CAMGsyY,sBACA,OAAO9ja,KAAKija,cAAgBjja,KAAKija,cAAcjrM,SAAWh4N,KAAKg4N,QAClE,CACD1oN,WACItP,KAAK+5J,aAAe/5J,KAAK6K,aAAaoB,QAAQC,UAAUlM,KAAK+ja,mBAAmB72Z,KAAKlN,MACxF,CACD6Q,cACQ7Q,KAAK+5J,cACL/5J,KAAK+5J,aAAa9oJ,cAEtBgN,MAAMpN,aACT,CACDkzZ,qBACI/ja,KAAK6jC,MAAQ,CACT,CAAExrB,KAAMrY,KAAK6K,aAAakV,IAAI,gBAAiB7X,OAAO,GACtD,CAAEmQ,KAAMrY,KAAK6K,aAAakV,IAAI,iBAAkB7X,OAAO,IAE3DlI,KAAK8+O,YAAc,CAAEzmO,KAAMrY,KAAK6K,aAAakV,IAAI,oBAAqB7X,MAAO,KAChF,EAEL++Z,GAAuBlka,UAAvB,0BAAoHkka,IAjmUbjka,MAimUqDowZ,IAjmUrDpwZ,MAimU+EqQ,OAAtL,EACA4zZ,GAAuB1wZ,UAlmUgFvT,MAkmUvG,MAAwGika,GAAxG1zZ,0FAlmUuGvQ,MAkmUvG,0FAlmUuGA,OAkmUvGuf,0DAmBA,MAAM2kZ,GACFpna,YAAY0rB,EAAa7gB,GACrB3K,KAAKwrB,YAAcA,EACnBxrB,KAAK2K,SAAWA,CACnB,CACD6F,kBACIxQ,KAAKmna,cAAgBnna,KAAKwrB,YAAYrf,cACtCnM,KAAK2K,SAASiF,aAAa5P,KAAKwrB,YAAYrf,cAAe,aAAcnM,KAAK2ka,YACjF,EAELuC,GAAkCnka,UAAlC,0BAA+Hmka,IA/nUxBlka,MA+nU2EA,OA/nU3EA,MA+nUqGA,OAA5M,EACAkka,GAAkC5zZ,UAhoUqEtQ,MAgoUvG,MAAmHkka,GAAnH3zZ,sFAyBA,MAAM6zZ,WAAmCH,GACrCnna,YAAY+K,GACRoT,MAAM,KAAMpT,GAKZ7K,KAAKsV,OAAS,CAAE2sZ,QAAS,GAAIjjC,MAAO,OACpCh/X,KAAKqna,YAAWzrZ,OACnB,CAIGmoJ,kBACA,OAAO,CACV,CACDvzJ,kBACIxQ,KAAK2ia,cAActP,mBAAmBvoM,eAAiB9qN,KAAKsna,aAAavxZ,MAAMoxZ,cAC/Enna,KAAKsna,aAAavxZ,MAAMoxZ,cAAc/1Z,OACzC,CAIDm2Z,QAAQr/Z,GACJ,MAAQ,GAAElI,KAAKqna,YAAYn/Z,GAC9B,CAIDg1O,SAASh1O,EAAOwI,GACZ1Q,KAAKmja,YAAYnja,KAAKkja,aAAa,CAC/B1xY,MAAOxxB,KAAKs8G,OAAO9qF,MACnBwmM,SAAU,KACV9vN,MAAOA,KAEXlI,KAAK2ia,cAActP,mBAAmBvoM,eAAiBp6M,CAC1D,CAIDiyK,WAAW6kP,GACP,OAAOxna,KAAKuia,eAAevia,KAAKs8G,OAAO9qF,OAAOgqD,KAAK,EAAGtzE,WAAYA,IAAUs/Z,EAC/E,CAIDzB,WAAWthZ,KACDzkB,KAAKqzZ,qBAAuBrzZ,KAAKqzZ,mBAAmBF,eAAiBnzZ,KAAK2ia,cAActP,mBAAmBtoM,gBAC7GtmM,EAAE5Q,iBACF7T,KAAK2ia,cAActP,mBAAmBtoM,cAAc35M,QAE3D,CAIGuzZ,kBACA,MAAMhI,EAAkB38Z,KAAK6K,aAAakV,IAAI,qBAAuB,GAC/DimZ,EAAahma,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MACpD,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,EAELoB,GAA2Brka,UAA3B,0BAAwHqka,IAttUjBpka,MAstU6DqQ,OAApK,EACA+zZ,GAA2B7wZ,UAvtU4EvT,MAutUvG,MAA4Goka,GAA5G7zZ,+EAvtUuGvQ,KAutUkTkka,GAAzZ,cAvtUuGlka,MAutUvGyT,EAvtUuGzT,WAutUvGwQ,+DAvtUuGxQ,MAutUvG,wIAvtUuGA,OAutUvGuf,8QAvtUuGvf,MAwtU/F,UAxtU+FA,MAytU3F,iBAztU2FA,SAutUvG,MAvtUuGA,MAytUtE,GAztUsEA,MAytUtE,mBAFjC,gBAiB4CsqB,MAA0GkuI,MAA4F0rQ,IAjBlPzuZ,kBAsEA,MAAMgvZ,WAAgC/D,GAClC5ja,YAAYoE,EAAM4nN,GACd7tM,MAAM/Z,EAAM4nN,EACf,CACDpiN,gBACI,OAAIzB,GAAUjI,KAAKs8G,UAAYy6H,GAAoB/2O,KAAKs8G,OAAOhnG,QAfnCmJ,MAChCipZ,QAAWN,GACX/ka,KAAQ2ka,GACR3kS,QAAWskS,GACXtuZ,KAAQ8tZ,IACV1nZ,IAWiBkpZ,CAA2B3na,KAAKs8G,OAAOhnG,QAE3C6wZ,EACV,CACDxC,cAAcnwZ,GACVyK,MAAM0lZ,cAAcnwZ,GACpBxT,KAAK6gL,UAAUngK,SAASiiZ,cAAgB3ia,KAAK2ia,cAC7C3ia,KAAK6gL,UAAUngK,SAAS2yY,mBAAqBrzZ,KAAKqzZ,kBACrD,EAELoU,GAAwB1ka,UAAxB,0BAAqH0ka,IA7yUdzka,MA6yUuDA,OA7yUvDA,MA6yUuFA,OAA9L,EACAyka,GAAwBn0Z,UA9yU+EtQ,MA8yUvG,MAAyGyka,GAAzGl0Z,mIA9yUuGvQ,SA0zUvG,MAIM4ka,GAAe,EAAG1/Z,QAAO8vN,eAAgB+e,GAAoB7uO,IAJzC8vN,IAA0B,WAAbA,GACnB,cAAbA,GACa,YAAbA,GACa,eAAbA,EACsE6vM,CAAkB7vM,GAKzF+B,GAAa,CAACkoM,EAASzwY,EAAOmG,IACzBsqY,EAAQt8Y,OAAO,CAACC,EAAKtQ,IACpBsQ,IAGAtQ,EAAO2sZ,QACAloM,GAAWzkN,EAAO2sZ,QAASzwY,EAAOlc,GAEpCA,EAAOkc,QAAUA,EACfmG,EAEJ/R,QACR7Q,GAED+yZ,GAAuB,CAACxyZ,EAAQkc,EAAOgnP,EAAM,SAC/C,MAAM7gP,EAASoiM,IAAazkN,GAAU,IAAI2sZ,SAAW,GAAKzwY,GAC1D,OAAOvpB,GAAU0vB,GAAUA,EAAOqnW,MAAQxmH,GAK9C,MAAMuvJ,GACFjoa,YAAYkoa,EAAeC,EAAcp9Z,EAAcu1N,EAAIizL,GACvDrzZ,KAAKgoa,cAAgBA,EACrBhoa,KAAKioa,aAAeA,EACpBjoa,KAAK6K,aAAeA,EACpB7K,KAAKogO,GAAKA,EACVpgO,KAAK4Z,MAAQ,IAAI1O,MAIjBlL,KAAKkoa,aAAe,kCACpBloa,KAAKs8Z,iBAAmB,GACxBt8Z,KAAKqzZ,mBAAqBA,CAC7B,CACG/9Y,aACA,OAAOtV,KAAKw9W,OACf,CAKGloW,WAAOpN,GACPlI,KAAKw9W,QAAUgmD,GAAat7Z,EAC/B,CACGiga,kBACA,OAAKlga,GAAUjI,KAAKooa,gBAChBpoa,KAAKooa,aAAe,CAChBnG,QAASM,GAAevia,KAAKsV,QAAStV,KAAKs8G,QAAU,IAAI9qF,OACzDwtW,MAAO8oC,GAAqB9na,KAAKsV,QAAStV,KAAKs8G,QAAU,IAAI9qF,SAG9DxxB,KAAKooa,YACf,CACD94Z,WACItP,KAAK+5J,aAAe/5J,KAAKioa,aAAah8Z,QAAQC,UAAUoJ,GAAUtV,KAAKooa,aAAe9yZ,GACtFtV,KAAK+5J,aAAa/tJ,IAAIhM,KAAK6K,aAAaoB,QAAQC,UAAU,IAAMlM,KAAKogO,GAAGxiN,gBAC3E,CACDjN,uBACS3Q,KAAKqzZ,mBAAmBF,cAAiBnzZ,KAAKo0W,QAAUp0W,KAAKi2N,cAC9Dj2N,KAAKqzZ,mBAAmBtoM,cAAgB/qN,KAAKoN,SACzCpN,KAAKqoa,YAAYl8Z,cAAgBnM,KAAKsoa,aAAan8Z,cAE9D,CACD0E,cACQ7Q,KAAK+5J,cACL/5J,KAAK+5J,aAAa9oJ,cAEtBjR,KAAKqzZ,mBAAmBtoM,mBAAgBh2M,CAC3C,CACG3H,eACA,OAAQpN,KAAKmoa,YAAYlG,QAAQzmV,KAAKosV,GACzC,CACGpwZ,sBACA,YAAK8kZ,iBAAiBhgT,OAASt8G,KAAKs8G,OACpCt8G,KAAKs8Z,iBAAiBhnZ,OAAStV,KAAKmoa,YACpCnoa,KAAKs8Z,iBAAiBqG,cAAgB3ia,KAAKioa,aAC3Cjoa,KAAKs8Z,iBAAiB/0O,UAAevnL,KAAKmoa,YACnCnoa,KAAKs8Z,gBACf,CACGl6L,kBACA,OAAOn6N,GAAUjI,KAAKs8G,SAAWr0G,GAAUjI,KAAKs8G,OAAOyvS,sBAC1D,CACDwc,SACI,MAAMjzZ,EAxFMA,KAChBA,EAAO2sZ,QAAU3sZ,EAAO2sZ,QAAQ3sZ,OAAOsyZ,IAChCtyZ,GAsFYkzZ,CAAYxoa,KAAKmoa,aAChC,GAAI7yZ,EAAO2sZ,QAAQ3ha,OAAQ,CACvB,MAAMqkE,EAAO3kE,KAAKsV,QAAU,CACxB2sZ,QAAS,GACTjjC,MAAO,OAEXwjC,GAAa79V,EAAM3kE,KAAKs8G,OAAO9qF,OAC/BmzC,EAAKs9V,QAAQjmZ,KAAK1G,GAClBtV,KAAKgoa,cAAc1yZ,OAAOqvD,EAC7B,CACD,YAAK/qD,MAAMxJ,QACJ,CACV,CACD23D,QACI,MAAMpD,EAAO3kE,KAAKsV,QAAU,CACxB2sZ,QAAS,GACTjjC,MAAO,OAEXwjC,GAAa79V,EAAM3kE,KAAKs8G,OAAO9qF,OAC/BxxB,KAAKgoa,cAAc1yZ,OAAOqvD,GAC1B3kE,KAAK4Z,MAAMxJ,MACd,CACDq4Z,MAAMhkZ,EAAGs5L,GACD/9M,KAAKqzZ,mBAAmBvoM,kBAAoB9qN,KAAKqzZ,mBAAmBF,cAAgBnzZ,KAAKo0W,UACzF3vV,EAAE5Q,iBACiB,UAAfkqM,EAEA/9M,KAAKoN,SAAWpN,KAAKqzZ,mBAAmBvoM,eAAe15M,QAAUpR,KAAKsoa,aAAan8Z,cAAciF,QAGjGpR,KAAKqzZ,mBAAmBvoM,eAAe15M,QAGlD,CACGs3Z,gBACA,OAAO1oa,KAAK6K,aAAakV,IAAI,oBAChC,CACGynO,iBACA,OAAOxnP,KAAK6K,aAAakV,IAAI,qBAChC,EAELgoZ,GAA6Bhla,UAA7B,0BAA0Hgla,IAh8UnB/ka,MAg8UiEowZ,GAAxK,GAh8UuGpwZ,MAg8U2GowZ,IAh8U3GpwZ,MAg8UqIqQ,OAh8UrIrQ,MAg8UwKA,OAh8UxKA,MAg8UyMkwZ,IAAhT,EACA6U,GAA6BxxZ,UAj8U0EvT,MAi8UvG,MAA8G+ka,GAA9Gx0Z,kFAj8UuGvQ,KAi8UvG2la,MAj8UuG3la,KAi8UvG4la,kBAj8UuG5la,MAi8UvGyT,EAj8UuGzT,WAi8UvGwQ,uBAj8UuGxQ,MAi8UvGyT,EAj8UuGzT,WAi8UvGwQ,iNAj8UuGxQ,MAi8U+R,CAC9XowZ,GACAF,MAFR3wY,uqBAj8UuGvf,MAq8U/F,YAr8U+FA,MAq8UzF,2BAAUwQ,UAAV,EAr8UyFxQ,CAq8UzF,0BAA6BwQ,SAA7B,GAr8UyFxQ,MAu8U3F,WAv8U2FA,MAw8UvF,KAx8UuFA,MAy8UnF,2BAz8UmFA,MAk9UnF,2BAl9UmFA,cA29UvF,UA39UuFA,CA29UvF,gBA39UuFA,MAg+U/E,iCAAewQ,UAAc,QAA7B,GAh+U+ExQ,MAg+UxC,GAh+UwCA,cAi+UnF,gBAj+UmFA,MAq+U/E,iCAAewQ,UAAc,SAA7B,GAr+U+ExQ,MAq+UvC,IAr+UuCA,eAi8UvG,MAj8UuGA,MAw8UzE,GAx8UyEA,MAw8UzE,0BAx8UyEA,MAy8UpE,GAz8UoEA,MAy8UpE,mBAz8UoEA,MAk9UpE,GAl9UoEA,MAk9UpE,mBAl9UoEA,MA29UlF,GA39UkFA,MA29UlF,0BA39UkFA,MAg+UxC,GAh+UwCA,MAg+UxCwQ,aAh+UwCxQ,MAo+U/E,GAp+U+EA,MAo+U/E,uBAp+U+EA,MAq+UvC,GAr+UuCA,MAq+UvCwQ,cApChE,gBAwC4C0yZ,MAAwFA,MAA2IA,KAAmK54Y,MAAqEA,MAAiFm6Y,GAAuHn6Y,MAAiFA,MAAwHA,OAxCx4B7U,kBAmHA,MAAMowZ,GACF/oa,YAAY6ia,EAAepkZ,EAAc1T,EAAcoQ,GACnDjb,KAAK2ia,cAAgBA,EACrB3ia,KAAKue,aAAeA,EACpBve,KAAK6K,aAAeA,EACpB7K,KAAKib,kBAAoBA,EACzBjb,KAAKuM,SAAW,IACnB,CACGu8Z,iBACA,OAAOvG,GAAevia,KAAKsV,QAAStV,KAAKs8G,QAAU,IAAI9qF,OAAOlxB,OAAS,CAC1E,CAIGyoa,kBACA,MAAMpM,EAAkB38Z,KAAK6K,aAAakV,IAAI,oBAAsB,GAC9DimZ,EAAahma,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MACpD,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,CACD9mZ,OAAOsC,EAAQ6Q,GACX,YAAK7R,SAAWxgB,KAAKue,aAAa5E,KAAK6H,EAAQ6Q,EAAUryB,KAAKwgB,UACzDxgB,KAAKwgB,WACFxgB,KAAKib,kBAAkB8lY,aACvB/gZ,KAAKib,kBAAkBo8X,UAAU,EAAGr3Y,KAAKs8G,OAAOoqS,WAGhD1mZ,KAAKwhB,OAAOrV,cAAciF,UAG3B,CACV,CACDwI,QACI5Z,KAAKue,aAAa4O,UACdntB,KAAKib,kBAAkB8lY,aACvB/gZ,KAAKib,kBAAkBo8X,UAAU,EAAGr3Y,KAAKs8G,OAAOoqS,WAGhD1mZ,KAAKwhB,OAAOrV,cAAciF,OAEjC,EAELy3Z,GAAoB9la,UAApB,0BAAiH8la,IA7lVV7la,MA6lV+CowZ,IA7lV/CpwZ,MA6lVyEszZ,IA7lVzEtzZ,MA6lVwGqQ,OA7lVxGrQ,MA6lV2I0W,IAAlP,EACAmvZ,GAAoBtyZ,UA9lVmFvT,MA8lVvG,MAAqG6la,GAArGt1Z,wEA9lVuGvQ,KA8lVvGgma,MA9lVuGhma,KA8lVvGkrM,KAA8a3zC,QAA9a,WA9lVuGv3J,MA8lVvGyT,EA9lVuGzT,WA8lVvGwQ,kBA9lVuGxQ,MA8lVvGyT,EA9lVuGzT,WA8lVvGwQ,qUA9lVuGxQ,cA+lV/F,WA/lV+FA,MAkmV3F,mBAlmV2FA,MAkmV3F8D,WAlmV2F9D,MAkmV3F,KAlmV2FA,MAkmV3F,UAlmV2FA,MAkmVlFwQ,cAAT,EAlmV2FxQ,CAkmV3F,mCACiBiiB,4BADjB,GAlmV2FjiB,MAsmV3F,YAtmV2FA,cAwmV/F,8BAxmV+FA,MA8lVvG,OA9lVuGA,MAgmV3F,UAhmV2FA,MAgmV3F,mBAhmV2FA,CAgmV3F,uBAhmV2FA,MAqmV3F,uBAPZ,gBAoB4C+ka,GAAoNz6Y,OApBhQ7U,kBA0FA,MAAMwwZ,GAIFnpa,YAAYuzZ,GAIRrzZ,KAAKkpa,UAAY,IAAIh+Z,MACrBlL,KAAKqzZ,mBAAqBA,CAC7B,CAIDz5Y,QACI5Z,KAAKkpa,UAAU94Z,MAClB,EAEL64Z,GAAkBlma,UAAlB,0BAA+Gkma,IA1sVRjma,MA0sV2CkwZ,IAAlJ,EACA+V,GAAkBhma,WA3sVqFD,MA2sVvG,OAAmHima,GAAnH/la,QAAmH+la,GAAnH,YAQA,MAAME,GACFrpa,cACIE,KAAK0jB,WAAY,CACpB,CACDpU,WACI,MAAIgH,WAAgBtW,KAAK4K,QACrB,MAAM,IAAIrK,MAAM,2EAEvB,CAIDqZ,QACI5Z,KAAK4K,QAAQgP,OAChB,EAELuvZ,GAAmBpma,UAAnB,0BAAgHoma,GAAhH,EACAA,GAAmB5yZ,UApuVoFvT,MAouVvG,MAAoGmma,GAApG51Z,4FApuVuGvQ,MAouVvG,+HA+CA,MAAMoma,GACFtpa,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAELwxZ,GAAuCrma,UAAvC,0BAAoIqma,IAxxV7Bpma,MAwxVqFA,MAA5L,KACAoma,GAAuC91Z,UAzxVgEtQ,MAyxVvG,MAAwHoma,GAAxH71Z,+DAsCA,MAAM81Z,GACFvpa,cAIIE,KAAK4e,UAAY,IAAI1T,MAIrBlL,KAAK4+B,OAAS,IAAI1zB,MAIlBlL,KAAKo2N,SAAW,IAAIlrN,MACpBlL,KAAKspa,aAAe,WACvB,CACGx8Z,gBACA,MAAQ,OAAM9M,KAAKyM,MACtB,CACD4D,YAAYpE,GACJA,EAAQ6vY,UACR97Y,KAAKupa,oBAEZ,CAIDhxZ,QAAQkM,GACJzkB,KAAK4e,UAAUxO,KAAKqU,GAChBzkB,KAAK4iN,kBACL5iN,KAAK87Y,UAAY97Y,KAAK87Y,SACtB97Y,KAAKupa,qBACDvpa,KAAK87Y,SACL97Y,KAAK4+B,OAAOxuB,OAGZpQ,KAAKo2N,SAAShmN,OAGzB,CACDm5Z,qBACIvpa,KAAKspa,aAAetpa,KAAK87Y,SAAW,WAAa,WACpD,EAELutB,GAAwBtma,UAAxB,0BAAqHsma,GAArH,EACAA,GAAwB9yZ,UA52V+EvT,MA42VvG,MAAyGqma,GAAzG91Z,kFA52VuGvQ,MA42VvGwT,EAAsa4yZ,GAAta,cA52VuGpma,MA42VvGyT,EA52VuGzT,WA42VvGwQ,wMA52VuGxQ,OA42VvGuf,+UA52VuGvf,MA62V/F,WA72V+FA,MA+2V3F,2BAASwQ,YAAT,EA/2V2FxQ,CA+2V3F,mCACiBwQ,YADjB,GA/2V2FxQ,MAq3V5F,mBAr3V4FA,MAu3V5F,GAv3V4FA,cAy3V/F,mBAbR,MA52VuGA,MAi3V3F,8BAj3V2FA,CAi3V3F,+BAj3V2FA,MAo3V3F,4BAp3V2FA,MAq3VrF,GAr3VqFA,MAq3VrF,eAr3VqFA,MAu3V5F,GAv3V4FA,MAu3V5F,gBAv3V4FA,MAy3VzF,GAz3VyFA,MAy3VzF,0BAbd,gBAiB4CsqB,MAAiFA,MAA2EA,OAjBxM7U,gCAiBqU,IAC7Tub,OAAQ,QAAS,IACbwF,OAAM,eAAajO,OAAM,CAAEuyF,QAAS,WAA/B,EACLtkF,OAAM,cAAYjO,OAAM,CAAEuyF,QAAS,YAA9B,EACL2uC,OAAW,wBAAyB,IAChClhI,OAAM,CACFsL,OAAQ,MACRinF,QAAS,WAFR,EAILriG,OAAQ,mBAAiB8P,OAAM,CAC3BsL,OAAQ,UANN,EASV41H,OAAW,wBAAyB,IAChClhI,OAAM,CACFsL,OAAQ,OADP,EAGLpb,OAAQ,mBAAiB8P,OAAM,CAC3BsL,OAAQ,iBAuG5B,MAAM2yY,WAAgCL,GAClCrpa,YAAY+K,EAAc4+Z,EAAmB7lQ,GACzC3lJ,QACAje,KAAK6K,aAAeA,EACpB7K,KAAKypa,kBAAoBA,EACzBzpa,KAAK4jK,eAAiBA,CACzB,CACGvrJ,WACA,OAAOrY,KAAK6K,aAAakV,IAAI/f,KAAKsgX,OAAS,SAAW,OACzD,CACG7zW,WACA,OAAOzM,KAAKsgX,OAAS,SAAW,MACnC,CACGlzW,eACA,OAAQpN,KAAKsgX,QAAUtgX,KAAKypa,kBAAkB1Q,kBAAoB,CACrE,CAID2Q,eACI1pa,KAAK2pa,iBAAiB3pa,KAAKsgX,QAC3BtgX,KAAK4Z,QACL5Z,KAAK4jK,eAAehmJ,cACvB,CACD+rZ,gBAAgBrpD,GACZ,IAAI37S,EAAO3kE,KAAK4K,QAAQ0xG,OACxB,KAAO33C,EAAKhtC,QACRgtC,EAAOA,EAAKhtC,OAEhB,MAAMi8N,EAAU,CAACjvL,GACXilW,EAAa,GACnB,KAAOh2K,EAAQtzP,QAAQ,CACnB,MAAMg8G,EAASs3I,EAAQhuM,QACvB02D,EAAOgkQ,OAASA,EAChBspD,EAAW5tZ,KAAKsgG,GACZA,EAAOy5G,aACP69B,EAAQ53O,QAAQsgG,EAAO+vS,cAE9B,CACDrsZ,KAAKypa,kBAAkBtQ,aAAayQ,EACvC,CACGtpD,aACA,OAAOtgX,KAAK4K,QAAQ0xG,OAAOgkQ,MAC9B,EAELkpD,GAAwBzma,UAAxB,0BAAqHyma,IAniWdxma,MAmiWuDqQ,OAniWvDrQ,MAmiW0Fu1Z,IAniW1Fv1Z,MAmiWwHA,OAA/N,EACAwma,GAAwBjzZ,UApiW+EvT,MAoiWvG,MAAyGwma,GAAzGj2Z,qDApiWuGvQ,OAoiWvGuf,8FApiWuGvf,MAqiWhG,kCAriWgGA,MAwiW3F,8BAAawQ,gBAAb,GAxiW2FxQ,SAoiWvG,KApiWuGA,MAsiW3F,cAtiW2FA,CAsiW3F,cAtiW2FA,CAsiW3F,sBAFZ,gBAO4Cqma,IAP5C5wZ,kBAsDA,MAAMoxZ,WAAiCV,GACnCrpa,YAAY+K,EAAc4+Z,EAAmB7lQ,GACzC3lJ,QACAje,KAAK6K,aAAeA,EACpB7K,KAAKypa,kBAAoBA,EACzBzpa,KAAK4jK,eAAiBA,CACzB,CACGvrJ,WACA,OAAOrY,KAAK6K,aAAakV,IAAI/f,KAAKsqZ,OAAS,UAAY,QAC1D,CACG79Y,WACA,OAAOzM,KAAKsqZ,OAAS,UAAY,OACpC,CACGl9Y,eACA,OAAQpN,KAAKsqZ,QAAUtqZ,KAAKypa,kBAAkB1Q,kBAAoB,CACrE,CAID2Q,eACI1pa,KAAK2pa,iBAAiB3pa,KAAKsqZ,QAC3BtqZ,KAAK4Z,QACL5Z,KAAK4jK,eAAehmJ,cACvB,CACD+rZ,gBAAgBrf,GACZ,IAAI3lV,EAAO3kE,KAAK4K,QAAQ0xG,OACxB,KAAO33C,EAAKhtC,QACRgtC,EAAOA,EAAKhtC,OAEhB,MAAMi8N,EAAU,CAACjvL,GACXilW,EAAa,GACnB,KAAOh2K,EAAQtzP,QAAQ,CACnB,MAAMg8G,EAASs3I,EAAQhuM,QACvB02D,EAAOguS,OAASA,EAChBsf,EAAW5tZ,KAAKsgG,GACZA,EAAOy5G,aACP69B,EAAQ53O,QAAQsgG,EAAO+vS,cAE9B,CACDrsZ,KAAKypa,kBAAkBrQ,YAAYwQ,EACtC,CACGtf,aACA,OAAOtqZ,KAAK4K,QAAQ0xG,OAAOguS,MAC9B,EAELuf,GAAyB9ma,UAAzB,0BAAsH8ma,IAvoWf7ma,MAuoWyDqQ,OAvoWzDrQ,MAuoW4Fu1Z,IAvoW5Fv1Z,MAuoW0HA,OAAjO,EACA6ma,GAAyBtzZ,UAxoW8EvT,MAwoWvG,MAA0G6ma,GAA1Gt2Z,sDAxoWuGvQ,OAwoWvGuf,8FAxoWuGvf,MAyoWhG,kCAzoWgGA,MAyoWxC,8BAAawQ,gBAAb,GAzoWwCxQ,SAwoWvG,KAxoWuGA,MAyoWpE,cAzoWoEA,CAyoWpE,cAzoWoEA,CAyoWpE,sBADnC,gBAG4Cqma,IAH5C5wZ,kBA6CA,MAAMqxZ,WAAoCX,GACtCrpa,YAAY+K,EAAc2gB,GACtBvN,QACAje,KAAK6K,aAAeA,EACpB7K,KAAKwrB,YAAcA,EAInBxrB,KAAK4+B,OAAS,IAAI1zB,MAIlBlL,KAAKo2N,SAAW,IAAIlrN,MAIpBlL,KAAK87Y,UAAW,EAIhB97Y,KAAKkoa,aAAe,uBACpBloa,KAAK+pa,SAAU,CAClB,CAIG31D,WAAOlsW,GACPlI,KAAK4K,QAAQyoZ,mBAAmBtoM,cAAgB/qN,KAAKgqa,uBACrDhqa,KAAK+pa,QAAU7ha,CAClB,CAIGksW,aACA,OAAOp0W,KAAK+pa,OACf,CAIDtB,MAAMhkZ,EAAGwlZ,GACDjqa,KAAKo0W,QAAU61D,IACfxlZ,EAAE5Q,iBACF4Q,EAAEmgO,2BACE5kP,KAAK4K,SACL5K,KAAK4K,QAAQyoZ,mBAAmBvoM,eAAe15M,QAG1D,CAID84Z,aACIlqa,KAAK87Y,UAAW,EACZ97Y,KAAKo0W,SACLp0W,KAAK4K,QAAQyoZ,mBAAmBtoM,cAAgB/qN,KAAKgqa,wBAEzDhqa,KAAKo2N,SAAShmN,MACjB,CAID+5Z,WACInqa,KAAK87Y,UAAW,EACZ97Y,KAAKo0W,SACLp0W,KAAK4K,QAAQyoZ,mBAAmBtoM,cAAgB/qN,KAAKgqa,wBAEzDhqa,KAAK4+B,OAAOxuB,MACf,CACD45Z,uBACI,MAAMI,EAAYpqa,KAAKwrB,YAAYrf,cAAc82J,iBAAiB,sBAElE,OAAOmnQ,EADoBpqa,KAAK87Y,SAAWsuB,EAAU9pa,OAAS,EAAI,EAErE,EAELwpa,GAA4B/ma,UAA5B,0BAAyH+ma,IA/vWlB9ma,MA+vW+DqQ,OA/vW/DrQ,MA+vWkGA,OAAzM,EACA8ma,GAA4BvzZ,UAhwW2EvT,MAgwWvG,MAA6G8ma,GAA7Gv2Z,8LAhwWuGvQ,OAgwWvGuf,yPAhwWuGvf,MAiwW/F,kCAjwW+FA,MAqwW3F,iCAAewQ,sBAAf,EArwW2FxQ,CAqwW3F,6BACYwQ,cADZ,EArwW2FxQ,CAqwW3F,2BAEUwQ,YAFV,GArwW2FxQ,MAwwW3F,0BAxwW2FA,SAgwWvG,KAhwWuGA,MAkwW3F,+CAlwW2FA,CAkwW3F,sBAFZ,gBAqB4Cqma,GAAuLG,GAA2EK,GAA2FT,GAAwG97Y,OArBjf7U,kBAkEA,MAAM4xZ,GACFvqa,YAAY4I,EAASoC,EAAQH,GACzB3K,KAAK0I,QAAUA,EACf1I,KAAK8K,OAASA,EACd9K,KAAK2K,SAAWA,EAChB3K,KAAK+nE,MAAQ,IAAI78D,MACjBlL,KAAKm0B,MAAQ,IAAIjpB,MACjBlL,KAAKsqa,aAAe,IAAIp/Z,MACxBlL,KAAKuqa,UAAW,EAChBvqa,KAAKwqa,cAAe,EACpBxqa,KAAKkoa,aAAe,mBACpBloa,KAAKyqa,cAAgB,CACxB,CACG13Z,gBACA,OAAO,CACV,CACG6gP,YAAQ1rP,GACRlI,KAAKm9W,SAAWj1W,EAAMoN,OAAOgnG,IAAsC,IAA5BA,EAAOouS,kBAC9C1qZ,KAAKw8W,WAAat0W,EAClBlI,KAAK0qa,mBACR,CACG92K,cACA,OAAO5zP,KAAKm9W,QACf,CACDhyW,WAAWmxG,GACP,QAASt8G,KAAKwqa,cAAgBxqa,KAAK2qa,aAAeruT,EAAOi3I,QAAUvzP,KAAK4zP,QAAQvuO,KAAKhQ,GAAWA,IAAYinG,IAAWjnG,EAAQk+O,UAC1HvzP,KAAK4qa,mBAAqB5qa,KAAK6qa,qBAA8C,IAAvB7qa,KAAKyqa,gBAAwBnuT,EAAOgkQ,SAAWhkQ,EAAOi3I,MACpH,CACDjkP,YACStP,KAAK0I,SAGV1I,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKmkK,iBAAmBnkK,KAAK2K,SAASmF,OAAO9P,KAAK0I,QAAQyD,cAAe,QAAUsY,IAC/E,GAAIyO,GAAWzO,EAAE5H,OAAQ,cACrB,GAAI7c,KAAKuqa,SAAU,CACf,MAAM/9Z,EAAQoqB,SAASnS,EAAE5H,OAAO2M,aAAa,cAAe,IACtD8yF,EAASt8G,KAAK4zP,QAAQpnP,GACtB+mP,GAAU9uO,EAAE5H,OAAOshN,QACrB9rL,QAAQiqE,EAAOi3I,UAAYA,GAC3BvzP,KAAK8K,OAAO4G,IAAI,KACZ4qG,EAAOi3I,OAASA,EAChBvzP,KAAKsqa,aAAal6Z,KAAK,CAACksG,GAAxB,EAGX,MAEGt8G,KAAK8qa,gBAAL,EAdY,EAmB/B,CACDz6Z,YAAYpE,IACHjM,KAAK4K,UAGNqB,EAAQmoW,QAAUp0W,KAAKo0W,SACvBp0W,KAAK4K,QAAQyoZ,mBAAmBtoM,cAAgB/qN,KAAK+qa,YAAY5+Z,eAEjEF,EAAQgqN,YAAcj2N,KAAKi2N,YAAcj2N,KAAKo0W,QAAUp0W,KAAK+qa,cAC7D/qa,KAAK4K,QAAQyoZ,mBAAmBtoM,cAAgB/qN,KAAK+qa,YAAY5+Z,eAExE,CACD0E,cACQ7Q,KAAKmkK,kBACLnkK,KAAKmkK,kBAEZ,CACD6mQ,gBACIhra,KAAKira,gBAAgB,CAACvia,EAAS8D,KAC3B9D,EAAQy1N,SAAWn+N,KAAK4zP,QAAQpnP,GAAO+mP,SAE3CvzP,KAAK8qa,iBACL9qa,KAAK+nE,MAAM33D,MACd,CACD86Z,eACI,MAAM15Z,EAAU,GAChBxR,KAAKira,gBAAgB,CAACvia,EAAS8D,KAC3B,MAAM8vG,EAASt8G,KAAK4zP,QAAQpnP,GACtB+mP,GAAU7qP,EAAQy1N,QACpB9rL,QAAQiqE,EAAOi3I,UAAYA,IAC3Bj3I,EAAOi3I,OAASA,EAChB/hP,EAAQwK,KAAKsgG,GAAb,GAGRt8G,KAAK8qa,iBACL9qa,KAAKm0B,MAAM/jB,KAAKoB,EACnB,CACDi3Z,MAAMhkZ,GACEzkB,KAAKo0W,SACL3vV,EAAE5Q,iBACE7T,KAAK4K,SACL5K,KAAK4K,QAAQyoZ,mBAAmBvoM,eAAe15M,QAG1D,CACD65Z,gBAAgBx4Z,GACZ,MAAMqyN,EAAa9kO,KAAK0I,QAAQyD,cAAcg/Z,uBAAuB,cAC/D7qa,EAASwkO,EAAWxkO,OAC1B,QAASQ,EAAM,EAAGA,EAAMR,EAAQQ,IAC5B2R,EAASqyN,EAAWhkO,GAAMA,EAEjC,CACDgqa,iBACI,GAAI9qa,KAAKwqa,eAAiBxqa,KAAKora,UAC3B,OAEJ,MAAMl1K,EAAe,GAOrB,GANAl2P,KAAKira,gBAAgB,CAACI,EAAU7+Z,KACxB6+Z,EAASltM,SACT+3B,EAAal6O,KAAK,CAAEqvZ,WAAU7+Z,UAElC6+Z,EAASj+Z,UAAW,IAEnBpN,KAAKwqa,cAAwC,IAAxBt0K,EAAa51P,QAAiBN,KAAK2qa,aACrB,GAE/B3qa,KAAKora,YAAcpra,KAAK6qa,oBAAqB,CAClD,MAAMj3K,EAAU5zP,KAAK4zP,QACf03K,EAAkBp1K,EAAa5gP,OAAOkR,IAASotO,EAAQptO,EAAKha,OAAO8zW,QAC1C,IAA3BgrD,EAAgBhra,SAChBgra,EAAgB,GAAGD,SAASj+Z,UAAW,EAE9C,OARG8oP,EAAa,GAAGm1K,SAASj+Z,UAAW,CAS3C,CACDs9Z,oBACI1qa,KAAKora,UAAYpra,KAAKw8W,WAAWlnW,OAAOgnG,GAAUA,EAAOgkQ,UAAYhkQ,EAAOi3I,SAAsC,IAA5Bj3I,EAAOouS,mBAA6BpqZ,OAAS,EACnIN,KAAK4qa,iBAAmB5qa,KAAKw8W,WAAWlnW,OAAOgnG,GAAUA,EAAOgkQ,SAAWhkQ,EAAOi3I,QAAQjzP,OAAS,EACnGN,KAAKyqa,cAAgBzqa,KAAK4zP,QAAQt+O,OAAOgnG,IAAWA,EAAOgkQ,SAAWhkQ,EAAOi3I,QAAQjzP,OACrF,MAAMira,EAAkBvra,KAAKw8W,WAAWlnW,OAAOgnG,IAAsC,IAA5BA,EAAOouS,mBAA+BpuS,EAAOi3I,QAClGg4K,EAAgBjra,QAChBN,KAAK2qa,YAAcY,EAAgBjra,OAAS,EAC5CN,KAAK6qa,oBAAsBU,EAAgBj2Z,OAAOgnG,IAAWA,EAAOgkQ,QAAQhgX,OAAS,IAGrFN,KAAK2qa,aAAc,EACnB3qa,KAAK6qa,qBAAsB,EAElC,EAELR,GAAoBtna,UAApB,0BAAiHsna,IA/8WVrna,MA+8W+CA,OA/8W/CA,MA+8WyEA,OA/8WzEA,MA+8W+FA,OAAtM,EACAqna,GAAoB9zZ,UAh9WmFvT,MAg9WvG,MAAqGqna,GAArG92Z,sEAh9WuGvQ,KAg9WvGorM,iBAh9WuGprM,MAg9WvGyT,EAh9WuGzT,WAg9WvGwQ,oEAh9WuGxQ,MAg9WvG,+TAh9WuGA,OAg9WvGuf,klBAh9WuGvf,MAi9W/F,WAj9W+FA,MAk9W3F,oBAl9W2FA,cAs9W/F,mBANR,MAh9WuGA,MAk9WjE,GAl9WiEA,MAk9WjE,qBAl9WiEA,MAs9WhE,GAt9WgEA,MAs9WhE,oBANvC,gBAU4CsqB,MAA0GA,MAAiFA,OAVvO7U,kBA2FA,MAAM+yZ,WAAmCrC,GACrCrpa,YAAY+K,EAAc4+Z,EAAmB7lQ,EAAgBp4I,GACzDvN,QACAje,KAAK6K,aAAeA,EACpB7K,KAAKypa,kBAAoBA,EACzBzpa,KAAK4jK,eAAiBA,EACtB5jK,KAAKwrB,YAAcA,EAInBxrB,KAAK4+B,OAAS,IAAI1zB,MAIlBlL,KAAKo2N,SAAW,IAAIlrN,MAIpBlL,KAAK87Y,UAAW,EAIhB97Y,KAAKo0W,QAAS,EAIdp0W,KAAKkoa,aAAe,sBACvB,CACGt0K,cACA,OAAO5zP,KAAKypa,kBAAkB3Q,gBACjC,CAID2S,QAAQj6Z,GACJxR,KAAK4Z,QACDpI,EAAQlR,SACRN,KAAK4jK,eAAehmJ,eACpB5d,KAAKypa,kBAAkBvQ,iBAAiB1nZ,GAE/C,CAID04Z,aACIlqa,KAAK87Y,UAAW,EACZ97Y,KAAKo0W,SACLp0W,KAAK4K,QAAQyoZ,mBAAmBtoM,cAAgB/qN,KAAKwrB,YAAYrf,cAAc8e,cAAc,uBAEjGjrB,KAAKo2N,SAAShmN,MACjB,CAID+5Z,WACInqa,KAAK87Y,UAAW,EAChB97Y,KAAK4+B,OAAOxuB,MACf,EAELo7Z,GAA2Bzoa,UAA3B,0BAAwHyoa,IAtmXjBxoa,MAsmX6DqQ,OAtmX7DrQ,MAsmXgGu1Z,IAtmXhGv1Z,MAsmX8HA,OAtmX9HA,MAsmX+JA,OAAtQ,EACAwoa,GAA2Bj1Z,UAvmX4EvT,MAumXvG,MAA4Gwoa,GAA5Gj4Z,mJAvmXuGvQ,OAumXvGuf,qRAvmXuGvf,MAwmX/F,kCAxmX+FA,MA4mX3F,6BAAYwQ,cAAZ,EA5mX2FxQ,CA4mX3F,2BACUwQ,YADV,GA5mX2FxQ,MA8mX3F,0BA9mX2FA,SAumXvG,KAvmXuGA,MAymX3F,qCAzmX2FA,CAymX3F,sBAFZ,gBAsB4Cqma,GAAuLgB,GAA2PjB,IAtB9d3wZ,kBA2FA,MAAMizZ,WAAkCvC,GACpCrpa,YAAY+K,EAAc2gB,GACtBvN,QACAje,KAAK6K,aAAeA,EACpB7K,KAAKwrB,YAAcA,EAInBxrB,KAAK4+B,OAAS,IAAI1zB,MAIlBlL,KAAKo2N,SAAW,IAAIlrN,MAIpBlL,KAAK87Y,UAAW,EAIhB97Y,KAAKo0W,QAAS,EAIdp0W,KAAKkoa,aAAe,sBACvB,CAIDgC,aACIlqa,KAAK87Y,UAAW,EACZ97Y,KAAKo0W,SACLp0W,KAAK4K,QAAQyoZ,mBAAmBtoM,cAAgB/qN,KAAKwrB,YAAYrf,cAAc8e,cAAc,uBAEjGjrB,KAAKo2N,SAAShmN,MACjB,CAID+5Z,WACInqa,KAAK87Y,UAAW,EAChB97Y,KAAK4+B,OAAOxuB,MACf,EAELs7Z,GAA0B3oa,UAA1B,0BAAuH2oa,IA9uXhB1oa,MA8uX2DqQ,OA9uX3DrQ,MA8uX8FA,OAArM,EACA0oa,GAA0Bn1Z,UA/uX6EvT,MA+uXvG,MAA2G0oa,GAA3Gn4Z,kJA/uXuGvQ,OA+uXvGuf,yQA/uXuGvf,MAgvX/F,kCAhvX+FA,MAovX3F,6BAAYwQ,cAAZ,EApvX2FxQ,CAovX3F,2BACUwQ,YADV,GApvX2FxQ,MAsvX3F,0BAtvX2FA,SA+uXvG,KA/uXuGA,MAivX3F,oCAjvX2FA,CAivX3F,sBAFZ,gBAoB4Cqma,GAAuLtB,GAAoNqB,IApBvb3wZ,kBA4DA,MAAMkzZ,GACF7ra,YAAY0rB,EAAa7gB,EAAUG,GAC/B9K,KAAKwrB,YAAcA,EACnBxrB,KAAK2K,SAAWA,EAChB3K,KAAK8K,OAASA,EACd9K,KAAK4ra,UAAW,EAChB5ra,KAAK+pa,SAAU,EACf/pa,KAAK2L,KAAO,IAAIC,MAChB5L,KAAKyoa,MAAShkZ,IACV,GAAIA,EAAEvU,UAAYC,WAGdnQ,KAAK0pW,SAAWjlV,EAAEy0E,UAAYz0E,EAAE5H,SAAW7c,KAAK6ra,gBAAgB,KAChEpnZ,EAAE5Q,iBACF7T,KAAK8ra,kBAAkBlha,QAAQyoZ,mBAAmBtoM,cAAc35M,SAEhEpR,KAAKo0W,SAAW3vV,EAAEy0E,UAAU,CAC5B,MAAM6yU,EAAqB/ra,KAAKgsa,wBAC1B/1M,EAAaj2N,KAAK8ra,kBAAkBhwB,SACtCiwB,IAAuBtnZ,EAAE5H,SAAWo5M,IACpCxxM,EAAE5Q,iBACF7T,KAAK8ra,kBAAkBlha,QAAQyoZ,mBAAmBvoM,eAAe15M,QAExE,EAER,CACGs4V,YAAQxhW,GACR,GAAIA,EAAO,CACP,MAAM28Z,EAAmB7ka,KAAK6ra,gBAAgB,GAC9C7ra,KAAK8ra,kBAAkBlha,QAAQyoZ,mBAAmBvoM,eAAiB+5M,EACnE7ka,KAAK8K,OAAO+E,kBAAkB,KAC1B,MAAMo8Z,EAAsBjsa,KAAK2K,SAASmF,OAAO+0Z,EAAkB,UAAW7ka,KAAKyoa,OACnFzoa,KAAK2L,KAAKK,IAAIiga,EAAd,EAEP,CACDjsa,KAAK4ra,SAAW1ja,CACnB,CACGwhW,cACA,OAAO1pW,KAAK4ra,QACf,CACGx3D,WAAOlsW,GACP,GAAKlI,KAAK6ra,gBAGV,IAAI3ja,EAAO,CACP,MAAMgka,EAAuBlsa,KAAKgsa,wBAClChsa,KAAK8ra,kBAAkBlha,QAAQyoZ,mBAAmBtoM,cAAgBmhN,EAClElsa,KAAK8K,OAAO+E,kBAAkB,KAC1B,MAAMs8Z,EAAqBnsa,KAAK2K,SAASmF,OAAOo8Z,EAAsB,UAAWlsa,KAAKyoa,OACtFzoa,KAAK2L,KAAKK,IAAImga,EAAd,GAEAnsa,KAAKosa,qBACLpsa,KAAK8ra,kBAAkB13D,QAAS,EAEvC,CACDp0W,KAAK+pa,QAAU7ha,EAClB,CACGksW,aACA,OAAOp0W,KAAK+pa,OACf,CACDv5Z,kBACIxQ,KAAK6ra,gBAAkB7ra,KAAKwrB,YAAYrf,cAAc82J,iBAAiB,sBACvE,GAAGvhK,MAAMyyB,MAAMn0B,KAAK6ra,iBAAiBp7Z,QAAQ3H,GAAM9I,KAAK2K,SAASiF,aAAa9G,EAAI,WAAY,MAC1F9I,KAAK8ra,6BAA6BJ,KAClC1ra,KAAK8ra,kBAAkBlha,QAAQyoZ,mBAAmBF,cAAe,EAExE,CACDtiZ,cACQ7Q,KAAK2L,MACL3L,KAAK2L,KAAKsF,aAEjB,CACD+6Z,wBACI,OAAwC,IAAhChsa,KAAK6ra,gBAAgBvra,OAAeN,KAAK6ra,gBAAgB,GAAK7ra,KAAK6ra,gBAAgB,EAC9F,CACDO,mBACI,OAAOpsa,KAAK8ra,6BAA6BJ,IACrC1ra,KAAK8ra,6BAA6BN,IAClCxra,KAAK8ra,6BAA6BhC,EACzC,EAEL6B,GAAwB5oa,UAAxB,0BAAqH4oa,IA53Xd3oa,MA43XuDA,OA53XvDA,MA43XiFA,OA53XjFA,MA43X0GA,OAAjN,EACA2oa,GAAwBr4Z,UA73X+EtQ,MA63XvG,MAAyG2oa,GAAzGp4Z,2HAYA,MAAM84Z,GACFvsa,YAAY8K,EAASE,GACjB9K,KAAK4K,QAAUA,EACf5K,KAAK8K,OAASA,CACjB,CACDgL,sBACS9V,KAAK6ra,gBAAgBvra,SAG1BN,KAAK6ra,gBAAgB91Z,MAAM2zV,SAAU,EACrC1pW,KAAK6ra,gBAAgB71Z,KAAKo+V,QAAS,EACnCp0W,KAAK8K,OAAO88M,SAASniN,QAAKilB,MAAK,IAAIxe,UAAU,IAAMlM,KAAK4K,QAAQyoZ,mBAAmBvoM,eAAe15M,SACrG,EAELi7Z,GAA6Btpa,UAA7B,0BAA0Hspa,IAv5XnBrpa,MAu5XiEima,IAv5XjEjma,MAu5X+FA,OAAtM,EACAqpa,GAA6B91Z,UAx5X0EvT,MAw5XvG,MAA8Gqpa,GAA9G94Z,uFAx5XuGvQ,MAw5XvGwT,EAAiPm1Z,GAAjP,cAx5XuG3oa,MAw5XvGyT,EAx5XuGzT,WAw5XvGwQ,yFAx5XuGxQ,cAy5X/F,GADR,oBA+CA,MAAMspa,WAAgCnD,GAClCrpa,YAAY+K,EAAc0ha,EAAa5ha,GACnCsT,QACAje,KAAK6K,aAAeA,EACpB7K,KAAKusa,YAAcA,EACnBvsa,KAAK2K,SAAWA,CACnB,CACG6ha,gBACA,MAAMvvE,EAAaj9V,KAAKi9V,WACxB,OAAOA,KAAgBA,EAAWtoV,KAA0B,QAAnBsoV,EAAWtoV,IACvD,CACG83Z,iBACA,MAAMxvE,EAAaj9V,KAAKi9V,WACxB,OAAOA,GAAiC,SAAnBA,EAAWtoV,GACnC,CAID+3Z,WAAW/3Z,GACP,MAAM6c,EAAQxxB,KAAK4K,QAAQ0xG,OAAO9qF,OAC1B8vG,OAAM2+R,eAAgB7nP,GAAUp4K,KAAK4K,QAAQ2gZ,UAC/CtuD,EAAaj9V,KAAKi9V,WAClBr7T,EAAgB,aAAT0/F,EAAsBthI,KAAK4K,QAAQg3B,KAAKtsB,OAAO0tB,IAAKA,GAAExR,QAAUA,GAAS,GACtF,GAAIyrU,GAAcA,EAAWtoV,MAAQA,GACjC,IAAKsrZ,EACD,YAIJr+X,EAAK5lB,KAAK,CAAEwV,QAAO7c,QAEvB3U,KAAKusa,YAAY3qY,KAAKA,GACtB5hC,KAAK4Z,OACR,CACGqjV,iBACA,MAAO,GAAGn3U,OAAO9lB,KAAK4K,QAAQg3B,MAAQ,IAAIvc,KAAK2d,GAAKA,EAAExR,QAAUxxB,KAAK4K,QAAQ0xG,OAAO9qF,MACvF,EAEL86Y,GAAwBvpa,UAAxB,0BAAqHupa,IA7+Xdtpa,MA6+XuDqQ,OA7+XvDrQ,MA6+X0Fq2Z,IA7+X1Fr2Z,MA6+XkHA,OAAzN,EACAspa,GAAwB/1Z,UA9+X+EvT,MA8+XvG,MAAyGspa,GAAzG/4Z,qDA9+XuGvQ,OA8+XvGuf,oKA9+XuGvf,MA++X/F,kCA/+X+FA,MAk/X3F,8BAAawQ,aAAW,MAAxB,GAl/X2FxQ,cAq/X/F,kCAr/X+FA,MAw/X3F,8BAAawQ,aAAW,OAAxB,GAx/X2FxQ,SA8+XvG,MA9+XuGA,MAg/X3F,2CAh/X2FA,CAg/X3F,wBAh/X2FA,MAs/X3F,GAt/X2FA,MAs/X3F,4CAt/X2FA,CAs/X3F,yBARZ,gBAa4Cqma,IAb5C5wZ,kBAuCA,MAAMk0Z,GACF7sa,YAAYye,EAAc1T,EAAcD,EAASqQ,GAC7Cjb,KAAKue,aAAeA,EACpBve,KAAK6K,aAAeA,EACpB7K,KAAK4K,QAAUA,EACf5K,KAAKib,kBAAoBA,EAIzBjb,KAAK4sa,YAAa,EAIlB5sa,KAAKof,SAAW,GAIhBpf,KAAKurZ,UAAW,EAIhBvrZ,KAAKuM,SAAW,KAIhBvM,KAAK6sa,gBAAiB,EAItB7sa,KAAK8sa,iBAAkB,EAIvB9sa,KAAK+sa,kBAAmB,EACxB/sa,KAAK6lP,kBAAoBj7O,EAAQs+Z,UAAUh9Z,UAAUlM,KAAK4Z,MAAM1M,KAAKlN,MACxE,CAIGyoL,eACA,OAAQzoL,KAAKqga,WAAakC,GAAevia,KAAKsV,OAAQtV,KAAKs8G,OAAO9qF,OAAOlxB,OAAS,IAC5EN,KAAKurZ,UAAYvrZ,KAAKsga,SAAWtga,KAAK4hC,KAAKvc,KAAK43U,GAAcA,EAAWzrU,QAAUxxB,KAAKs8G,OAAO9qF,MACxG,CAIG6uY,gBACA,OAAOA,GAAUrga,KAAKof,SAAUpf,KAAKs8G,OACxC,CAIGgkT,cACA,OAAOA,GAAQtga,KAAKof,SAAUpf,KAAKs8G,OACtC,CAIGkkT,uBACA,OAAOA,GAAiBxga,KAAKof,SAChC,CAIGmhZ,cACA,OAAOA,GAAQvga,KAAKof,SAAUpf,KAAKs8G,OACtC,CAIG0wT,eACA,MA72HS,EAAC5tZ,EAAUk9F,IAAWl9F,EAAS6tZ,OAAS3wT,EAAOkuS,aAAeluS,EAAO3kF,SAAW2kF,EAAO3kF,OAAOmyX,cA62HhGkjB,CAAShta,KAAKof,SAAUpf,KAAKs8G,OACvC,CAIGm+R,kBACA,MA/2HY,EAACr7X,EAAUk9F,IAAWl9F,EAAS8tZ,oBAAsB5wT,EAAOkuS,WAAaluS,EAAOiuS,aAAejuS,EAAO3kF,SAAW2kF,EAAO3kF,OAAOmyX,cA+2HpIrP,CAAYz6Y,KAAKof,SAAUpf,KAAKs8G,OAC1C,CACDjsG,cACIrQ,KAAK4K,QAAQ0xG,OAASt8G,KAAKs8G,OAC3Bt8G,KAAK4K,QAAQg3B,KAAO5hC,KAAK4hC,KACzB5hC,KAAK4K,QAAQ0K,OAAStV,KAAKsV,OAC3BtV,KAAK4K,QAAQ2gZ,SAAWvrZ,KAAKurZ,QAChC,CACD16Y,cACI7Q,KAAK4Z,QACL5Z,KAAK6lP,kBAAkB50O,aAC1B,CAIDiO,OAAOuF,EAAGjD,EAAQ6Q,GACV5N,IACAA,EAAE5Q,iBACF4Q,EAAEmgO,4BAEN5kP,KAAK6sa,eAAiB7sa,KAAKmta,iBAAiBnta,KAAKof,SAAS9J,QAC1DtV,KAAK8sa,gBAAkB9sa,KAAKmta,iBAAiBnta,KAAKof,SAASqhZ,eAC3Dzga,KAAK+sa,iBAAmB/sa,KAAKmta,iBAAiBnta,KAAKof,SAAS8tZ,mBAC5Dlta,KAAKwgB,SAAWxgB,KAAKue,aAAa5E,KAAK6H,EAAQ6Q,EAAUryB,KAAKwgB,SAxGlD,2BAyGPxgB,KAAKwgB,WACFxgB,KAAKib,kBAAkB8lY,aACvB/gZ,KAAKib,kBAAkBo8X,UAAU,EAAGr3Y,KAAKs8G,OAAOoqS,WAGhD1mZ,KAAKwhB,OAAOrV,cAAciF,QAGrC,CAIDwI,QACI5Z,KAAKue,aAAa4O,UAClBntB,KAAKwgB,SAAW,KACZxgB,KAAKib,kBAAkB8lY,aACvB/gZ,KAAKib,kBAAkBo8X,UAAU,EAAGr3Y,KAAKs8G,OAAOoqS,WAGhD1mZ,KAAKwhB,OAAOrV,cAAciF,OAEjC,CAIGg8Z,sBACA,MAAMzQ,EAAkB38Z,KAAK6K,aAAakV,IAAI,eAAiB,GACzDimZ,EAAahma,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MACpD,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,CACDmH,iBAAiBE,GACb,MAAqC,iBAAtBA,GAAiCA,EAAiBvxB,QACpE,EAEL6wB,GAAoB5pa,UAApB,0BAAiH4pa,IA5pYV3pa,MA4pY+CszZ,IA5pY/CtzZ,MA4pY8EqQ,OA5pY9ErQ,MA4pYiHima,IA5pYjHjma,MA4pY+I0W,IAAtP,EACAizZ,GAAoBp2Z,UA7pYmFvT,MA6pYvG,MAAqG2pa,GAArGp5Z,wEA7pYuGvQ,KA6pYvGgma,MA7pYuGhma,KA6pYvGkrM,KAGiN3zC,QAHjN,WA7pYuGv3J,MA6pYvGyT,EA7pYuGzT,WA6pYvGwQ,kBA7pYuGxQ,MA6pYvGyT,EA7pYuGzT,WA6pYvGwQ,iEA7pYuGxQ,MA6pYvG,0OA7pYuGA,MA6pY0V,CACzbima,GACA/V,KA/pY+FlwZ,OA6pYvGuf,6xBA7pYuGvf,cAiqY/F,WAjqY+FA,MAoqY3F,oBApqY2FA,MAoqY3F21O,WApqY2F31O,MAoqY3F,MApqY2FA,MAoqY3F,UApqY2FA,MAoqYlFwQ,iBAAT,EApqY2FxQ,CAoqY3F,mCACiBiiB,4BADjB,GApqY2FjiB,MAyqY3F,YAzqY2FA,cA2qY/F,8BA3qY+FA,aAirY/F,8BAjrY+FA,MA6pYvG,OA7pYuGA,MAmqY3F,UAnqY2FA,MAmqY3F,iBAnqY2FA,CAmqY3F,uBAnqY2FA,MAwqY3F,2BAXZ,gBAuD4Cqpa,GAAqFC,GAA2E9C,GAA2EK,GAA6EC,GAA6K0B,GAAkJE,GAA8Jp+Y,MAA2EA,MAAwHA,MAAiFq+Y,IAvDrlClzZ,kBAoJA,MAAM60Z,GACFxta,YAAY+K,GACR7K,KAAK6K,aAAeA,EACpB7K,KAAK0oa,UAAY,QAIjB1oa,KAAKu4N,UAAY,GAKjBv4N,KAAKuta,eAAgB,EAKrBvta,KAAK+wL,YAAc,IAAI7lL,MAKvBlL,KAAKm7B,MAAQ,IAAIjwB,KACpB,CAIG64J,kBACA,OAAO,CACV,CAIDm5E,SAAS/kO,GACLnY,KAAK+wL,YAAY3gL,KAAK+H,EACzB,CAIDq1Z,aACI,YAAKryY,MAAM/qB,QACJ,CACV,CAIDq9Z,aAAarzZ,IACLA,EAAKlK,UAAYC,YAAciK,EAAKlK,UAAYC,aAChDnQ,KAAKm7B,MAAM/qB,MAElB,CAIDs9Z,gBAAgBtzZ,GACRA,EAAKksR,kBAGLlsR,EAAKlK,UAAYC,aAAenQ,KAAK2ta,SAAS1uZ,SAC9Cjf,KAAK2ta,SAASzuZ,QAAO,GACrB9E,EAAKvG,iBAEZ,CACDvE,WACItP,KAAK6K,aAAaoB,QAAQC,UAAU,IAAMlM,KAAK0oa,UAAY1oa,KAAK6K,aAAakV,IAAI,qBACpF,EAELutZ,GAA6Bvqa,UAA7B,0BAA0Huqa,IAp3YnBtqa,MAo3YiEqQ,OAAxK,EACAi6Z,GAA6B/2Z,UAr3Y0EvT,MAq3YvG,MAA8Gsqa,GAA9G/5Z,iFAr3YuGvQ,KAq3YvG4qa,iBAr3YuG5qa,MAq3YvGyT,EAr3YuGzT,WAq3YvGwQ,iEAr3YuGxQ,MAq3YvG,sjCAr3YuGA,MAs3Y/F,iCAt3Y+FA,MAq4Y/F,sBAhBR,MAr3YuGA,MAw3Y1F,wBAx3Y0FA,MAu4Y1F,GAv4Y0FA,MAu4Y1F,qBAlBb,gBAyB4C64Z,MAA2gBvuY,MAAiFpW,IAzBxoBuB,kBA6EA,MAAMo1Z,GAAyB,CAAC,SAAU,YAAa,UAAW,cAIlE,MAAMC,WAAmC9I,GACrClla,YAAY6ia,GACR1kZ,MAAM0kZ,GACN3ia,KAAKuta,eAAgB,CACxB,CACGxpQ,kBACA,OAAO,CACV,CACGgqQ,0BACA,OAAO,CACV,CACGrzC,iBACA,MAAMplX,EAAStV,KAAKija,cACpB,OAAOh7Z,GAAUqN,MAAayhO,GAAoBzhO,EAAOpN,QACrD2la,GAAuB5sa,QAAQP,OAAO4U,EAAO0iN,YAAc,EAClE,CACD0M,aAAapvN,GACTtV,KAAKmja,YAAY7tZ,EACpB,EAELw4Z,GAA2B/qa,UAA3B,0BAAwH+qa,IA19YjB9qa,MA09Y6DowZ,IAApK,EACA0a,GAA2Bv3Z,UA39Y4EvT,MA29YvG,MAA4G8qa,GAA5Gv6Z,0FA39YuGvQ,MA29YvG,qCA39YuGA,CA29YvG,wFA39YuGA,OA29YvG0T,sJA39YuG1T,cA49Y/F,GA59Y+FA,MA69Y/F,wCA79Y+FA,MAg+Y3F,0BAASwQ,WAAT,EAh+Y2FxQ,CAg+Y3F,uDAh+Y2FA,SA29YvG,MA39YuGA,MA89Y3F,GA99Y2FA,MA89Y3F,gCA99Y2FA,CA89Y3F,wBA99Y2FA,CA89Y3F,0BA99Y2FA,CA89Y3F,2BAHZ,gBAS4Csqa,IAT5C70Z,kBAqDA,MAAMu1Z,WAAkCnK,GACpC/ja,YAAY6ia,EAAe93Z,GACvBoT,MAAM0kZ,EAAe93Z,GAMrB7K,KAAKika,YAAc,IAMnBjka,KAAKuta,eAAgB,CACxB,CAIG5I,kBACA,MAAMhI,EAAkB38Z,KAAK6K,aAAakV,IAAI,qBAAuB,GAC/DimZ,EAAahma,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MACpD,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,EAELgI,GAA0Bjra,UAA1B,0BAAuHira,IAziZhBhra,MAyiZ2DowZ,IAziZ3DpwZ,MAyiZqFqQ,OAA5L,EACA26Z,GAA0Bz3Z,UA1iZ6EvT,MA0iZvG,MAA2Ggra,GAA3Gz6Z,yHA1iZuGvQ,OA0iZvGuf,mOA1iZuGvf,MA2iZ/F,sCA3iZ+FA,MAijZ3F,aAjjZ2FA,SA0iZvG,MA1iZuGA,MA4iZ3F,kBA5iZ2FA,CA4iZ3F,kBA5iZ2FA,CA4iZ3F,wBA5iZ2FA,CA4iZ3F,6BA5iZ2FA,CA4iZ3F,iCA5iZ2FA,MAqjZvF,GArjZuFA,MAqjZvF,4BArjZuFA,CAqjZvF,4BArjZuFA,CAqjZvF,4DAXhB,gBAe4C8qa,GAA2HtyQ,MAAqF0qQ,MAA+PhvZ,GAAqR8zO,GAAiHk7K,MAAuFA,OAfx9BztZ,kBA0DA,MAAMw1Z,WAAmCzH,GACrC1ma,YAAY6ia,EAAe93Z,GACvBoT,MAAM0kZ,EAAe93Z,GACrB7K,KAAK6K,aAAeA,EAMpB7K,KAAKika,YAAc,IAMnBjka,KAAKuta,eAAgB,CACxB,CAIDjpL,WAAW1qN,GACP,OAAO55B,KAAK6K,aAAakV,IAAI6Z,EAChC,CAIG+qY,kBACA,MAAMhI,EAAkB38Z,KAAK6K,aAAakV,IAAI,qBAAuB,GAC/DimZ,EAAahma,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MACpD,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,EAELiI,GAA2Blra,UAA3B,0BAAwHkra,IApoZjBjra,MAooZ6DowZ,IApoZ7DpwZ,MAooZuFqQ,OAA9L,EACA46Z,GAA2B13Z,UAroZ4EvT,MAqoZvG,MAA4Gira,GAA5G16Z,0HAroZuGvQ,OAqoZvGuf,4SAroZuGvf,MAsoZ/F,qCAtoZ+FA,CAsoZ/F,4BAtoZ+FA,MA2pZvF,qCA3pZuFA,WAqoZvG,MAroZuGA,MAuoZ3F,kBAvoZ2FA,CAuoZ3F,kBAvoZ2FA,CAuoZ3F,wBAvoZ2FA,CAuoZ3F,6BAvoZ2FA,CAuoZ3F,iCAvoZ2FA,MAgpZvF,GAhpZuFA,MAgpZvF,4BAhpZuFA,CAgpZvF,4BAhpZuFA,CAgpZvF,iBAhpZuFA,CAgpZvF,yDAhpZuFA,CAgpZvF,kBAhpZuFA,CAgpZvF,sBAhpZuFA,CAgpZvF,sBAhpZuFA,CAgpZvF,YAhpZuFA,CAgpZvF,YAhpZuFA,CAgpZvF,eAhpZuFA,MA4pZnF,GA5pZmFA,MA4pZnF,mDA5pZmFA,CA4pZnF,oDAvBpB,gBA6B4C8qa,GAA6GtyQ,MAAgbA,MAA+GtkJ,GAAqR8zO,IA7B78BvyO,kBAuFA,MAAMy1Z,WAAmCjH,GACrCnna,YAAY6ia,EAAe93Z,EAAcu1N,GACrCniN,MAAM0kZ,EAAe93Z,GACrB7K,KAAKogO,GAAKA,CACb,CACD2jM,qBACI9lZ,MAAM8lZ,qBACN/ja,KAAKogO,GAAGxiN,cACX,CAIG+mZ,kBACA,MAAMhI,EAAkB38Z,KAAK6K,aAAakV,IAAI,qBAAuB,GAC/DimZ,EAAahma,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MACpD,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,EAELkI,GAA2Bnra,UAA3B,0BAAwHmra,IA9uZjBlra,MA8uZ6DowZ,IA9uZ7DpwZ,MA8uZuFqQ,OA9uZvFrQ,MA8uZ0HA,OAAjO,EACAkra,GAA2B33Z,UA/uZ4EvT,MA+uZvG,MAA4Gkra,GAA5G36Z,yDA/uZuGvQ,OA+uZvGuf,oRA/uZuGvf,MAgvZ/F,sCAhvZ+FA,MAqvZ3F,0BArvZ2FA,SA+uZvG,MA/uZuGA,MAivZ3F,kBAjvZ2FA,CAivZ3F,kBAjvZ2FA,CAivZ3F,mBAjvZ2FA,CAivZ3F,8BAjvZ2FA,MAwvZvF,GAxvZuFA,MAwvZvF,4BAxvZuFA,CAwvZvF,4BAxvZuFA,CAwvZvF,eAxvZuFA,CAwvZvF,gBAxvZuFA,MAwvZvF,OAxvZuFA,CAwvZvF,oBAxvZuFA,CAwvZvF,0DAThB,gBAmB4C8qa,GAA6GjS,MAA2gB7wK,GAAiH9zO,IAnBrxBuB,kBAgEA,MAAM01Z,WAAgCtH,GAClC/ma,YAAY6ia,EAAe93Z,GACvBoT,MAAM0kZ,EAAe93Z,GACrB7K,KAAK6K,aAAeA,EAKpB7K,KAAKuta,eAAgB,CACxB,CAIDjpL,WAAW1qN,GACP,OAAO55B,KAAK6K,aAAakV,IAAI6Z,EAChC,CAIG+qY,kBACA,MAAMhI,EAAkB38Z,KAAK6K,aAAakV,IAAI,qBAAuB,GAC/DimZ,EAAahma,KAAKs8G,OAAO71F,OAASzmB,KAAKs8G,OAAO9qF,MACpD,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,EAELmI,GAAwBpra,UAAxB,0BAAqHora,IAx0Zdnra,MAw0ZuDowZ,IAx0ZvDpwZ,MAw0ZiFqQ,OAAxL,EACA86Z,GAAwB53Z,UAz0Z+EvT,MAy0ZvG,MAAyGmra,GAAzG56Z,6FAz0ZuGvQ,OAy0ZvGuf,+TAz0ZuGvf,MA00Z/F,qCA10Z+FA,CA00Z/F,wBA10Z+FA,MAg2ZvF,iCAh2ZuFA,WAy0ZvG,MAz0ZuGA,MA20Z3F,kBA30Z2FA,CA20Z3F,kBA30Z2FA,CA20Z3F,wBA30Z2FA,CA20Z3F,6BA30Z2FA,CA20Z3F,iCA30Z2FA,MAo1ZvF,GAp1ZuFA,MAo1ZvF,4BAp1ZuFA,CAo1ZvF,yDAp1ZuFA,CAo1ZvF,kBAp1ZuFA,CAo1ZvF,wCAp1ZuFA,CAo1ZvF,4BAp1ZuFA,CAo1ZvF,0BAp1ZuFA,CAo1ZvF,0BAp1ZuFA,CAo1ZvF,oBAp1ZuFA,CAo1ZvF,YAp1ZuFA,CAo1ZvF,YAp1ZuFA,CAo1ZvF,2BAp1ZuFA,MAi2ZnF,GAj2ZmFA,MAi2ZnF,0CAj2ZmFA,CAi2ZnF,yCAxBpB,gBA8B4C8qa,GAA6G/G,MAAgxBA,MAAuG/7K,GAAiH9zO,IA9BjoCuB,kBAsFA,MAAM21Z,WAAgC1K,GAClC5ja,YAAYoE,EAAM4nN,GACd7tM,MAAM/Z,EAAM4nN,EACf,CACDpiN,gBACI,OAAKqtO,GAAoB/2O,KAAKs8G,OAAOhnG,QAG9B04Z,GAlBiBvvZ,MAC5BipZ,QAAWwG,GACX7ra,KAAQ8ra,GACR9rS,QAAW4rS,GACX51Z,KAAQ21Z,IACVvvZ,IAWiB4vZ,CAAuBrua,KAAKs8G,OAAOhnG,OAGjD,EAEL84Z,GAAwBrra,UAAxB,0BAAqHqra,IA16Zdpra,MA06ZuDA,OA16ZvDA,MA06ZuFA,OAA9L,EACAora,GAAwB96Z,UA36Z+EtQ,MA26ZvG,MAAyGora,GAAzG76Z,oDA36ZuGvQ,SAs7ZvG,MAAMsra,GACFxua,cACIE,KAAKs8Z,iBAAmB,EAC3B,CACGhnZ,aACA,OAAOtV,KAAKw9W,OACf,CACGloW,WAAOpN,GACPlI,KAAKw9W,QAAUgmD,GAAat7Z,EAC/B,CACGsP,sBACA,YAAK8kZ,iBAAiBhgT,OAASt8G,KAAKs8G,OACpCt8G,KAAKs8Z,iBAAiBhnZ,OAAStV,KAAKsV,OACpCtV,KAAKs8Z,iBAAiB/0O,UAAevnL,KAAKsV,OACnCtV,KAAKs8Z,gBACf,CACGl6L,kBACA,OAAOn6N,GAAUjI,KAAKs8G,OAAOuvS,sBAChC,CACG0iB,mBACA,OAAOtma,GAAUjI,KAAKs8G,UAAYy6H,GAAoB/2O,KAAKs8G,OAAO9qF,QAAUxxB,KAAKs8G,OAAOuoH,UAC3F,EAELypM,GAAoBvra,UAApB,0BAAiHura,GAAjH,EACAA,GAAoB/3Z,UA98ZmFvT,MA88ZvG,MAAqGsra,GAArG/6Z,qTA98ZuGvQ,MA+8Z/F,2BADR,KA98ZuGA,MA+8ZhF,sBADvB,gBAe4CsqB,MAAiFA,MAAqEA,MAAiF8gZ,GAAsE9gZ,OAfzV7U,kBA2CA,IAAI+1Z,GAAO,EAOX,MAAMC,GACF3ua,YAAYi6Y,EAAYrxY,EAAS+ga,EAAmBzf,EAAW/uY,EAAmBtQ,EAAU2T,GAAMosK,IAC9F1qL,KAAK+5Y,WAAaA,EAClB/5Y,KAAK0I,QAAUA,EACf1I,KAAKypa,kBAAoBA,EACzBzpa,KAAKgqZ,UAAYA,EACjBhqZ,KAAKib,kBAAoBA,EACzBjb,KAAK2K,SAAWA,EAChB3K,KAAKse,KAAOA,GACZte,KAAK0qL,YAAcA,GACnB1qL,KAAK0ua,kBAAmB,EACxB1ua,KAAK8oL,QAAU,EACf9oL,KAAK6uT,QAAU,EACf7uT,KAAK63Y,cAAe,EACpB73Y,KAAK85Y,kBAAmB,EACxB95Y,KAAK65Y,IArBb,SAAS80B,KACL,OAAOH,IACV,CAmBkBG,EACd,CACGzmZ,SACA,IAAKloB,KAAK0ua,kBAAoB1ua,KAAKypa,kBAAkBrmD,SACjD,OAAOpjX,KAAKgqZ,UAAUL,OAAO3pZ,KAAK05Y,gBAAiB15Y,KAAK25Y,gBAE/D,CACGi1B,mBACA,IAAI5ua,KAAK0ua,mBAA6C,IAAzB1ua,KAAK25Y,gBAGlC,OAAO35Y,KAAK25Y,gBAAkB,CACjC,CACDrqY,YACStP,KAAKib,kBAAkB8lY,eAG5B/gZ,KAAK6ua,iBAAmB7ua,KAAKib,kBAAkBhP,QAAQC,UAAWuY,GAAMzkB,KAAK8ua,mBAAmBrqZ,IACnG,CACDujK,aACShoL,KAAKib,kBAAkB8lY,eAAyC,IAAzB/gZ,KAAK25Y,kBAG7C35Y,KAAK0qL,cACL1qL,KAAK0qL,YAAYqvN,WAAa/5Y,KAAK+5Y,YAEvC/5Y,KAAK+ua,oBACR,CACD1+Z,YAAYpE,GACR,IAAKjM,KAAKib,kBAAkB8lY,aACxB,OAEJ,MAAMpnX,EAAOta,OAAOsa,KAAK1tB,GACzB,GAAqB,IAAhB0tB,EAAKr5B,QAA4B,cAAZq5B,EAAK,KAAgD,IAAzB35B,KAAK25Y,gBAEvD,OAEJ,MAAM75K,EAAc7zN,EAAQ0tY,gBACtBq1B,EAAiB/ia,EAAQytY,gBACzBltY,EAAQszN,IAAgBA,EAAYnvD,gBAAkBmvD,EAAYl2N,cAAgB5J,KAAK25Y,gBACvF1vQ,EAAW+kS,IAAmBA,EAAer+P,gBAAkBq+P,EAAepla,cAAgB5J,KAAK05Y,gBACzG15Y,KAAKib,kBAAkB++X,eAAextY,EAAOy9H,EAAUjqI,MACvDA,KAAKiva,kBACLjva,KAAKkva,eACR,CACDr+Z,cACQ7Q,KAAK6ua,kBACL7ua,KAAK6ua,iBAAiB59Z,cAE1BjR,KAAKib,kBAAkB++X,eAAeh6Y,KAAK25Y,gBAAiB35Y,KAAK05Y,gBAAiB15Y,KACrF,CACD8ua,mBAAmBrqZ,GACf,MAAMhF,EAASzf,KAAK25Y,kBAAoBl1X,EAAE6uS,UAAYtzT,KAAK05Y,kBAAoBj1X,EAAEwlH,SAC3EklS,EAAYnva,KAAK25Y,kBAAoBl1X,EAAEszX,cAAgB/3Y,KAAK05Y,kBAAoBj1X,EAAEuzX,cACpFv4X,GAAU0vZ,IACVnva,KAAKkva,eAEZ,CACDA,gBACI,MAAMpma,EAAK9I,KAAK0I,QAAQyD,cACxBnM,KAAK2K,SAASiF,aAAa9G,EAAI,WAAY9I,KAAK2lN,gBAAkB3lN,KAAK0ua,iBAAmB,IAAM,MAC5F1ua,KAAK0O,aACD1O,KAAK+5Y,WAAWzC,cAChBt3Y,KAAK+5Y,WAAW3oY,UAGXpR,KAAK0ua,kBAAoB1ua,KAAKib,kBAAkBqoY,cAActjZ,KAAK25Y,gBAAiB35Y,KAAK25Y,gBAAkB35Y,KAAK8oL,QAAU,IAC3H9oL,KAAKova,UAAU,IAAMpva,KAAK0O,aAAe5F,EAAGsI,SAEhDpR,KAAK2K,SAASyH,SAAStJ,EAAI,oBAE3B9I,KAAKqva,iBACLvma,EAAG8G,aAAa,aAAc,MAIlC5P,KAAK2K,SAASqI,YAAYlK,EAAI,mBAC1B9I,KAAKqva,iBACLvma,EAAG8G,aAAa,aAAc5P,KAAKqva,iBAG9C,CACDD,UAAU38Z,GACNzS,KAAKse,KAAKzO,kBAAkB,IAAMtK,QAAQyC,QAAQ,MAAMK,KAAKoK,GAChE,CACDw8Z,kBACSjva,KAAK0ua,kBACN1ua,KAAKib,kBAAkBw+X,aAAaz5Y,KAE3C,CACD+ua,oBACS/ua,KAAK0ua,kBACN1ua,KAAKib,kBAAkB+mY,yBAAyBhiZ,KAEvD,CACD2lN,cACI,OAAO3lN,KAAKib,kBAAkBknY,gBAAgBniZ,KACjD,CACD0O,YACI,OAAO1O,KAAKib,kBAAkBmnY,cAAcpiZ,KAC/C,EAELyua,GAAqB1ra,UAArB,0BAAkH0ra,IArnaXzra,MAqnaiDo3Z,IArnajDp3Z,MAqnawEA,OArnaxEA,MAqnakGu1Z,IArnalGv1Z,MAqnagIymZ,IArnahIzmZ,MAqnasJ0W,IArnatJ1W,MAqnaoLA,OArnapLA,MAqna6MA,OArna7MA,MAqnamOi8Y,GAA1U,KACAwvB,GAAqBn7Z,UAtnakFtQ,MAsnavG,MAAsGyra,GAAtGl7Z,sFAtnauGvQ,MAsnavG,UAtnauGA,CAsnavG,gWAtnauGA,MAsna6e,CAAC,CACzkBmD,QAASi0Z,GACTqD,KAAM,CAAChhB,IACPp2Y,SAAU+zZ,MAznaiFp3Z,SA2qavG,MAAMssa,GACFxva,YAAY+K,EAAc4+Z,GACtBzpa,KAAK6K,aAAeA,EACpB7K,KAAKypa,kBAAoBA,EACzBzpa,KAAK4zP,QAAU,GACf5zP,KAAKqsC,OAAS,GACdrsC,KAAKuva,gBAAiB,CACzB,CACDC,gBAAgBlzT,GACZ,MAAMguS,EAAShuS,EAAOguS,OAAStqZ,KAAKypa,kBAAkBzQ,oBAAoB18S,GAAU,KACpF,OAAOj9F,OAAOC,OAAOD,OAAOC,OAAO,GAAIgrY,GAAShuS,EAAOmzT,YAC1D,CACD1G,YAAYzsT,GACR,MAAMqgT,EAAkB38Z,KAAK6K,aAAakV,IAAI,qBAAuB,GAC/DimZ,EAAa1pT,EAAO71F,OAAS61F,EAAO9qF,MAC1C,OAAO1R,GAA0B68Y,EAAiB,aAAcqJ,EACnE,EAELsJ,GAAmBvsa,UAAnB,0BAAgHusa,IA7raTtsa,MA6ra6CqQ,OA7ra7CrQ,MA6ragFu1Z,IAAvL,EACA+W,GAAmB/4Z,UA9raoFvT,MA8ravG,MAAoGssa,GAApG/7Z,oFA9rauGvQ,MA8ravG,otBA9rauGA,MA+ra/F,iBA/ra+FA,MAosa/F,iBApsa+FA,MAysa/F,kBAXR,MA9rauGA,MAisa7E,oBAjsa6EA,MAssa1F,GAtsa0FA,MAssa1F,iEAtsa0FA,MAysaxE,GAzsawEA,MAysaxE,qBAX/B,gBAuB4Csra,GAA8GhhZ,MAA0GA,MAAiFmhZ,GAA0PnhZ,MAAkEA,OAvBjpB7U,kBAsEA,IAAIyP,GAAK,EAOT,MAAMwnZ,GACF5va,YAAYkqZ,EAAWtoN,GACnB1hM,KAAKgqZ,UAAYA,EACjBhqZ,KAAK0hM,WAAaA,EAClB1hM,KAAK2va,iBAAkB,EACvB3va,KAAK4va,uBAAyB,EAC9B5va,KAAK63Y,cAAe,EACpB73Y,KAAK65Y,IAbb,SAASg2B,KACL,OAAO3nZ,IACV,CAWkB2nZ,EACd,CACGC,eACA,OAAO9va,KAAK2va,gBAAkB,eAAiB,KAClD,CACGI,mBACA,OAAO/va,KAAK05Y,gBAAkB,CACjC,CACG7tJ,eACA,IAAK7rP,KAAK0hM,WAAWhiD,SAAW1/I,KAAK2va,iBAAmD,IAAhC3va,KAAK4va,uBACzD,OAEJ,MAAM91S,EAAM,GACNnyF,EAAQ3nC,KAAKgwa,kBAAoBhwa,KAAK4va,uBAC5C,QAASzlP,EAAYnqL,KAAKgwa,kBAAmB7lP,EAAYxiJ,EAAOwiJ,IAC5DrwD,EAAI99G,KAAKhc,KAAKgqZ,UAAUL,OAAO3pZ,KAAK05Y,gBAAiBvvN,IAEzD,OAAOrwD,EAAIn4H,KAAK,IACnB,CACD0O,YAAYpE,GACR,IAAKjM,KAAK0hM,WAAWhiD,SAAW1/I,KAAK2va,gBACjC,OAEJ,MAAM7vM,EAAc7zN,EAAQytY,gBACtBu2B,EAAwBhka,EAAQ0ja,gBACtC,GAAI7vM,GAAemwM,EAAuB,CACtC,MAAMzja,EAAQszN,IAAgBA,EAAYnvD,gBAAkBmvD,EAAYl2N,cAAgB5J,KAAK05Y,gBAC7F15Y,KAAK0hM,WAAW04M,cAAc5tY,EAAOxM,MACrCA,KAAK0hM,WAAWu4M,YAAYj6Y,KAC/B,MACI,EAAI4wK,MAAW,CAAC,eAAgB,YAAa3kK,IAC9CjM,KAAK0hM,WAAWy4M,UAAUn6Y,KAEjC,CACD6Q,cACI7Q,KAAK0hM,WAAW04M,cAAcp6Y,KAAK05Y,gBAAiB15Y,KACvD,EAEL0va,GAAoB3sa,UAApB,0BAAiH2sa,IAxzaV1sa,MAwza+CymZ,IAxza/CzmZ,MAwzaqE0W,IAA5K,EACAg2Z,GAAoBp8Z,UAzzamFtQ,MAyzavG,MAAqG0sa,GAArGn8Z,qFAzzauGvQ,MAyzavG,kBAzzauGA,CAyzavG,+BAzzauGA,CAyzavG,sPAzzauGA,SAy1avG,MAAMsU,GACFxX,YAAYyX,GACRvX,KAAKuX,iBAAmBA,CAC3B,CACGC,oBAAgBC,GAChBzX,KAAKkwa,aACDz4Z,EAAQG,cACR5X,KAAK0X,gBAAkB1X,KAAKuX,iBAAiBM,mBAAmBJ,EAAQG,YAAaH,GAE5F,CACD5G,cACI7Q,KAAKkwa,YACR,CACDA,aACQlwa,KAAK0X,kBACL1X,KAAKuX,iBAAiBI,OAAO3X,KAAKuX,iBAAiBtW,QAAQjB,KAAK0X,kBAChE1X,KAAK0X,qBAAkB3C,EAE9B,EAELuC,GAAyBvU,UAAzB,0BAAsHuU,IA72aftU,MA62ayDA,OAAhK,EACAsU,GAAyBhE,UA92a8EtQ,MA82avG,MAA0GsU,GAA1G/D,mFAcA,MAAM48Z,GACFrwa,YAAY0wL,EAAkB1nL,EAAI6B,EAAUG,GACxC9K,KAAKwwL,iBAAmBA,EACxBxwL,KAAK8I,GAAKA,EACV9I,KAAK2K,SAAWA,EAChB3K,KAAK8K,OAASA,EAKd9K,KAAKowa,gBAAkB,IAAIlla,MAC3BlL,KAAKye,KAAO,WACZze,KAAKqwa,UAAW,EAChBrwa,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKswa,aAAetwa,KAAK2K,SAASmF,OAAO9P,KAAK8I,GAAGqD,cAAe,QAASnM,KAAKuY,QAAQrL,KAAKlN,MAAvE,EAE3B,CACDiW,wBACIjW,KAAK4nP,UACR,CACDv3O,cACIrQ,KAAKqwa,UAAW,CACnB,CACDx/Z,cACQ7Q,KAAKswa,cACLtwa,KAAKswa,cAEZ,CAID/3Z,UAGI,MAAMy9M,KAj8aG,MACb,KAAI,EAAC3oN,QACD,OAEJ,MAAM+7F,EAAKv3E,OAAO/jB,UAAUR,UACtBopD,EAAO0yC,EAAGnoG,QAAQ,SAClB6+T,EAAU12N,EAAGnoG,QAAQ,YAC3B,OAAOy1D,EAAO,GAAKopQ,EAAU,GAy7aSC,SAAuDhrT,IAAzC/U,KAAKwwL,iBAAiBi1N,iBACjBzlZ,KAAK8I,GAAGqD,cAAcgyN,QACrEn4N,EAAUhG,KAAKwwL,iBAAiBxqL,QAChCuqa,EAAqBvqa,EAAQ05I,SAA4B,aAAjB15I,EAAQs7H,KAChDkvS,KAAsB/+Z,MAAazR,KAAKowa,kBAC1CG,GAAsBC,IACtBxwa,KAAK8K,OAAO4G,IAAI,KACR6+Z,GACAvwa,KAAKwwL,iBAAiB+0N,UAAUvvL,GAEhCw6M,GACAxwa,KAAKowa,gBAAgBhga,KAAK4lN,EAAY,UAAY,YAAlD,EAIf,CAID4xB,WACI,MAAMpuN,EAAQx5B,KAAKqwa,SAAWrwa,KAAKywa,cAAgBzwa,KAAKwwL,iBAAiBi1N,eACnExyY,EAAOjT,KAAK8I,GAAGqD,cACrBnM,KAAK2K,SAASqD,YAAYiF,EAAM,iBAAkBhL,GAAUuxB,IAC5Dx5B,KAAK2K,SAASqD,YAAYiF,EAAM,YAAWhL,GAAUuxB,IAASA,EACjE,CAIDi3Y,cACI,OAAQzwa,KAAKw5B,WACJ,UACD,OAAO,MACN,YACD,OAAO,UAEP,OAEX,EAEL22Y,GAA2Bpta,UAA3B,0BAAwHota,IAp8ajBnta,MAo8a6D2rL,IAp8a7D3rL,MAo8a0FA,OAp8a1FA,MAo8aoHA,OAp8apHA,MAo8a6IA,OAApP,EACAmta,GAA2B78Z,UAr8a4EtQ,MAq8avG,MAA4Gmta,GAA5G58Z,4FAr8auGvQ,MAq8avG,6FAr8auGA,SAu9avG,MAWM0ta,GAAerra,GAAWA,EAAO8G,cAAcyrB,cAAc65E,YAI7Dk/T,GAAiB/8K,GAAW04J,GAAc14J,GAC3Ct+O,OAAO/T,IAAMA,EAAE2oZ,eAIdjqT,GAAkB,EAAGt7E,cAAe3U,MACtCA,EAAMiwF,kBACNjwF,EAAM6D,gBAAN,EAkBE+8Z,GAAiBt0T,MAAaA,EAAO3kF,SAAU2kF,EAAO3kF,OAAOmyX,cA4BnE,MAAM+mB,GACF/wa,YAAYwxK,EAAW5oK,EAASkC,EAAS0T,EAAMlD,EAAKvQ,EAAc4+Z,IAC9Dzpa,KAAKsxK,UAAYA,EACjBtxK,KAAK0I,QAAUA,EACf1I,KAAK4K,QAAUA,EACf5K,KAAKse,KAAOA,EACZte,KAAKob,IAAMA,EACXpb,KAAK6K,aAAeA,EACpB7K,KAAKypa,kBAAoBA,GACzBzpa,KAAK4zP,QAAU,GACf5zP,KAAKknB,cAAgB,IAAItb,MACzB5L,KAAK+L,KAAM,CACd,CACGu5B,cACA,OAAOtlC,KAAKs8G,OAAO+wG,UAAY,QAAU,MAC5C,CACGyjN,gBACA,OAAOj+M,GAAS7yN,KAAK+L,KAAO,EAAI,IACnC,CACGgla,iBACA,OAAOl+M,GAAS7yN,KAAK+L,KAAO,KAAO,CACtC,CACD08F,UACI,MAAMuoU,EAAWL,GAAe3wa,KAAK4zP,SAC/Bq9K,EAAepkB,GAAY,CAAC7sZ,KAAKs8G,SAAShnG,OAAOgnG,GAAUu2G,GAASv2G,EAAO+wG,YAC3E6jN,EAAaD,EAAa5va,IAAIi7G,IAChC,MAAM60T,EAAeP,GAAet0T,GAC9B80T,IAAeD,GAAe70T,EAAO3kF,OAAOw0X,aAAan2Y,OAASsmG,EAClE9vG,GAjDF,EAACqQ,EAAQ4iK,KACrB,IAAIjzK,EAAQ,EACRkhQ,EAAS,EACT15N,EAAO,EACX,KAAOxnC,EAAQizK,EAAKn/K,QAAQ,CACxB,MAAM+U,EAAUoqK,EAAKjzK,GACf6ka,EAAqBT,GAAev7Z,GAC1C,GAAIA,IAAYwH,EACZ,MAEC6wP,KAAY,GAAM2jK,IACnB3jK,EAASr4P,EAAQsiB,OAAOw0X,aAAa7rZ,OAAS,EAC9C0zC,GAAQ05N,GAEZlhQ,GACH,CACD,OAAOA,EAAQwnC,GAiCO/yC,CAAQq7G,EAAQ00T,GAC9B,MAAO,CACH10T,SACAg1T,YAAatxa,KAAKuxa,gBAAgBj1T,EAAOw1C,OAAO7wJ,QAAQq7G,GACxD9vG,SACA4ka,eACAD,eACAr/Q,MAAOx1C,EAAOw1C,MANX,GASXm/Q,EAAaxga,QAAQ6rG,GAAUA,EAAO9nG,MAAQ,GAC9CxU,KAAK4K,QAAQkrZ,eAAeob,EAC/B,CACD5ha,WACQ2nN,GAAQj3N,KAAKs8G,OAAO9nG,SACpBxU,KAAKs8G,OAAOk1T,cAAgBd,GAAY1wa,KAAK0I,UAEjD,MAAMkC,EAAU5K,KAAK4K,QAAQqB,QAAQxG,QAAK6P,MAAO,IAAMtV,KAAKs8G,OAAO+wG,YAAnB,EAA+B/3M,MAAOmP,GAAKxc,GAAUwc,EAAEmvO,QAAQvuO,KAAKi3F,GAAUA,IAAWt8G,KAAKs8G,WAC9It8G,KAAKknB,cAAclb,IAAIpB,EAAQnF,QAAK6P,MAAOmP,GAAgB,UAAXA,EAAEhG,OAC7CvS,UAAUlM,KAAKyxa,UAAUvka,KAAKlN,QACnCA,KAAKknB,cAAclb,IAAIpB,EAAQnF,QAAK6P,MAAOmP,GAAgB,iBAAXA,EAAEhG,OAC7CvS,UAAUlM,KAAKsmF,OAAOp5E,KAAKlN,QAChCA,KAAKknB,cAAclb,IAAIhM,KAAK4K,QAAQqB,QAAQxG,QAAK6P,MAAOmP,GAAgB,UAAXA,EAAEhG,OAAR,EAA2BnJ,MAAOtV,KAAK0xa,aAAaxka,KAAKlN,QAAxB,EAAgC0qB,MAAK,IAC3Hxe,UAAUlM,KAAK2xa,gBAAgBzka,KAAKlN,QACtCA,KAAKknB,cAAclb,IAAIhM,KAAKse,KAAKzO,kBAAkB,IAAM7P,KAAKsxK,UAAUL,WAAWxrK,QAAK46F,MAAIJ,KAAD,EAAmBI,MAAI,IAAMrgG,KAAK4K,QAAQ+P,MAAM3a,KAAKs8G,UAA/B,EAAyC8xG,MApFxIj/C,IAAWo+C,MAAa7yB,MAAG6yB,GAAW9nN,QAAKy+B,MAAM,MAAD,EAAOspL,MAAUr+C,IAoFiFyiQ,CAAkB5xa,KAAKsxK,UAAUH,gBAAlC,EAAkDi9C,MA7FpM,EAACxjN,EAAS0mK,IAAci8C,GAAaj8C,EAAUJ,UAAUzrK,QAElF+nN,MAAUl8C,EAAUH,aAAa1rK,QAAK46F,MAAI,IAAMz1F,EAAQkQ,UAA/C,EAAyDzZ,MAAI,EAAG4zB,YAAF,CACnE4zE,UAAW0kH,EAAUt4L,MACrBA,YAyFmOq4L,CAAiBttN,KAAK4K,QAAS5K,KAAKsxK,aAC9PplK,UAAU,EAAG+oB,QAAO4zE,gBACrB,MACM4+B,EApHG,EAACv/H,EAAO2pa,IAAW3pa,EAAQ2pa,EAAS,IAoH7BC,CADF78Y,EAAQ4zE,EACc7oG,KAAKs8G,OAAOy1T,kBAAoB/xa,KAAKs8G,OAAO9nG,OAChFxU,KAAK4K,QAAQ2qZ,cAAc9tR,EAA3B,KAEJznI,KAAKknB,cAAclb,IAAIpB,EAAQnF,QAAK6P,MAAOmP,GAAgB,oBAAXA,EAAEhG,OAC7CvS,UAAUlM,KAAKgya,UAAU9ka,KAAKlN,QACnCA,KAAKknB,cAAclb,IAAIpB,EAAQnF,QAAK6P,MAAOmP,GAAgB,mBAAXA,EAAEhG,OAC7CvS,UAAUlM,KAAKyoG,QAAQv7F,KAAKlN,QACjCA,KAAKknB,cAAclb,IAAIhM,KAAK6K,aAAaoB,QAAQC,UAAU,EAAGH,SAAU/L,KAAK+L,IAAMA,GACtF,CACD8E,cACQ7Q,KAAKknB,eACLlnB,KAAKknB,cAAcjW,aAE1B,CACDyga,eACI,OAAQf,GAAe3wa,KAAK4zP,SACvBvyP,IAAIi7G,GAAUA,EAAO9nG,OACrBgnE,KAAKy7I,GACb,CACD06M,kBACI3xa,KAAKs8G,OAAO9nG,MAAQk8Z,GAAY1wa,KAAK0I,QACxC,CACD+oa,YACIzxa,KAAKs8G,OAAOy1T,iBAAmBrB,GAAY1wa,KAAK0I,SAChD1I,KAAK4K,QAAQ8qZ,cAAc,CACvBp5S,OAAQt8G,KAAKs8G,OACb21T,SAAUjya,KAAKs8G,OAAOy1T,kBAE7B,CACDzrV,QAASkvU,iBACL,IAAIjhY,EAzJW,EAACrsB,EAAOu/H,KAC3B,MAAMj2E,EAAOi2E,EAAU,GAAI,EAAK,EAChC,OAAO/yG,KAAKG,KAAMH,KAAKsH,IAAIyrG,GAAW,IAAOv/H,GAASspD,GAuJtC0gX,CAAelya,KAAKs8G,OAAOy1T,iBAAkBvc,GACrD3iM,GAAS7yN,KAAK+L,OACdwoB,IAAS,GAEb,MAAMq6L,EAAWl6L,KAAK7Z,IAAI7a,KAAKs8G,OAAOy1T,iBAAmBx9Y,EAAOv0B,KAAKs8G,OAAO8tS,mBACtE+nB,EAAavjN,EAAW5uN,KAAKs8G,OAAO8tS,kBACtC71X,EAAQv0B,KAAKs8G,OAAO8tS,kBAAoBpqZ,KAAKs8G,OAAOy1T,iBACxD/xa,KAAKoya,YAAYpya,KAAKs8G,OAAQsyG,GAC9B5uN,KAAK4K,QAAQ6qZ,YAAYz1Z,KAAKs8G,OAAQ61T,EACzC,CACDH,WAAYp+K,UAASikD,WACjB,MAAMrrS,EAAQonP,EAAQ3yP,QAAQjB,KAAKs8G,QAC7B9nG,EAAQkgB,KAAK7Z,OAAOg9R,EAAOx2S,IAAIuyH,GAAKA,EAAEpnH,KAAW,EACjD2la,EAAa39Z,EAAQxU,KAAKs8G,OAAOy1T,iBACvC/xa,KAAKoya,YAAYpya,KAAKs8G,OAAQ9nG,GAC9BxU,KAAK4K,QAAQ6qZ,YAAYz1Z,KAAKs8G,OAAQ61T,EACzC,CACDC,YAAY91T,EAAQ9nG,GAChB8nG,EAAO9nG,MAAQA,EACfxU,KAAKypa,kBAAkB5Q,cAAcpoZ,QAASo0R,IACtC5tE,GAAQ4tE,EAAIrwR,QAAUvM,GAAU48R,EAAI2sI,iBAGpC3sI,EAAIrwR,MAAQqwR,EAAI2sI,iBAGxBxxa,KAAKob,IAAIwC,cACZ,CACD2zZ,gBAAgBz/Q,GACZ,OAAO06P,GAAgBxsZ,KAAK4zP,QAAU5zP,KAAK4zP,QAAQt+O,OAAOgnG,GAAUA,EAAOw1C,QAAUA,GAAS,GACjG,EAEL++Q,GAAsB9ta,UAAtB,0BAAmH8ta,IAhpbZ7ta,MAgpbmDyrL,KAA1J,GAhpbuGzrL,MAgpbmGA,OAhpbnGA,MAgpb6HqyZ,IAhpb7HryZ,MAgpb+JA,OAhpb/JA,MAgpbqLA,OAhpbrLA,MAgpbsNqQ,OAhpbtNrQ,MAgpbyPu1Z,IAAhW,EACAsY,GAAsBv9Z,UAjpbiFtQ,MAipbvG,MAAuG6ta,GAAvGt9Z,uFAjpbuGvQ,MAipbvG,6BAAuGwQ,WAAvG,QAjpbuGxQ,MAipbvG,oBAjpbuGA,CAipbvG,mBAjpbuGA,CAipbvG,oEA0BA,MAAMqva,GAAe,IAAIj4Z,IAASiF,OAAOC,OAAO6U,MAAM,KAAM,CAAC,IAAIrO,OAAO1L,IASlEk4Z,GAAe,CAACjqZ,EAAGC,IAAMD,EAAEsP,SAAWrP,EAAEqP,QACzCs1X,GAAiB3kY,IAAMgqZ,GAAajqZ,EAAGC,EAAEqP,QASxC4wO,GAAQ6tI,GAbO,EAAG9kO,eAAgB,CAAC,SAAU,eAC9CrwK,QAAQqwK,EAAU75J,QAAQgH,OAAS,EASpB,EAAG6yJ,eAAgBA,EAAU75J,QAAQ6kG,OAAO6tS,YADxC,EAAG74O,gBAAiB27O,GAAiB37O,EAAU75J,QAAQ6kG,QAPxD,EAAGg1D,YAAWz0J,YAAay0J,EAAU5oK,QAAQyD,gBAAkB0Q,EAAOnU,QAAQyD,cAGlF,EAAGmlK,YAAWz0J,YAAay1Z,GAAahhQ,EAAU75J,QAAQ6kG,OAAQz/F,EAAOpF,QAAQ6kG,QAQV64G,GAPpE,EAAG7jD,gBAAiBuhD,GAASvhD,EAAU75J,QAAQ6kG,OAAOgkQ,SAPxD,GAAG3oV,aAAck7L,GAASl7L,GAQ1C46Y,CAAYjhQ,EAAU75J,QAAQ6kG,SAC9Bg1D,EAAU75J,QAAQ+6Z,YAGL,EAAGlhQ,YAAWz0J,aAAmD,IAAtCy0J,EAAU75J,QAAQ6kG,OAAOiuS,UACjEj5O,EAAU75J,QAAQ6kG,OAAO8mQ,WAAavmW,EAAOpF,QAAQ6kG,OAAO8mQ,UAE1DqvD,GAAe,CAAC,MAAO,OAAQ,QAAS,QAI9C,MAAMplP,GACFvtL,YAAYye,EAAcshG,EAAMy+S,EAAKoU,EAAgB1oB,EAAWuiB,EAAa1ha,GAAc4+Z,GAAmBrpM,IAC1GpgO,KAAKue,aAAeA,EACpBve,KAAK6/G,KAAOA,EACZ7/G,KAAKs+Z,IAAMA,EACXt+Z,KAAK0ya,eAAiBA,EACtB1ya,KAAKgqZ,UAAYA,EACjBhqZ,KAAKusa,YAAcA,EACnBvsa,KAAK6K,aAAeA,GACpB7K,KAAKypa,kBAAoBA,GACzBzpa,KAAKogO,GAAKA,GACVpgO,KAAK4zP,QAAU,GACf5zP,KAAKqsC,OAAS,GACdrsC,KAAK4hC,KAAO,IAAIzgC,MAChBnB,KAAKurZ,UAAW,EAChBvrZ,KAAKwrZ,WAAY,EACjBxrZ,KAAK2ya,mBAAqB,EAC1B3ya,KAAKqtN,WAAY,EACjBrtN,KAAKmqZ,aAAc,EACnBnqZ,KAAKyqZ,YAAa,EAClBzqZ,KAAK4ya,kBAAoB,EACzB5ya,KAAK6ya,aAAe,GACpB7ya,KAAKk/Z,YAAc,IAAI1qB,MACvBx0Y,KAAK+5J,aAAe,IAAInuJ,KAC3B,CACGkna,kBACA,OAAQ9ya,KAAK+ya,UAChB,CACGC,oBACA,OAAOhza,KAAK6K,aAAakV,IAAI,WAChC,CACGkzZ,yBACA,OAAOjza,KAAKyqZ,UACf,CAEGyoB,2BACA,OAAOlza,KAAK4ya,kBAAoB5ya,KAAK2ya,mBAAqB3ya,KAAK4zP,QAAQtzP,MAC1E,CACD6ya,WAAWl2E,GACPj9V,KAAKusa,YAAY3qY,KAAKq7T,EACzB,CACDm2E,mBAAmB92T,GACf,OAAOA,CACV,CACD+2T,YAAY/2T,EAAQtsG,EAAOs3Q,GACvB,MAAMzqQ,EAAS7M,EAAM6M,OACrB,GAAIy/F,EAAO0uS,mBAAqBnuY,IAAWyqQ,GACZj1O,QAAQs0I,GAAe9pK,EAAQ8oM,GAAa2hE,IAGnE,OAGR,MAAM/jG,EAAWvjL,KAAKsza,cAActja,GAC9Buja,EAAgBvza,KAAK0sa,WAAWpwT,EAAQinE,GAC9CvjL,KAAKmza,WAAWI,EACnB,CACDC,gBAAgBl3T,EAAQliG,GACpB,GAAIA,EAAKlK,UAAYC,gBAAkBiK,EAAKI,QAAUxa,KAAKyza,eAAgB,CACvEr5Z,EAAKvG,iBACLuG,EAAKwqO,2BACL,MAAM8uL,EAAa1za,KAAK2za,YAAYtuZ,KAAKuuZ,GAAMA,EAAGt3T,SAAWA,GAC7Do3T,EAAWx0Z,OAAOw0Z,EAAWlyZ,OAAOrV,cAAeuna,EAAWrhZ,SACjE,CACD,GAAIjY,EAAKlK,UAAYC,gBAAkBiK,EAAKI,QAAUxa,KAAK6za,eAAev3T,GAAS,CAC/EliG,EAAKvG,iBACLuG,EAAKwqO,2BACL,MAAM6lK,EAAazqZ,KAAK8za,YAAYzuZ,KAAKo1U,GAAMA,EAAGn+O,SAAWA,GAC7DmuS,EAAWvrY,OAAO,KAAMurY,EAAWjpY,OAAOrV,cAAes+Y,EAAWp4X,SACvE,CACD,GAAKryB,KAAKurZ,WAAYnxY,EAAKksR,mBAAwC,IAApBhqL,EAAOivS,UAGlDnxY,EAAKlK,UAAYC,YAAclI,GAAUq0G,EAAO9qF,OAAQ,CACxD,MAAM+xJ,EAAWvjL,KAAKsza,cAAcl5Z,GACpCpa,KAAKusa,YAAY3qY,KAAK5hC,KAAK0sa,WAAWpwT,EAAQinE,GACjD,CACJ,CACDwwP,kBAAkBz3T,GACd,MAAQ4jT,eAAgB9nP,GAAUp4K,KAAKurZ,UACvC,OAAO2U,GACAlga,KAAK4hC,MACL5hC,KAAK4hC,KAAKtsB,OAAO,EAAGX,SAAU1M,GAAU0M,IAAMrU,OAAS,GACvDN,KAAKg0a,UAAU13T,EAAO9qF,OAAS,CACzC,CACDwiZ,UAAUxiZ,GACN,OAAOxxB,KAAK4hC,KACPtsB,OAAO,EAAGX,SAAU1M,GAAU0M,IAC9BpQ,UAAU8jB,GAAKA,EAAEmJ,QAAUA,GAC1B,CACT,CACDyiZ,SAASziZ,GACL,MAAMgI,EAAQx5B,KAAKk0a,eAAe1iZ,GAClC,MAAO,CACH,SAAUvpB,GAAUuxB,EAAM7kB,KAC1B,mBAAkC,SAAd6kB,EAAM7kB,IAC1B,kBAAiC,QAAd6kB,EAAM7kB,IAEhC,CACDw/Z,UAAU73T,GACN,IAAKt8G,KAAKo0a,WAAW93T,GACjB,OAEJ,MAAM9iF,EAAQx5B,KAAKk0a,eAAe53T,EAAO9qF,OACzC,MAAkB,QAAdgI,EAAM7kB,IACC,YAEO,SAAd6kB,EAAM7kB,IACC,kBADX,CAGH,CACD0/Z,WAAW/3T,GACP,IAAKt8G,KAAK6ya,aAAav2T,EAAO9qF,SAAWxxB,KAAKo0a,WAAW93T,GACrD,OAEJ,IAAI6hO,EAAM,gBACV,MAAM3kT,EAAQx5B,KAAKk0a,eAAe53T,EAAO9qF,OACzC,MAAkB,QAAdgI,EAAM7kB,IACNwpU,EAAM,kBAEa,SAAd3kT,EAAM7kB,MACXwpU,EAAM,oBAEHn+U,KAAK6K,aAAakV,IAAIo+T,EAChC,CAODuuF,WAAWpwT,EAAQinE,GAAW,GAC1B,MAAQ08O,cAAa3+R,OAAM6+R,oBAAqB/nP,GAAUp4K,KAAKurZ,SAAUjvS,EAAOivS,UAC1EtuD,EAAaj9V,KAAK89Z,gBAAgBxhT,EAAO9qF,MAAOyuY,EAAaE,GACnE,MAAa,WAAT7+R,GAAsBiiD,EAGnB,IAAIvjL,KAAK4hC,KAAKtsB,OAAOooQ,IAAQA,GAAKlsP,QAAU8qF,EAAO9qF,OAAQyrU,GAFvD,CAACA,EAGf,CAMDq2E,cAActja,GACV,MAAQowZ,gBAAiBhoP,GAAUp4K,KAAKurZ,UACxC,MAAqB,SAAjB6U,EACOqS,GAAajyP,MAAM5mJ,IAAQ5pB,EAAO,GAAE4pB,SAEvB,SAAjBwmY,EACDpwZ,EAAMipF,SAAWjpF,EAAM46K,QACvB56K,EAAO,GAAEowZ,OAClB,CACD5vZ,kBACIxQ,KAAK+5J,aAAa/tJ,IAAIi7E,GAAQjnF,KAAKk/Z,aAC9BhzZ,UAAUlM,KAAKs/Z,cAAcpyZ,KAAKlN,OAC1C,CACDgoL,YACIhoL,KAAKy8W,aAAe+vC,GAAgBxsZ,KAAK4zP,SAAW,IAAIt+O,OAAO+S,IAAM6kY,GAAuB7kY,GAC/F,CACDhY,YAAYpE,GACR,MAAMqoa,EAAaroa,EAAQ21B,KACvB0yY,IAAeA,EAAW3jQ,iBAC1B2jQ,EAAW1zZ,aAAanQ,QAAQH,IAC5BtQ,KAAK6ya,aAAavia,EAAOkhB,QAAS,GAG7C,CACDliB,WACItP,KAAK+5J,aAAa/tJ,IAAIhM,KAAK6K,aAAaoB,QACnCC,UAAU,IAAMlM,KAAKogO,GAAGxiN,gBAChC,CACD/M,cACQ7Q,KAAKw/Z,oBACLx/Z,KAAKw/Z,mBAAmBvuZ,cAExBjR,KAAKue,cACLve,KAAKue,aAAa4O,UAEtBntB,KAAK+5J,aAAa9oJ,aACrB,CACD44Y,sBACI,OAAO7pZ,KAAKgqZ,UAAUH,qBACzB,CACG0qB,6BACA,OAAOv0a,KAAK6K,aAAakV,IAAI,yBAChC,CACDy0Z,aAAal4T,EAAQ9vG,GACjB,MAAMioa,EAAalza,GAAMA,IACpBvB,KAAKuxa,gBAAgBhwa,EAAEuwJ,OAAO7wJ,QAAQM,GAAK,GAAKkza,EAAUlza,EAAEo2B,SACjE,OAAiB,IAAVnrB,IAAgBxM,KAAKqsC,OAAO/rC,SAAWN,KAAK00a,gBAAkBD,EAAUn4T,EAAO3kF,OACzF,CACDg9Y,mBAAmBr4T,GACf,MAAM9vG,EAAQ8vG,EAAOoqS,UACrB,OAAIz+Y,GAAUuE,GACHA,GAASvE,GAAUjI,KAAK00a,gBAAkB,EAAI,IAElD,CACV,CACGjB,qBACA,OAAQzza,KAAKyqZ,YApvQErrY,IAAiC,iBAAbA,GAAyBA,EAASne,QAAQ,SAAU,EAovQ5D2za,CAAc50a,KAAK6kO,WACjD,CACGgwM,oBACA,OAAOze,GAAap2Z,KAAK6kO,WAC5B,CACDgvM,eAAev3T,GACX,OAAOt8G,KAAKyqZ,YAAcnuS,EAAOmuS,aAC5BzqZ,KAAK80a,oBAAsBx4T,EAAOsuS,oBAAoBtqZ,QAvpLlD,EAAC8e,EAAUk9F,IAAWkkT,GAAiBphZ,IAAamhZ,GAAQnhZ,EAAUk9F,IAAWgkT,GAAQlhZ,EAAUk9F,IAAW+jT,GAAUjhZ,EAAUk9F,GAupLtEze,CAAS79F,KAAKyqZ,WAAYnuS,GAClG,CACDiyT,aAAajyT,GACT,OAAQy6H,GAAoBz6H,EAAO9qF,SAAgC,IAAtB8qF,EAAOuoH,UACvD,CACD46L,QAAQnuP,EAAWz0J,GACf,OAAO7c,KAAKmqZ,aAAe5hJ,GAAM,CAAEj3F,YAAWz0J,UACjD,CACDk4Z,eAAez4T,GACX,MAAM04T,EAAah1a,KAAKmqZ,aAAe7tS,EAAO6tS,YAC9C,SAAK6qB,IAAe1pB,GAAkBhvS,MAGpBt8G,KAAKwrZ,WAAaF,GAAkBhvS,KAAgC,IAArBA,EAAOkvS,WACpDwpB,EACvB,CACDZ,WAAW93T,GACP,OAAQy6H,GAAoBz6H,EAAO9qF,QAC5BqhM,GAAS7yN,KAAKurZ,WAAa14L,GAASv2G,EAAOivS,SACrD,CACDxB,iBAAiBztS,GACb,OAAOytS,GAAiBztS,KAAYA,EAAO1kG,WAC9C,CACDq9Z,aAAazoa,EAAOylP,GAChB,OAAOzlP,CACV,CACDgja,gBAAgBlzT,GACZ,MAAM44T,EAAel1a,KAAKypa,kBAAkBzQ,oBAAoB18S,GAChE,OAAOj9F,OAAOC,OAAOD,OAAOC,OAAO,GAAIg9F,EAAO/wF,OAAQ2pZ,EACzD,CACDpX,gBAAgBtsY,EAAOyuY,EAAaE,GAChC,MAAMljE,EAAaj9V,KAAKk0a,eAAe1iZ,IAChCzb,EAAOwqK,GAtQH4/O,IAAyC,QAArBA,EAA6B,CAAC,MAAO,QAAU,CAAC,OAAQ,OAsQ/Dr1G,CAAWq1G,GACnC,IAAIxrZ,GAAMoB,EACV,OAAIknV,EAAWtoV,MAAQoB,EACnBpB,GAAM4rK,EAED08K,EAAWtoV,MAAQ4rK,GAAU0/O,IAClCtrZ,QAAMI,GAEH,CAAEJ,OAAK6c,QACjB,CACD+/Y,gBAAgBz/Q,GACZ,MAAM8hG,EAAU5zP,KAAK4zP,QAAU5zP,KAAK4zP,QAAQt+O,OAAOgnG,GAAUA,EAAOw1C,QAAUA,GAAS,GACvF,OAAOi7P,GAAYP,GAAgB54J,GACtC,CACDs5J,uBAAuB5wS,GACnB,OAAO4wS,GAAuB5wS,EACjC,CACG64T,mBACA,OAAO,IAAIh0a,OAAOnB,KAAK+qZ,mBAAqB,GAAK,EACpD,CACDmpB,eAAe1iZ,GACX,OAAOxxB,KAAK4hC,KAAKvc,KAAKmB,GAAQA,EAAKgL,QAAUA,IAAU,CAAEA,QAC5D,CACGq7X,kBACA,OAAO7sZ,KAAKy8W,YACf,CACD6iD,gBACQt/Z,KAAKw/Z,oBACLx/Z,KAAKw/Z,mBAAmBvuZ,cAE5BjR,KAAKw/Z,mBAAqB,IAAI5zZ,MAC9B,MAAMi0Z,KAAc5iZ,QAASjd,KAAKk/Z,YAAY79Z,IAAIwb,GAAUA,EAAOhD,QAC7DimZ,KAAc7iZ,QAASjd,KAAKk/Z,YAAY79Z,IAAIwb,GAAUA,EAAOs6F,QAC7D4oT,KAAa9iZ,QAASjd,KAAKk/Z,YAAY79Z,IAAIwb,GAAUA,EAAOqtR,OAClElqS,KAAKw/Z,mBAAmBxzZ,IAAI6zZ,EAAYp6Z,QAAK46F,MAAI,EAAGxjF,SAAQy0J,gBACxD,GAA+B,mBAA3BA,EAAU75J,QAAQgH,KAClB,OAEJ,MAAM22Z,EAAeviN,GAASh2M,EAAOpF,QAAQ6kG,OAAO8mQ,UAC9CiyD,GAAkBxiN,GAASvhD,EAAU75J,QAAQ6kG,OAAO8mQ,WACtDpjX,KAAK2ya,mBAAqB,GAAKyC,GAAgBC,KAC/Cr1a,KAAK6/G,KAAKk4S,WAAWqd,EAArB,IAPwC,EAS5C9/Z,MAAO,EAAGg8J,YAAWz0J,YAAa7c,KAAKy/Z,QAAQnuP,EAAWz0J,KAApD,EAA8DuxM,MAAUpuN,KAAKs1a,UAAUpoa,KAAKlN,KAAM8/Z,EAAaC,KAAxC,EAAsD1+Z,MAAKojB,GAAM4tZ,GAAa5tZ,EAAG,CAAE28O,OAAQphQ,KAAKu1a,gBAAgB9wZ,GAAI+wZ,gBAAiB/wZ,EAAE+wZ,oBAA9E,EAAmGn0a,MAAIrB,KAAKy1a,gBAAgBvoa,KAAKlN,QAA3B,EAAmCqgG,MAAIrgG,KAAK6Z,MAAM3M,KAAKlN,QAAjB,EAAyBouN,MAAWh0M,GAAS2lZ,EAAWt6Z,QAAKpE,MAAI,IAAM+Y,IAAP,EAAcozM,MAAUsyM,EAAYr6Z,QAAK46F,MAAIrgG,KAAKm3G,MAAMjqG,KAAKlN,YAC9YkM,UAAUlM,KAAKkqS,KAAKh9R,KAAKlN,OACjC,CACDy1a,gBAAgBhxZ,GACZ,IAAI5H,EAAS4H,EAAE5H,OACf,MAAM8a,EAAS9a,EAAOpF,QAAQ6kG,OAAO3kF,OACrC,GAAIA,GAAUA,EAAOmyX,aAAc,CAC/B,MAAM1vX,EAAMp6B,KAAKk/Z,YAAY9pZ,UACvBsga,EAAYt7Y,EAAI/U,KAAKtH,IAAKA,GAAEtG,QAAQ6kG,OAAO3kF,SAAWA,GACtDnrB,EAAQ4tB,EAAIn5B,QAAQy0a,GAE1B74Z,EAASud,EAAI5tB,GADEiY,EAAE28O,OAAS,EAAIzpO,EAAOw0X,aAAa7rZ,OAAS,GAE9D,CACD,OAAO+xa,GAAa5tZ,EAAG,CAAE5H,UAC5B,CACDy4Z,UAAUxV,EAAaC,EAAYt7Y,GAC/B,MAAM63F,EAAS73F,EAAE5H,OAAOpF,QAAQ6kG,OAC1Bq5T,EAAe31a,KAAKuxa,gBAAgBj1T,EAAOw1C,OAC3CtlJ,EAAQmpa,EAAa10a,QAAQq7G,GAC7BotP,GAAWptP,EAAOgkQ,OAAS9zW,IAAUmpa,EAAar1a,OAAS,EAAc,IAAVkM,EAC/DgF,GAAUiT,EAAE6sJ,UAAU75J,QAAQ6kG,OAAO8mQ,WAAa9mQ,EAAO8mQ,SAC/D,OAAI5xW,IAAWk4V,GACJjlV,EAAE6sJ,UAAU/8D,KACd9uG,QAAK+nN,MAAUsyM,IAAD,EAAetyM,MAAUuyM,IAAD,EAAc1+Z,MAAI,EAAGg2Z,iBAAiBgb,GAAa,CAAEmD,iBAAiB,GAAQ/wZ,EAAG,CAAE4yY,mBADvH,EAGJ38N,MAAG23O,GAAa,CAAEmD,gBAAiBhka,IAAWiT,GACxD,CACD8wZ,iBAAkBjkQ,YAAWz0J,SAAQw6Y,aAAYme,mBAAkB,IAC/D,MAAMh9R,EAAgB37H,EAAOnU,QAAQyD,cACrC,IAAIi1P,GAAS,EACb,GAAIo0K,EAAiB,CACjB,MAAQtqZ,SAASvC,GAAO6vH,GAGxB4oH,EADel2O,GADGstH,EAAc/mC,YAAc,EAE5B4lT,EAAWpiY,MACzBj1B,KAAK6K,aAAakB,MAClBq1P,GAAUA,EAEjB,MAEGA,EAAS61J,GAAe3lP,EAAU5oK,QAAQyD,cAAeqsI,GAE7D,OAAO4oH,CACV,CACDvnP,OAAQgD,SAAQukP,WACZphQ,KAAK6/G,KAAK1/F,SACNngB,KAAK6K,aAAakB,MAClBq1P,GAAUA,GAEdphQ,KAAKs+Z,IAAI37X,SAASA,GAAS9lB,EAAOnU,QAAQyD,cAAei1P,GAC5D,CACDjqJ,QACIn3G,KAAK6/G,KAAKkwC,UACV/vJ,KAAKs+Z,IAAI/tX,MACZ,CACD25P,MAAO54H,YAAWz0J,SAAQukP,SAAQo0K,oBAC9Bx1a,KAAK0ya,eAAexa,QAAQ,CACxB92J,SACAo0K,kBACA7kZ,OAAQ2gJ,EAAU75J,QAAQ6kG,OAC1Bz/F,OAAQA,EAAOpF,QAAQ6kG,QAE9B,EAEL+wE,GAAgBtqL,UAAhB,0BAA6GsqL,IA7hcNrqL,MA6hcuCszZ,IA7hcvCtzZ,MA6hcsEy0Z,IA7hctEz0Z,MA6hckGg1Z,IA7hclGh1Z,MA6hc6Hi1Z,IA7hc7Hj1Z,MA6hc8JymZ,IA7hc9JzmZ,MA6hcoLq2Z,IA7hcpLr2Z,MA6hc4MqQ,OA7hc5MrQ,MA6hc+Ou1Z,IA7hc/Ov1Z,MA6hc6QA,OAApX,EACAqqL,GAAgB92K,UA9hcuFvT,MA8hcvG,MAAiGqqL,GAAjG95K,uEA9hcuGvQ,KA8hcqoB06Z,GAA5uB,GA9hcuG16Z,KA8hcytB6la,GAAh0B,GA9hcuG7la,KA8hc6yB2pa,GAAp5B,eA9hcuG3pa,MA8hcvGyT,EA9hcuGzT,WA8hcvGwQ,iBA9hcuGxQ,MA8hcvGyT,EA9hcuGzT,WA8hcvGwQ,iBA9hcuGxQ,MA8hcvGyT,EA9hcuGzT,WA8hcvGwQ,8DA9hcuGxQ,MA8hcvG,meA9hcuGA,OA8hcvG4kF,+vGA9hcuG5kF,MA+hcnG,GA/hcmGA,MAgic/F,iBAhic+FA,MA2tc/F,iBA3tc+FA,SA8hcvG,MA9hcuGA,MAgic7E,GAhic6EA,MAgic7E,0BAhic6EA,MA2tc1F,GA3tc0FA,MA2tc1F,wBA7Lb,gBA2M4C6la,GAA6G8D,GAAiL2C,GAAkLhiZ,MAA0GoiZ,GAA6LpiZ,MAAiFmhZ,GAA0P/Q,GAAwHjvO,KAA+I4vO,GAA8H/wY,MAA2EA,MAAkEhW,GAAgG64Z,GAAiIj5Z,GAAqR25Z,IA3MtnEp4Z,kBAudA,MAAMk9K,GACF71L,YAAY6nC,EAAQ,EAAGiuJ,EAAWC,GAC9B71L,KAAK2nC,MAAQA,EACb3nC,KAAK41L,UAAYA,EACjB51L,KAAK61L,gBAAkBA,EACvB71L,KAAK81L,QAAU,GACf91L,KAAK+1L,QAAU,GACf,IAAIC,EAAM,EACV,QAASl1L,EAAM,EAAGA,EAAM6mC,EAAO7mC,IAC3Bd,KAAK81L,QAAQ95K,KAAKg6K,GAClBA,GAAOJ,EACP51L,KAAK+1L,QAAQ/5K,KAAK45K,EAEzB,CACD/+J,OAAOozG,GACH,OAAOjqI,KAAK+1L,QAAQ9rD,EACvB,CACDgsD,aAAahsD,GACLjqI,KAAK62B,OAAOozG,KAAcjqI,KAAK41L,WAC/B51L,KAAKk2L,gBAAgBjsD,EAAUjqI,KAAK61L,gBAE3C,CACDM,eAAelsD,GACPjqI,KAAK62B,OAAOozG,GAAYjqI,KAAK41L,WAC7B51L,KAAKk2L,gBAAgBjsD,GAAiC,EAAvBjqI,KAAK61L,gBAE3C,CACDogC,WAAWhsF,GACP,OAAOjqI,KAAK62B,OAAOozG,GAAYjqI,KAAK41L,SACvC,CACDppL,MAAMm2B,GACF,GAAIA,EAAW,EACX,OAEJ,MAAM/Q,EAAS5xB,KAAK81L,QAAQnwK,OAAO,CAACywK,EAAM/gL,EAASvU,SAClCiU,IAATqhL,EACOA,EAEF/gL,IAAYstB,EACV7hC,EAEFuU,EAAUstB,EACR7hC,EAAM,OADZ,OAINiU,GACH,YAAkBA,IAAX6c,EAAuB5xB,KAAK2nC,MAAQ,EAAI/V,CAClD,CACDjJ,OAAOshH,GACH,OAAOjqI,KAAK81L,QAAQ7rD,EACvB,CACDr9B,cACI,OAAO5sG,KAAK+1L,QAAQpwK,OAAO,CAACywK,EAAMC,IAASD,EAAOC,EAAM,EAC3D,CACDH,gBAAgBjsD,EAAU/hI,GAClBlI,KAAK2nC,MAAQ,IACb3nC,KAAK+1L,QAAQ9rD,IAAa/hI,EAC1BlI,KAAK81L,QAhEF,EAAC17J,EAAKt5B,EAAKoH,IAAW,IAC9BkyB,EAAI14B,MAAM,EAAGZ,EAAM,MAClBs5B,EAAI14B,MAAMZ,EAAM,GAAGO,IAAIgnB,GAAKA,EAAIngB,IA8Db0/D,CAAO5nE,KAAK81L,QAAS7rD,EAAU/hI,GAErD,EAML,MAAMouL,GACFx2L,YAAY6oB,GACR3oB,KAAK2oB,OAASA,CACjB,EAKL,MAAM4tK,GACFz2L,YAAYk0C,EAAMtpB,GACd1qB,KAAKg0C,KAAOA,EACZh0C,KAAK0qB,KAAOA,CACf,EAKL,MAAMkrZ,IAMN,MAAMp/O,GACF12L,YAAY22L,GACRz2L,KAAKy2L,iBAAmBA,EACxBz2L,KAAK02L,YAAc,CACtB,CACDvqK,OAAO0qK,EAAkB7iJ,EAAMtpB,EAAMid,GACjC3nC,KAAK62L,iBAAmBA,EACxB72L,KAAK02L,YAAc1iJ,EACnBh0C,KAAK82L,WAAa9iJ,EAAOtpB,EACzB1qB,KAAK0qB,KAAOA,EACZ1qB,KAAK2nC,MAAQA,EACb3nC,KAAKigP,cAAgB,EACrB,MAAMjpD,EAAU,IAAIz9B,KAAgB,IAAI+8B,GAAat2L,KAAK62L,iBAAiBluK,OAAOqrB,KAClF,YAAK+lH,aAAer1E,YAAkB7wD,IAClC7zB,KAAKiR,cACLjR,KAAKq3L,mBAAqBr3L,KAAKy2L,iBAAiBvqL,UAAUmc,IAAKroB,KAAKs3L,SAASjvK,GAAGwL,GAAtD,GAC3B3nB,UAAUmc,GAAK2uK,EAAQ/xL,KAAKojB,IACxB2uK,CACV,CACD7pK,UACIntB,KAAKiR,cACDjR,KAAK+5J,cACL/5J,KAAK+5J,aAAa9oJ,aAEzB,CACDqmL,UAAWjhK,YAAW0oE,eAAc4wD,eAAc5wB,gBAAgBlrG,GAC9D,GAAI7zB,KAAKigP,gBAAkB5pN,EACvB,OAEJ,MAAMi+G,EAAKt0I,KAAKigP,eAAiB5pN,EACjCr2B,KAAKigP,cAAgB5pN,EACrB,IAAIohK,GAAiBz3L,KAAK62L,iBAAiBrqL,MAAM6pB,GAC7Cw/Y,GAAkB71a,KAAK62L,iBAAiBluK,OAAO8uK,IACnD,MAAMC,GAAgB13L,KAAK62L,iBAAiBrqL,MAAM6pB,EAAY0oE,GAC9D,IAAKu1C,EACD,GAAIojD,IAAiB13L,KAAK82L,YAAc92L,KAAK82L,WAAa92L,KAAK2nC,MAAO,CAClE,MAAM2jF,GAAYmsE,GAAiBz3L,KAAK0qB,KAAQ1qB,KAAK2nC,MACjD2jF,GAAW,IACXmsE,IAAkCnsE,GAClCuqT,GAAkB71a,KAAK62L,iBAAiBluK,OAAO8uK,KAEnDz3L,KAAK02L,YAAce,GACnB5jK,EAAS5uB,KAAK,IAAIqxL,GAAau/O,KAC/B,IAAIC,GAAW91a,KAAK02L,YAAc12L,KAAK0qB,KACvC1qB,KAAK82L,WAAapiK,KAAK9Z,IAAIk7Z,GAAU91a,KAAK2nC,OAC1CmuY,GAAWA,GAAW91a,KAAK2nC,MAAQ3nC,KAAK2nC,MAAQ3nC,KAAK02L,YAAc12L,KAAK0qB,KACxEmJ,EAAS5uB,KAAK,IAAIsxL,GAAWv2L,KAAK02L,YAAa12L,KAAK0qB,MACvD,MAEoBilI,EAAe5wB,EAAe1oG,EArD/B,GAuDZxC,EAAS5uB,KAAK,IAAI2wa,IAI9B,GAAIthS,GAAMmjD,GAAiBz3L,KAAK02L,YAAa,CACzC,MAAMiB,GAAmBjjK,KAAKI,MAAkB,GAAZ90B,KAAK0qB,MACzC1qB,KAAK02L,YAAchiK,KAAK7Z,IAAI48K,GAAiBE,GAAkB,GAC/D9jK,EAAS5uB,KAAK,IAAIqxL,GAAat2L,KAAK62L,iBAAiBluK,OAAO3oB,KAAK02L,eACjE12L,KAAK82L,WAAapiK,KAAK9Z,IAAI5a,KAAK02L,YAAc12L,KAAK0qB,KAAM1qB,KAAK2nC,OAC9D9T,EAAS5uB,KAAK,IAAIsxL,GAAWv2L,KAAK02L,YAAa12L,KAAK0qB,MACvD,CACJ,CACDzZ,cACQjR,KAAKq3L,qBACLr3L,KAAKq3L,mBAAmBpmL,cACxBjR,KAAKq3L,wBAAqBtiL,EAEjC,EAML,MAAMgha,GAAwB,8CAgF9B,MAAMC,WAA+B1hC,GACjCx0Y,YAAY63B,EAAQqyX,GAChB/rY,MAAM0Z,EAAQqyX,GACdhqZ,KAAK23B,OAASA,CACjB,CACG/f,kBACA,OAAO5X,KAAKqyB,SAAWryB,KAAKqyB,SAASza,iBAAc7C,CACtD,EAELiha,GAAuBjza,UAAvB,0BAAoHiza,IAhvdbhza,MAgvdqDsxY,GAA5J,IAhvduGtxY,MAgvdwHymZ,GAA/N,KACAusB,GAAuBz/Z,UAjvdgFvT,MAivdvG,MAAwGgza,GAAxGzia,iFAjvduGvQ,MAivdvGwT,EAKqEy4K,GALrE,cAjvduGjsL,MAivdvGyT,EAjvduGzT,WAivdvGwQ,gCAjvduGxQ,MAivd2E,CAC1K,CACImD,QAASmuY,GACTp2X,eAAaC,OAAW,IAAM63Z,OApvd6Dhza,OAivdvGuf,0DAkFA,MAAM0zZ,GACFn2a,YAAY0wL,EAAkB1nL,EAAI6B,EAAUG,GACxC9K,KAAKwwL,iBAAmBA,EACxBxwL,KAAK8I,GAAKA,EACV9I,KAAK2K,SAAWA,EAChB3K,KAAK8K,OAASA,EACd9K,KAAKye,KAAO,WACZze,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKswa,aAAetwa,KAAK2K,SAASmF,OAAO9P,KAAK8I,GAAGqD,cAAe,QAASnM,KAAKuY,QAAQrL,KAAKlN,OAC3FA,KAAKk2a,eAAiBl2a,KAAK2K,SAASmF,OAAO9P,KAAK8I,GAAGqD,cAAe,UAAWnM,KAAKmqN,UAAUj9M,KAAKlN,MAA3E,EAE7B,CACDiW,wBACIjW,KAAKm2a,iBACR,CACDtla,cACQ7Q,KAAKswa,cACLtwa,KAAKswa,eAELtwa,KAAKk2a,gBACLl2a,KAAKk2a,gBAEZ,CACD39Z,UACQvY,KAAKwwL,iBAAiBxqL,QAAQ05I,SAC9B1/I,KAAK8K,OAAO4G,IAAI,KACZ,MAAMw4M,EAAKlqN,KAAKwwL,iBAAiB20N,cAAcnlZ,KAAKy5L,WACpDywB,EAAGjxH,SAAU,EACbixH,EAAGhxH,UAAW,EACdl5F,KAAKwwL,iBAAiBvkL,QAAQmE,KAAK85M,EAAnC,EAGX,CACDC,UAAU1lM,GACFA,EAAEvU,UAAYC,YACdnQ,KAAKuY,SAEZ,CAID49Z,kBACIn2a,KAAK2K,SAASqD,YAAYhO,KAAK8I,GAAGqD,cAAe,UAAWnM,KAAKwwL,iBAAiB7N,WAAW3iL,KAAKy5L,WACrG,EAELw8O,GAA2Blza,UAA3B,0BAAwHkza,IAh3djBjza,MAg3d6D2rL,IAh3d7D3rL,MAg3d0FA,OAh3d1FA,MAg3doHA,OAh3dpHA,MAg3d6IA,OAApP,EACAiza,GAA2B3ia,UAj3d4EtQ,MAi3dvG,MAA4Giza,GAA5G1ia,4FAj3duGvQ,MAi3dvG,gFAcA,MAAMkrB,GAAe,UAIrB,MAAMkoZ,GACFt2a,YAAY6xC,GACR3xC,KAAK2xC,YAAcA,CACtB,CACD/kB,UAAUzU,EAAUw8C,EAAWxlB,GAC3B,IAAK4nM,GAAoBpiL,GAAY,CACjC,MAAMzsD,KAAQyqB,OAAOgiC,EAAfzsD,CAA0BiQ,GAChC,OAAK4+N,GAAoB5nM,GAGlBjnC,EAFIlI,KAAK+gE,YAAY5xB,EAAQjnC,EAGvC,CACD,OAAOiQ,CACV,CACD4oD,YAAY5xB,EAAQjnC,GAChB,MAAM2pC,EAAO7xC,KAAK2xC,YAClB,OAAIvhB,GAAS+e,IAAWA,EAAOtc,MAAM3E,IAC1B2jB,EAAK1C,OAAOA,EAAQjnC,GAExB2pC,EAAKpwC,SAASyG,EAAOinC,EAC/B,EAELinY,GAAkBrza,UAAlB,0BAA+Gqza,IAz5dRpza,MAy5d2Cqza,MAAlJ,MACAD,GAAkBE,WA15dqFtza,MA05dvG,qBAA6Goza,GAA7GG,UAaA,MAAMC,GACF12a,YAAYy1O,EAAay0K,EAAWzmY,EAAqBmnK,GACrD1qL,KAAKu1O,YAAcA,EACnBv1O,KAAKgqZ,UAAYA,EACjBhqZ,KAAKujB,oBAAsBA,EAC3BvjB,KAAK0qL,YAAcA,EACnB1qL,KAAK2+Y,OAAQ,EACb3+Y,KAAKykP,WAAY,EACjBzkP,KAAKk5Y,WAAY,EACjBl5Y,KAAKs8Z,iBAAmB,GACxBt8Z,KAAKy2a,qBAAuB,EAC/B,CACGC,uBACA,OAAO12a,KAAK22a,UAAU32a,KAAKs8G,OAC9B,CACG2tB,aAASz9H,GACTxM,KAAK42a,UAAYpqa,EACjBxM,KAAKs9Z,mBACR,CACGrzR,eACA,OAAOjqI,KAAK42a,SACf,CACGv4B,eACA,IAAMr+Y,KAAKu1O,YAAYmoK,cAAe19Y,KAAK2+Y,QAAW3+Y,KAAK62a,iBACvD,OAAO,EAEX,MAAMC,EAAc92a,KAAKu1O,YAAY6oK,cAAcp+Y,KAAKiqI,SAAUjqI,KAAKs8G,QACvE,OAAOt8G,KAAK+2a,gBAAgBD,EAAa92a,KAAKs8G,OACjD,CACG06T,kBACA,OAAOh3a,KAAKk5Y,WAAal5Y,KAAKykP,SACjC,CACGs5J,gBACA,OAAO/9Y,KAAKu1O,YAAY99N,QAAQzX,KAAKiqI,UAAUn9F,KAClD,CACGt1B,sBACA,OAAOxX,KAAKs8Z,gBACf,CACG2a,0BACA,YAAKR,qBAAqBlvP,UAAYvnL,KAAK+9Y,UAC3C/9Y,KAAKy2a,qBAAqB93B,MAAQ3+Y,KAAK2+Y,MACvC3+Y,KAAKy2a,qBAAqBn6T,OAASt8G,KAAKs8G,OACxCt8G,KAAKy2a,qBAAqBt+Z,SAAWnY,KAAKmY,SAC1CnY,KAAKy2a,qBAAqB14B,UAAY/9Y,KAAK+9Y,UAC3C/9Y,KAAKy2a,qBAAqBxsS,SAAWjqI,KAAKiqI,SACnCjqI,KAAKy2a,oBACf,CACGtnY,aACA,GAAIm8W,GAAkBtrZ,KAAKs8G,UAAYy6H,GAAoB/2O,KAAKs8G,OAAOntE,QACnE,OAAO8mW,GAAcj2Y,KAAKs8G,OAAOntE,OAGxC,CACG+nY,oBACA,OAAOl3a,KAAKs8G,OAAO9qF,QAAUxxB,KAAKs8G,OAAO1kG,WAC5C,CACGmyY,uBACA,OAAOA,GAAiB/pZ,KAAKs8G,UAAYt8G,KAAKs8G,OAAO1kG,WACxD,CACGgyY,0BACA,OAAO5pZ,KAAKgqZ,UAAUJ,oBAAoB5pZ,KAAKiqI,SAClD,CACGktS,6BACA,OAAOn3a,KAAKujB,oBAAoBxD,IAAI,yBACvC,CACG+pY,mBACA,OAAOA,GAAa9pZ,KAAKs8G,UAAYt8G,KAAKs8G,OAAO1kG,WACpD,CACGu0Y,mBACA,OAAOK,GAAgB,CAACxsZ,KAAKs8G,QAChC,CACGu6T,uBACA,SAAK72a,KAAKs8G,QAAUt8G,KAAK22a,UAAU32a,KAAKs8G,WAGR,IAAzBt8G,KAAKs8G,OAAO4jL,QACtB,CACDl4G,YACIhoL,KAAKs9Z,mBACR,CACDjtZ,YAAY+ma,GACRp3a,KAAKq3a,uBACR,CACDpha,wBACIjW,KAAKq3a,uBACR,CACDV,UAAUr6T,GACN,OAAOA,aAAkB05T,EAC5B,CACDe,gBAAgBD,EAAax6T,GACzB,QAAKr0G,GAAU6ua,OAGX7ua,GAAUq0G,EAAOihS,eAGdt1Y,GAAU6ua,EAAYhqY,QAAU7kC,GAAU6ua,EAAYhqY,MAAM/sB,IAAIu8F,EAAO9qF,QACjF,CACD8rY,oBACQt9Z,KAAK0qL,cACL1qL,KAAK0qL,YAAYzgD,SAAWjqI,KAAK42a,UAExC,CACDS,wBACI,IAAKr3a,KAAKs8G,OAAO1kG,YACb,OAEJ,MAAMH,EAAUzX,KAAKs8Z,iBACrB7kZ,EAAQknY,MAAQ3+Y,KAAK2+Y,MACrBlnY,EAAQ6kG,OAASt8G,KAAKs8G,OACtB7kG,EAAQU,SAAWnY,KAAKmY,SACxBV,EAAQwyH,SAAWjqI,KAAKiqI,SACxBxyH,EAAQyyH,YAAclqI,KAAKkqI,YAC3BzyH,EAAQ8vK,UAAYvnL,KAAKmY,QAC5B,EAELq+Z,GAAczza,UAAd,0BAA2Gyza,IA3heJxza,MA2hemC85Y,IA3henC95Y,MA2he2DymZ,IA3he3DzmZ,MA2heiFqQ,OA3hejFrQ,MA2heoHi8Y,GAA3N,KACAu3B,GAAcjga,UA5heyFvT,MA4hevG,MAA+Fwza,GAA/Fjja,+EA5heuGvQ,MA4hevG,uOA5heuGA,OA4hevG4kF,q9BA5heuG5kF,MA6he/F,KA7he+FA,MA8he3F,2BA9he2FA,MA2je3F,2BA3je2FA,SA4hevG,MA5heuGA,MA6hejF,uBA7heiFA,MA8he5E,GA9he4EA,MA8he5E,mBA9he4EA,MA2je5E,GA3je4EA,MA2je5E,mBA/B3B,gBAsE4Cw4J,MAAgburQ,MAA8xBz5Y,MAAqEA,MAAiFA,MAAiFA,MAAwHA,MAA0GpW,GAAqR++Z,GAAwH/P,MAAuFA,MAAkKA,MAAgK54Y,MAA6D44Y,MAA4QkQ,IAtElzF39Z,kBAgLA,MAAM6+Z,GACFx3a,YAAYugZ,EAAe4e,EAAkBp0Z,GACzC7K,KAAKqgZ,cAAgBA,EACrBrgZ,KAAKi/Z,iBAAmBA,EACxBj/Z,KAAK6K,aAAeA,EACpB7K,KAAKu3a,qBAAsB,EAC3Bv3a,KAAKw3a,YAAa,EAClBx3a,KAAK4ya,kBAAoB,EACzB5ya,KAAKqsC,OAAS,GACdrsC,KAAKi2N,YAAa,CACrB,CACGwhN,qBACA,OAAO,CACV,CACDzvP,YACI,MAAM2zN,EAAY,CACd7uW,MAAO9sC,KAAKwmB,KAAKjH,KACjBk/N,WAAYz+O,KAAKwmB,KAAKha,MACtBgvY,YAAaD,GAAgBv7Y,KAAKwmB,KAAKg1X,cAE3Cx7Y,KAAKi2N,WAAaj2N,KAAKqgZ,cAAcpqL,WAAW0lL,EACnD,CACD+7B,gBAAgBlxZ,GACZ,OAAO,IAAIrlB,MAAMqlB,EAAKsrI,MACzB,CACD6lR,YAAYnxZ,GACR,YAAK65X,cAActE,UAAUv1X,IACtB,CACV,CACDoxZ,UAAUpxZ,GACN,MAAMqxZ,GAAc73a,KAAKqsC,QAAU,IAAI/rC,OACjCw3a,EAAe93a,KAAKw3a,WAAa,EAAI,EAC3C,GAAIx3a,KAAK88W,qBACL,OAAO+6D,EAAa,EAAIC,EAAetxZ,EAAKsrI,MAEhD,IAAI6jN,EAAcg3C,GAAY3sZ,KAAK4zP,SACnC,OAAI5zP,KAAKu3a,oBACE5hE,EAEJkiE,EAAaliE,EAAcmiE,EAAetxZ,EAAKsrI,KACzD,CACDimR,iBACI,OAAO/3a,KAAKu3a,oBAAsB,EAAIv3a,KAAK4ya,iBAC9C,CACDoF,WACI,OAAIh4a,KAAKu3a,oBACE,eAEJ,UACV,CACDnlB,eAAe5rY,GACX,OAAOxmB,KAAKi/Z,iBAAiB7M,eAAe5rY,EAC/C,CACD+rY,WAAW/rY,GACP,OAAOxmB,KAAKi/Z,iBAAiB1M,WAAW/rY,EAC3C,CACDi3V,oBAAoBj3V,GAChB,OAAOxmB,KAAKi/Z,iBAAiBxhD,oBAAoBj3V,EACpD,CACGyxZ,uBACA,MAAMC,EAAal4a,KAAKi2N,WAAa,gBAAkB,cACvD,OAAOj2N,KAAK6K,aAAakV,IAAIm4Z,EAChC,EAELZ,GAAqBv0a,UAArB,0BAAkHu0a,IA5weXt0a,MA4weiDy4Y,IA5wejDz4Y,MA4we2EivZ,IA5we3EjvZ,MA4wewGqQ,OAA/M,EACAika,GAAqB/ga,UA7wekFvT,MA6wevG,MAAsGs0a,GAAtG/ja,sFA7weuGvQ,MA6wevG,+wCA7weuGA,MA8we/F,2BA9we+FA,MAmxe/F,iBAnxe+FA,MAuze/F,4BA1CR,MA7weuGA,MA8wehF,+BA9wegFA,MAmxezD,GAnxeyDA,MAmxezD,yDAnxeyDA,MAuzehF,GAvzegFA,MAuzehF,+BA1CvB,gBAiE4CsqB,MAAiFA,MAA0GmhZ,GAA0PnhZ,MAA2EhW,GAAgGgW,MAAqI8oZ,IAjEjxB39Z,kBAgLA,MAAM0/Z,GACFr4a,YAAYwgZ,EAAgBD,EAAe+3B,EAAoB7iM,EAAa1qO,EAAcC,EAAQH,GAAUjC,GAAS8rG,GAAWg8E,GAAkB6nP,GAAsB5O,GAAmBxuZ,IACvLjb,KAAKsgZ,eAAiBA,EACtBtgZ,KAAKqgZ,cAAgBA,EACrBrgZ,KAAKo4a,mBAAqBA,EAC1Bp4a,KAAKu1O,YAAcA,EACnBv1O,KAAK6K,aAAeA,EACpB7K,KAAK8K,OAASA,EACd9K,KAAK2K,SAAWA,GAChB3K,KAAK0I,QAAUA,GACf1I,KAAKw0G,UAAYA,GACjBx0G,KAAKwwL,iBAAmBA,GACxBxwL,KAAKq4a,qBAAuBA,GAC5Br4a,KAAKypa,kBAAoBA,GACzBzpa,KAAKib,kBAAoBA,GACzBjb,KAAK4zP,QAAU,GACf5zP,KAAKqsC,OAAS,GACdrsC,KAAKg0C,KAAO,EACZh0C,KAAKs4a,cAAgBt4a,KAAK6K,aAAakV,IAAI,aAC3C/f,KAAKojX,UAAW,EAChBpjX,KAAKu3a,qBAAsB,EAC3Bv3a,KAAKu4a,kBAAmB,EACxBv4a,KAAK2ya,mBAAqB,EAC1B3ya,KAAK4ya,kBAAoB,EACzB5ya,KAAKk2N,QAAUsjM,GACfx5Z,KAAKw4a,SAAW,IAAM,KACtBx4a,KAAKy4a,wBAA0Bz4a,KAAKib,kBAAkBwlY,YAAYv0Y,UAAWkO,IAASpa,KAAK04a,mBAAmBt+Z,KAC9Gpa,KAAK24a,eAAiB34a,KAAK24a,eAAezra,KAAKlN,MAC/CA,KAAK44a,eAAiB54a,KAAK44a,eAAe1ra,KAAKlN,KAClD,CACG69Y,kBACA,OAAO79Y,KAAKu1O,YAAYsoK,WAC3B,CAEGq1B,2BACA,OAAOlza,KAAK4ya,kBAAoB5ya,KAAK2ya,oBAAsB3ya,KAAKw8W,YAAcx8W,KAAK4zP,SAAStzP,MAC/F,CACDu4a,eAAeryZ,EAAM81F,GACjB,OAAOt8G,KAAKq4a,qBAAqB1xB,eAAengY,EAAM81F,IAClDt8G,KAAK84a,cAActyZ,GAAQ,OAAS,OAC3C,CACDu1X,UAAUvvY,EAAO2L,GACb,YAAKmoY,eAAevE,UAAUvvY,EAAO2L,IAC9B,CACV,CACD89M,WAAW8iN,GACP,OAAO/4a,KAAKsgZ,eAAerqL,WAAW8iN,EAASvsa,MAAOusa,EAASx5Z,KAClE,CACDy5Z,mBAAmBD,GAEf,OADiB/4a,KAAKi2N,WAAW8iN,GACf,YAAc,UACnC,CACDE,kBAAkBF,GACd,MAAMb,EAAal4a,KAAKi2N,WAAW8iN,GAAY,iBAAmB,eAClE,OAAO/4a,KAAK6K,aAAakV,IAAIm4Z,EAChC,CACDgB,QAAQ1yZ,GACJ,MAAqB,UAAdA,EAAK/H,IACf,CACD06Z,WAAW3yZ,GACP,OAAQxmB,KAAKk5a,QAAQ1yZ,KAAUxmB,KAAKo5a,SAAS5yZ,EAChD,CACD4yZ,SAAS5yZ,GACL,MAAqB,WAAdA,EAAK/H,IACf,CACD46Z,4BAA4B7yZ,GACxB,MAAMuoY,EAAa,CAAExvY,KAAMiH,EAAKjH,KAAM/S,MAAOga,EAAKi4N,WAAY+8J,YAAah1X,EAAKsmB,MAAM0uW,aACtF,OAAOx7Y,KAAK67Y,kBAAkBkT,EACjC,CACDuqB,0BAA0B9yZ,GACtB,MAAMrO,EAAW,CAAEoH,KAAMiH,EAAKsmB,MAAMvtB,KAAM/S,MAAOga,EAAKi4N,WAAY+8J,YAAah1X,EAAKsmB,MAAM0uW,aAC1F,OAAOx7Y,KAAK67Y,kBAAkB1jY,EACjC,CACD0jY,kBAAkBr1X,GACd,OAAOxmB,KAAKqgZ,cAAcxE,kBAAkBr1X,EAC/C,CACD+yZ,sBAAsB/yZ,GAClB,OAAOxmB,KAAKqgZ,cAAcxE,kBAAkBr1X,EAAKg1X,YACpD,CACDg+B,MAAMhzZ,GACF,OAAOA,EAAKha,MAAQ,GAAM,CAC7B,CACDuvQ,eACI,OAAO/7Q,KAAKggO,aAA0C,IAA5BhgO,KAAKggO,WAAWtgF,OAC7C,CACDo5R,cAActyZ,GACV,OAAOxmB,KAAKwwL,iBAAiB7N,WAAWn8J,EAAKha,MAChD,CACDmsa,eAAensa,EAAOga,GAClB,MAAkB,SAAdA,EAAK/H,OACL+H,EAAKk3X,UAAY19Y,KAAKu1O,YAAY+oK,UAAU93X,EAAKha,QAE9CxM,KAAKk2N,QAAQ1pN,EAAOga,EAC9B,CACDoyZ,eAAepsa,EAAOga,GAClB,OAAOxmB,KAAKi5Y,eAAiBzsY,EAAQga,CACxC,CACDwhK,YACQhoL,KAAK88W,qBACL98W,KAAKy5a,mBAAqBjtB,GAAgBxsZ,KAAKu3a,oBAAsBv3a,KAAK4zP,QAAU5zP,KAAK4zP,QAAQx+O,UAAU1T,MAAM,IAGjH1B,KAAKy5a,mBAAqB,GAE1Bz5a,KAAKojX,SACLpjX,KAAK05a,2BACD15a,KAAK88W,qBAAuB98W,KAAK44Z,iBAAiB1H,yBAAyB5wZ,OAAS,EAGxFN,KAAK05a,2BAA6B,CAEzC,CACD/oa,qBACQ3Q,KAAK25a,WACL35a,KAAK45a,wBAEZ,CACDvpa,YAAYpE,IACR,EAAIs4Z,MAAY,UAAWt4Z,GAAS,IAChCjM,KAAKo4a,mBAAmB9lY,QAE/B,CACDonW,gBAAgBzvQ,GACZ,IAAI1jG,EAAMvmC,KAAKg0C,KAAOi2F,EAClBjqI,KAAK64Y,oBACLtyW,GAAO,GAEX,MAAMszY,EAAmB,EAAItzY,EACvBuzY,EAAe95a,KAAKu1O,YAAYqoK,WAAa,EAAI,EACjDm8B,EAAkB3jB,GAAap2Z,KAAK6kO,YAAc,EAAI,EAE5D,OAAOg1M,GADgB75a,KAAKypa,kBAAkBzY,YAAc+oB,EAAkBD,EAEjF,CACDE,qBACI,OAAOh6a,KAAKypa,kBAAkBzY,YAAc,GACvCoF,GAAap2Z,KAAK6kO,YAAc,EAAI,EAC5C,CACD80K,gBAAgBr9R,GACZ,OAAKr0G,GAAUq0G,EAAOoqS,WAGfpqS,EAAOoqS,WAAa1mZ,KAAK64Y,kBAAoB,EAAI,IAF7C,CAGd,CACDvpY,WACItP,KAAK8K,OAAO+E,kBAAkB,KAC1B,MAAMyZ,EAAetpB,KAAKspB,aAAapc,KAAKlN,MACtC8lZ,EAAwB9lZ,KAAK2K,SAASmF,OAAO9P,KAAK0I,QAAQyD,cAAe,YAAamd,GACtF2wZ,EAAsBj6a,KAAK2K,SAASmF,OAAO9P,KAAK0I,QAAQyD,cAAe,UAAWmd,GAClFu+M,EAAoB7nO,KAAK2K,SAASmF,OAAO9P,KAAK0I,QAAQyD,cAAe,QAASmd,GAC9E4wZ,EAA0Bl6a,KAAK2K,SAASmF,OAAO9P,KAAK0I,QAAQyD,cAAe,cAAemd,GAC1F6wZ,GAAyBn6a,KAAK2K,SAASmF,OAAO9P,KAAK0I,QAAQyD,cAAe,aAAcmd,GACxF8wZ,GAAuBp6a,KAAK2K,SAASmF,OAAO9P,KAAK0I,QAAQyD,cAAe,WAAYmd,GAC1FtpB,KAAK6nO,kBAAoB,KACrBi+K,IACAm0B,IACApyM,IACAqyM,GAAuB,EAE3Bl6a,KAAKq6a,kBAAoB,KACrBF,KACAC,IAAoB,CACvB,GAEL,IAAIE,EAAuBt6a,KAAK6K,aAAakV,IAAI,aACjD/f,KAAK6K,aAAaoB,QAAQC,UAAU,KAC5BlM,KAAKs4a,gBAAkBgC,IACvBt6a,KAAKs4a,cAAgBt4a,KAAK6K,aAAakV,IAAI,aAC3Cu6Z,EAAuBt6a,KAAKs4a,gBAGvC,CACDzna,cACQ7Q,KAAK6nO,mBACL7nO,KAAK6nO,oBAEL7nO,KAAKq6a,mBACLr6a,KAAKq6a,oBAETr6a,KAAKy4a,wBAAwBxna,cAC7BC,aAAalR,KAAKu6a,aACrB,CACD58B,cAAcnxY,EAAO8vG,GACjB,OAAOt8G,KAAKu1O,YAAYmoK,aAAe19Y,KAAKu1O,YAAYgpK,eAAe/xY,EAAO8vG,EACjF,CACDk+T,aAAahua,GACT,OAAOxM,KAAKu1O,YAAYmoK,aAAe19Y,KAAKu1O,YAAY+oK,UAAU9xY,EACrE,CACGswW,2BACA,OAAO98W,KAAK44Z,iBAAiB97C,oBAChC,CACG87C,uBACA,OAAO54Z,KAAKypa,kBAAkB7Q,gBACjC,CACGjM,kBACA,OAAOA,GAAY3sZ,KAAK4zP,QAC3B,CACG6mL,qBACA,OAAO9tB,GAAY3sZ,KAAKw8W,YAAcx8W,KAAK4zP,QAC9C,CACG9qE,cACA,OAAO9oL,KAAK2sZ,YAAc3sZ,KAAKqsC,OAAO/rC,QAAUN,KAAK64Y,kBAAoB,EAAI,EAChF,CACG6hC,oBACA,OAAO16a,KAAKojX,SAAWpjX,KAAK44Z,iBAAiB3H,sBAAwBjxZ,KAAK44Z,iBAAiB1H,wBAC9F,CACDypB,gBAAgBn0Z,GACZ,OAAQA,EAAKjH,KAAK0uY,UACrB,CACD2sB,sBAAsBt+T,GAClB,MAAM44T,EAAel1a,KAAKypa,kBAAkBzQ,oBAAoB18S,GAChE,OAAOj9F,OAAOC,OAAOD,OAAOC,OAAO,GAAIg9F,EAAO/wF,OAAQ2pZ,EACzD,CACD3Y,gBACIv8Z,KAAK45a,wBACR,CACG/gC,wBACA,OAAO5wY,GAAUjI,KAAK00a,eACzB,CACDprZ,aAAaizX,GACT,MAAM7zY,EAAU1I,KAAK0I,QAAQyD,cACvB0Q,EAAS7c,KAAK8lF,YAAYy2T,GAChC,IAAI3yQ,EAAMv2E,EAAK0X,EAAMu0U,GACjBppQ,GAAgBr5H,EACpB,GACI+sH,EAAOnhI,GAAQytI,GAAeskQ,GAAgB,OAC9CnnV,EAAM5qD,GAAQmhI,EAAM4wQ,GAAgB,OACpCzvU,EAAOtiE,GAAQ4qD,EAAKmnV,GAAgB,UACpCtkQ,GAAgBnrE,EAChBu0U,GAAc34N,GAAezwC,GAAeqkQ,GAAe,UAAW7xY,SACjEqiE,GAAQA,IAASriE,IAAY42Y,IACtC,GAAI11Q,IAAS12G,GAAW02G,EAAMmsS,MACzB7iZ,GAAWmgC,EAzgCK,gEA0gCjB0X,IAASriE,IAAY42Y,KACrBt/Y,KAAKu1O,YAAYioK,qBACC3gY,IAAW+sH,GAAQ+wQ,GAAsB99X,GAAQ,IAChD29X,GAAgB,QAAhBA,CAAyB39X,IAAYqW,GAAWrW,EAzgChD,WA0gCd8pK,GAAe9pK,EAAQ09X,GAtgCP,8BAsgCiD3wQ,KAAO,CACzE,MAAMxvH,GAAOpa,KAAK66a,cAAcjxS,EAAMv2E,EAAKkpV,GACrB,cAAlBA,EAAS99X,MAA0C,eAAlB89X,EAAS99X,KAC1Cze,KAAKw0G,UAAUsiS,cAAc1mY,KAAKgK,IAEX,YAAlBmiY,EAAS99X,MAAwC,aAAlB89X,EAAS99X,KAC7Cze,KAAKw0G,UAAUuiS,YAAY3mY,KAAKgK,KAG5BA,GAAKmkY,iBAAmBv+Y,KAAKu1O,YAAYkoK,UAAUlB,MAC7B,UAAlBA,EAAS99X,KACTze,KAAKu6a,aAAe7na,WAAW,KAC3B1S,KAAK86a,cAAc1ga,GAAnB,EACD,GAGHpa,KAAK86a,cAAc1ga,IAIlC,CAER,CACD0ga,cAAc1ga,GACVpa,KAAKw0G,UAAUk0E,UAAUt4K,KAAKiP,OAAOC,OAAOlF,EAAM,CAC9CikY,SAAUjkY,EAAK2ga,aAAe3ga,EAAKmkY,iBAE1C,CACDm6B,mBAAmBt+Z,GACXA,EAAKlK,UAAYC,YACjBnQ,KAAKspB,aAAalP,EAEzB,CACDyga,cAAcjxS,EAAMv2E,EAAKkpV,GACrB,MAAM/vY,EA5RU,EAACo9H,EAAMm4C,KAC3B,IAAIoI,EAAY,EAChB,QAASrpL,EAAM,EAAGA,EAAMihL,EAAMzhL,OAAQQ,IAAO,CACzC,GAAIihL,EAAMjhL,KAAS8oI,EACf,OAAOugD,EAENj3J,GAAW6uJ,EAAMjhL,GAAM,kCACxBqpL,GAEP,GAmRiB6wP,CAAgBpxS,EAAMv2E,EAAI0uH,OAClCzlE,EAASt8G,KAAK4zP,QAAQx+O,UAAU5I,GAChC09H,EAAclqI,KAAK2ya,mBAAqBnma,EAC9C,IAAIy9H,GAAW52E,EAAI7pC,aAAa,8BAChCygH,GAAWA,GAAWrzG,SAASqzG,GAAU,KAAM,EAK/C,MAAO,CACH3tB,OAAQA,EACR4tB,YAAaA,EACb/xH,UAP0B,IAAb8xH,GAAkBjqI,KAAKu1O,YAAYsoK,YAAc79Y,KAAKuf,KAAKurQ,GAAG7gJ,GAAWjqI,KAAKg0C,MAQ3FuqW,eAPmBv+Y,KAAKu1O,YAAYgpK,eAAet0Q,GAAU3tB,GAQ7Dy+T,YAPgB/6a,KAAKu1O,YAAY8oK,SAASp0Q,IAQ1CtlH,cAAe43X,EACftyQ,SAAUA,GACVxrH,KAT2B,YAAlB89X,EAAS99X,KAAqB,QAAU89X,EAAS99X,KAWjE,CACDqnE,YAAY1rE,GACR,GAAkB,aAAdA,EAAKqE,KAAqB,CAC1B,MAAM6W,EAAQlb,EAAK2tI,eAAe,GAClC,OAAO1kJ,SAASypO,iBAAiBx3M,EAAMJ,QAASI,EAAMF,QACzD,CACD,OAAOhb,EAAKyC,MACf,CACD+8Z,yBACI,MAAMqB,EA9vfQ3xV,IAAU,GAAG5nF,MAAMJ,KAAKgoF,GA8vfnB4xV,CAAal7a,KAAK0I,QAAQyD,cAAc82J,iBAAiB,uBAE5E,GADeg4Q,EAAW36a,OACd,CACR,IAAI66a,EAAoB,EACxB,MAAMC,EAAoB,GAC1BH,EAAWxqa,QAAQ4iD,IACf,MAAMuiI,EAAYviI,EAAItoC,wBAAwB8L,OAC9CukZ,EAAkBp/Z,KAAK,CAAEm/Z,oBAAmBvlP,cAC5CulP,GAAqBvlP,IAEzBqlP,EAAWxqa,QAAQ,CAAC4iD,EAAK7mD,KACrBxM,KAAK2K,SAASyf,SAASipC,EAAK,MAAQ,GAAE+nX,EAAkB5ua,GAAO2ua,uBAC/Dn7a,KAAK2K,SAASyf,SAASipC,EAAK,SAAa8nX,EAAoBC,EAAkB5ua,GAAO2ua,kBAAoBC,EAAkB5ua,GAAOopL,UAA5F,KAAvC,EAEP,CACJ,EAELuiP,GAAmBp1a,UAAnB,0BAAgHo1a,IAxvfTn1a,MAwvf6Co5Y,IAxvf7Cp5Y,MAwvfwEy4Y,IAxvfxEz4Y,MAwvfkGwvZ,IAxvflGxvZ,MAwvfwI85Y,IAxvfxI95Y,MAwvfgKqQ,OAxvfhKrQ,MAwvfmMA,OAxvfnMA,MAwvfyNA,OAxvfzNA,MAwvfkPA,OAxvflPA,MAwvf4Q6zY,IAxvf5Q7zY,MAwvfyS2rL,IAxvfzS3rL,MAwvfsUijZ,IAxvftUjjZ,MAwvfuWu1Z,IAxvfvWv1Z,MAwvfqY0W,IAA5e,EACAy+Z,GAAmB5ha,UAzvfoFvT,MAyvfvG,MAAoGm1a,GAApG5ka,ooBAzvfuGvQ,OAyvfvG4kF,8oIAzvfuG5kF,MA0vfnG,2BA1vfmGA,MAgyfnG,iBAhyfmGA,MA8yfnG,2BA9yfmGA,MA88fnG,mCArNJ,MAzvfuGA,MA0vfpF,iCA1vfoFA,MAgyf9F,GAhyf8FA,MAgyf9F,6DAhyf8FA,MA8yfpE,GA9yfoEA,MA8yfpE,iBA9yfoEA,CA8yfpE,iCA9yfoEA,MA88f7E,GA98f6EA,MA88f7E,oBArN1B,gBAsN4Cwza,GAAuKc,GAAkP7oP,KAAiInhK,MAAiFoiZ,GAA6LpiZ,MAA0GmhZ,GAA0PnhZ,MAA2EA,MAAkEhW,GAAgGgW,OAtNr6C7U,kBAoeA,MAAM4ia,GAAkB,EAAGznL,aAAcl/N,KAAK7Z,IAAI,EAh0YzB+4O,IAAWA,EAAQt+O,OAAOgnG,GAAUu2G,GAASv2G,EAAO+wG,YAAc/wG,EAAOypG,WAg0Y7Cu1N,CAAiB1nL,GAAStzP,QAIzE+yD,GAAM1qD,GAAYD,GAAWA,EAAQuiB,cAActiB,GAQnDihI,GAAO,CAACp9H,EAAO7D,EAAW,OAASD,GAAWA,EAAQu6J,iBAAkB,GAAEt6J,+CAAsD6D,GAIhIilG,GAAc/oG,GAAWA,EAAQ+oG,YAIjChsG,GAAO,IAAIu5T,IAAQz/S,GAAQy/S,EAAIr5S,OAAO,CAAC6T,EAAOhJ,IAAOgJ,EAAQhJ,EAAGgJ,GAAS,EAAGja,GAIlF,MAAMg8Z,GACFz7a,YAAY4I,EAASiC,EAAUC,EAAS0T,EAAMlD,GAC1Cpb,KAAK0I,QAAUA,EACf1I,KAAK2K,SAAWA,EAChB3K,KAAK4K,QAAUA,EACf5K,KAAKse,KAAOA,EACZte,KAAKob,IAAMA,EACXpb,KAAKsgX,QAAS,EACdtgX,KAAKw7a,aAAc,CACtB,CACGh1U,eACA,OAAOxmG,KAAKw7a,YAAc,EAAI,IACjC,CACDlsa,WACI,MAAMulZ,EAAM70Z,KAAK4K,QACZqB,QAAQxG,QAAK6P,MAAOmP,GAAKzkB,KAAKsgX,SAAW77V,EAAE67V,SAChDtgX,KAAK+5J,aAAe86P,EAAIpvZ,QAAK6P,MAAOmP,GAAgB,UAAXA,EAAEhG,OAAR,EAA2B4hF,MAAIrgG,KAAKyxa,UAAUvka,KAAKlN,QAArB,EAA6BqB,MAAIg6a,KAAD,EAAmBjtN,MAAW1jM,GAASmqY,EAAIpvZ,QAAK6P,MAAOmP,GAAgB,gBAAXA,EAAEhG,OAAR,EAAiCpd,MAAIojB,GAAKA,EAAE8P,OCp7gBpM,SAASknZ,GAAYC,EAAYC,EAAmB,MACvDA,SAAmBA,GAA8ED,KAC1FnmN,MAAQ,CAAC5kM,EAAQ6kM,KACpB,IAAIomN,EAAU,GACVpnY,EAAQ,EACZ7jB,EAAOzkB,aAAUwpN,MAAyBF,EAAattN,IACnD,IAAI2za,GAAS,KACTrnY,IAAUmnY,GAAqB,GAC/BC,EAAQ5/Z,KAAK,IAEjB,UAAWpb,MAAUg7a,EACjBh7a,GAAOob,KAAK9T,GACRwza,GAAc96a,GAAON,SACrBu7a,GAASA,IAAgD,GACzDA,GAAO7/Z,KAAKpb,KAGpB,GAAIi7a,GACA,UAAWj7a,MAAUi7a,IACjBC,QAAUF,EAASh7a,IACnB40N,EAAWvwN,KAAKrE,GAAhB,EAGT,KACC,UAAWA,KAAUg7a,EACjBpmN,EAAWvwN,KAAKrE,GAEpB40N,EAAW1+H,UAAX,OACD/hF,EAAW,KACV6ma,EAAU,OAxBd,EA2BP,CDo5gBkNH,CAAY/wZ,MAASxe,UAAUlM,KAAKsmF,OAAOp5E,KAAKlN,OAC3PA,KAAK+7a,oBAAsB/7a,KAAK4K,QAC3BgrZ,cAAc,CACfntT,QAASzoG,KAAKg8a,kBAAkB9ua,KAAKlN,MACrCsgX,OAAQtgX,KAAKsgX,QAEpB,CACDzvW,cACQ7Q,KAAK+5J,cACL/5J,KAAK+5J,aAAa9oJ,cAElBjR,KAAK+7a,sBACL/7a,KAAK+7a,sBACL/7a,KAAK+7a,oBAAsB,KAElC,CACDtK,YACIzxa,KAAKw7a,aAAc,IACdx7a,KAAKi5Y,gBAAkBj5Y,KAAKsgX,UAC7BtgX,KAAKi8a,cAAgBxqU,GAAYzxG,KAAK0I,QAAQyD,eAErD,CACDm6E,OAAO4vP,GACH,IAAKl2U,KAAKi5Y,gBAAkBj5Y,KAAKsgX,OAAQ,CACrC,MAAM/rV,EAAQ2hT,EAAOvwT,OAAO,CAACqtC,EAAKxsC,IAASwsC,EAAMxsC,EAAM,GACjDhS,EAAQxU,KAAKi8a,cAAgB1nZ,EACnCv0B,KAAK2K,SAASyf,SAASpqB,KAAK0I,QAAQyD,cAAe,QAASqI,EAAQ,KACvE,CACDxU,KAAKob,IAAI+L,eACZ,CACD60Z,kBAAkB9K,GACd,OAAOxsV,YAAkB7wD,IACrB7zB,KAAKse,KAAKzO,kBAAkB,KACxB7P,KAAK2K,SAASyH,SAASpS,KAAK0I,QAAQyD,cAAe,iBACnDnM,KAAKob,IAAI+L,gBACT,MAAM0wR,EAASq5H,EAAW7va,IAAIrB,KAAKk8a,cAAchva,KAAKlN,OACtDA,KAAK2K,SAASqI,YAAYhT,KAAK0I,QAAQyD,cAAe,iBACtD0nB,EAAS5uB,KAAK4yS,EAAd,EALJ,EAQP,CACDqkI,cAAcjwX,GACV,MAAMyyI,EAAM1+L,KAAK0I,QAAQyD,cACnB6xO,EAASv4O,GA3EL+G,IAAS9D,GAAWA,EAAQu6J,iBAAiB,YAAYz2J,GA2E/C2va,CAAUlwX,EAAK6lG,OAAQloB,GAAK39E,EAAKqlX,YAAa,MAAO7/T,GAA1DhsG,CAAuEi5L,GACtF,IAAIn/K,EAAO,IACN0sC,EAAKklX,cAAiBllX,EAAKklX,cAAgBllX,EAAKmlX,gBACjD7xZ,EAAO9Z,GAAK4tD,GAAI,wDAAyDu2E,GAAK39E,EAAKz/C,OAAQilG,GAApFhsG,CAAiGi5L,IAE5G,MAAMurE,EAASxkQ,GAAK4tD,GAAI,YAAau2E,GAAK39E,EAAKz/C,OAAQilG,GAAxChsG,CAAqDi5L,GACpE,OAAOhqK,KAAK7Z,IAAImjO,EAAQz+N,EAAM0qP,EACjC,EAELsxK,GAAex4a,UAAf,0BAA4Gw4a,IAzzgBLv4a,MAyzgBqCA,OAzzgBrCA,MAyzgB+DA,OAzzgB/DA,MAyzgBwFqyZ,IAzzgBxFryZ,MAyzgB0HA,OAzzgB1HA,MAyzgBgJA,OAAvP,EACAu4a,GAAejoa,UA1zgBwFtQ,MA0zgBvG,MAAgGu4a,GAAhGhoa,iEA1zgBuGvQ,MA0zgBvG,oFAmBA,MAAMo5a,GACFt8a,YAAYgJ,EAAI6B,EAAU6oK,EAAehgK,GACrCxT,KAAK8I,GAAKA,EACV9I,KAAK2K,SAAWA,EAChB3K,KAAKwzK,cAAgBA,EACrBxzK,KAAKwT,IAAMA,EACXxT,KAAK0/I,SAAU,CAClB,CACG28R,gBAAYn0a,GACZlI,KAAKs8a,aAAep0a,EAChBlI,KAAK0/I,UACL1/I,KAAKgtT,eACLhtT,KAAKsmF,SAEZ,CACGi2V,gCAA4B78R,GAC5B,MAAMhtE,EAAUgtE,IAAY1/I,KAAK0/I,QACjC1/I,KAAK0/I,QAAUA,EACXhtE,IACA1yE,KAAKgtT,eACLhtT,KAAKsmF,SAEZ,CACDz1E,cACQ7Q,KAAKk1Z,oBACLl1Z,KAAKk1Z,mBAAmBjkZ,aAE/B,CACD+7S,eACQhtT,KAAKk1Z,qBAAuBl1Z,KAAK0/I,UACjC1/I,KAAKk1Z,mBAAmBjkZ,cACxBjR,KAAKk1Z,mBAAqB,OAEzBl1Z,KAAKk1Z,oBAAsBl1Z,KAAK0/I,UACjC1/I,KAAKk1Z,mBAAqBl1Z,KAAKwzK,cAAcvnK,QAAQC,UAAUlM,KAAKsmF,OAAOp5E,KAAKlN,OAEvF,CACDsmF,SACI,GAAItmF,KAAKwT,IAAIw2V,MAAQhqW,KAAKwT,IAAIw2V,KAAKluV,QAAS,CACxC,MAAMkmT,EAAmBhiU,KAAKwT,IAAIw2V,KAAKluV,QAAQ3P,cACzCqI,EAAQkgB,KAAK7Z,IAAImnT,EAAiBljM,YAAc9+H,KAAKs8a,aAAc,GACrEt8a,KAAK0/I,SAAWlrI,EAAQ,EACxBxU,KAAK2K,SAASyf,SAASpqB,KAAK8I,GAAGqD,cAAe,QAASqI,EAAQ,MAG/DxU,KAAK2K,SAASyf,SAASpqB,KAAK8I,GAAGqD,cAAe,QAAS,GAE9D,CACJ,EAELiwa,GAA4Br5a,UAA5B,0BAAyHq5a,IA/3gBlBp5a,MA+3gB+DA,OA/3gB/DA,MA+3gByFA,OA/3gBzFA,MA+3gBkH0uK,IA/3gBlH1uK,MA+3gB4IgtZ,IAAnP,EACAosB,GAA4B9oa,UAh4gB2EtQ,MAg4gBvG,MAA6Go5a,GAA7G7oa,iJAaA,MAAMipa,GAAY,CAAChwa,EAAOy7B,EAAUhS,KAChC,QAASn1B,EAAM,EAAGyjH,EAAa,EAAGzjH,EAAMmnC,EAAS3nC,OAAQQ,IAAO,CAC5D,MAAM6nB,EAASsN,EAAcgS,EAASnnC,IACtC,GAAIyjH,GAAc/3G,GAASA,GAAS+3G,EAAa57F,EAAS,EACtD,OAAOsf,EAASnnC,GAEpByjH,GAAc57F,CACjB,GAEC8zZ,GAAQ,CAACjwa,EAAOyhC,IAASuuY,GAAUhwa,EAAOyhC,EAAMolB,GAAOA,EAAI3jD,aAAa,8BAAgC,EAAI,GAE5Ggta,GAAe,GAIf9kP,GAAyB,IAAIh4L,MAAe,+BAOlD,MAAM6vJ,GAAehrI,IACjB,MAAM+qI,EAAS/qI,EAAEgrI,YACjB,OAAIhrI,EAAE+P,kBAA0Bzf,IAAXy6I,GAAwBA,GAClC/qI,EAAE+P,WAEJ/P,EAAEmQ,QAAUnQ,EAAE6Z,OAAS7Z,EAAEirI,cACT,IAAZjrI,EAAEmQ,OAER,GAWL+nZ,GAAqB7za,GAAMA,EAAKA,EAAGqD,cAAgB,KAOzD,MAAM2L,GACFhY,YAAYo4L,EAAiBooN,EAAgB83B,EAAoBwE,EAAgBv8B,EAAev1Y,EAAQH,GAAU62L,GAAmBhuB,GAAe+hE,GAAasnM,GAAgB5ha,GAAmBmlY,GAAsBv1Y,GAAciya,GAAuBl5Q,GAAgBm5Q,GAAY7L,IACvRlxa,KAAKo4a,mBAAqBA,EAC1Bp4a,KAAK48a,eAAiBA,EACtB58a,KAAKqgZ,cAAgBA,EACrBrgZ,KAAK8K,OAASA,EACd9K,KAAK2K,SAAWA,GAChB3K,KAAKwhM,kBAAoBA,GACzBxhM,KAAKwzK,cAAgBA,GACrBxzK,KAAKu1O,YAAcA,GACnBv1O,KAAK68a,eAAiBA,GACtB78a,KAAKib,kBAAoBA,GACzBjb,KAAK6K,aAAeA,GACpB7K,KAAK88a,sBAAwBA,GAC7B98a,KAAK4jK,eAAiBA,GACtB5jK,KAAK+8a,WAAaA,GAClB/8a,KAAKkxa,WAAaA,GAClBlxa,KAAKqsC,OAAS,GACdrsC,KAAKg0C,KAAO,EACZh0C,KAAK4zP,QAAU,IAAIg9J,GAAiB,IAAM,IAC1C5wZ,KAAKggO,YAAa,EAClBhgO,KAAKwrZ,WAAY,EACjBxrZ,KAAKk2N,QAAUsjM,GACfx5Z,KAAKg9a,cAAgB,IAAI9xa,MACzBlL,KAAKy4L,WAAa,IAAIvtL,MACtBlL,KAAKi9a,aAAe,IAAI/xa,MACxBlL,KAAKk9a,gBAAkB,EACvBl9a,KAAKm9a,cAAgB,IAAI3oC,MACzBx0Y,KAAK44L,WAAa,IAAIvuL,IACtBrK,KAAKo9a,mBAAqB,EAC1Bp9a,KAAKw2B,WAAa,EAClBx2B,KAAK+L,KAAM,EACX/L,KAAKkxJ,SAAWgnC,EAAgBl4L,KAAK44L,YACrC54L,KAAKknB,cAAgBo5X,EAAer0Y,QAAQC,UAAUmc,IAAKroB,KAAKq9a,aAAah1Z,KAC7EroB,KAAKknB,cAAclb,IAAIo0Y,GAAqB9E,SAASpvY,UAAUmc,IAAKroB,KAAK4uJ,SAASvmI,KACrF,CACG3E,gBACA,OAAO,CACV,CACGosZ,eACA,MAAO,cACV,CACGwN,iBACA,OAAOt9a,KAAKwrZ,WAAaxrZ,KAAKwrZ,UAAU8xB,UAC3C,CACGvpL,iBACA,GAAI/zP,KAAKi5Y,gBAAkBj5Y,KAAK4zP,QAAQw9J,cACpC,OAAOpxZ,KAAK4zP,QAAQw9J,aAE3B,CACG7N,wBACA,OAAOvjZ,KAAK4zP,QAAQ2vJ,iBACvB,CACGwN,2BACA,OAAO/wZ,KAAK4zP,QAAQm9J,oBACvB,CACGG,+BACA,OAAIlxZ,KAAKi5Y,iBAAmBj5Y,KAAK+8a,WAAWQ,UACjCv9a,KAAKw9a,gBAETx9a,KAAK+wZ,oBACf,CACGlE,kBACA,OAAO7sZ,KAAK4zP,QAAQglJ,mBACvB,CACGyjC,kBACA,MAAMoB,EA71UW,GA61UOz9a,KAAKqsC,OAAO/rC,OACpC,OAAOgsZ,GAActsZ,KAAKujZ,kBAAkBnuY,WAAWuQ,OAAO,CAACywK,EAAMC,IAASD,GAAQC,EAAK7hL,OAAS,GAAIipa,EAC3G,CACGC,qBACA,IAAM19a,KAAK+L,KAAO/L,KAAKujZ,kBAAkBjjZ,QAAWN,KAAKi5Y,eACrD,OAAOyT,GAAgBJ,GAActsZ,KAAKkxZ,yBAAyB97Y,WAG1E,CACGguW,eACA,OAAOpjX,KAAKujZ,kBAAkBjjZ,OAAS,CAC1C,CACDgP,WACItP,KAAKu+J,OACLv+J,KAAKknB,cAAclb,IAAIhM,KAAK8K,OAAO+E,kBAAkB7P,KAAK29a,cAAczwa,KAAKlN,QAC7EA,KAAKknB,cAAclb,IAAIhM,KAAK8K,OAAO+E,kBAAkB7P,KAAK49a,0BAA0B1wa,KAAKlN,QACzFA,KAAKknB,cAAclb,OAAIiR,KAAMjd,KAAK4zP,QAAQ3nP,QAASjM,KAAKwzK,cAAcvnK,SAASC,UAAU,KACjFlM,KAAKi5Y,gBACLj5Y,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK69a,wBACL79a,KAAK4jK,eAAehmJ,cAApB,EAFJ,IAMR5d,KAAKknB,cAAclb,IAAIhM,KAAK6K,aAAaoB,QAAQC,UAAU,EAAGH,SAAU/L,KAAK+L,IAAMA,GACtF,CACDsE,YAAYpE,GACeA,EAAQ+nC,MAAQ/nC,EAAQ+nC,KAAK6rL,aAAe5zN,EAAQ+nC,KAAKpzB,aAAe,GAE3F5gB,KAAK89a,6BAAL,EAEAvZ,MAAY,OAAQt4Z,KAAajM,KAAK+9a,SACtC/9a,KAAKg+a,YAAa,EAClBh+a,KAAKuI,UAAU4D,cAAckqB,UAAYr2B,KAAK62L,iBAAiBluK,OAAO3oB,KAAKg0C,QAAlC,EAEzC48H,MAAW,CAAC,QAAS,QAAS3kK,IAC9BjM,KAAKu+J,OAETv+J,KAAK+9a,QAAS,CACjB,CACD/1P,YACQhoL,KAAKi5Y,kBAAoBj5Y,KAAKw9a,iBAAmBx9a,KAAKi+a,wBACtDj+a,KAAK69a,uBAEZ,CACDrta,kBACQxQ,KAAKg0C,MAAQh0C,KAAKk5Y,YAClBl5Y,KAAKuI,UAAU4D,cAAckqB,UAAYr2B,KAAK62L,iBAAiBluK,OAAO3oB,KAAKg0C,OAE/Eh0C,KAAKk+a,0BACLl+a,KAAKm+a,wBACLn+a,KAAKo+a,mBACR,CACDzta,qBACI,MAAMyyW,EAAWpjX,KAAKojX,SAClBA,IAAapjX,KAAKq+a,oBAClBr+a,KAAK0yZ,iBAET1yZ,KAAKq+a,mBAAqBj7D,CAC7B,CACDsvC,iBACQ1yZ,KAAKs+a,iBACL5rB,GAAe1yZ,KAAKu+a,YAAYpya,cAAenM,KAAKm1I,MAAMhpI,cAEjE,CACD0E,cACQ7Q,KAAKknB,eACLlnB,KAAKknB,cAAcjW,cAEnBjR,KAAKwzK,eACLxzK,KAAKwzK,cAAcrmJ,UAEvBntB,KAAKw+a,iBACR,CACDjgR,OACQv+J,KAAK48a,eAAe99T,SAGxB9+G,KAAK62L,iBAAmB,IAAIlB,GAAiB31L,KAAK2nC,MAAO3nC,KAAK41L,UAAW51L,KAAK61L,iBAC9E71L,KAAK4sG,YAAc5sG,KAAK62L,iBAAiBjqF,cACpCopS,MACDh2Y,KAAK8K,OAAO+E,kBAAkB7P,KAAKy+a,eAAevxa,KAAKlN,OAE9D,CACD0+a,eACI,IAAK1+a,KAAK48a,eAAe99T,OAAQ,CAC7B,MAAM6/T,EAAkB3+a,KAAKs+a,gBAAgBnya,cAAckqB,UACvDsoZ,IAAoB3+a,KAAKo9a,qBACzBp9a,KAAKuI,UAAU4D,cAAckqB,UAAYr2B,KAAKo9a,mBAAqBuB,EAE1E,CACJ,CACDC,iBAAiBxka,GACb,IAAKA,EAAK6+E,QAAS,CA/KC,EAAC7+E,EAAM1R,KAC/B,MAAM6rB,EAAQk7H,GAAYr1I,GACpBic,EAAY3tB,EAAQ2tB,UACS,IAAdA,GAAmB,EAAI9B,GAAW7rB,EAAQinJ,cAAgBjnJ,EAAQq2F,aAAe1oE,GAAa9B,EAAQ,GAEvHvkB,MAAM6D,gBAAN,EA2KIgra,CAAoBzka,EAAMpa,KAAKuI,UAAU4D,eACzC,MAAM2ya,EAAcrvR,GAAYr1I,GAChCpa,KAAKuI,UAAU4D,cAAckqB,WAAayoZ,CAC7C,CACJ,CACDC,cAAc3ka,GACV,GAAIA,EAAKlK,UAAYC,eAAiBiK,EAAKlK,UAAYC,YAAa,CAChE,MAAMwE,EAAMyF,EAAKlK,UAAYC,cAAgB,GAAI,EAC3CzH,EAAU1I,KAAKuI,UAAU4D,cAC/BzD,EAAQ2tB,WAAa3tB,EAAQq2F,aAAepqF,EAAM,GAClDyF,EAAKvG,gBACR,CACJ,CACDwpa,cAAe7wa,QAAOoyB,WACdA,EACA5+B,KAAK62L,iBAAiBZ,aAAazpL,GAGnCxM,KAAK62L,iBAAiBV,eAAe3pL,GAEzCxM,KAAK4sG,YAAc5sG,KAAK62L,iBAAiBjqF,cACzC5sG,KAAKk+a,yBACR,CACDC,wBACQnoC,OAGJh2Y,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKknB,cAAclb,OAAI2Q,MAAU3c,KAAKuI,UAAU4D,cAAe,UAAU1G,QAAKpE,MAAK2O,GAAUA,EAAM6M,SAAlB,EAA2BvH,MAAO,KAAOtV,KAAK48a,eAAe99T,SAA5B,EAAqCze,MAAKxjF,IACxJ7c,KAAKg/a,kBAAkBnia,GACvB7c,KAAKk+a,0BACDl+a,KAAKi5Y,gBACLj5Y,KAAKi/a,qBAET,MAAMC,EAAcl/a,KAAKib,kBAAkBinY,UAAYw6B,GACjDz5B,EAAiBjjZ,KAAKib,kBAAkBgoY,gBAAkBy5B,GAChE18a,KAAKg9a,cAAc5sa,KAAK,CACpBomB,WAAY3Z,EAAO2Z,WACnBH,UAAWxZ,EAAOwZ,UAClB8oZ,SAAUD,EAAYznP,eACtB2nP,OAAQF,EAAYxnP,cACpBj3D,YAAawiR,EAAexrN,eAC5B4nP,UAAWp8B,EAAevrN,eAN9B,IAQAxrL,UAAUlM,KAAK44L,YAhBnB,GAkBJ54L,KAAKwhM,kBAAkBkzN,gBAAgB10Z,KAAKuI,UAAU4D,cAAe,QACxE,CACDsya,iBACIz+a,KAAKw+a,kBACL,MAAMjjP,EAAav7L,KAAKkxJ,SACnB/kI,OAAOnsB,KAAK62L,iBAAkB72L,KAAKg0C,KAAMh0C,KAAK0qB,KAAM1qB,KAAK2nC,OAC9D3nC,KAAKg+a,YAAa,EAClBh+a,KAAKs/a,qBAAuB/jP,EAAW91L,QAAK6P,MAAQ+S,GAAMA,aAAakuK,KAArB,EAAkCjhL,MAAO,KACvF,MAAMulH,EAAO76H,KAAKg+a,WAClB,YAAKA,YAAa,GACVnjT,KAH8E,EAItFx6B,MAAI,IAAMrgG,KAAK+9a,QAAS,IACvB7xa,UAAWmc,GAAMroB,KAAK8K,OAAO4G,IAAI,IAAM1R,KAAKy4L,WAAWroL,KAAKiY,KACjEroB,KAAKs/a,qBAAqBtza,IAAIuvL,EAAW91L,QAAK6P,MAAQ+S,GAAMA,aAAaiuK,KACpEpqL,UAAUlM,KAAK8+G,OAAO5xG,KAAKlN,QAChCA,KAAKs/a,qBAAqBtza,IAAIuvL,EAAW91L,QAAK6P,MAAQ+S,GAAMA,aAAautZ,KACpE1pa,UAAU,IAAMlM,KAAKi9a,aAAa7sa,QAC1C,CACD0uG,QAASn2F,SAAS,IACV3oB,KAAKk5Y,WACL,CACIyjC,GAAmB38a,KAAKm1I,OACxBwnS,GAAmB38a,KAAKu+a,cAC1Bjpa,OAAOrN,IAAWwI,QA7Ob,EAAC9F,EAAUzC,IAAUY,GAAM6B,EAASyf,SAASthB,EAAI,YAAc,cAAaZ,QA6OvDqhH,CAAWvpH,KAAK2K,SAAUge,IAE1D3oB,KAAKk+a,yBACR,CACDc,mBAAoB3oZ,cAChBr2B,KAAKo9a,mBAAqB/mZ,EACtBr2B,KAAKs+a,kBACLt+a,KAAKs+a,gBAAgBnya,cAAckqB,UAAYA,EAEtD,CACDynZ,4BACI,MACM/nL,EAAM/1P,KAAKo4a,mBAAmBnsa,QAC/BxG,QAAK6P,MAFW,IAAMtV,KAAKk5Y,WAAal5Y,KAAKg0C,KAAO,GAAKh0C,KAAK2nC,MAAQ,IAGtEz7B,UAAUizK,IACXn/K,KAAK4uJ,SAAS,CAAEv7F,IAAKrzD,KAAKg0C,OAC1B+hN,EAAI9kP,aAAJ,EAEP,CACD0sa,gBACI,MAAMv6D,EAAW,IAAMn7W,GAAUjI,KAAKs+a,iBAEtC,SAAOrha,KAAMjd,KAAKo4a,mBAAmBnsa,QAASjM,KAAKqgZ,cAAcp0Y,QAC5DxG,QAAK6P,MAAO8tW,GAAW/4C,GAFX,KAAMrqU,KAAK8K,OAAO88M,SAASr9M,eAAe9E,QAAKilB,MAAK,IAE7Bk9L,KAAc5nN,KAAKu1O,YAAY/jO,QAASxR,KAAKwzK,cAAcvnK,QAASjM,KAAK88a,sBAAsB7wa,QAClIxG,QAAK6P,MAAOhF,GAA0B,QAAhBA,EAAOmO,OAAkBze,KAAK68a,eAAe5wa,SACnExG,QAAK46F,MAAI,IAAMrgG,KAAKk+a,4BAAZ,EAAwC5oa,MAAO8tW,IACvDl3W,UAAU,KACX,MAAMmqB,EAAYr2B,KAAKuI,UAAU4D,cAAckqB,UACzCG,EAAax2B,KAAKuI,UAAU4D,cAAcqqB,WAChDx2B,KAAK0yZ,iBACL1yZ,KAAKu/a,sBACLv/a,KAAKs+a,gBAAgBnya,cAAckqB,UAAYr2B,KAAKuI,UAAU4D,cAAckqB,UAAYA,EAExFr2B,KAAKuI,UAAU4D,cAAcqqB,WAAaA,EAC1Cx2B,KAAKm9a,cAAc1sa,QAAQ+ua,GAAUA,EAAO3tQ,aAA5C,EAEP,CACD+rQ,4BACI,OAAO59a,KAAKib,kBAAkBhP,QAAQxG,QAAK6P,MAAO,IAAMrN,GAAUjI,KAAKs+a,mBAAtB,EAAyCp6Y,MAAM,KAAKh4B,UAAWkO,IAC5G,GAAIpa,KAAKujZ,kBAAkBjjZ,QAAU8Z,EAAK29X,cAAgB39X,EAAKk5S,SAAWtzT,KAAKujZ,kBAAkBjjZ,OAAQ,CACrG,MAAMspI,EAAO5pI,KAAKib,kBAAkB+lY,WAChCp3Q,GAAQA,EAAK0pL,SAAW1pL,EAAKk/C,QAAU1uK,EAAK29X,eAC5C/3Y,KAAKuI,UAAU4D,cAAcqqB,WAAa,EAEjD,GAER,CACDipZ,mBAAmBhmP,GACXxxL,GAAUjI,KAAK00a,kBACfj7O,EAAY/kK,KAAKI,MAAM2kK,EAAY,IAEvC,MAAM9wK,EAAS3oB,KAAK62L,iBAAiBluK,OAAO8wK,GAC5Cz5L,KAAKuI,UAAU4D,cAAckqB,UAAY1N,EACzC3oB,KAAKk+a,yBACR,CACDtvR,UAAWv7F,MAAKipD,WACZ,GAAIpsF,GAASmjC,GACT,GAAIrzD,KAAKk5Y,UACLl5Y,KAAKy/a,mBAAmBpsX,OAEvB,CACD,MAAM3qD,EAAU+za,GAAMppX,EAAKrzD,KAAKm1I,MAAMhpI,cAAc8hC,MAChDvlC,IACA1I,KAAKuI,UAAU4D,cAAckqB,UAAY3tB,EAAQ45O,UAExD,CAEL,GAAIpyN,GAASosF,GAET,GADAA,GAAUt8G,KAAKujZ,kBAAkBjjZ,OAC7BN,KAAKi5Y,eAAgB,CACrB,MAAMrlJ,EAAU5zP,KAAK4zP,QAAQglJ,oBAC7B,IAAIjwX,EAAS,EACb,QAAS7nB,EAAM,EAAGA,EAAMw7G,EAAQx7G,IAC5B6nB,GAAUirO,EAAQ9yP,GAAK0T,OAAS,EAEpC,MAAMsgR,EAAc90R,KAAKujZ,kBAAkBjjZ,OAAS,EA3kV3C,GA2kV+CN,KAAKqsC,OAAO/rC,QAA6BN,KAAK00a,gBAAkBp4T,EAAS,EA3kVxH,GA2kV+I,GACxJt8G,KAAKuI,UAAU4D,cAAcqqB,WAAax2B,KAAK0/a,oBAAoB/2Z,EAASmsQ,EAC/E,SACmB,IAAXx4K,GAAgBt8G,KAAK00a,eAC1B10a,KAAKuI,UAAU4D,cAAcqqB,WAAax2B,KAAK0/a,oBAAoB,OAElE,CACD,MAAMlmC,EAAWijC,GAAM,EAAGz8a,KAAKm1I,MAAMhpI,cAAc8hC,MACnD,GAAIurW,EAAU,CACV,MAAM9wY,EA/VX,EAAC8D,EAAOu1K,IAAUy6P,GAAUhwa,EAAOu1K,EAAOn4C,GAAS12G,GAAW02G,EAAMmsS,IAA2E,EAAlDn/Y,SAASgzG,EAAKpgH,aAAa,WAAY,KAAO,GA+VtHm2Z,CAAOrjU,EAAQk9R,EAASz3N,OACpCr5K,IACA1I,KAAKuI,UAAU4D,cAAcqqB,WAAax2B,KAAK4/a,kBAAkBl3a,GAExE,CACJ,CAER,CACDw1a,0BACI,IAAKl+a,KAAKuI,YAAcvI,KAAKib,kBAAkB8lY,eAC1C/gZ,KAAKib,kBAAkBgnY,iBAAwC,IAArBjiZ,KAAKuf,KAAKjf,OACrD,OAEJ,MAAQ+1B,YAAW0oE,gBAAiB/+F,KAAKuI,UAAU4D,cAC7C8wa,EAAe5mZ,EAAY0oE,EAC3B04F,EAAiBz3L,KAAK62L,iBAAiBrqL,MAAM6pB,GACnD,IAAIqhK,EAAgB13L,KAAK62L,iBAAiBrqL,MAAMywa,GAChD,MAAM4C,EAAiB7/a,KAAK62L,iBAAiBluK,OAAO+uK,GAC9CooP,GAAoBD,EAAiB7/a,KAAK41L,UAAYqnP,EACxDvlP,EAAgB,GAAKooP,IACrBpoP,IAEJ,IAAIqoP,GAAgBtoP,EAChBuoP,GAActoP,EAClB,GAAIzvL,GAAUjI,KAAK00a,gBAAiB,CAChCqL,IAAiB,EACjBC,IAAe,EACShgb,KAAK62L,iBAAiBluK,OAAO8uK,GAC/Bz3L,KAAK41L,UAAYv/J,GACnC0pZ,KAEJ,MAEME,GAA0BJ,EAFT7/a,KAAK62L,iBAAiBhgK,OAAO6gK,GAEculP,EADzCj9a,KAAK62L,iBAAiBo/B,WAAWv+B,KAEjCuoP,IACrBD,IAEP,CACDhgb,KAAKib,kBAAkB6nY,YAAYi9B,GAAeC,GACrD,CACDxB,kBACQx+a,KAAKs/a,sBACLt/a,KAAKs/a,qBAAqBrua,cAE1BjR,KAAKkxJ,UACLlxJ,KAAKkxJ,SAAS/jI,SAErB,CACDixZ,oBACIp+a,KAAKwzK,cAAcoxF,WAAQ3nP,QAASjd,KAAKm9a,cAAc97a,IAAIm+a,GAAUA,EAAOl5V,SAC/E,CACDi5V,sBACI,CAAC5C,GAAmB38a,KAAKs+a,kBACpBhpa,OAAOrN,IACP5G,IAAIyH,IACLA,EAAGyiB,MAAMsL,OAAS,GAClB,IAAIA,EAAS72B,KAAKuI,UAAU4D,cAAc4yF,aAC1C,MAxXS,EAACj2F,EAAI6uB,IAAW7uB,EAAGqD,cAAcslG,YAAc95E,EAAOxrB,cAAc2yH,YAwXzEyyG,CAAavxO,KAAKm1I,MAAOn1I,KAAKuI,aAC9BsuB,GAAU72B,KAAK68a,eAAenpL,gBAE3B,CAAE5qP,KAAI+tB,SAAN,GAENpmB,QA5XK9F,IAAY,EAAG7B,KAAI+tB,YAAalsB,EAASyf,SAASthB,EAAI,SAAW,GAAE+tB,OA4XhEqpZ,CAAUlgb,KAAK2K,UAC/B,CACDkza,sBAAsBvpY,GAClB,MAAMs/M,EAAU5zP,KAAK4zP,QAAQm9J,qBAAqB37Y,UAClD,IAAM6xD,WAAUC,SAAQv+C,UAAW2rB,GAASt0C,KAAKmgb,2BACjD,MAAMxla,EAAQ+Z,KAAK7Z,IAAI,EAAGosD,EAhYf,GAiYLnsD,GAAM4Z,KAAK9Z,IAAIssD,EAjYV,EAiY+B0sL,EAAQtzP,OAAS,GAC3D,GAAIqa,EAAQssD,EACR,QAASnmE,GAAMmmE,EAAW,EAAGnmE,IAAO6Z,EAAO7Z,KACvC6nB,GAAUirO,EAAQ9yP,IAAK0T,MAG/B,IAAI4ra,GAAiBxsL,EAAQlyP,MAAMiZ,EAAOG,GAAM,GAEhD,GADA9a,KAAKqgb,qBAAuBD,GAAez6Z,OAAO,CAACgiB,GAAO20E,KAAW30E,GAAQ20E,GAAO9nG,MAAO,GACvFmG,EAAQ,EAAG,CACX,MAAM2la,GAAe,IAAIhsC,GACzBgsC,GAAa9ra,MAAQmU,EACrBy3Z,GAAet8W,QAAQw8W,GAC1B,CACDtgb,KAAKw9a,gBAAkB,IAAIhpC,MAC3Bx0Y,KAAKw9a,gBAAgBz1W,MAAMq4W,IAC3Bpgb,KAAKk9a,gBAAkBvia,EACvB3a,KAAKugb,cAAgBzla,GACrB9a,KAAKkxa,WAAWvY,kBAAkBvoZ,KAAK,CAAEuK,QAAOG,OAAK6N,WAChD2rB,GACDt0C,KAAKwgb,qBAAqBv5W,EAAUC,EAE3C,CACD+3W,qBAEI,MAAMzoZ,EADYx2B,KAAKuI,UAAU4D,cACJqqB,WAC7B,GAAIx2B,KAAKw2B,aAAeA,EAAY,CAChCx2B,KAAKw2B,WAAaA,EAClB,MAAM8d,EAAQt0C,KAAKmgb,2BACnBngb,KAAKwgb,qBAAqBlsY,EAAM2yB,SAAU3yB,EAAM4yB,SAC5C5yB,EAAM2yB,SAAWjnE,KAAKk9a,iBAAmBl9a,KAAKugb,cAAgBjsY,EAAM4yB,UACpEqzG,GAAqBv6K,KAAKygb,mBAC1Bzgb,KAAKygb,kBAAoBp9Y,GAAsB,KAC3CrjC,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK69a,sBAAsBvpY,GAC3Bt0C,KAAK4jK,eAAehmJ,cAApB,EAFJ,GAMX,CACJ,CACD4ia,qBAAqBv5W,EAAUC,GAC3B,MAAMw5W,EAAc1gb,KAAKujZ,kBAAkBjjZ,OACrCusZ,EAAc7sZ,KAAK+wZ,qBAAqB37Y,UACxC2qa,EAAgBW,EAAcz5W,GAAYjnE,KAAK00a,gBAAkBztW,EAAW,EAAI,EAAI,GAC1F,IAAI+4W,EAAcU,EAAcx5W,GAAUlnE,KAAK00a,eAAiB,EAAI,GACpE,QAAS5za,GAAM,EAAGA,GAAM+rZ,EAAYvsZ,OAAQQ,KAAO,CAC/C,MAAMw7G,GAASuwS,EAAY/rZ,IACvBw7G,GAAOwtS,eACPk2B,GAAe1jU,GAAO6vS,aAAa7rZ,OAE1C,CACDN,KAAKib,kBAAkB+nY,kBAAkB+8B,EAAeC,EAC3D,CACDG,2BACI,MAAQ3pZ,aAAYsoG,eAAgB9+H,KAAKuI,UAAU4D,cAC7CynP,EAAU5zP,KAAK4zP,QAAQm9J,qBAAqB37Y,UAC5Cura,EAAuB3gb,KAAK0/a,oBAAoBlpZ,GAChDwpZ,EAAcW,EAAuB7hT,EAC3C,IAAI73D,EAIAnmE,GAHAomE,GAAS,EACT7xD,GAAU,EACVsT,GAAS,EAEb,IAAK7nB,GAAM,EAAGA,GAAM8yP,EAAQtzP,OAAQQ,KAAO,CACvC,MAAMw7G,GAASs3I,EAAQ9yP,IAMvB,GALAuU,IAAWinG,GAAO9nG,OAAS,OACVO,IAAbkyD,GAA0B5xD,GAAUsra,IACpC15W,EAAWnmE,GACX6nB,GAAStT,IAAWinG,GAAO9nG,OAAS,IAEpCa,IAAW2qa,EAAa,CACxB94W,GAASpmE,GACT,KACH,CACJ,CACD,OAAKomE,IAAUpmE,GAAM,IACjBomE,GAAS0sL,EAAQtzP,OAAS,GAEvB,CAAE2mE,WAAUC,UAAQv+C,UAC9B,CACDs1Z,sBAEI,OADqBj+a,KAAKw9a,gBAAgBpoa,UAAUuQ,OAAO,CAACgiB,EAAO20E,IAAW30E,EAAQ20E,EAAO9nG,MAAO,KAC5ExU,KAAKqgb,oBAChC,CACDX,oBAAoB/8Y,GAChB,OAAO3iC,KAAK+L,IAvzgBpB,SAAS60a,GAAkBj+Y,EAAUj6B,EAASs+I,GAC1C,IAAIp1H,EAAS+Q,EACb,OAAIqkH,EAAU,EACVp1H,GAAU+Q,EAELqkH,EAAU,IACfp1H,EAASlpB,EAAQq2G,YAAcr2G,EAAQ+oG,YAAc9uE,GAElD/Q,CACV,CA8ygByBgvZ,CAAkBj+Y,EAAU3iC,KAAKuI,UAAU4D,cAAenM,KAAK68a,eAAelvB,eAAiBhrX,CACpH,CACDi9Y,kBAAkBl3a,GACd,OAAI1I,KAAK+L,IACE/L,KAAK0/a,oBAAoB1/a,KAAKuI,UAAU4D,cAAc4yG,YAAcr2G,EAAQ6jT,WAAa7jT,EAAQ+oG,aAErG/oG,EAAQ6jT,UAClB,EAELz0S,GAAc/U,UAAd,0BAA2G+U,IAx5hBJ9U,MAw5hBmC40L,IAx5hBnC50L,MAw5hBsEo5Y,IAx5hBtEp5Y,MAw5hBiGwvZ,IAx5hBjGxvZ,MAw5hBuI6wZ,IAx5hBvI7wZ,MAw5hBkKy4Y,IAx5hBlKz4Y,MAw5hB4LA,OAx5hB5LA,MAw5hBkNA,OAx5hBlNA,MAw5hB2O68L,IAx5hB3O78L,MAw5hByQ0uK,IAx5hBzQ1uK,MAw5hBmS85Y,IAx5hBnS95Y,MAw5hB2T0qZ,IAx5hB3T1qZ,MAw5hB6V0W,IAx5hB7V1W,MAw5hB2Xq4Y,IAx5hB3Xr4Y,MAw5hB4ZqQ,OAx5hB5ZrQ,MAw5hB+bqyZ,IAx5hB/bryZ,MAw5hBieA,OAx5hBjeA,MAw5hBkgBuwZ,IAx5hBlgBvwZ,MAw5hByhBu1Z,IAAhoB,EACAzgZ,GAAcvB,UAz5hByFvT,MAy5hBvG,MAA+F8U,GAA/FvE,iEAz5hBuGvQ,KAy5hBvGi3M,MAz5hBuGj3M,KAy5hBvG69a,MAz5hBuG79a,KAy5hBvG89a,MAz5hBuG99a,KAy5hBvG+9a,MAz5hBuG/9a,KA85hBkWqwK,KALzc,eAz5hBuGrwK,MAy5hBvGyT,EAz5hBuGzT,WAy5hBvGwQ,qBAz5hBuGxQ,MAy5hBvGyT,EAz5hBuGzT,WAy5hBvGwQ,2BAz5hBuGxQ,MAy5hBvGyT,EAz5hBuGzT,WAy5hBvGwQ,uBAz5hBuGxQ,MAy5hBvGyT,EAz5hBuGzT,WAy5hBvGwQ,iBAz5hBuGxQ,MAy5hBvGyT,EAz5hBuGzT,WAy5hBvGwQ,iEAz5hBuGxQ,MAy5hBvG,mBAz5hBuGA,MAy5hBvG,2pBAz5hBuGA,MAy5hB0zB,CACz5B,CACImD,QAASyxL,GACTpxL,SA5fZ,SAAS80L,GAAyBC,GAC9B,OAAO,IAAI/E,GAAgB+E,EAC9B,KAl6gBsGv4L,OAy5hBvGuf,+8CAz5hBuGvf,MA+5hBnG,oBA/5hBmGA,MA08hB7F,YA18hB6FA,CA08hB7F,UA18hB6FA,CA08hB7F,eA18hB6FA,MAk9hBvF,eAl9hBuFA,CAk9hBvF,aAl9hBuFA,cAg/hB3F,kCAh/hB2FA,cAk/hB/F,kCAl/hB+FA,MAm/hB/F,YAn/hB+FA,MAo/hB3F,UAp/hB2FA,cAs/hB/F,oBAt/hB+FA,SAy5hBvG,MAz5hBuGA,MAg6hB9F,mBAh6hB8FA,MA68hBxF,GA78hBwFA,MA68hBxF,2DA78hBwFA,CA68hBxF,+BA78hBwFA,MAg9hBpF,GAh9hBoFA,MAg9hBpF,+BAh9hBoFA,MAg9hB3C,mCAh9hB2CA,MAo9hBnF,GAp9hBmFA,MAo9hBnF,oBAp9hBmFA,MAo9hBnF,gBAp9hBmFA,CAo9hBnF,qCAp9hBmFA,CAo9hBnF,mCAp9hBmFA,MA09hBnF,GA19hBmFA,MA09hBnF,iCA19hBmFA,CA09hBnF,cA19hBmFA,CA09hBnF,kBA19hBmFA,CA09hBnF,gCA19hBmFA,CA09hBnF,qCA19hBmFA,CA09hBnF,oCA19hBmFA,CA09hBnF,kCA19hBmFA,CA09hBnF,wCA19hBmFA,CA09hBnF,gDA19hBmFA,CA09hBnF,yCA19hBmFA,CA09hBnF,cA19hBmFA,CA09hBnF,0BA19hBmFA,CA09hBnF,oBA19hBmFA,CA09hBnF,0BA19hBmFA,CA09hBnF,sBA19hBmFA,CA09hBnF,wBA19hBmFA,CA09hBnF,kCA19hBmFA,CA09hBnF,sBA19hBmFA,CA09hBnF,wBA19hBmFA,CA09hBnF,6CA19hBmFA,MAg/hBrE,GAh/hBqEA,MAg/hBrE,mBAh/hBqEA,MAk/hBzE,GAl/hByEA,MAk/hBzE,qCAl/hByEA,MAo/hBtF,GAp/hBsFA,MAo/hBtF,6BAp/hBsFA,MAs/hBzF,GAt/hByFA,MAs/hBzF,yBA7Fd,gBAiG4Cg9Z,GAA+GmY,GAA0Z1pP,KAAiInhK,MAAiFmhK,KAAuI8sP,GAAmFa,IAjGj+B3ja,kBAyRA,MAAMuoa,GACFlhb,YAAY2pa,GACRzpa,KAAKypa,kBAAoBA,EACzBzpa,KAAK4zP,QAAU,GACf5zP,KAAKqsC,OAAS,GACdrsC,KAAK2ya,mBAAqB,EAC1B3ya,KAAK05Y,gBAAkB,CAC1B,CACGunC,kBACA,OAAQjhb,KAAK+ya,UAChB,CACGvmB,sBACA,OAAOA,GAAgBxsZ,KAAK4zP,SAAW,GAC1C,CACD+gL,mBAAmBr4T,GACf,MAAM9vG,EAAQ8vG,EAAOoqS,UACrB,OAAIz+Y,GAAUuE,GACHA,GAASvE,GAAUjI,KAAK00a,gBAAkB,EAAI,IAElD,CACV,CACDlF,gBAAgBlzT,GACZ,MAAM44T,EAAel1a,KAAKypa,kBAAkBzQ,oBAAoB18S,GAChE,OAAOj9F,OAAOC,OAAOD,OAAOC,OAAO,GAAIg9F,EAAO/wF,OAAQ2pZ,EACzD,EAEL8L,GAAgBj+a,UAAhB,0BAA6Gi+a,IA5siBNh+a,MA4siBuCu1Z,IAA9I,EACAyoB,GAAgBzqa,UA7siBuFvT,MA6siBvG,MAAiGg+a,GAAjGzta,iFA7siBuGvQ,MA6siBvG,i2BA7siBuGA,MA8siBnG,GA9siBmGA,MA+siB/F,UA/siB+FA,MAutiB3F,iBAvtiB2FA,MA4tiB3F,iBA5tiB2FA,MAiuiB3F,kBAjuiB2FA,iBA6siBvG,MA7siBuGA,MAgtiB3F,GAhtiB2FA,MAgtiB3F,wBAhtiB2FA,MAktiBvF,oCAltiBuFA,CAktiBvF,yCAltiBuFA,CAktiBvF,qCAltiBuFA,CAktiBvF,gEAltiBuFA,MA0tiBzE,GA1tiByEA,MA0tiBzE,oBA1tiByEA,MA+tiBtF,GA/tiBsFA,MA+tiBtF,iEA/tiBsFA,MAkuiBpE,GAluiBoEA,MAkuiBpE,6BArBnC,gBAyC4C0sa,GAA6LpiZ,MAA0GA,MAAiFmhZ,GAA0PnhZ,MAA2EA,MAAkEhW,IAzC3yBmB,kBA6GA,MAAMyoa,GACFphb,YAAY+K,GACR7K,KAAK6K,aAAeA,EACpB7K,KAAK0jB,WAAY,CACpB,CACGy9Z,kBACA,OAAOnhb,KAAK6K,aAAakV,IAAI,UAChC,EAELmha,GAAiBn+a,UAAjB,0BAA8Gm+a,IAn0iBPl+a,MAm0iByCqQ,OAAhJ,EACA6ta,GAAiB3qa,UAp0iBsFvT,MAo0iBvG,MAAkGk+a,GAAlG3ta,kFAp0iBuGvQ,MAo0iBvG,gQAp0iBuGA,MAq0iB/F,2BAr0iB+FA,MA00iB/F,kBANR,MAp0iBuGA,MAq0iBhF,2BAr0iBgFA,MA00iBjF,GA10iBiFA,MA00iBjF,0BANtB,gBAQ4CsqB,MAAiFA,OAR7H7U,kBAiCA,MAAM2oa,WAAqBtja,OAE3Bsja,GAAar+a,UAAb,iDAv2iBuGC,MAu2iBGo+a,MAA1Grja,GAA0Gqja,GAA1G,KACAA,GAAa9ta,UAx2iB0FtQ,MAw2iBvG,MAA8Fo+a,GAA9F7ta,07EAx2iBuGvQ,SA8/iBvG,MAAMu4M,WAAmC6lO,GACrCthb,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,EAEL2wM,GAA2Bx4M,UAA3B,0BAAwHw4M,IApgjBjBv4M,MAogjB6DqQ,OAApK,EACAkoM,GAA2BjoM,UArgjB4EtQ,MAqgjBvG,MAA4Gu4M,GAA5GhoM,2DArgjBuGvQ,MAqgjBsF,CACrL,CACImD,QAASi7a,GACTlja,eAAaC,OAAW,IAAMo9L,OAxgjB6Dv4M,SAwhjBvG,MAIMq+a,GAAwBztL,GAAY04J,GAAc14J,EAAQx+O,WAC3DE,OAAOg2Y,IACPh2Y,OAAO,EAAGkc,YA/pbWmjC,KAAeoiL,GAAoBpiL,IAAci4V,GAAWloZ,KAAKiwD,IACtE,MAAjBA,EAAU,IAAkD,MAApCA,EAAUA,EAAUr0D,OAAS,GA8pb7Bghb,CAAiB9vZ,IACxC/gB,QAAQ,EAAG+gB,WAAYyG,QAAQ80L,KAAM,6CACAv7L,6RAQpC+vZ,GAAiB,CAAC74a,EAAS42Y,IAAgB72Y,GAAQC,EAAS6xY,GAAe,sBAC7E9xY,GAAQC,EAAS8xY,GAAgB,iBAAmB8E,EA+BxD,MAAMkiC,GACF1hb,YAAY+8a,EAAgBrsP,EAAkB6nP,EAAsBv8Z,EAASmjZ,EAAkB5e,EAAe+3B,GAAoB93B,GAAgB/qK,GAAaotL,GAAeoa,GAAY0E,GAAmB92a,GAAU+2a,GAAc52a,GAAQ02L,GAAmBhtF,GAAWsoU,GAAuB1hR,GAAmBumR,GAAsBlY,GAAmBxuZ,GAAmBsxZ,GAAansB,GAAsBv1Y,GAAc2I,IAC9ZxT,KAAK68a,eAAiBA,EACtB78a,KAAKwwL,iBAAmBA,EACxBxwL,KAAKq4a,qBAAuBA,EAC5Br4a,KAAK8b,QAAUA,EACf9b,KAAKi/Z,iBAAmBA,EACxBj/Z,KAAKqgZ,cAAgBA,EACrBrgZ,KAAKo4a,mBAAqBA,GAC1Bp4a,KAAKsgZ,eAAiBA,GACtBtgZ,KAAKu1O,YAAcA,GACnBv1O,KAAK2ia,cAAgBA,GACrB3ia,KAAK+8a,WAAaA,GAClB/8a,KAAKyhb,kBAAoBA,GACzBzhb,KAAK2K,SAAWA,GAChB3K,KAAK0hb,aAAeA,GACpB1hb,KAAK8K,OAASA,GACd9K,KAAKwhM,kBAAoBA,GACzBxhM,KAAKw0G,UAAYA,GACjBx0G,KAAK88a,sBAAwBA,GAC7B98a,KAAKo7J,kBAAoBA,GACzBp7J,KAAK2hb,qBAAuBA,GAC5B3hb,KAAKypa,kBAAoBA,GACzBzpa,KAAKib,kBAAoBA,GACzBjb,KAAKusa,YAAcA,GACnBvsa,KAAKogZ,qBAAuBA,GAC5BpgZ,KAAK6K,aAAeA,GACpB7K,KAAKwT,IAAMA,GAKXxT,KAAKuf,KAAO,GASZvf,KAAK+ya,WAAa,aAIlB/ya,KAAKggO,YAAa,EA8ClBhgO,KAAKk2N,QAAUsjM,GAIfx5Z,KAAKi5Y,gBAAiB,EAItBj5Y,KAAK6kO,YAAa,EAIlB7kO,KAAKurZ,UAAW,EAYhBvrZ,KAAK4hb,UAAW,EAKhB5hb,KAAKwrZ,WAAY,EAQjBxrZ,KAAK6hb,UAAW,EAOhB7hb,KAAKqtN,WAAY,EAOjBrtN,KAAKmqZ,aAAc,EAMnBnqZ,KAAKy2F,SAAU,EAMfz2F,KAAKyqZ,YAAa,EAMlBzqZ,KAAK8hb,YAAa,EAKlB9hb,KAAK0kO,aAAe,IAAIx5N,MAKxBlL,KAAKy4L,WAAa,IAAIvtL,MAKtBlL,KAAK+hb,YAAc,IAAI94B,GAAsBjpZ,KAAK8K,QAKlD9K,KAAKs0a,WAAa,IAAIppa,MAKtBlL,KAAKykO,gBAAkB,IAAIv5N,MAI3BlL,KAAKgib,gBAAkB,IAAI92a,MAI3BlL,KAAKiib,YAAc,IAAI/2a,MAIvBlL,KAAKkib,cAAgB,IAAIh3a,MAIzBlL,KAAKq9a,aAAe,IAAInya,MAIxBlL,KAAKmib,eAAiB,IAAIj3a,MAK1BlL,KAAKoib,KAAO,IAAIl3a,MAKhBlL,KAAKkyF,OAAS,IAAIhnF,MAKlBlL,KAAK2xF,KAAO,IAAIzmF,MAKhBlL,KAAK2X,OAAS,IAAIzM,MAKlBlL,KAAKgM,IAAM,IAAId,MAIflL,KAAKqib,UAAY,IAAIn3a,MAIrBlL,KAAK0oL,UAAY,IAAIugO,GAAsBjpZ,KAAK8K,QAIhD9K,KAAKsib,UAAY,IAAIp3a,MAIrBlL,KAAKuib,YAAc,IAAIr3a,MAIvBlL,KAAKwib,aAAe,IAAIv5B,GAAsBjpZ,KAAK8K,QAInD9K,KAAKyib,cAAgB,IAAIv3a,MAIzBlL,KAAK0ib,uBAAyB,IAAIx3a,MAIlClL,KAAK2ib,mBAAqB,IAAIz3a,MAI9BlL,KAAK4ib,mBAAqB,IAAI13a,MAM9BlL,KAAKi9a,aAAe,IAAI/xa,MAKxBlL,KAAKg9a,cAAgB,IAAI9xa,MAIzBlL,KAAK4zP,QAAU,IAAI4gJ,MACnBx0Y,KAAKiqQ,OAAS,IAAIuqI,MAClBx0Y,KAAK6ib,oBAAqB,EAC1B7ib,KAAK44Z,iBAAmB,IAAIhI,GAAiB,IAAM5wZ,KAAK8ib,WAAWjxB,gBAAgBv1S,KAC/EA,GAAOk3I,aAAexzP,KAAKwzP,aAAal3I,IACjCA,GAAOypG,aAElB/lN,KAAKi8I,KAAO,IAAIozQ,GAAe,IAAM,IAAIH,GAAmBlvZ,KAAKuf,KAAMvf,KAAKg0C,KAAMh0C,KAAK+ib,kBACvF/ib,KAAKgjb,uBAAwB,EAC7Bhjb,KAAKijb,MAAQ,IAAI9hb,MACjBnB,KAAKkjb,OAAS,IAAI/hb,MAClBnB,KAAKmjb,MAAQ,EACbnjb,KAAKojb,kBAAoB,EACzBpjb,KAAKqjb,aAAe,KACpBrjb,KAAKsjb,cAAgB,KACrBtjb,KAAKujb,WAAa,GAClBvjb,KAAK+L,KAAM,EACX/L,KAAKwjb,UAAY,IAAM,QACvB33a,MAAgBrE,IAChBxH,KAAKwT,IAAIw2V,KAAOhqW,KAChBA,KAAKyjb,yBAA2Bzjb,KAAK6K,aAAaoB,QAAQC,UAAU,EAAGH,WACnE/L,KAAK+L,IAAMA,GACX/L,KAAK8L,UAAY9L,KAAK+L,IAAM,MAAQ,QAExC/L,KAAKi/Z,iBAAiB9M,yBAAyB,IAAMnyZ,KAAK8ib,YAC1D9ib,KAAKypa,kBAAkBlrQ,KAAKv+J,KAAK44Z,iBAAkB,IAAM54Z,KAAK8ib,YAC9D9ib,KAAK0jb,mCAAqC1jb,KAAKypa,kBAAkBjR,iBAAiBtsZ,UAAWsF,KACzFxR,KAAK0ib,uBAAuBtya,KAAK,IAAIkpZ,GAA4B9nZ,IAAjE,GAEJxR,KAAK2jb,+BAAiC3jb,KAAKypa,kBAAkBhR,aAAavsZ,UAAWsF,KACjFxR,KAAK2ib,mBAAmBvya,KAAK,IAAImpZ,GAAwB/nZ,IAAzD,GAEJxR,KAAK4jb,+BAAiC5jb,KAAKypa,kBAAkB/Q,aAAaxsZ,UAAWsF,KACjFxR,KAAK4ib,mBAAmBxya,KAAK,IAAIqpZ,GAAwBjoZ,IAAzD,GAEJxR,KAAK6jb,gCAhW6B,EAACj5a,EAASk5a,EAAeC,EAAiB1ib,IAASuJ,EAAQqB,QAAQxG,QAAK6P,MAAO,EAAGw3B,WAAY7kC,GAAU6kC,KAC7I5gC,UAAWmc,GAAMA,EAAEuW,OAASklZ,EAAc1za,KAAK/O,EAAIgnB,IAAM07Z,EAAgB3za,KAAK/O,EAAIgnB,KA+VxC27Z,CAAkC3jC,EAAergZ,KAAKiib,YAAajib,KAAKkib,cAAe,EAAGp1Y,SAAO2xM,cAAY+8J,mBAArB,CAA0C1uW,SAAO2xM,cAAY+8J,kBAC5Lx7Y,KAAKikb,2BA/V8B,EAACr5a,EAASk5a,EAAeC,EAAiB1ib,IAASuJ,EAAQqB,QAAQxG,QAAK6P,MAAO,EAAG6C,cAAelQ,GAAUkQ,KACjJjM,UAAWmc,GAAMA,EAAEuW,OAASklZ,EAAc1za,KAAK/O,EAAIgnB,IAAM07Z,EAAgB3za,KAAK/O,EAAIgnB,KA8V7C67Z,CAAmC5jC,GAAgBtgZ,KAAKq9a,aAAcr9a,KAAKmib,eAAgB/na,IAAQA,IACrIpa,KAAKmkb,mBAAqBnkb,KAAK2ia,cAAc12Z,QAAQC,UAAUmc,KAC3DroB,KAAK0kO,aAAat0N,KAAKiY,GAAvB,GAEJroB,KAAKokb,iBAAmBpkb,KAAKusa,YAAYtga,QAAQC,UAAUmc,KACvDroB,KAAKs0a,WAAWlka,KAAKiY,GAArB,GAEJroB,KAAKqkb,4BACLrkb,KAAKskb,qBACLtkb,KAAKukb,yBACLvkb,KAAKwkb,gBAAkBxkb,KAAK+8a,WAAWrpB,YAAYxnZ,UAAUlM,KAAKykb,mBAAmBv3a,KAAKlN,OAC1FA,KAAK0kb,kBAAoB1kb,KAAK0hb,aAAahuB,YAAYxnZ,UAAUlM,KAAK2kb,YAAYz3a,KAAKlN,OACvFA,KAAK4kb,yBACL5kb,KAAK6kb,qBACL7kb,KAAK8ib,WAAa,IAAIhxB,GAAW9xZ,KAAK4zP,SACtC5zP,KAAK8kb,0BAA4B9kb,KAAK2hb,qBACjC11a,QAAQC,UAAUlM,KAAKk4Z,QAAQhrZ,KAAKlN,OACzCA,KAAK+kb,8BAAgC/kb,KAAKypa,kBAAkB9Q,kBAAkBzsZ,UAAUlM,KAAKglb,oBAAoB93a,KAAKlN,MACzH,CAKGg0C,WACA,OAAOh0C,KAAKmjb,KACf,CACGnvY,SAAK9rC,GACgB,iBAAVA,GAAsBA,GAAS,IACtClI,KAAKmjb,MAAQj7a,EAEpB,CAIG05B,SAAK15B,GACDmnB,GAAQnnB,KACRlI,KAAKijb,MAAQ/6a,EAEpB,CACG05B,WACA,OAAO5hC,KAAKijb,KACf,CAIGn2Y,UAAM5kC,GACFmnB,GAAQnnB,KACRlI,KAAKkjb,OAASh7a,EAErB,CAGG4kC,YACA,OAAO9sC,KAAKkjb,MACf,CAIG+B,qBACA,OAAOjlb,KAAK85Z,iBAAmB,CAAC,MAAO,QAAQ74Z,QAAQjB,KAAK85Z,gBAAgBn3X,WAAY,CAC3F,CAIGuiZ,wBACA,OAAOllb,KAAK85Z,iBAAmB,CAAC,SAAU,QAAQ74Z,QAAQjB,KAAK85Z,gBAAgBn3X,WAAY,CAC9F,CAIGygV,eACA,OAAOpjX,KAAKujZ,kBAAkBjjZ,OAAS,CAC1C,CAIG6kb,mBACA,MAAMxiZ,EAAW3iC,KAAK4hb,SAASj/Y,SAC/B,OAAQ3iC,KAAKk5Y,YAA+B,IAAlBl5Y,KAAK4hb,UAAsB,CAAC,MAAO,QAAQ3gb,QAAQ0hC,IAAY,CAC5F,CAIGyiZ,sBACA,MAAMziZ,EAAW3iC,KAAK4hb,SAASj/Y,SAC/B,OAAQ3iC,KAAKk5Y,YAA+B,IAAlBl5Y,KAAK4hb,UAAmC,QAAbj/Y,CACxD,CAIGohX,eACA,OAAO/jZ,KAAKmlb,cAAgBnlb,KAAKolb,eACpC,CAIGC,qBACA,OAAOrlb,KAAKwrZ,YAAwC,IAA3BxrZ,KAAKwrZ,UAAU9rQ,OAC3C,CAIG4lS,yBACA,OAAOtlb,KAAKwrZ,UAAU6T,SACzB,CAIGkmB,uBACA,OAAOvlb,KAAKwwL,iBAAiBg0N,eAAiBxkZ,KAAKq4a,qBAAqB7zB,aAC3E,CAMGlpL,cAAUpzN,GAKVlI,KAAKujb,WAJgB,kBAAVr7a,EAIOA,EAHIA,EAAQ,CAAC,QAAS,SAAW,EAItD,CACGozN,gBACA,OAAOt7N,KAAKujb,UACf,CAMGiC,gBAAYt9a,GACZlI,KAAKs7N,UAAYpzN,CACpB,CAIGs9a,kBACA,OAAOxlb,KAAKs7N,SACf,CA+CGk9M,aAAShoZ,GACT,GAAIla,OAA2B,mBAAPka,EACpB,MAAM,IAAIjwB,MAAO,6CAA4C0B,KAAKsiP,UAAU/zN,OAEhFxwB,KAAKwjb,UAAYhzZ,CACpB,CACGgoZ,eACA,OAAOx4a,KAAKwjb,SACf,CAKG7J,cAAUnpZ,GACV,GAAIla,OAAarO,GAAUuoB,IAAqB,mBAAPA,EACrC,MAAM,IAAIjwB,MAAO,8CAA6C0B,KAAKsiP,UAAU/zN,OAE7EvoB,GAAUuoB,KACVxwB,KAAKylb,WAAaj1Z,EAEzB,CACGmpZ,gBACA,OAAO35a,KAAKylb,UACf,CAMG1gC,gBAAYv0X,GACZ,GAAIla,OAA2B,mBAAPka,EACpB,MAAM,IAAIjwB,MAAO,gDAA+C0B,KAAKsiP,UAAU/zN,OAEnFxwB,KAAKqjb,aAAe7yZ,CACvB,CACGu0X,kBACA,OAAO/kZ,KAAKqjb,YACf,CASG58B,iBAAaj2X,GACb,GAAIla,OAA2B,mBAAPka,EACpB,MAAM,IAAIjwB,MAAO,iDAAgD0B,KAAKsiP,UAAU/zN,OAEpFxwB,KAAKsjb,cAAgB9yZ,CACxB,CACGi2X,mBACA,OAAOzmZ,KAAKsjb,aACf,CAIGtiC,iBACA,OAAOhhZ,KAAKib,kBAAkB+lY,UACjC,CAIGxJ,gBACA,OAAOx3Y,KAAKib,kBAAkBu8X,SACjC,CACG7iY,UACA,OAAO3U,KAAK8L,SACf,CACGi4J,kBACA,OAAO,CACV,CACG2hR,oBACA,OAAO1lb,KAAKujZ,kBAAkBjjZ,OAAS,CAC1C,CACGqlb,qBACA,OAAO3lb,KAAKk5Y,SACf,CACG0sC,uBACA,OAA+B,IAAxB5lb,KAAK0zP,cACf,CACGghL,qBACA,OAAI10a,KAAK6lb,sBACE7lb,KAAK6lb,sBAET7lb,KAAK8lb,uBAAyB9lb,KAAK8lb,uBAAuB/va,WAAQhB,CAC5E,CACG2/Z,mBAAeA,GACf10a,KAAK6lb,sBAAwBnR,CAChC,CACGqR,0BACA,OAAI/lb,KAAKgmb,qBACEhmb,KAAK6lb,sBAET7lb,KAAKimb,4BAA8Bjmb,KAAKimb,4BAA4Blwa,WAAQhB,CACtF,CACGgxa,wBAAoBA,GACpB/lb,KAAKgmb,qBAAuBD,CAC/B,CACGG,sBACA,OAAIlmb,KAAKmmb,iBACEnmb,KAAKmmb,iBAETnmb,KAAKomb,wBAA0Bpmb,KAAKomb,wBAAwBrwa,WAAQhB,CAC9E,CACGmxa,oBAAgBA,GAChBlmb,KAAKmmb,iBAAmBD,CAC3B,CACGG,wBACA,OAAIrmb,KAAKsmb,yBACEtmb,KAAKsmb,yBAETtmb,KAAKumb,0BAA4Bvmb,KAAKumb,0BAA0Bxwa,WAAQhB,CAClF,CACGsxa,sBAAkBG,GAClBxmb,KAAKsmb,yBAA2BE,CACnC,CACGC,oBACA,OAAIzmb,KAAK0mb,qBACE1mb,KAAK0mb,qBAET1mb,KAAK2mb,sBAAwB3mb,KAAK2mb,sBAAsB5wa,WAAQhB,CAC1E,CACG0xa,kBAAcG,GACd5mb,KAAK0mb,qBAAuBE,CAC/B,CACG9sB,sBACA,OAAI95Z,KAAK6mb,uBACE7mb,KAAK6mb,uBAET7mb,KAAK8mb,wBAA0B9mb,KAAK8mb,wBAAwB/wa,WAAQhB,CAC9E,CACG+kZ,oBAAgBitB,GAChB/mb,KAAK6mb,uBAAyBE,CACjC,CACGrzL,qBACA,OAAO1zP,KAAK68a,eAAenpL,cAC9B,CACGszL,oBACA,GAAIhxC,KACA,MAAO,GAEX,MAAMl3W,EAAUpK,KAAK7Z,IAAI,EAAG7a,KAAK0zP,gBAAkB,KAGnD,MAAQ,KAFM1zP,KAAK+L,IAAM,EAAI+yB,OAChB9+B,KAAK+L,IAAM+yB,EAAU,GAErC,CACGikZ,sBACA,OAAO/ib,KAAK44Z,iBAAiBzH,cAChC,CACGmsB,iBACA,OAAOt9a,KAAK44Z,iBAAiBr6C,SAChC,CACGg6D,uBACA,OAAOv4a,KAAKwrZ,WAAaxrZ,KAAKwrZ,UAAU8xB,UAC3C,CACG2J,mBACA,OAAOjnb,KAAK+qZ,kBAAoB,EAAI/qZ,KAAKi8I,KAAKt0G,KACjD,CACGu/Y,mBACA,OAAOlnb,KAAK44Z,iBAAiBhgB,oBAAoBt4Y,MACpD,CACGohM,iBACA,OAAO1hM,KAAKib,iBACf,CACGi+X,gBACA,MAA2B,YAApBl5Y,KAAK+ya,UACf,CACGoU,mBACA,MAA2B,SAApBnnb,KAAK+ya,UACf,CACGqU,qBACA,OAAOpnb,KAAK44Z,iBAAiBp8C,UAChC,CACGq0C,oBACA,OAAO7wZ,KAAK44Z,iBAAiB/H,aAChC,CACGC,uBACA,OAAO9wZ,KAAK44Z,iBAAiB9H,gBAChC,CACGvN,wBACA,OAAOvjZ,KAAK44Z,iBAAiBrV,iBAChC,CACG0V,oBACA,OAAOj5Z,KAAK4zP,QAAQt+O,OAAOgnG,GAAUA,EAAOguS,OAC/C,CACGyG,2BACA,OAAO/wZ,KAAK44Z,iBAAiB7H,oBAChC,CACGlE,kBACA,OAAO7sZ,KAAK44Z,iBAAiB/L,WAChC,CACG9B,wBACA,OAAO/qZ,KAAK44Z,iBAAiB5H,WAChC,CACGq2B,oBACA,OAAIrnb,KAAKi5Y,iBAAmBj5Y,KAAK+8a,WAAWQ,UACjCv9a,KAAKw9a,gBAETx9a,KAAK8wZ,gBACf,CACGw2B,wBACA,OAAItnb,KAAKi5Y,iBAAmBj5Y,KAAK+8a,WAAWQ,UACjCv9a,KAAKunb,oBAETvnb,KAAK+wZ,oBACf,CACGsrB,kBACA,MAAMoB,EA9mYW,GA8mYOz9a,KAAK8sC,MAAMxsC,OACnC,OAAOgsZ,GAActsZ,KAAKujZ,kBAAkBnuY,WAAWuQ,OAAO,CAACywK,EAAMC,IAASD,GAAQC,EAAK7hL,OAAS,GAAIipa,EAC3G,CACGC,qBACA,IAAM19a,KAAK+L,KAAO/L,KAAKujZ,kBAAkBjjZ,QAAWN,KAAKi5Y,eACrD,OAAQj5Y,KAAKi5Y,eACTj5Y,KAAKunb,oBAAoB5ha,OAAO,CAACC,EAAK02F,IAAW12F,GAAO02F,EAAO9nG,OAAS,GAAI,GADlDxU,KAAK44Z,iBAAiBxH,aAI3D,CACG1M,yBACA,GAAI1kZ,KAAKwwL,iBACL,OAAOxwL,KAAKwwL,iBAAiBxqL,OAGpC,CACG8ua,yBACA,MAAMziZ,EAAWryB,KAAK4qZ,oBAAoB70Y,MAC1C,OAAOsc,EAAWA,EAASza,YAAc,IAC5C,CACGwrC,iBACA,OAAIpjD,KAAKk5Y,YAAcjxY,GAAUjI,KAAK4hO,UAC3B5hO,KAAKi8I,KAAKt0G,MAEd3nC,KAAK4hO,QACf,CAaD06K,UAAU9vY,GACNxM,KAAKwnb,sBAAsBh7a,GAAO,EACrC,CAaD6vY,YAAY7vY,GACRxM,KAAKwnb,sBAAsBh7a,GAAO,EACrC,CAcDi7a,YAAYj7a,GACRxM,KAAK0nb,qBAAqBl7a,GAAO,EACpC,CAcDm7a,cAAcn7a,GACVxM,KAAK0nb,qBAAqBl7a,GAAO,EACpC,CAIDo7a,mBACI5nb,KAAKqgZ,cAAct4U,OACtB,CAID8/W,oBAAoBppM,GAChBz+O,KAAKqgZ,cAAcrE,eAAev9J,EACrC,CAIDqpM,eACI9nb,KAAK+nb,sBACL/nb,KAAKo4a,mBAAmB9lY,SACxBtyC,KAAK+8a,WAAWppB,YAAYvjZ,OACxBnI,GAAUjI,KAAKgob,mBACfhob,KAAKgob,iBAAiBjgX,QAE1B/nE,KAAKiob,uBACLjob,KAAKkob,0BACR,CACD73a,YAAYpE,IACR,EAAIs4Z,MAAY,OAAQt4Z,IACpBjM,KAAK8nb,eAEL9nb,KAAKujZ,kBAAkBjjZ,WAAUswK,MAAW,CAAC,WAAY,OAAQ,OAAQ,SAAU3kK,IACnFjM,KAAKo4a,mBAAmB9lY,UAAxB,EAEAs+H,MAAW,CAAC,WAAY,aAAc,kBAAmB3kK,IACzDjM,KAAKkob,4BAAL,EAEA3jB,MAAY,iBAAkBt4Z,KAC9BjM,KAAKw9a,gBAAkBx9a,KAAKunb,oBAAsB,SAElDhjB,MAAY,SAAUt4Z,GAAS,IAC/BjM,KAAK2K,SAASyf,SAASpqB,KAAK8b,QAAQ3P,cAAe,SAAW,GAAEnM,KAAK62B,aAArE,EAEA0tY,MAAY,aAAct4Z,IAAYjM,KAAK6wZ,cAAcvwZ,QACzDN,KAAKmob,iBAAiBnob,KAAK8K,OAAO88M,SAASr9M,eAAe9E,QAAKilB,MAAK,MAApE,EAEAkmJ,MAAW,CAAC,aAAc,WAAY,cAAe3kK,GAAS,KAC9DjM,KAAKoob,kBAAoBpob,KAAKyqZ,YAAcprY,OAAOC,OAAO,CACtDhK,OAAQ+8B,QAAQryC,KAAK6kO,YACrBjjM,KAAMyQ,QAAQryC,KAAKurZ,WACpBvrZ,KAAKyqZ,cAHoC,EAK5C8Z,MAAY,aAAct4Z,IAAYjM,KAAKmnb,cAC3Cnnb,KAAK8K,OAAO88M,SAASniN,QAAKilB,MAAK,IAAIxe,UAAU,IAAMlM,KAAKqob,qBAAxD,EAEA9jB,MAAY,aAAct4Z,IAAYjM,KAAKsob,qBAAqBr8a,EAAQ+zN,cACpEhgO,KAAKgob,iBACLhob,KAAKgob,iBAAiBjgX,QAEjB/nE,KAAK6ib,oBACV7ib,KAAK6ib,mBAAmB96W,UAAxB,EAGJw8V,MAAY,YAAat4Z,GAAS,KAClCjM,KAAKwrZ,UAAYv/Y,EAAQu/Y,UAAU5qY,iBAEnC2jZ,MAAY,YAAat4Z,GAAS,KAC9BjM,KAAKib,kBAAkBykI,QACvB1/I,KAAKib,kBAAkBkmY,kBAAkBnhZ,KAAKs7N,WAG1Ct7N,KAAKs7N,UAAUh7N,QACfN,KAAKib,kBAAkBsjJ,KAAKv+J,KAAKuob,qBAAsBvob,KAAKs7N,WAI3E,CACD9qN,kBACIxQ,KAAKqob,mBACLrob,KAAKikB,6BACLjkB,KAAKkob,2BACLlob,KAAKwob,eACR,CACDvya,wBACIjW,KAAK44Z,iBAAiBlmV,UACtB1yE,KAAKkW,iBACLlW,KAAKiob,sBACR,CACDnya,qBACI9V,KAAKgjb,uBAAyBhjb,KAAK4zP,QAAQtzP,OAC3CN,KAAK+nb,sBACL/nb,KAAK8ib,WAAa,IAAIhxB,GAAW9xZ,KAAK4zP,SACtC5zP,KAAKyob,0BAA4Bzob,KAAK4zP,QAAQ3nP,QAAQC,UAAU,IAAMlM,KAAKkW,iBAC9E,CACD5G,WACQtP,KAAKs7N,UAAUh7N,QACfN,KAAKib,kBAAkBsjJ,KAAKv+J,KAAKuob,qBAAsBvob,KAAKs7N,UAEnE,CACDzqN,cACQ7Q,KAAKwrP,uBACLxrP,KAAKwrP,sBAAsBv6O,cAE3BjR,KAAK0ob,yBACL1ob,KAAK0ob,wBAAwBz3a,cAE7BjR,KAAK6jb,iCACL7jb,KAAK6jb,gCAAgC5ya,cAErCjR,KAAKikb,4BACLjkb,KAAKikb,2BAA2Bhza,cAEhCjR,KAAK2ob,yBACL3ob,KAAK2ob,wBAAwB13a,cAE7BjR,KAAKwkb,iBACLxkb,KAAKwkb,gBAAgBvza,cAErBjR,KAAKmkb,oBACLnkb,KAAKmkb,mBAAmBlza,cAExBjR,KAAKokb,kBACLpkb,KAAKokb,iBAAiBnza,cAEtBjR,KAAKyob,2BACLzob,KAAKyob,0BAA0Bx3a,cAE/BjR,KAAK0kb,mBACL1kb,KAAK0kb,kBAAkBzza,cAEvBjR,KAAK4ob,oCACL5ob,KAAK4ob,mCAAmC33a,cAExCjR,KAAKwhM,mBACLxhM,KAAKwhM,kBAAkBr0K,UAEvBntB,KAAK6ob,4BACL7ob,KAAK6ob,6BAEL7ob,KAAKgob,kBACLhob,KAAKgob,iBAAiB76Z,UAEtBntB,KAAK6lZ,uBACL7lZ,KAAK6lZ,sBAAsB50Y,cAE3BjR,KAAK8ob,0BACL9ob,KAAK8ob,yBAAyB73a,cAElCjR,KAAK8K,OAAS,KACV9K,KAAK+ob,4BACL/ob,KAAK+ob,2BAA2B93a,cAEhCjR,KAAK8kb,2BACL9kb,KAAK8kb,0BAA0B7za,cAE/BjR,KAAKyjb,0BACLzjb,KAAKyjb,yBAAyBxya,cAE9BjR,KAAK0jb,oCACL1jb,KAAK0jb,mCAAmCzya,cAExCjR,KAAK2jb,gCACL3jb,KAAK2jb,+BAA+B1ya,cAEpCjR,KAAK4jb,gCACL5jb,KAAK4jb,+BAA+B3ya,cAEpCjR,KAAKgpb,0BACLhpb,KAAKgpb,yBAAyB/3a,cAElCjR,KAAK+kb,8BAA8B9za,aACtC,CAIDo3a,mBACQryC,OAGAh2Y,KAAKg+O,QACLh+O,KAAKwhM,kBAAkBkzN,gBAAgB10Z,KAAKg+O,OAAO7xO,cAAe,UAElEnM,KAAKiqQ,SACLjqQ,KAAK8ob,yBAA2B7hW,GAAQjnF,KAAKiqQ,QACxC/9P,UAAU4hZ,GAAWA,EACrBzsZ,IAAI4oQ,GAAUA,EAAO99P,eACrBmJ,OAAOrN,IACPwI,QAAQ/H,GAAW1I,KAAKwhM,kBAAkBkzN,gBAAgBhsZ,EAAS,aAE/E,CAIGkX,gBACA,OAAO5f,KAAK6K,aAAakV,IAAI,YAChC,CASDo9X,QAAQlzQ,EAAUn9F,EAAO9mC,GAErB,GADAhG,KAAKu1O,YAAY4nK,QAAQlzQ,EAAUn9F,GAC/B7kC,GAAUjC,IAAYA,EAAQijb,UAC9B,OAEJ,MAAM51X,EAAO,kCAAiC42E,MACxCC,EAAclkI,GAAWA,EAAQkkI,YACjCrtH,EAASsT,MAAM+5G,GAAe72E,EAAO,GAAEA,sCAAwC62E,MACrFlqI,KAAKkpb,iBAAiBrsa,EACzB,CAODssa,SAAS38a,GACLxM,KAAKu1O,YAAY37N,MAAMpN,EAC1B,CAODkxS,OAAO5wQ,GAEH,KADoBA,aAAiBorR,OACnB,CACd,MAAMtlS,EAASvT,OAAOsa,KAAKmT,GAAOnnB,OAtjCvBgL,IAAW,CAAC/K,EAAKgU,KACpChU,EAAIgU,GAAO,IAAIm+R,MAAYpnS,EAAOiJ,IAC3BhU,GAojC0Cwja,CAAct8Y,GAAQ,IAC/DA,EAAQ,IAAIorR,MAAUtlS,EACzB,CACD5yB,KAAKu1O,YAAYmoE,OAAO5wQ,GACxB9sC,KAAKkpb,iBAAiB,kBACzB,CASD5rC,SAASrzQ,EAAU3tB,EAAQxvE,GACvB,MAAMpsB,EAAW1gB,KAAKqpb,eAAe/sU,GACrCt8G,KAAKu1O,YAAY+nK,SAASrzQ,EAAUvpH,EAAUosB,GAC9C9sC,KAAKkpb,iBAAiB,oBACzB,CASDzrC,YACI,OAAQz9Y,KAAKu1O,YAAYkoK,WAC5B,CAIDO,aACIh+Y,KAAKu1O,YAAYyoK,YACpB,CAMDN,YACI,OAAO19Y,KAAKu1O,YAAYmoK,WAC3B,CAMDC,gBACI,OAAO39Y,KAAKu1O,YAAYooK,eAC3B,CAID2rC,YACItpb,KAAK+8a,WAAWprV,KAAK3xF,KACxB,CAODyzZ,UACI,MAAM37T,EA3tlBQ,MAClB,IAAIyxV,EAAWC,EACf,MAAM1xV,EAAU,IAAIvyF,QAAQ,CAACyC,EAASkvF,KAClCqyV,EAAahqa,IACTvX,EAAQuX,GACDu4E,GAEX0xV,EAAYjqa,IACR23E,EAAO33E,GACAu4E,KAGfA,SAAQ9vF,QAAUuhb,EAClBzxV,EAAQZ,OAASsyV,EACV1xV,GA6slBapB,GAChB,YAAKqmV,WAAWz6Y,KAAKtiC,KAAM83F,GACpBA,CACV,CAID6sV,cACI3kb,KAAK0hb,aAAa/vV,KAAK3xF,KAC1B,CAiEDypb,cAAcntU,GACVt8G,KAAK88a,sBAAsBr0U,QAAQ6T,EACtC,CAsEDotU,eAAe91L,EAAU5zP,KAAK4zP,SAC1B,IAAI10D,EAEAA,EADA00D,aAAmB4gJ,MACZ5gJ,EAAQx+O,UAGRw+O,EAEX5zP,KAAK88a,sBAAsBr0U,WAAWy2F,EACzC,CAIDyqP,iBAAiBh5Z,EAAQ3gB,GACN,SAAX2gB,IAAsB3wB,KAAKk5Y,WAG/Bl5Y,KAAKy4L,WAAWroL,KAAKJ,EACxB,CAID45a,qBAC4B,SAApB5pb,KAAK+ya,aAAe,EAGpBtha,MAAazR,KAAKi9a,eAClBj9a,KAAK8K,OAAO4G,IAAI,IAAM1R,KAAKi9a,aAAa7sa,KAAK,CAAEsU,OAAQ1kB,OAE9D,CAIDkpb,iBAAiBW,GACT7pb,KAAKgpb,0BACLhpb,KAAKgpb,yBAAyB/3a,cAElCjR,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKgpb,yBAA2Bhpb,KAAK8K,OAAO88M,SAASr9M,eAAe9E,QAAKilB,MAAK,IAAIxe,UAAU,KACxF,MAAM4P,EAAU9b,KAAK8b,QAAQ3P,eACxBnM,KAAK8pb,aAAahua,EAAQmP,cAAc4+Z,KAAuB7pb,KAAKojX,UACrEpjX,KAAK8pb,aAAahua,EAAQmP,cAAe,mBAAkB4+Z,MAE/D7pb,KAAKgpb,yBAA2B,MALJ,EAQvC,CAMD53a,QACI,YAAK24a,kBACE/pb,KAAKib,kBAAkBo8X,WACjC,CAiBDA,UAAUptQ,EAAUqpL,GAChB,YAAKy2H,kBACE/pb,KAAKib,kBAAkBo8X,UAAUptQ,EAAUqpL,EACrD,CAOD6vF,cAAcllX,GAAO,GACjB,YAAK8rZ,kBACE/pb,KAAKib,kBAAkBkoY,cAAcllX,EAC/C,CAODolX,cAAcplX,GAAO,GACjB,YAAK8rZ,kBACE/pb,KAAKib,kBAAkBooY,cAAcplX,EAC/C,CAID2wH,SAAS9rJ,GACL9C,KAAKogZ,qBAAqBxxP,SAAS9rJ,EACtC,CA0EDknb,cAAcr5Z,EAAQs5Z,EAAWjkb,EAAU,CAAEo7P,QAAQ,IAEjD,IAAIvkP,EADoBkwY,GAAY/sZ,KAAKkqb,mBAAmBv5Z,EAAOmhI,QACtCm4R,IACxBpta,GAGiBA,EAAOumW,WACxBzyV,EAAOyyV,UAC0C,IAAlDpjX,KAAK44Z,iBAAiB9H,iBAAiBxwZ,SAIvC2rZ,GAAsBpvY,KAAY7W,EAAQo7P,SAC1CvkP,EAASA,EAAOsvY,aAAan2Y,MAEjChW,KAAKk4Z,QAAQ,CACT92J,OAAQp7P,EAAQo7P,OAChBzwO,OAAQA,EACR9T,OAAQA,IAEf,CAIGsta,qBAAiB13a,GACjBzS,KAAKsgZ,eAAe1E,aAAenpY,CACtC,CACG03a,uBACA,OAAOnqb,KAAKsgZ,eAAe1E,YAC9B,CAIGwuC,oBAAgB33a,GAChBzS,KAAKqgZ,cAAczE,aAAenpY,EAClCzS,KAAKwrZ,UAAYvjZ,GAAUwK,EAC9B,CACG23a,sBACA,OAAOpqb,KAAKqgZ,cAAczE,YAC7B,CAIDsc,SAAUr7Y,SAAQ8T,SAAQywO,SAAQo0K,oBAC9Bx1a,KAAK8K,OAAO4G,IAAI,KACZ,MAAM6/Z,EAAkBxkB,GAAY/sZ,KAAKkqb,mBAAmBv5Z,EAAOmhI,QACnE,IAAIk7E,EAAWukM,EAAgBtwa,QAAQ4b,GACnCA,EAAO8a,QAAU9a,EAAO8a,OAAOmyX,eAC/B98K,EAAWukM,EAAgBtwa,QAAQ4b,EAAO8a,QACtCypO,IACAvkP,EAASA,EAAO8a,SAGxB,IAAI41K,GAAWgkO,EAAgBtwa,QAAQ0vB,GACnC6kZ,IACIp0K,GAAU,EAAIp0B,GAAYz/B,GAAWy/B,EACrCA,KAEMo0B,GAAU7zD,GAAWy/B,GAC3BA,KAGR,MAAM5yN,GAAO,IAAI+9Y,GAAmB,CAChC77S,OAAQ3rF,EACR48K,SAAUA,GACVy/B,SAAUA,IAEdhtO,KAAKyib,cAAcrya,KAAKgK,KACpBA,GAAKtG,uBAGL0ha,GACAx1a,KAAK2ib,mBAAmBvya,KAAK,IAAImpZ,GAAwB,CAAC5oY,KAE9D3wB,KAAKqqb,oBAAoB,CAAE9Y,kBAAiB5gZ,SAAQ9T,SAAQukP,WACxDzwO,EAAO2vV,SAAWzjW,EAAOyjW,SACzB3vV,EAAO2vV,OAASzjW,EAAOyjW,QAE3BtgX,KAAK44Z,iBAAiBlmV,UACtB1yE,KAAKo7J,kBAAkBx9I,eAAvB,EAEP,CACDysa,qBAAsB9Y,kBAAiB5gZ,SAAQ9T,SAAQukP,WACnD,MAAM0rK,EAAkBvgB,GAAsBglB,GACxC+Y,EAAoBxd,EAAgB7ra,QAAQ0vB,GAClD,IAAI45Z,GAAkB,EAClBrrM,GAAY,EACZsrM,GAAS,EAET75Z,EAAOm5X,eACP0gC,IAAU75Z,EAAOw7X,aAAa7rZ,QAElC,IAAIkV,GAAI,EACR,KAAOA,GAAIs3Z,EAAgBxsa,QAAQ,CAC/B,IAAIg8G,GAASwwT,EAAgBt3Z,IAC7B,GAAI8mG,KAAWz/F,EACX0ta,GAAkBnpL,EAASliB,GAAYA,GAAY,EACnDA,GAAYkiB,EAASliB,GAAYsrM,GAAStrM,GAC1C5iI,GAAO2tS,WAAa/qK,GAChBqrM,KAAoBrrM,GAAY,IAChCA,IAAasrM,YAGZluU,KAAW3rF,EAAQ,CACxBnb,IAAKg1a,GACL,QACH,CAEGluU,GAAO2tS,WAAa/qK,GAExBA,KACA1pO,IACH,CACD,IAAKA,GAAI80a,EAAmB90a,GAAI80a,EAAoBE,GAAQh1a,KACxDs3Z,EAAgBt3Z,IAAGy0Y,WAAasgC,KAEpCvqb,KAAKyqb,sBAAsB95Z,EAAOmhI,MAAQ,EAC7C,CACD24R,sBAAsB34R,GAClB,MAAM44R,EAAqB1qb,KAAKkqb,mBAAmBp4R,EAAQ,GACrD64R,EAAe,GACrB59B,GAAY29B,GAAoBj6a,QAASlP,IACjCA,EAAE2oZ,eACFygC,EAAa3ua,QAAQza,EAAE8qZ,cAAczqX,KAAK,CAACzE,EAAGpF,IAAMoF,EAAE8sX,WAAalyX,EAAEkyX,YAArE,GAGRsC,GAAsBo+B,GAActpb,IAAI,CAACE,EAAGiU,IAAMjU,EAAE0oZ,WAAaz0Y,GAC7Ds8I,EAAQ9xJ,KAAK8ib,WAAW/3B,qBACxB/qZ,KAAKyqb,sBAAsB34R,EAAQ,EAE1C,CACDo4R,mBAAmBp4R,GACf,OAAO9xJ,KAAK8ib,WAAW1ta,UAAUE,OAAOgnG,GAAUA,EAAOw1C,QAAUA,EACtE,CACDm2R,uBACI,IAAKjob,KAAKggO,WAGN,OAFAhgO,KAAKwwL,iBAAiB3/K,mBACtB7Q,KAAKq4a,qBAAqBxna,eAGzB7Q,KAAK6ib,qBAAuB56a,GAAUjI,KAAKgob,oBAC5Chob,KAAKgob,iBAAmB,IAAIppV,GAAU5+F,KAAKwT,IAAKxT,KAAKo7J,oBAEzD,MAAMwvR,EAAoB5qb,KAAKggO,WAAWp2F,KACpCihT,EAAgBD,EAAoB5qb,KAAKq4a,qBAAuBr4a,KAAKwwL,iBACrEs6P,EAAkBF,EAAoB5qb,KAAKwwL,iBAAmBxwL,KAAKq4a,qBACrEyS,EAAgBrra,SAChBqra,EAAgBj6a,cAChBg6a,EAAcppO,mBACdqpO,EAAgBrra,QAAS,GAE7Bora,EAAcpra,QAAS,EACvBora,EAActsR,KAAK,CACfkoP,aAAcmkC,EAAoB5qb,KAAKymZ,kBAAe1xY,EACtDgwY,YAAa6lC,OAAoB71a,EAAY/U,KAAK+kZ,YAClD/kL,WAAYhgO,KAAKggO,WACjB/jF,KAAMj8I,KAAKi8I,KACX23G,QAASg3L,EAAoB5qb,KAAK8ib,WAAW1ta,eAAYL,KAExD/U,KAAK6ib,qBAAuB7ib,KAAK0kZ,mBAAmBhlQ,SACrD1/I,KAAKgob,iBAAiBjgX,QAEtB/nE,KAAKwrP,uBACLxrP,KAAKwrP,sBAAsBv6O,cAG3BjR,KAAKwrP,sBADLo/L,EAC6B5qb,KAAKq4a,qBAAqBpsa,QAAQC,UAAW8D,IACtEhQ,KAAK8K,OAAO4G,IAAI,IAAM1R,KAAKykO,gBAAgBr0N,KAAKJ,GAAhD,GAIyBhQ,KAAKwwL,iBAAiBvkL,QAAQC,UAAW8D,IAClEhQ,KAAK8K,OAAO4G,IAAI,IAAM1R,KAAKykO,gBAAgBr0N,KAAKJ,GAAhD,EAGX,CACD85a,aAAaphb,GACT,GAAIA,EACA,OAAO1I,KAAKib,kBAAkB0nY,SAASj6Y,EAE9C,CACD2gb,eAAe/sU,GACX,IAAI57F,EAWJ,GATIA,EADkB,iBAAX47F,EACIt8G,KAAK44Z,iBAAiBrV,kBAAkBnuY,UAC9C0Q,OAAO9lB,KAAK44Z,iBAAiB7H,qBAAqB37Y,WAAWknG,GAE3C,iBAAXA,EACDt8G,KAAK8ib,WAAWxta,OAAQkR,GAASA,EAAKgL,QAAU8qF,GAAQ,GAGxDA,GAEV57F,MAAYpK,SACb,MAAM,IAAI/V,MAAO,kBAAiB+7G,KAEtC,OAAO57F,CACV,CACDxK,iBACI,MAAII,SAAa,CACb,MAAMgqW,EAAStgX,KAAKujZ,kBAAkBjjZ,QAAWN,KAAKyqZ,YAAczqZ,KAAKyqZ,WAAWh4W,KAC9EwmX,EAAgBj5Z,KAAKi5Z,cAAc34Z,QAAWN,KAAKyqZ,YAAczqZ,KAAKyqZ,WAAWwiB,MACvF,GAAI3sD,GAAUtgX,KAAK00a,eACf,MAAM,IAAIn0a,MAAM,oEAEpB,GAAI04Z,GAAiBj5Z,KAAK00a,eACtB,MAAM,IAAIn0a,MAAM,oEAEpB,GAAIP,KAAKujZ,kBAAkBjjZ,SAAWN,KAAK+wZ,qBAAqBzwZ,OAC5D,MAAM,IAAIC,MAAM,kDAEpB,IAAK+/W,GAAUtgX,KAAKi5Y,iBAAmBqT,GAActsZ,KAAK8ib,WAAW1ta,WAAWE,OAAOgnG,IAAWA,EAAO9nG,QAAU04Y,GAAuB5wS,IAASh8G,OAC/I,MAAM,IAAIC,OAAO+/W,EAAS,SAAW,WAAa,4DAEtD,GAAIA,IAAWtgX,KAAKmnb,aAChB,MAAM,IAAI5mb,MAAM,gEAEpB,GAAIP,KAAK8ib,WAAWxta,OAAO43Y,IAAwB53Y,OAAQ+S,IAAOA,EAAE0tM,aAAaz1N,OAC7E,MAAM,IAAIC,MAAM,kFAEpB,GAAIP,KAAK8ib,WAAWxta,OAAO+S,GAAKA,EAAEi4V,QAAUj4V,EAAEsP,SAAWtP,EAAEsP,OAAOyrV,UAAU9iX,OACxE,MAAM,IAAIC,MAAM,mEAEpB,IAAKP,KAAK41L,WAAa51L,KAAK61L,mBAAqB71L,KAAKk5Y,UAClD,MAAM,IAAI34Y,MAAM,2FAEpB,GAAI04Z,GAAiB3M,GAActsZ,KAAK8ib,WAAW1ta,WAAWE,OAAOgnG,IAAWA,EAAO9nG,QAAU04Y,GAAuB5wS,IAASh8G,OAC7H,MAAM,IAAIC,MAAM,kEAEpB,GAAI04Z,IAAkBj5Z,KAAKmnb,aACvB,MAAM,IAAI5mb,MAAM,gEAEpB,GAAI04Z,GAAiBj5Z,KAAKi5Y,eACtB,MAAM,IAAI14Y,MAAM,0EAEpB,GAAIP,KAAK25a,WAAiC,YAApB35a,KAAK+ya,WACvB,MAAM,IAAIxya,MAAM,2FAEpB,GAAIP,KAAK25a,WAAa35a,KAAKwrZ,UACvB,MAAM,IAAIjrZ,MAAM,0DAEpB8gb,GAAqBrhb,KAAK8ib,WAC7B,CACJ,CACDiF,sBACQ/nb,KAAKgjb,wBAA0Bhjb,KAAK4zP,QAAQtzP,QAAUN,KAAKi8I,KAAK37I,QAChEN,KAAK4zP,QAAQ7rL,MAAM1oD,OAAOsa,KAAK35B,KAAKi8I,KAAK6uI,GAAG,IAAIzpR,IAAImwB,IAChD,IAAI8qF,EAAS,IAAI44R,GACjB54R,SAAO9qF,MAAQA,EACR8qF,IAGlB,CACD+nU,4BACIrkb,KAAK0ob,2BACDzra,KAAMjd,KAAKy4L,WAAWhzL,QAAKpE,MAAIgnB,KAC3B/S,OAAQtV,KAAKsV,OAAQw3B,MAAO9sC,KAAK8sC,MAAOkH,KAAM3rB,EAAE2rB,KAAMpS,KAAM5hC,KAAK4hC,KAAMlX,KAAMrC,EAAEqC,SAC7E1qB,KAAKs0a,WAAW7ua,QAAKpE,MAAIugC,KAAWtsB,OAAQtV,KAAKsV,OAAQw3B,MAAO9sC,KAAK8sC,MAAOkH,KAAMh0C,KAAKg0C,KAAMpS,KAAMA,EAAMlX,KAAM1qB,KAAK4hO,aAAe5hO,KAAK+hb,YAAYt8a,QAAKpE,MAAIyrC,KAC/Jx3B,OAAQtV,KAAKsV,OAAQw3B,MAAOA,EAAOkH,KAAMh0C,KAAKg0C,KAAMpS,KAAM5hC,KAAK4hC,KAAMlX,KAAM1qB,KAAK4hO,aAC9E5hO,KAAK0kO,aAAaj/N,QAAKpE,MAAIiU,KAC7BA,OAAQA,EAAQw3B,MAAO9sC,KAAK8sC,MAAOkH,KAAM,EAAGpS,KAAM5hC,KAAK4hC,KAAMlX,KAAM1qB,KAAK4hO,cAEvE11N,UAAUmc,IACXroB,KAAKy9Y,YACLz9Y,KAAKg+Y,aACLh+Y,KAAKgib,gBAAgB5xa,KAAKiY,EAA1B,EAEX,CACDi8Z,sBACStkb,KAAKu1O,cAGVv1O,KAAK2ob,wBAA0B3ob,KAAKu1O,YAC/BtpO,QAAQC,UAAUlM,KAAK+qb,cAAc79a,KAAKlN,OAClD,CACD+qb,cAAc3wa,GACV,MAAQE,SAAQ2vH,WAAU8zQ,aAAc3jY,EACxC,IAAIjC,EAAWnY,KAAKi8I,KAAK6uI,GAAG7gJ,EAAWjqI,KAAKg0C,MAS5C,OARe,QAAX15B,IAAqBnC,IACrBA,EAAW4lY,EAAU71Y,OAEzBlI,KAAKy9Y,YACLp+X,OAAOC,OAAOlF,EAAM,CAChBjC,SAAUA,EACVuM,OAAQ1kB,OAEJsa,OACC,MACDta,KAAKgM,IAAIoE,KAAKgK,GACd,UACC,SACDpa,KAAKkyF,OAAO9hF,KAAKgK,GACjB,UACC,OACDpa,KAAKoib,KAAKhya,KAAKgK,GACf,UACC,SACDpa,KAAK2X,OAAOvH,KAAKgK,GACjB,UACC,OACDpa,KAAK2xF,KAAKvhF,KAAKgK,GACf,UACC,YACDpa,KAAKqib,UAAUjya,KAAKgK,GAI/B,CACDmqa,yBACIvkb,KAAK6lZ,sBAAwB7lZ,KAAKw0G,UAAUk0E,UAAUx8K,UAAWkO,IAC7Dpa,KAAK0oL,UAAUt4K,KAAKiP,OAAOC,OAAO,CAAEoF,OAAQ1kB,MAAQoa,GAApD,EAEP,CACD6J,6BACI,GAAI+xX,KACA,OAEJ,MAAMl6X,EAAU9b,KAAK8b,QAAQ3P,cACvB6+a,EAAWhrb,KAAKgrb,SAAS7+a,cAC/BnM,KAAK8K,OAAO+E,kBAAkB,KAC1B,MAAMo7a,EAAcjrb,KAAKirb,YAAY/9a,KAAKlN,MACpCk1Z,EAAqBl1Z,KAAK2K,SAASmF,OAAO,SAAU,SAAUm7a,GAC9DC,EAA0Blrb,KAAK2K,SAASmF,OAAO,SAAU,oBAAqBm7a,GAC9EE,EAA4Bnrb,KAAK2K,SAASmF,OAAO,WAAY,QAAUsK,KACzE,MAAMkkK,GAAgBj7K,SAASi7K,cAC3Bt+K,KAAKu1O,YAAY0oK,oBAChBx1Y,GAAQ2R,GAAKyC,OAAQ09X,GAAe,iDACnCj8N,KACG71K,GAAQ61K,GAAei8N,GAAe,4BACnCgnC,GAAejjQ,GAAet+K,KAAK8b,QAAQ3P,iBACnDnM,KAAKu1O,YAAYkoK,UAAUrjY,GAA3B,GAGFu1L,GAAyB3vM,KAAK2K,SAASmF,OAAO,SAAU,OAASsK,KACnE,MAAMkkK,GAAgBj7K,SAASi7K,cAC3BA,MAAmBk8N,GAAgB,QAAhBA,CAAyBl8N,KAAyC,SAAvBA,GAAc7/J,MAC5E8ia,GAAejjQ,GAAet+K,KAAK8b,QAAQ3P,iBAC3CnM,KAAKu1O,YAAYkoK,UAAUrjY,IAE/Bpa,KAAKw0G,UAAU0iS,WAAW9mY,KAAKgK,GAA/B,GAEEytN,GAAoB7nO,KAAK2K,SAASmF,OAAOgM,EAAS,QAAU1B,KAC9Dpa,KAAKw0G,UAAUhqG,MAAM4F,KAAKgK,GAA1B,GAEEgxa,GAAsBprb,KAAK2K,SAASmF,OAAOgM,EAAS,UAAY1B,KAClEpa,KAAKw0G,UAAUx/F,QAAQ5E,KAAKgK,GAA5B,GAGJ,IAAIpD,IAAU,EACd,MAAMq0a,GAAsBrrb,KAAK2K,SAASmF,OAAOk7a,EAAU,UAAY5wa,KACnEpa,KAAKw0G,UAAUpjG,MAAMhB,KAAKgK,IACrBpD,KACDhX,KAAKw0G,UAAUwiS,QAAQ5mY,KAAKgK,IAC5BpD,IAAU,KAGZs0a,GAAuBtrb,KAAK2K,SAASmF,OAAOk7a,EAAU,WAAa5wa,KACrE,MAAMnV,GAAOmV,GAAK1E,eAAiBrS,SAASi7K,eAC3B71K,GAAQxD,GAAOgE,IAASA,KAAS+hb,KAE9Chrb,KAAKw0G,UAAUyiS,SAAS7mY,KAAKgK,IAC7BpD,IAAU,KAGlBhX,KAAK6ob,2BAA6B,KAC9B3zB,IACAg2B,IACAC,IACAx7O,KACAk4B,KACAujN,KACAC,KACAC,IAAoB,CACvB,EAER,CACD93L,aAAajyP,GACT,OAAOvB,KAAKyhb,kBAAkBjuL,aAAajyP,EAAEizP,MAChD,CACDy2L,cACI,GAAIp5Z,OAAO05Z,aAAevrb,KAAKojb,kBAAmB,CAC9Cpjb,KAAKojb,kBAAoBvxZ,OAAO05Z,WAChC,IAAIC,GAAa,EACjBxrb,KAAK8ib,WAAWjxB,gBAAgBv1S,IAC5B,MAAMk3I,EAAexzP,KAAKwzP,aAAal3I,GACvC,OAAIA,EAAOk3I,eAAiBA,IACxBg4L,GAAa,EACblvU,EAAOk3I,aAAeA,GAEnBl3I,EAAOypG,YAEdylO,GACAxrb,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKo7J,kBAAkBx9I,cAAvB,EAGX,CACJ,CACD6ma,qBACI,MAAMrqa,EAAO,IAAIw5Y,GACjB5zZ,KAAKsib,UAAUlya,KAAKgK,GACfA,EAAKtG,sBACN9T,KAAKspb,WAEZ,CACDnB,iBAAiB5sP,GACb,OAAOA,EACF91L,QAAK6P,MAAO,IAAMrN,GAAUjI,KAAKyrb,gBACjCv/a,UAAU,IAAMwmZ,GAAe1yZ,KAAKyrb,aAAat/a,cAAcw4B,SAAS,GAAI3kC,KAAKg+O,OAAO7xO,cAAcw4B,SAAS,IACvH,CACDigZ,yBACI5kb,KAAK4ob,mCACD5ob,KAAKmob,iBAAiBnob,KAAK44Z,iBAAiB3sZ,QAAQxG,QAAK6P,MAAO,IAAMtV,KAAK6wZ,cAAcvwZ,OAAS,IAAnC,EAAuC8tN,MAAU,IAAMpuN,KAAK8K,OAAO88M,SAASr9M,eAAe9E,QAAKilB,MAAK,MAC3K,CACDm6Z,qBACI,MAAM1vB,EAAUn1Z,KAAK88a,sBAAsB7wa,QAC3CjM,KAAK+ob,2BAA6B5zB,EAAQ1vZ,QAAK46F,MAAI57E,IAChC,UAAXA,EAAEhG,KACFze,KAAK2K,SAASyH,SAASpS,KAAK8b,QAAQ3P,cAAe,0BAEnC,QAAXsY,EAAEhG,MACPze,KAAK2K,SAASqI,YAAYhT,KAAK8b,QAAQ3P,cAAe,yBAAtD,IAL0C,EAO9CmJ,MAAOmP,GAAgB,UAAXA,EAAEhG,OAAR,EAA2B2vM,MAAU,IAAM+mM,EAAQ1vZ,QAE7D+nN,MAAU2nM,EAAQ1vZ,QAAK6P,MAAOmP,GAAgB,mBAAXA,EAAEhG,SAA5B,EAA0DnJ,MAAOmP,GAAgB,QAAXA,EAAEhG,SAC5EvS,UAAUlM,KAAK0rb,aAAax+a,KAAKlN,MACzC,CACD0rb,aAAajna,GACT,MAAMrK,EAAOqK,EAAEkxY,eACVrgZ,OAAOkR,GAAQqsM,GAASrsM,EAAK81F,OAAO+wG,aAAe7mM,EAAK81F,OAAO4tS,eAC/D7oZ,IAAImlB,KACL81F,OAAQ91F,EAAK81F,OACbsyG,SAAUpoM,EAAK81F,OAAO9nG,MACtBy9Z,SAAUzrZ,EAAKyrZ,YAEnBjya,KAAKwib,aAAapya,KAAKgK,EAC1B,CACD2va,kBACI,MAAIzza,WAAgBtW,KAAKib,kBAAkBykI,QACvC,MAAM,IAAIn/I,MAAM,8DAEvB,CACDgob,qBACI,MAAMrvC,EAAYl5Y,KAAKk5Y,UACjBt3K,EAAW5hO,KAAK4hO,SAChBy2L,EAAWnf,EAAYl5Y,KAAKi8I,KAAKt0G,MAAQi6L,EACzCk4M,EAAe95a,KAAKu1O,YAAYqoK,WAAa,EAAI,EACjDm8B,EAAkB3jB,GAAap2Z,KAAK6kO,YAAc,EAAI,EACtDg7I,EAAa7/W,KAAK+qZ,kBAAoB,EAAIgvB,EAAkBD,EAClE,OAAO,IAAI1hB,GAAmBC,EAAUx4C,EAAYq5B,EAAWl5Y,KAAK+jZ,SAAU97Y,GAAUjI,KAAK00a,gBAAiB10a,KAAK8b,QAAS9b,KAAKi5Y,eAAgBj5Y,KAAK44Z,iBACzJ,CACDsvB,2BACIlob,KAAKib,kBAAkB09X,SAAW34Y,KAAKuob,oBAC1C,CACDC,gBACI,MAAMtpP,EAAOl/L,KAAK4zP,QAAQt+O,OAAQ/T,GAAMvB,KAAK6hb,UAA0B,IAAftgb,EAAEsgb,SAAqBtgb,EAAEsgb,UAC7E3iP,EAAK5+L,OAAS,GACdN,KAAK8K,OAAO88M,SAASniN,QAAKilB,MAAK,IAAIxe,UAAUizK,GAAKn/K,KAAK0pb,eAAexqP,GAE7E,CACD8lP,oBAAoB1wY,GAChB,MAAMkpY,EAAkBx9a,KAAKw9a,gBAAkB,GACzC+J,EAAsBvnb,KAAK44Z,iBAC5B7H,qBAAqB37Y,UAAU1T,MAAM4yC,EAAM35B,MAAO25B,EAAMx5B,IAAM,GACnE,QAASha,EAAM,EAAGA,EAAMymb,EAAoBjnb,OAAQQ,IAAO,CACvD,IAAIw7G,EAASirU,EAAoBzmb,GACjC,KAAOw7G,EAAO3kF,QACV2kF,EAASA,EAAO3kF,OAEpB,MAAM5tB,EAAQ,CAACuyG,GACf,KAAOvyG,EAAMzJ,QACTg8G,EAASvyG,EAAM67C,QACf43X,EAAgBxha,KAAKsgG,GACjBA,EAAO4tS,eACPngZ,EAAM+5D,QAAQ3vC,MAAMpqB,EAAOuyG,EAAO+vS,eAG1C,MAAMs/B,GAAgBnO,EAAgBA,EAAgBl9a,OAAS,GAE/D,IADAg8G,EAASirU,EAAoBzmb,GACtBw7G,IAAWqvU,IAAiB7qb,EAAMymb,EAAoBjnb,QACzDQ,IACAw7G,EAASirU,EAAoBzmb,EAEpC,CACD,GAAIwzC,EAAM35B,MAAQ,EAAG,CACjB,MAAM5E,EAAQwxa,EAAoB,GAClC,IAAI5+Z,EAAS2rB,EAAM3rB,OACftT,EAAUmoa,EAAgB,GAC1Bhxa,GAAQ,EACZ,KAAO6I,IAAYU,GACf4S,GAAUtT,EAAQ60Y,cAAgB,EAAI70Y,EAAQb,MAC9ChI,KACA6I,EAAUmoa,EAAgBhxa,IAE9B,GAAImc,EAAS,EAAG,CACZ,MAAMqoY,GAAchxZ,KAAK44Z,iBAAiB5H,YAC1C,IAAIrpR,GACJ,QAAS7mI,GAAM,EAAGA,IAAOkwZ,GAAalwZ,KAAO,CACzC,MAAMw/a,GAAex/a,GAAMkwZ,GAAc,IAAI7b,GAAqBxtQ,IAAY,IAAI2sQ,GAAW3sQ,IAC7FA,GAAW24S,GACXA,GAAa75Z,MAAQ,OACrB65Z,GAAa9ra,MAAQmU,EACrB60Z,EAAgB15W,QAAQw8W,GAC3B,CACJ,CACJ,CACDtgb,KAAKunb,oBAAsB/J,EAAgBloa,OAAO/T,IAAMA,EAAE2oZ,cAC7D,CACDs9B,sBAAsBh7a,EAAOoyB,GACzB,MAAMgtZ,EAA+C,mBAA1B5rb,KAAKmqb,iBAChC,MAAI7za,UAAes1a,EACf,MAAM,IAAIrrb,MAAM,sOAIhB,EAAC+V,UAAes1a,GAGhB5rb,KAAKsgZ,eAAerqL,WAAWzpN,EAAO,QAAUoyB,GAChD5+B,KAAKsgZ,eAAevE,UAAUvvY,EAAO,KAE5C,CACDk7a,qBAAqBl7a,EAAOoyB,GACxB,MAAMgtZ,EAA8C,mBAAzB5rb,KAAKoqb,gBAChC,MAAI9za,UAAes1a,EACf,MAAM,IAAIrrb,MAAM,uOAIhB,EAAC+V,UAAes1a,GAGhB5rb,KAAKqgZ,cAAcpqL,WAAW,CAAEwoB,WAAYjyO,MAAaoyB,GACzD5+B,KAAKqgZ,cAActE,UAAU,CAAEvvY,SAEtC,CACD87a,qBAAqBuD,GACjB,MAAMjib,EAAgBiib,EAAkBjib,cACxC,IAAKA,EAED,OAAO,EAEX,MAAMgX,EAAeira,EAAkBjra,aACvC,OAAKA,IAAyC,IAAzBA,EAAa8+H,SAI3B91I,EAAcggI,OAAShpH,EAAagpH,IAC9C,EAEL43S,GAAcz+a,UAAd,0BAA2Gy+a,IAv/mBJx+a,MAu/mBmC0qZ,IAv/mBnC1qZ,MAu/mBqE2rL,IAv/mBrE3rL,MAu/mBkGijZ,IAv/mBlGjjZ,MAu/mBmIA,OAv/mBnIA,MAu/mB6JivZ,IAv/mB7JjvZ,MAu/mB0Ly4Y,IAv/mB1Lz4Y,MAu/mBoNwvZ,IAv/mBpNxvZ,MAu/mB0Po5Y,IAv/mB1Pp5Y,MAu/mBqR85Y,IAv/mBrR95Y,MAu/mB6SowZ,IAv/mB7SpwZ,MAu/mBuUuwZ,IAv/mBvUvwZ,MAu/mB8V+wZ,IAv/mB9V/wZ,MAu/mB4XA,OAv/mB5XA,MAu/mBqZqxZ,IAv/mBrZrxZ,MAu/mB8aA,OAv/mB9aA,MAu/mBoc68L,IAv/mBpc78L,MAu/mBke6zY,IAv/mBle7zY,MAu/mB+fqyZ,IAv/mB/fryZ,MAu/mBiiBA,OAv/mBjiBA,MAu/mBkkBi1Z,IAv/mBlkBj1Z,MAu/mBmmBu1Z,IAv/mBnmBv1Z,MAu/mBioB0W,IAv/mBjoB1W,MAu/mB+pBq2Z,IAv/mB/pBr2Z,MAu/mBurBq4Y,IAv/mBvrBr4Y,MAu/mBwtBqQ,OAv/mBxtBrQ,MAu/mB2vBgtZ,IAAl2B,EACAwxB,GAAcjra,UAx/mByFvT,MAw/mBvG,MAA+Fw+a,GAA/Fjua,mEAx/mBuGvQ,MAw/mBvGwT,EAyCuD89X,GAzCvD,GAx/mBuGtxY,MAw/mBvGwT,EAyC0H22Y,GAzC1H,GAx/mBuGnqZ,MAw/mBvGwT,EAyC+MkjZ,GAzC/M,GAx/mBuG12Z,MAw/mBvGwT,EAyCqSmjZ,GAzCrS,GAx/mBuG32Z,MAw/mBvGwT,EAyCyXi8Y,GAzCzX,GAx/mBuGzvZ,MAw/mBvGwT,EAyC2c88Y,GAzC3c,GAx/mBuGtwZ,MAw/mBvGwT,EAyC2hB+9Y,GAzC3hB,GAx/mBuGvxZ,MAw/mBvGwT,EAyCymBgzY,GAzCzmB,eAx/mBuGxmZ,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,aAx/mBuGxQ,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,4BAx/mBuGxQ,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,iCAx/mBuGxQ,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,6BAx/mBuGxQ,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,+BAx/mBuGxQ,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,2BAx/mBuGxQ,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,6BAx/mBuGxQ,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,4DAx/mBuGxQ,KAw/mBvG8ob,MAx/mBuG9ob,KAw/mBvG+ob,MAx/mBuG/ob,KAw/mBvGgpb,MAx/mBuGhpb,KAw/mBvGipb,kBAx/mBuGjpb,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,wBAx/mBuGxQ,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,kBAx/mBuGxQ,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,oBAx/mBuGxQ,MAw/mBvGyT,EAx/mBuGzT,WAw/mBvGwQ,0DAx/mBuGxQ,MAw/mBvG,aAx/mBuGA,MAw/mBvG,uBAx/mBuGA,CAw/mBvG,uCAx/mBuGA,CAw/mBvG,kCAx/mBuGA,CAw/mBvG,k8CAx/mBuGA,MAw/mBswD,CACr2D0qZ,GACAj6Y,MACA8kZ,GACA5pO,GACAs3N,GACA7J,GACAX,GACAwW,GACAO,GACA1V,GACAyW,GACAM,GACA,CACI1tZ,QAAS84Y,GACTz4Y,SA17kBe,IA47kBnB,CACIL,QAASuN,MACTlN,SAAU,cAEd4sZ,GACAW,GACA7Y,GACAmZ,GACAx0N,GACAnuB,GACAylO,GACAN,GACAwe,GACAiB,GACAa,GACAM,GACAO,GACAC,GACAv+Y,GACA+iY,GACAgN,GACApO,GACAge,GACArJ,KAhinB+FhtZ,OAw/mBvGuf,wPA4C6BH,gKA5C7B8pa,EA+CuB9pa,+GA/CvB+pa,EAqD4B/pa,6GArD5Bgqa,EAwD+Bhqa,sHAxD/Biqa,EA2D2Bjqa,0GA3D3Bkqa,EA8D2Blqa,0GA9D3Bmqa,EAiEuBnqa,iGAjEvBoqa,GAoEqBpqa,4FApErBqqa,GAuEwBrqa,iGAvExBsqa,GA0EuCtqa,6GA1EvCq8L,GA6E+Br8L,8GA7E/Bs8L,GAgFoBt8L,0EAhFpBu8L,GA+F8Bv8L,0FA/F9Bw8L,GAkGiCx8L,qGAlGjCy8L,GAqGkCz8L,4FArGlC08L,GAwGqC18L,uGAxGrC28L,GA2GmC38L,+FA3GnC48L,GA8GsC58L,0GA9GtC68L,GAiHsC78L,wGAjHtC88L,GAoHoC98L,gGApHpC+8L,GAuHuC/8L,mHAvHvCg9L,GA0HoCh9L,kGA1HpCi9L,GA6H+Bj9L,2HA7H/Buqa,GAgI8Bvqa,qGAhI9Bwqa,GAmI+Bxqa,qHAnI/Byqa,GAsI8Bzqa,+FAtI9B0qa,GAyI0B1qa,yFAzI1B2qa,GA4I2B3qa,4FA5I3B4qa,GA+I8B5qa,0FA/I9B6qa,GAkJwC7qa,2HAlJxC8qa,GAqJiC9qa,+FArJjC+qa,GAwJkC/qa,kGAxJlCgra,GA2JyChra,8HA3JzCira,GA8JgCjra,+EA9JhCkra,GAiK+Blra,mFAjK/Bmra,GAoK4Bnra,2EApK5Bora,GAuK2Bpra,wEAvK3Bqra,GA0KqBrra,wDA1KrBsra,GA6KuBtra,gEA7KvBura,GAmLqBvra,8FAnLrBwra,GAsLkBxra,qFAtLlByra,GAyLoBzra,2FAzLpB0ra,GA4L+B1ra,gIA5L/B2ra,GA+LmB3ra,wFA/LnB4ra,GAkMqB5ra,8FAlMrB6ra,GAqMsB7ra,oEArMtB8ra,GAwM2B9ra,kHAxM3B+ra,GA2M4B/ra,qHA3M5Bgsa,GA8M6Bhsa,kHA9M7Bisa,GAiN8Bjsa,qHAjN9Bksa,GAoN2Blsa,0GApN3Bmsa,GAuN0Bnsa,2HAvN1Bosa,GA0N0Bpsa,2HA1N1Bqsa,GA6N0Brsa,gGA7N1Bssa,GAgO4Btsa,sGAhO5Busa,GAmO6Bvsa,8FAnO7Bwsa,GAsO8Bxsa,2GAtO9Bysa,GAyOoCzsa,iHAzOpC0sa,GA4OoC1sa,iHA5OpC2sa,GA+OoC3sa,uGA/OpC4sa,GAkPoC5sa,oHAlPpC6sa,GAqP2B7sa,gJArP3B8sa,GAwPyB9sa,0IAxPzB+sa,GAkDwB/sa,iGAlDxBgta,GAmF8Bhta,sHAnF9Bita,GAsF6Bjta,2GAtF7Bkta,GAyF8Clta,0IAzF9Cmta,GA4F0Cnta,kIA5F1Cota,GAgLwBpta,sGAhLxB,i5KAx/mBuGpf,MAkinB/F,KAlinB+FA,MAkinB/F,KAlinB+FA,cAmvnB/F,iCAnvnB+FA,MAovnB/F,0BApvnB+FA,MAgwnB/F,qCAhwnB+FA,MAswnB/F,aAtwnB+FA,MA4wnB/F,4BA5wnB+FA,MA85nB/F,4BA95nB+FA,MAk9nB/F,kBAl9nB+FA,cAq9nB/F,2BAr9nB+FA,MAg+nB/F,oCAxeR,MAx/mBuGA,MAkinB/F,sDAlinB+FA,CAkinB/F,sBAlinB+FA,CAkinB/F,2BAlinB+FA,CAkinB/F,gCAlinB+FA,CAkinB/F,4BAlinB+FA,CAkinB/F,4BAlinB+FA,MAkinB/F,GAlinB+FA,MAmvnBzC,GAnvnByCA,MAmvnBzC,yBAnvnByCA,MAqvnB1F,GArvnB0FA,MAqvnB1F,uBArvnB0FA,MAiwnB1F,GAjwnB0FA,MAiwnB1F,yBAjwnB0FA,MAywnB3F,GAzwnB2FA,MAywnB3F,yBAzwnB2FA,CAywnB3F,+BAzwnB2FA,CAywnB3F,gCAzwnB2FA,MA4wnBhF,GA5wnBgFA,MA4wnBhF,uBA5wnBgFA,MA85nBhF,GA95nBgFA,MA85nBhF,wBA95nBgFA,MAk9nBrD,GAl9nBqDA,MAk9nBrD,kBAl9nBqDA,MAs9nB1F,GAt9nB0FA,MAs9nB1F,0BAt9nB0FA,MAg+nBnB,GAh+nBmBA,MAg+nBnB,4BAxepF,gBAye4C42Z,GAAkFuC,GAA0I6C,GAAoHgB,GAA+G3yO,GAA8Tv1K,GAA2akpa,GAAkK7I,GAA0Z+I,GAAuG3lO,GAAgFjuL,MAAiFiuZ,GAAmFa,GAA0I3tP,KAA+Im5N,IAzep4EnvY,kBAwoCA,MAAMg3a,GACF3vb,YAAYkqW,EAAMpmM,EAAgBygP,GAC9BrkZ,KAAKgqW,KAAOA,EACZhqW,KAAK4jK,eAAiBA,EACtB5jK,KAAKqkZ,wBAA0BA,EAC/BrkZ,KAAKw5B,MAAQ,CACTwa,KAAM,GAEVh0C,KAAKo1O,aAAe,GAChBivK,IACArkZ,KAAK+lZ,wBAA0B/lZ,KAAKqkZ,wBAAwBp4Y,QAAQC,UAAUlM,KAAK+9a,OAAO7wa,KAAKlN,OAEtG,CAIGg0C,SAAK9rC,GACAD,GAAUC,KACXA,EAAQ,GAEZlI,KAAKgqW,KAAKh2T,KAAOh0C,KAAKw5B,MAAMwa,KAAO9rC,CACtC,CAIG05B,SAAK15B,GACLlI,KAAKgqW,KAAKpoU,KAAO5hC,KAAKw5B,MAAMoI,KAAO15B,CACtC,CAIGoN,WAAOpN,GACPlI,KAAKgqW,KAAK10V,OAAStV,KAAKw5B,MAAMlkB,OAASpN,CAC1C,CAIG05N,aAAS15N,GACTlI,KAAKgqW,KAAKpoI,SAAW5hO,KAAKw5B,MAAM9O,KAAOxiB,CAC1C,CAIG4kC,UAAM5kC,GACNlI,KAAKgqW,KAAKl9T,MAAQ9sC,KAAKw5B,MAAMsT,MAAQ5kC,CACxC,CAIGqX,SAAKrX,GACLlI,KAAKo1O,aAAeltO,GAAS,GACzBlI,KAAKqkZ,0BACLrkZ,KAAKqkZ,wBAAwB9kY,KAAOrX,GAExClI,KAAK2zZ,aAAc,CACtB,CAIDrkZ,WACItP,KAAK0vb,WAAW1vb,KAAKw5B,OACrBx5B,KAAK0ob,wBAA0B1ob,KAAKgqW,KAC/Bg4E,gBACA91a,UAAUlM,KAAKk8T,cAAchvT,KAAKlN,MAC1C,CAID6Q,cACQ7Q,KAAK0ob,yBACL1ob,KAAK0ob,wBAAwBz3a,cAE7BjR,KAAK+lZ,yBACL/lZ,KAAK+lZ,wBAAwB90Y,aAEpC,CAIDZ,YAAYpE,IACR,EAAI2kK,MAAW,CAAC,WAAY,OAAQ,OAAQ,QAAS,UAAW3kK,IAC5DjM,KAAK+9a,QAEZ,CACD/1P,YACQhoL,KAAK2zZ,aACL3zZ,KAAK2vb,gBAEZ,CAIDzzH,cAAc1iS,GACVx5B,KAAK0vb,WAAWl2Z,GAChBx5B,KAAK+9a,QACR,CAIDA,SACI/9a,KAAKuf,KAAOvf,KAAKo1O,aACjBp1O,KAAK2vb,iBACL3vb,KAAK4vb,kBACR,CAIDA,mBACI5vb,KAAKgqW,KAAK89E,eACN9nb,KAAK4jK,gBACL5jK,KAAK4jK,eAAehmJ,cAE3B,CACDzD,QAAQqf,GACJ,SAAOrf,OAAQna,KAAKo1O,aAAc57M,EACrC,CACDk2Z,YAAa17Y,OAAMtpB,OAAMkX,OAAMkL,QAAOx3B,WAClCtV,KAAKg0C,KAAOA,EACZh0C,KAAK4hO,SAAWl3M,EAChB1qB,KAAK4hC,KAAOA,EACZ5hC,KAAK8sC,MAAQA,EACb9sC,KAAKsV,OAASA,CACjB,CACDq6a,iBACI3vb,KAAKgqW,KAAKzqV,KAAOvf,KAAKma,QAAQna,KAAKw5B,OACnCx5B,KAAK2zZ,aAAc,CACtB,EAEL87B,GAAqB1sb,UAArB,0BAAkH0sb,IAhwpBXzsb,MAgwpBiDw+a,IAhwpBjDx+a,MAgwpB2EA,OAhwpB3EA,MAgwpB4Gm0Y,IAAnN,EACAs4C,GAAqBn8a,UAjwpBkFtQ,MAiwpBvG,MAAsGysb,GAAtGl8a,qKAjwpBuGvQ,SA0xpBvG,MAAM6sb,WAA2BjxV,GAC7B9+F,YAAY0T,EAAK4sN,GACbniN,MAAMzK,EAAK4sN,GACXpgO,KAAKwT,IAAMA,CACd,CAIDlE,YACqC,IAA7BtP,KAAKwT,IAAIw2V,KAAKhqI,aACdhgO,KAAKwT,IAAIw2V,KAAKhqI,YAAa,GAE/BhgO,KAAKwT,IAAIw2V,KAAK64E,mBAAqB7ib,IACtC,CAID6Q,cACIoN,MAAMkP,SACT,EAEL0ia,GAAmB9sb,UAAnB,0BAAgH8sb,IA/ypBT7sb,MA+ypB6CgtZ,IA/ypB7ChtZ,MA+ypBwEA,OAA/K,EACA6sb,GAAmBv8a,UAhzpBoFtQ,MAgzpBvG,MAAoG6sb,GAApGt8a,kDAhzpBuGvQ,SA2zpBvG,MAAM8sb,GACFhwb,YAAYkqW,GACRhqW,KAAKgqW,KAAOA,EAIZhqW,KAAK+vb,yBAA2B,IAAI7kb,MAIpClL,KAAKgwb,mBAAqB,GAO1Bhwb,KAAKiwb,mBAAoB,EACzBjwb,KAAKkwb,cAAgB,IAAI50Z,IACzBt7B,KAAKknB,cAAgB,IAAItb,MACzB5L,KAAKgqW,KAAKmgF,iBAAmBnqb,KAAKi2N,WAAW/oN,KAAKlN,MAClDA,KAAKknB,cAAclb,OAAIiR,KAAMjd,KAAKgqW,KAAKqzE,aAAa53a,QAAKpE,MAAIojB,GAAMpF,OAAOC,OAAO,CAAEsf,QAAQ,GAAQna,KAAOzkB,KAAKgqW,KAAKm4E,eAAe18a,QAAKpE,MAAIojB,GAAMpF,OAAOC,OAAO,CAAEsf,QAAQ,GAASna,MAAOvY,UAAUlM,KAAKs6Z,YAAYptZ,KAAKlN,OAC7N,CAIGmwb,uBACA,OAAOnwb,KAAKowb,SACf,CACGD,qBAAiBv2Z,GACbxJ,GAASwJ,GACT55B,KAAKowb,aAAYz9Z,OAAOiH,GAGxB55B,KAAKowb,UAAYx2Z,CAExB,CAMGy2Z,qBACA,OAAOrwb,KAAKmwb,gBACf,CACGE,mBAAez2Z,GACf55B,KAAKmwb,iBAAmBv2Z,CAC3B,CACDvpB,YAAYpE,GAEJhE,GAAUgE,EAAQ+jb,qBAAuBhwb,KAAKswb,oBAAsBtwb,KAAKgwb,qBACzEhwb,KAAKkwb,cAAgB,IAAI50Z,IAAIt7B,KAAKgwb,oBAEzC,CACDn/a,cACI7Q,KAAKknB,cAAcjW,aACtB,CACGs/a,gBACA,OAAOvwb,KAAKowb,cAAaz9Z,YAAO5d,EACnC,CAIDkhN,WAAW77M,GACP,MAAMwf,EAAM55B,KAAKuwb,UAAUn2a,EAAKjC,UAC1BwvN,EAAS3nO,KAAKkwb,cAAcj1Z,IAAIrB,GAEtC,OAAO55B,KAAKiwb,mBAAqBtoN,EAASA,CAC7C,CACD2yL,YAAYlgZ,GACR,MAAMwf,EAAM55B,KAAKuwb,UAAUn2a,EAAKjC,UAC5Bk6B,QAAQryC,KAAKiwb,qBAAuB71a,EAAKwkB,OACzC5+B,KAAKkwb,cAAclkb,IAAI4tB,GAGvB55B,KAAKkwb,cAAch1Z,OAAOtB,GAE9B55B,KAAK0wZ,cACR,CACDA,eACI1wZ,KAAKswb,kBAAoBnvb,MAAMqE,KAAKxF,KAAKkwb,eACzClwb,KAAK+vb,yBAAyB3/a,KAAKpQ,KAAKswb,kBAC3C,EAELR,GAAuB/sb,UAAvB,0BAAoH+sb,IA/4pBb9sb,MA+4pBqDw+a,IAA5J,EACAsO,GAAuBx8a,UAh5pBgFtQ,MAg5pBvG,MAAwG8sb,GAAxGv8a,qVAh5pBuGvQ,SAo6pBvG,MAAMwtb,GAAkBh1C,IACpB,MAAMi1C,EAAkB,GACxB,KAAOj1C,GACHi1C,EAAgBz0a,KAAK,CAAEwV,MAAOgqX,EAAY1uW,MAAMtb,MAAOtpB,MAAOszY,EAAY1uW,MAAM5kC,QAChFszY,EAAcA,EAAYA,YAE9B,OAAOi1C,GAELC,GAAsBC,KACxBn/Z,MAAOm/Z,EAAa7jZ,MAAMtb,MAC1BtpB,MAAOyob,EAAa7jZ,MAAM5kC,MAC1Buob,gBAAiBD,GAAeG,EAAan1C,eAMjD,MAAMo1C,GACF9wb,YAAYkqW,GACRhqW,KAAKgqW,KAAOA,EAIZhqW,KAAK6wb,wBAA0B,IAAI3lb,MAKnClL,KAAK8wb,yBAA0B,EAC/B9wb,KAAKknB,cAAgB,IAAItb,MACzB5L,KAAKgqW,KAAKogF,gBAAkBpqb,KAAKi2N,WAAW/oN,KAAKlN,MACjDA,KAAKknB,cAAclb,OAAIiR,KAAMjd,KAAKgqW,KAAKi4E,YAAYx8a,QAAKpE,MAAIojB,GAAMpF,OAAOC,OAAO,CAAEsf,QAAQ,GAAQna,KAAOzkB,KAAKgqW,KAAKk4E,cAAcz8a,QAAKpE,MAAIojB,GAAMpF,OAAOC,OAAO,CAAEsf,QAAQ,GAASna,MAAOvY,UAAUlM,KAAKs6Z,YAAYptZ,KAAKlN,OAC3N,CAKG+wb,oBACA,OAAO/wb,KAAKgxb,cACf,CACGD,kBAAcn3Z,GACK,mBAARA,IACP55B,KAAKgxb,eAAiBp3Z,EAE7B,CAIGq3Z,wBACA,OAAOjxb,KAAKkxb,kBACf,CACGD,sBAAkBE,GAClBnxb,KAAKkxb,oBAAsBC,GAAkB,IAAIzvb,OACpD,CACDmP,cACI7Q,KAAKknB,cAAcjW,aACtB,CACGs/a,gBACA,OAAOvwb,KAAK+wb,eAAiBL,EAChC,CAIDz6N,WAAW0lL,GAEP,OADkB37Y,KAAKoxb,aAAaz1C,IACjB,GAAM37Y,KAAK8wb,wBAA0B9wb,KAAK8wb,uBAChE,CACDM,aAAaz1C,GACT,OAAI37Y,KAAK+wb,cACE/wb,KAAKixb,kBAAkBhwb,QAAQjB,KAAKuwb,UAAU50C,IAElD37Y,KAAKixb,kBAAkB1sb,UAAUiiB,IACpC,IAAIha,EAAQ,EACRgvY,EAAcG,EAAUH,YAC5B,KAAOvzY,GAAUuzY,IAAc,CAC3B,IAAKvzY,GAAUue,EAAKiqa,mBAAqBxob,GAAUue,EAAKiqa,gBAAgBjkb,KACpEgvY,EAAY1uW,MAAM5kC,QAAUse,EAAKiqa,gBAAgBjkb,GAAOtE,OACxDszY,EAAY1uW,MAAMtb,QAAUhL,EAAKiqa,gBAAgBjkb,GAAOglB,MACxD,OAAO,EAEXgqX,EAAcA,EAAYA,YAC1BhvY,GACH,CACD,OAAOga,EAAKte,QAAUyzY,EAAU7uW,MAAM5kC,OAASse,EAAKgL,QAAUmqX,EAAU7uW,MAAMtb,OAErF,CACD8oY,YAAY3e,GACR,MAAM/hX,EAAM55B,KAAKuwb,UAAU50C,GAC3B,GAAItpW,QAAQryC,KAAK8wb,2BAA6Bn1C,EAAU/8W,OACpD5+B,KAAKixb,kBAAkBj1a,KAAK4d,OAE3B,CACD,MAAMptB,EAAQxM,KAAKixb,kBAAkBhwb,QAAQ24B,GAC7C55B,KAAKixb,kBAAkBpqY,OAAOr6C,EAAO,EACxC,CACDxM,KAAK6wb,wBAAwBzgb,KAAKpQ,KAAKixb,kBAAkBvvb,QAC5D,EAELkvb,GAAqB7tb,UAArB,0BAAkH6tb,IAtgqBX5tb,MAsgqBiDw+a,IAAxJ,EACAoP,GAAqBt9a,UAvgqBkFtQ,MAugqBvG,MAAsG4tb,GAAtGr9a,ySAsBA,MAAMshN,WAAgCusN,GAClCthb,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,CACG0X,eACA,OAAO,CACV,EAELuyM,GAAwB9xN,UAAxB,0BAAqH8xN,IAtiqBd7xN,MAsiqBuDqQ,OAA9J,EACAwhN,GAAwBt+M,UAviqB+EvT,MAuiqBvG,MAAyG6xN,GAAzGthN,8CAviqBuGvQ,MAuiqBuE,CACtK,CACImD,QAASi7a,GACTlja,eAAaC,OAAW,IAAM02M,OA1iqB6D7xN,OAuiqBvGuf,0DAqBA,MAAM8ua,GAAkB5uB,GAAkB,CACtCpB,uBAA0B,WAC1BC,0BAA6B,iBAC7BX,iBAAoB,KACpBC,oBAAuB,MACvBW,yBAA4B,aAC5BC,uBAA0B,WAC1BP,qBAAwB,SACxBC,wBAA2B,YAC3BC,sBAAyB,UACzBC,yBAA4B,eAKhC,MAAMkwB,WAAwC5uB,GAC1C5ia,YAAY6ia,EAAermT,EAAQzxG,GAC/BoT,MAAM0kZ,GACN3ia,KAAK6K,aAAeA,EACpB7K,KAAKuta,eAAgB,EACrBvta,KAAK8ia,iBAAmBuuB,GAAgBrxb,KAAK6K,cAC7C7K,KAAKs8G,OAASA,CACjB,CACG0nC,eAAW97I,GACXlI,KAAKuxb,YAAcrpb,CACtB,CACG87I,iBACA,OAAOhkJ,KAAKuxb,YAAcvxb,KAAKuxb,YAAcvxb,KAAKs8G,OAAO9qF,KAC5D,CACGyxY,oBACA,OAAOjja,KAAKgja,cAAchja,KAAKs8G,OAAO9qF,MACzC,CACGsyY,sBACA,OAAO9ja,KAAKija,cAAgBjja,KAAKija,cAAcjrM,SAAW,UAC7D,EAELs5N,GAAgCvub,UAAhC,0BAA6Huub,IAhmqBtBtub,MAgmqBuEowZ,IAhmqBvEpwZ,MAgmqBiGkyY,IAhmqBjGlyY,MAgmqB6HqQ,OAApO,EACAi+a,GAAgC/6a,UAjmqBuEvT,MAimqBvG,MAAiHsub,GAAjH/9a,yKAjmqBuGvQ,OAimqBvGuf,6JAjmqBuGvf,MAkmqB/F,sCAlmqB+FA,MAumqB3F,0BAvmqB2FA,SAimqBvG,MAjmqBuGA,MAmmqB3F,kBAnmqB2FA,CAmmqB3F,kBAnmqB2FA,CAmmqB3F,wBAnmqB2FA,CAmmqB3F,iCAnmqB2FA,MAymqBvF,GAzmqBuFA,MAymqBvF,cAzmqBuFA,CAymqBvF,0BAzmqBuFA,CAymqBvF,0DARhB,gBAa4C8qa,GAA6GjS,MAA0e7wK,IAbnoBvyO,kBAgEA,MAAMq8M,GACY/uN,iBACV,MAAO,CACHmvY,GACAgX,GACA/W,GACAr4J,GACAqwK,GACAj2Y,GAEP,EAEL49M,GAAa/xN,UAAb,0BAA0G+xN,GAA1G,EACAA,GAAaruN,UA9qqB0FzD,MA8qqBvG,MAA2G8xN,KA2B3GA,GAAapuN,UAzsqB0F1D,MAysqBvG,UAAmI,CAAC8T,OAAey6J,KAAiB9jJ,QAiBpK,MAAM+ja,WAAwC3vB,GAC1C/ha,YAAY+K,GAAgBoT,MAAM,WAAYpT,EAAgB,EAElE2mb,GAAgCzub,UAAhC,0BAA6Hyub,IA7tqBtBxub,MA6tqBuEqQ,OAA9K,EACAm+a,GAAgCj7a,UA9tqBuEvT,MA8tqBvG,MAAiHwub,GAAjHj+a,yDA9tqBuGvQ,MA8tqBkG,CACjM,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMqza,OAjuqB6Dxub,OA8tqBvGuf,0DA2BA,MAAMkva,WAA8C5vB,GAChD/ha,YAAY+K,GAAgBoT,MAAM,iBAAkBpT,EAAgB,EAExE4mb,GAAsC1ub,UAAtC,0BAAmI0ub,IA5vqB5Bzub,MA4vqBmFqQ,OAA1L,EACAo+a,GAAsCl7a,UA7vqBiEvT,MA6vqBvG,MAAuHyub,GAAvHl+a,6DA7vqBuGvQ,MA6vqBkH,CACjN,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMsza,OAhwqB6Dzub,OA6vqBvGuf,0DA2BA,MAAMmva,WAAwC7vB,GAC1C/ha,YAAY+K,GAAgBoT,MAAM,WAAYpT,EAAgB,EAElE6mb,GAAgC3ub,UAAhC,0BAA6H2ub,IA3xqBtB1ub,MA2xqBuEqQ,OAA9K,EACAq+a,GAAgCn7a,UA5xqBuEvT,MA4xqBvG,MAAiH0ub,GAAjHn+a,yDA5xqBuGvQ,MA4xqBkG,CACjM,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMuza,OA/xqB6D1ub,OA4xqBvGuf,0DA2BA,MAAMova,WAAqC9vB,GACvC/ha,YAAY+K,GAAgBoT,MAAM,KAAMpT,EAAgB,EAE5D8mb,GAA6B5ub,UAA7B,0BAA0H4ub,IA1zqBnB3ub,MA0zqBiEqQ,OAAxK,EACAs+a,GAA6Bp7a,UA3zqB0EvT,MA2zqBvG,MAA8G2ub,GAA9Gp+a,mDA3zqBuGvQ,MA2zqBsF,CACrL,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMwza,OA9zqB6D3ub,OA2zqBvGuf,0DA2BA,MAAMqva,WAAuC/vB,GACzC/ha,YAAY+K,GAAgBoT,MAAM,UAAWpT,EAAgB,EAEjE+mb,GAA+B7ub,UAA/B,0BAA4H6ub,IAz1qBrB5ub,MAy1qBqEqQ,OAA5K,EACAu+a,GAA+Br7a,UA11qBwEvT,MA01qBvG,MAAgH4ub,GAAhHr+a,wDA11qBuGvQ,MA01qB+F,CAC9L,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMyza,OA71qB6D5ub,OA01qBvGuf,0DA2BA,MAAMsva,WAA0ChwB,GAC5C/ha,YAAY+K,GAAgBoT,MAAM,aAAcpT,EAAgB,EAEpEgnb,GAAkC9ub,UAAlC,0BAA+H8ub,IAx3qBxB7ub,MAw3qB2EqQ,OAAlL,EACAw+a,GAAkCt7a,UAz3qBqEvT,MAy3qBvG,MAAmH6ub,GAAnHt+a,2DAz3qBuGvQ,MAy3qBwG,CACvM,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAM0za,OA53qB6D7ub,OAy3qBvGuf,0DA2BA,MAAMuva,WAAyCjwB,GAC3C/ha,YAAY+K,GAAgBoT,MAAM,YAAapT,EAAgB,EAEnEinb,GAAiC/ub,UAAjC,0BAA8H+ub,IAv5qBvB9ub,MAu5qByEqQ,OAAhL,EACAy+a,GAAiCv7a,UAx5qBsEvT,MAw5qBvG,MAAkH8ub,GAAlHv+a,0DAx5qBuGvQ,MAw5qBqG,CACpM,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAM2za,OA35qB6D9ub,OAw5qBvGuf,0DA2BA,MAAMwva,WAAsClwB,GACxC/ha,YAAY+K,GAAgBoT,MAAM,SAAUpT,EAAgB,EAEhEknb,GAA8Bhvb,UAA9B,0BAA2Hgvb,IAt7qBpB/ub,MAs7qBmEqQ,OAA1K,EACA0+a,GAA8Bx7a,UAv7qByEvT,MAu7qBvG,MAA+G+ub,GAA/Gx+a,uDAv7qBuGvQ,MAu7qB4F,CAC3L,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAM4za,OA17qB6D/ub,OAu7qBvGuf,0DA2BA,MAAMyva,WAAwCnwB,GAC1C/ha,YAAY+K,GAAgBoT,MAAM,MAAOpT,EAAgB,EAE7Dmnb,GAAgCjvb,UAAhC,0BAA6Hivb,IAr9qBtBhvb,MAq9qBuEqQ,OAA9K,EACA2+a,GAAgCz7a,UAt9qBuEvT,MAs9qBvG,MAAiHgvb,GAAjHz+a,oDAt9qBuGvQ,MAs9qB6F,CAC5L,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAM6za,OAz9qB6Dhvb,OAs9qBvGuf,0DA2BA,MAAM0va,WAA0CpwB,GAC5C/ha,YAAY+K,GAAgBoT,MAAM,aAAcpT,EAAgB,EAEpEonb,GAAkClvb,UAAlC,0BAA+Hkvb,IAp/qBxBjvb,MAo/qB2EqQ,OAAlL,EACA4+a,GAAkC17a,UAr/qBqEvT,MAq/qBvG,MAAmHivb,GAAnH1+a,2DAr/qBuGvQ,MAq/qBwG,CACvM,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAM8za,OAx/qB6Djvb,OAq/qBvGuf,0DA2BA,MAAM2va,WAAuCrwB,GACzC/ha,YAAY+K,GAAgBoT,MAAM,KAAMpT,EAAgB,EAE5Dqnb,GAA+Bnvb,UAA/B,0BAA4Hmvb,IAnhrBrBlvb,MAmhrBqEqQ,OAA5K,EACA6+a,GAA+B37a,UAphrBwEvT,MAohrBvG,MAAgHkvb,GAAhH3+a,mDAphrBuGvQ,MAohrB0F,CACzL,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAM+za,OAvhrB6Dlvb,OAohrBvGuf,0DA2BA,MAAM4va,WAAgDtwB,GAClD/ha,YAAY+K,GAAgBoT,MAAM,MAAOpT,EAAgB,EAE7Dsnb,GAAwCpvb,UAAxC,0BAAqIovb,IAljrB9Bnvb,MAkjrBuFqQ,OAA9L,EACA8+a,GAAwC57a,UAnjrB+DvT,MAmjrBvG,MAAyHmvb,GAAzH5+a,oDAnjrBuGvQ,MAmjrB6G,CAC5M,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMg0a,OAtjrB6Dnvb,OAmjrBvGuf,0DA2BA,MAAM6va,WAAoCvwB,GACtC/ha,YAAY+K,GAAgBoT,MAAM,KAAMpT,EAAgB,EAE5Dunb,GAA4Brvb,UAA5B,0BAAyHqvb,IAjlrBlBpvb,MAilrB+DqQ,OAAtK,EACA++a,GAA4B77a,UAllrB2EvT,MAklrBvG,MAA6Govb,GAA7G7+a,mDAllrBuGvQ,MAklrBoF,CACnL,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMi0a,OArlrB6Dpvb,OAklrBvGuf,0DA2BA,MAAM8va,WAA6CxwB,GAC/C/ha,YAAY+K,GAAgBoT,MAAM,MAAOpT,EAAgB,EAE7Dwnb,GAAqCtvb,UAArC,0BAAkIsvb,IAhnrB3Brvb,MAgnrBiFqQ,OAAxL,EACAg/a,GAAqC97a,UAjnrBkEvT,MAinrBvG,MAAsHqvb,GAAtH9+a,oDAjnrBuGvQ,MAinrBuG,CACtM,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMk0a,OApnrB6Drvb,OAinrBvGuf,0DA2BA,MAAM+va,WAAqCzwB,GACvC/ha,YAAY+K,GAAgBoT,MAAM,QAASpT,EAAgB,CAI3D8yP,SACI,MAAO,CACHtlP,KAAMrY,KAAKqY,KACXnQ,MAAO,KAEd,EAELoqb,GAA6Bvvb,UAA7B,0BAA0Huvb,IAxprBnBtvb,MAwprBiEqQ,OAAxK,EACAi/a,GAA6B/7a,UAzprB0EvT,MAyprBvG,MAA8Gsvb,GAA9G/+a,sDAzprBuGvQ,MAyprByF,CACxL,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMm0a,OA5prB6Dtvb,OAyprBvGuf,0DA2BA,MAAMgwa,WAAuC1wB,GACzC/ha,YAAY+K,GAAgBoT,MAAM,WAAYpT,EAAgB,CAI9D8yP,SACI,MAAO,CACHtlP,KAAMrY,KAAKqY,KACXnQ,MAAO,MAEd,EAELqqb,GAA+Bxvb,UAA/B,0BAA4Hwvb,IAhsrBrBvvb,MAgsrBqEqQ,OAA5K,EACAk/a,GAA+Bh8a,UAjsrBwEvT,MAisrBvG,MAAgHuvb,GAAhHh/a,yDAjsrBuGvQ,MAisrBgG,CAC/L,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMo0a,OApsrB6Dvvb,OAisrBvGuf,0DA2BA,MAAMiwa,WAAwC3wB,GAC1C/ha,YAAY+K,GAAgBoT,MAAM,YAAapT,EAAgB,CAI/D8yP,SACI,MAAO,CACHtlP,KAAMrY,KAAKqY,KACXnQ,MAAO,MAEd,EAELsqb,GAAgCzvb,UAAhC,0BAA6Hyvb,IAxurBtBxvb,MAwurBuEqQ,OAA9K,EACAm/a,GAAgCj8a,UAzurBuEvT,MAyurBvG,MAAiHwvb,GAAjHj/a,0DAzurBuGvQ,MAyurBmG,CAClM,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMq0a,OA5urB6Dxvb,OAyurBvGuf,0DA2BA,MAAMkwa,UAAsC5wB,GACxC/ha,YAAY+K,GAAgBoT,MAAM,SAAUpT,EAAgB,CAI5D8yP,SACI,MAAO,CACHtlP,KAAMrY,KAAKqY,KACXnQ,MAAO,KAEd,EAELuqb,EAA8B1vb,UAA9B,0BAA2H0vb,GAhxrBpBzvb,MAgxrBmEqQ,OAA1K,EACAo/a,EAA8Bl8a,UAjxrByEvT,MAixrBvG,MAA+Gyvb,EAA/Gl/a,uDAjxrBuGvQ,MAixrB4F,CAC3L,CACImD,QAAS07Z,GACT3jZ,eAAaC,OAAW,IAAMs0a,MApxrB6Dzvb,OAixrBvGuf,0DAoBA,MAAMmwa,EAAmB,CACrBplB,GACAkkB,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAEEE,EAAoB,CACtB77a,MACAkzT,MACA9vE,MACAS,MACAF,MACA3iB,MACAnzB,MACAliM,MACAqyM,IAQJ,MAAM89N,EACY7sb,iBACV,MAAO,IACA2sb,EAEV,EAELE,EAAmB7vb,UAAnB,0BAAgH6vb,EAAhH,EACAA,EAAmBnsb,UAn1rBoFzD,MAm1rBvG,MAAiH4vb,IAqDjHA,EAAmBlsb,UAx4rBoF1D,MAw4rBvG,UAA+I,IAAI2vb,GAAoB77a,MAC/JkzT,MACA9vE,MACAS,MACAF,MACA3iB,MACAnzB,MACAliM,MACAqyM,MA+BR,MAAM+9N,EACY9sb,iBACV,MAAO,CACHupa,GACAhB,GACAljB,GACAkiB,GACAU,GACAC,GACAqjB,GACApjB,GACAC,GACAykB,EAAmBE,UAE1B,EAELD,EAAgB9vb,UAAhB,0BAA6G8vb,EAA7G,EACAA,EAAgBpsb,UAh8rBuFzD,MAg8rBvG,MAA8G6vb,IAmB9GA,EAAgBnsb,UAn9rBuF1D,MAm9rBvG,UAAyI,CAAC4vb,GAAqBA,KAW/J,MAAMG,EAAoB,CACtBj8a,MACAghO,MACAk7M,MACAn4L,MACAlsF,KACAmmD,IAiBJ,MAAMm+N,GACYltb,iBACV,MAAO,CACHo2Z,GACAzB,GACAc,GACAb,GACAS,GACAK,GACAK,GACAxI,GACAsI,GACAV,GAEP,EAEL+3B,GAAYlwb,UAAZ,0BAAyGkwb,GAAzG,EACAA,GAAYxsb,UAtgsB2FzD,MAsgsBvG,MAA0Giwb,KAwB1GA,GAAYvsb,UA9hsB2F1D,MA8hsBvG,UAAiI,IAAI+vb,MAiBrI,MAAMG,IAENA,GAAkBnwb,UAAlB,0BAA+Gmwb,GAA/G,EACAA,GAAkBzsb,UAljsBqFzD,MAkjsBvG,MAAgHkwb,KAGhHA,GAAkBxsb,UArjsBqF1D,MAqjsBvG,IAoBA,MAAMmwb,GACYptb,iBACV,MAAO,CACHgvY,GACAC,GACAC,GAEP,EAELk+C,GAAYpwb,UAAZ,0BAAyGowb,GAAzG,EACAA,GAAY1sb,UAnlsB2FzD,MAmlsBvG,MAA0Gmwb,KAW1GA,GAAYzsb,UA9lsB2F1D,MA8lsBvG,UAAiI,CAAC8T,MAAcg+M,GAAco+N,OAmC9J,MAAME,GACYrtb,iBACV,MAAO,CACHoga,GACA9a,GACAsb,GACAK,GACAI,GACA7B,GACA2B,GACA0rB,EAAmBE,UAE1B,EAELM,GAAiBrwb,UAAjB,0BAA8Gqwb,GAA9G,EACAA,GAAiB3sb,UAhpsBsFzD,MAgpsBvG,MAA+Gowb,KA2B/GA,GAAiB1sb,UA3qsBsF1D,MA2qsBvG,UAA2I,CAAC4vb,GAAqBA,KAmCjK,MAAMS,GACFvzb,YAAY+K,EAAc4+Z,EAAmBlrZ,EAAczT,EAAQH,EAAUi5J,GACzE5jK,KAAK6K,aAAeA,EACpB7K,KAAKypa,kBAAoBA,EACzBzpa,KAAKue,aAAeA,EACpBve,KAAK8K,OAASA,EACd9K,KAAK2K,SAAWA,EAChB3K,KAAK4jK,eAAiBA,EAItB5jK,KAAKuqa,UAAW,EAIhBvqa,KAAKwqa,cAAe,CACvB,CACG52K,cACA,OAAO5zP,KAAKypa,kBAAkB3Q,gBACjC,CACDjoZ,cACI7Q,KAAK4Z,OACR,CAIDsF,OAAOsC,EAAQ6Q,GACX,GAAKryB,KAAKwgB,SAiBNxgB,KAAK4Z,YAjBW,CAChB,MAAM9N,EAAY9L,KAAK6K,aAAakB,IAAM,QAAU,OACpD/L,KAAKwgB,SAAWxgB,KAAKue,aAAa5E,KAAK,CACnC6H,OAAQA,EACRC,QAAS4Q,EACTvK,aAAc,WACd/G,YAAa,CAAEG,SAAU,SAAUD,WAAYnV,GAC/C+U,WAAY,CAAEK,SAAU,MAAOD,WAAYnV,KAE/C9L,KAAK2K,SAASiF,aAAa5P,KAAKwgB,SAASM,aAAc,MAAO9gB,KAAK6K,aAAakB,IAAM,MAAQ,OAC9F/L,KAAK8K,OAAO+E,kBAAkB,IAAM7P,KAAKszb,WAAatzb,KAAK2K,SAASmF,OAAO,WAAY,QAAS,EAAG+M,aAC1FpU,GAAQoU,EAAQ5T,GAAQA,IAASjJ,KAAKwgB,SAASM,cAAgB7X,IAASuY,IACzExhB,KAAK4Z,OAAL,GAGX,CAIJ,CAID6xZ,QAAQj6Z,GACJxR,KAAK4Z,QACDpI,EAAQlR,SACRN,KAAK4jK,eAAehmJ,eACpB5d,KAAKypa,kBAAkBvQ,iBAAiB1nZ,GAE/C,CAID0rO,SAAS1rO,GACLxR,KAAK4jK,eAAehmJ,eACpB5d,KAAKypa,kBAAkBvQ,iBAAiB1nZ,EAC3C,CACDoI,QACQ5Z,KAAKwgB,WACLxgB,KAAKwgB,SAAS5G,QACd5Z,KAAKwgB,SAAW,MAEpBxgB,KAAK02Z,aACR,CACDA,cACQ12Z,KAAKszb,aACLtzb,KAAKszb,aACLtzb,KAAKszb,WAAa,KAEzB,EAELD,GAAuBtwb,UAAvB,0BAAoHswb,IA5xsBbrwb,MA4xsBqDqQ,OA5xsBrDrQ,MA4xsBwFu1Z,IA5xsBxFv1Z,MA4xsBsHw3T,OA5xsBtHx3T,MA4xsBoJA,OA5xsBpJA,MA4xsB0KA,OA5xsB1KA,MA4xsBmMA,OAA1S,EACAqwb,GAAuB98a,UA7xsBgFvT,MA6xsBvG,MAAwGqwb,GAAxG9/a,+fA7xsBuGvQ,cA8xsB/F,gBA9xsB+FA,MAgysB3F,mBAhysB2FA,MAgysB3FmE,WAhysB2FnE,MAgysB3F,KAhysB2FA,MAgysB3F,UAhysB2FA,MAgysBlFwQ,cAAT,GAhysB2FxQ,MAmysB3F,YAnysB2FA,cAqysB/F,8BArysB+FA,MA6xsBvG,MA7xsBuGA,MAkysB3F,sCALZ,gBAoB4Cqna,IApB5C5xZ,kBAwEA,MAAM86a,GACYxtb,iBACV,MAAO,CACHstb,GACA3nB,GACArC,GACAD,GACAkD,GACA9C,GACAK,GACAC,GACA0B,GACAhiB,GACA6iB,GACAV,GACAgB,GAEP,EAEL4mB,GAAiBxwb,UAAjB,0BAA8Gwwb,GAA9G,EACAA,GAAiB9sb,UAz3sBsFzD,MAy3sBvG,MAA+Guwb,KA2B/GA,GAAiB7sb,UAp5sBsF1D,MAo5sBvG,UAA2I,CAAC8T,MAAcs8a,OAU1J,MAMMI,GAAoB,CACtB18a,MACAq8a,GACAN,EACAO,GACAt+N,GACAo+N,GACAK,IAKJ,MAAME,GACY1tb,iBACV,MAAO,CACH82O,GACAszL,GAEP,EAELsjB,GAAa1wb,UAAb,0BAA0G0wb,GAA1G,EACAA,GAAahtb,UAz7sB0FzD,MAy7sBvG,MAA2Gywb,KAa3GA,GAAa/sb,UAt8sB0F1D,MAs8sBvG,UAAmI,IAAIwwb,OAwEvI,MAAME,WAAgCp/C,GAClCx0Y,YAAY63B,EAAQqyX,GAChB/rY,MAAM0Z,EAAQqyX,GACdhqZ,KAAK23B,OAASA,EAId33B,KAAK+pZ,kBAAmB,CAC3B,CACGnyY,kBACA,OAAO5X,KAAKqyB,SAAWryB,KAAKqyB,SAASza,iBAAc7C,CACtD,EAEL2+a,GAAwB3wb,UAAxB,0BAAqH2wb,IA3htBd1wb,MA2htBuDsxY,GAA9J,IA3htBuGtxY,MA2htB0HymZ,GAAjO,KACAiqC,GAAwBn9a,UA5htB+EvT,MA4htBvG,MAAyG0wb,GAAzGngb,kFA5htBuGvQ,MA4htBvGwT,EAKqEy4K,GALrE,cA5htBuGjsL,MA4htBvGyT,EA5htBuGzT,WA4htBvGwQ,uEA5htBuGxQ,MA4htB0H,CACzN,CACImD,QAASmuY,GACTp2X,eAAaC,OAAW,IAAMu1a,OA/htB6D1wb,OA4htBvGuf,0DAsDA,MAAMoxa,WAA6BxiO,MAC/BrxN,YAAYy1O,EAAa7qD,EAAahiL,EAASiC,EAAUE,EAAcC,GACnEmT,MAAMvV,EAASiC,EAAU,KAAME,EAAcC,GAC7C9K,KAAKu1O,YAAcA,EACnBv1O,KAAK0qL,YAAcA,EAInB1qL,KAAK4zb,cAAe,CACvB,CAIGtuZ,cACA,OAAOtlC,KAAKq+Y,SAAW,OAAS,EACnC,CAID9lY,QAAQkM,GACJA,EAAE5Q,iBACF7T,KAAKu1O,YAAYipK,UAAUx+Y,KAAKiqI,SACnC,CACD+9C,YACQhoL,KAAK0qL,cACL1qL,KAAKiqI,SAAWjqI,KAAK0qL,YAAYzgD,SACjCjqI,KAAKq+Y,SAAWr+Y,KAAKu1O,YAAY8oK,SAASr+Y,KAAKiqI,UAEtD,EAEL0pT,GAAqB5wb,UAArB,0BAAkH4wb,IAhntBX3wb,MAgntBiD85Y,IAhntBjD95Y,MAgntByEi8Y,IAhntBzEj8Y,MAgntBkGA,OAhntBlGA,MAgntB4HA,OAhntB5HA,MAgntBqJqQ,OAhntBrJrQ,MAgntBwLA,OAA/R,EACA2wb,GAAqBrgb,UAjntBkFtQ,MAintBvG,MAAsG2wb,GAAtGpgb,sFAjntBuGvQ,MAintBvG,2BAAsGwQ,YAAtG,SAjntBuGxQ,MAintBvG,qBAjntBuGA,MAintBvG,kDAjntBuGA,SAsqtBvG,MAAM6wb,WAA+B1iO,MACjCrxN,YAAYy1O,EAAa7qD,EAAahiL,EAASiC,EAAUE,EAAcC,GACnEmT,MAAMvV,EAASiC,EAAU,KAAME,EAAcC,GAC7C9K,KAAKu1O,YAAcA,EACnBv1O,KAAK0qL,YAAcA,EAInB1qL,KAAK4zb,cAAe,CACvB,CAIGtuZ,cACA,OAAQtlC,KAAKq+Y,SAAoB,GAAT,MAC3B,CAID9lY,QAAQkM,GACJA,EAAE5Q,iBACE7T,KAAKq+Y,UACLr+Y,KAAKu1O,YAAYmpK,QAAQ1+Y,KAAKiqI,SAErC,CACD+9C,YACQhoL,KAAK0qL,cACL1qL,KAAKiqI,SAAWjqI,KAAK0qL,YAAYzgD,SACjCjqI,KAAKq+Y,SAAWr+Y,KAAKu1O,YAAY8oK,SAASr+Y,KAAKiqI,UAEtD,EAEL4pT,GAAuB9wb,UAAvB,0BAAoH8wb,IAtstBb7wb,MAsstBqD85Y,IAtstBrD95Y,MAsstB6Ei8Y,IAtstB7Ej8Y,MAsstBsGA,OAtstBtGA,MAsstBgIA,OAtstBhIA,MAsstByJqQ,OAtstBzJrQ,MAsstB4LA,OAAnS,EACA6wb,GAAuBvgb,UAvstBgFtQ,MAustBvG,MAAwG6wb,GAAxGtgb,wFAvstBuGvQ,MAustBvG,2BAAwGwQ,YAAxG,SAvstBuGxQ,MAustBvG,qBAvstBuGA,MAustBvG,oDAvstBuGA,SA4vtBvG,MAAM8wb,WAA6B3iO,MAC/BrxN,YAAYy1O,EAAa7qD,EAAahiL,EAASiC,EAAUE,EAAcC,GACnEmT,MAAMvV,EAASiC,EAAU,KAAME,EAAcC,GAC7C9K,KAAKu1O,YAAcA,EACnBv1O,KAAK0qL,YAAcA,EAInB1qL,KAAK4zb,cAAe,CACvB,CAIGtuZ,cACA,OAAQtlC,KAAKq+Y,SAAoB,GAAT,MAC3B,CAID9lY,QAAQkM,GACJA,EAAE5Q,iBACE7T,KAAKq+Y,UACLr+Y,KAAKu1O,YAAY5jJ,KAAK3xF,KAAKiqI,SAElC,CACD+9C,YACQhoL,KAAK0qL,cACL1qL,KAAKiqI,SAAWjqI,KAAK0qL,YAAYzgD,SACjCjqI,KAAKq+Y,SAAWr+Y,KAAKu1O,YAAY8oK,SAASr+Y,KAAKiqI,UAEtD,EAEL6pT,GAAqB/wb,UAArB,0BAAkH+wb,IA5xtBX9wb,MA4xtBiD85Y,IA5xtBjD95Y,MA4xtByEi8Y,IA5xtBzEj8Y,MA4xtBkGA,OA5xtBlGA,MA4xtB4HA,OA5xtB5HA,MA4xtBqJqQ,OA5xtBrJrQ,MA4xtBwLA,OAA/R,EACA8wb,GAAqBxgb,UA7xtBkFtQ,MA6xtBvG,MAAsG8wb,GAAtGvgb,sFA7xtBuGvQ,MA6xtBvG,2BAAsGwQ,YAAtG,SA7xtBuGxQ,MA6xtBvG,qBA7xtBuGA,MA6xtBvG,kDA7xtBuGA,SAq0tBvG,MAAM+wb,WAA+B5iO,MACjCrxN,YAAYy1O,EAAa7qD,EAAahiL,EAASiC,EAAUE,EAAcC,GACnEmT,MAAMvV,EAASiC,EAAU,KAAME,EAAcC,GAC7C9K,KAAKu1O,YAAcA,EACnBv1O,KAAK0qL,YAAcA,EAInB1qL,KAAK4zb,cAAe,CACvB,CAIGtuZ,cACA,OAAOtlC,KAAKq+Y,SAAW,OAAS,EACnC,CAID9lY,QAAQkM,GACJA,EAAE5Q,iBACF7T,KAAKu1O,YAAY59N,OAAO3X,KAAKiqI,SAChC,CACD+9C,YACQhoL,KAAK0qL,cACL1qL,KAAKiqI,SAAWjqI,KAAK0qL,YAAYzgD,SACjCjqI,KAAKq+Y,SAAWr+Y,KAAKu1O,YAAY8oK,SAASr+Y,KAAKiqI,UAEtD,EAEL8pT,GAAuBhxb,UAAvB,0BAAoHgxb,IAn2tBb/wb,MAm2tBqD85Y,IAn2tBrD95Y,MAm2tB6Ei8Y,IAn2tB7Ej8Y,MAm2tBsGA,OAn2tBtGA,MAm2tBgIA,OAn2tBhIA,MAm2tByJqQ,OAn2tBzJrQ,MAm2tB4LA,OAAnS,EACA+wb,GAAuBzgb,UAp2tBgFtQ,MAo2tBvG,MAAwG+wb,GAAxGxgb,wFAp2tBuGvQ,MAo2tBvG,2BAAwGwQ,YAAxG,SAp2tBuGxQ,MAo2tBvG,qBAp2tBuGA,MAo2tBvG,oDAp2tBuGA,SAw4tBvG,MAAMgxb,WAA4B7iO,MAC9BrxN,YAAYy1O,EAAa7sO,EAASiC,EAAUE,EAAcC,GACtDmT,MAAMvV,EAASiC,EAAU,KAAME,EAAcC,GAC7C9K,KAAKu1O,YAAcA,CACtB,CAIDh9N,QAAQkM,GACJA,EAAE5Q,iBACF7T,KAAKu1O,YAAYkpK,UACpB,CAIGm1C,mBACA,OAAO,CACV,EAELI,GAAoBjxb,UAApB,0BAAiHixb,IA35tBVhxb,MA25tB+C85Y,IA35tB/C95Y,MA25tBuEA,OA35tBvEA,MA25tBiGA,OA35tBjGA,MA25tB0HqQ,OA35tB1HrQ,MA25tB6JA,OAApQ,EACAgxb,GAAoB1gb,UA55tBmFtQ,MA45tBvG,MAAqGgxb,GAArGzgb,qFA55tBuGvQ,MA45tBvG,2BAAqGwQ,YAArG,QA55tBuGxQ,MA45tBvG,gDA55tBuGA,SA06tBvG,MAiBMixb,GAAoB,CACtBn9a,MACAkzT,MACA9vE,MACAplC,GACAq+N,GACAjpH,MACAvlH,MACAh2C,MAKJ,MAAMulR,GACYnub,iBACV,MAAO,CACHiwa,GACA0d,GACAzd,GACAhnP,GACAwjO,GACAlJ,GACAoqC,GACAE,GACAC,GACAC,GACAC,GACAt6B,GACAC,GAEP,EAELu6B,GAAWnxb,UAAX,0BAAwGmxb,GAAxG,EACAA,GAAWztb,UA59tB4FzD,MA49tBvG,MAAyGkxb,KAoCzGA,GAAWxtb,UAhguB4F1D,MAgguBvG,UAA+H,IAAIixb,OAUnI,MAGME,GAAkB,CACpBr9a,MACAg+M,IAKJ,MAAMs/N,GACYrub,iBACV,MAAO,EACV,EAELqub,GAAarxb,UAAb,0BAA0Gqxb,GAA1G,EACAA,GAAa3tb,UA1huB0FzD,MA0huBvG,MAA2Goxb,KAE3GA,GAAa1tb,UA5huB0F1D,MA4huBvG,UAAmI,IAAImxb,OAavI,MAAME,GACFv0b,YAAYkqW,EAAMq6C,GACdrkZ,KAAKgqW,KAAOA,EACZhqW,KAAKqkZ,wBAA0BA,CAClC,CACDl4X,OAAO3F,GACCxmB,KAAKs0b,cAAgBt0b,KAAKgqW,KAAKh2T,KAC/Bh0C,KAAKqkZ,wBAAwB9kY,KAAKsnC,OAAO7mD,KAAKgqW,KAAKh2T,KAAM,EAAGxtB,GAG5DxmB,KAAKuf,KAAKukD,QAAQt9C,GAEtBxmB,KAAK2zZ,aACR,CACD/rV,OAAOqqL,GAAU,CACjBt6O,OAAO6O,GACH,MAAMjH,EAAOvf,KAAKuf,KAClB,QAASze,EAAM,EAAGA,EAAMye,EAAKjf,OAAQQ,IACjC,GAAI0lB,IAASjH,EAAKze,GAAM,CACpBye,EAAKsnC,OAAO/lD,EAAK,GACjBd,KAAK2zZ,YAAY,CAAEr5Y,OAAQ,SAAUkM,KAAMA,IAC3C,KACH,CAER,CACD+ta,aAAa13a,EAAQ8T,GACjBtR,OAAOC,OAAOzC,EAAQ8T,EACzB,CACDgjY,YAAYv5Y,EAAO,IACXpa,KAAKs0b,cACLt0b,KAAKqkZ,wBAAwBp4Y,QAAQmE,KAAKgK,EAEjD,CACGk6a,mBACA,OAAOnzb,MAAMkuB,QAAQrvB,KAAKqkZ,wBAAwB9kY,KACrD,CACGA,WACA,GAAIvf,KAAKs0b,aACL,OAAOt0b,KAAKqkZ,wBAAwB9kY,KAExC,MAAMA,EAAOvf,KAAKgqW,KAAKzqV,KACvB,GAAIpe,MAAMkuB,QAAQ9P,GACd,OAAOA,EAEX,MAAIjJ,SACA,MAAM,IAAI/V,MAAM,4HAGpB,MAAO,EACV,EAML,MAAMi0b,GACF10b,YAAYkqW,EAAMq6C,GACdrkZ,KAAKgqW,KAAOA,EACZhqW,KAAKqkZ,wBAA0BA,EAC/BrkZ,KAAKy0b,mBAAqBz0b,KAAK00b,sBAClC,CAMGn/M,gBAAYrtO,GACZlI,KAAK20b,gBAAkBzsb,CAC1B,CACGqtO,kBACA,OAAOv1O,KAAK20b,iBAAmB30b,KAAKy0b,kBACvC,CAIDnlb,WACItP,KAAKknB,cAAgBlnB,KAAKgqW,KAAKh+V,IAAIE,UAAUlM,KAAK40b,WAAW1nb,KAAKlN,OAClEA,KAAKknB,cAAclb,IAAIhM,KAAKgqW,KAAKryV,OAAOzL,UAAUlM,KAAK60b,cAAc3nb,KAAKlN,QAC1EA,KAAKknB,cAAclb,IAAIhM,KAAKgqW,KAAK93Q,OAAOhmF,UAAUlM,KAAK80b,cAAc5nb,KAAKlN,QAC1EA,KAAKknB,cAAclb,IAAIhM,KAAKgqW,KAAKr4Q,KAAKzlF,UAAUlM,KAAK+0b,YAAY7nb,KAAKlN,QACtEA,KAAKknB,cAAclb,IAAIhM,KAAKgqW,KAAKg4E,gBAAgB91a,UAAUlM,KAAKk8T,cAAchvT,KAAKlN,OACtF,CAID6Q,cACI7Q,KAAKknB,cAAcjW,aACtB,CACDyjb,uBACI,OAAO,IAAIL,GAAiBr0b,KAAKgqW,KAAMhqW,KAAKqkZ,wBAC/C,CACDuwC,aACI50b,KAAKgqW,KAAKtsD,OAAO19S,KAAKg1b,YAAY,CAAEr2C,OAAO,IAC9C,CACDo2C,YAAY36a,GACR,MAAMoM,EAAOxmB,KAAKi1b,UAAU76a,GACxBoM,IACIpM,EAAKukY,MACL3+Y,KAAKu1O,YAAYppN,OAAO3F,GAGxBxmB,KAAKu1O,YAAY3tK,OAAOphD,IAGhCxmB,KAAKgqW,KAAKm/E,SAAS/ua,EAAK6vH,SAC3B,CACD6qT,eAAgB7qT,aACZjqI,KAAKk1b,YAAYjrT,EACpB,CACD4qT,eAAgB18a,aACZ,MAAMosN,EAAc4wN,IACZA,GACAn1b,KAAKu1O,YAAY59N,OAAOQ,EAAxB,EAGR,GAAInY,KAAKo1b,mBAAoB,CACzB,MAAMxja,EAAS5xB,KAAKo1b,mBAAmBj9a,GACnCyZ,aAAkBrsB,QAClBqsB,EAAOvpB,KAAKk8N,GAEP3yM,aAAkB8yD,KACvB9yD,EAAOnsB,QAAKilB,MAAK,IAAIxe,UAAUq4N,GAG/BA,EAAW3yM,EAElB,MAEG2yM,GAAW,EAElB,CACD23F,gBACIl8T,KAAKk1b,aACR,CACDA,YAAYjrT,GACRjqI,KAAKgqW,KAAKm/E,SAASl/S,EACtB,EAELuqT,GAAqBzxb,UAArB,0BAAkHyxb,IAnruBXxxb,MAmruBiDw+a,IAnruBjDx+a,MAmruB2Em0Y,IAAlL,EACAq9C,GAAqBlhb,UApruBkFtQ,MAoruBvG,MAAsGwxb,GAAtGjhb,iIAeA,MAAM8hb,WAA4BhB,GAC9BzsX,OAAOqqL,GACHjyP,KAAK2zZ,aACR,EAML,MAAM2hC,WAAgCd,GAIlCllb,WACI2O,MAAM3O,WACNtP,KAAKknB,cACAlb,IAAIhM,KAAKgqW,KAAKo4E,KAAKl2a,UAAUlM,KAAKu1b,YAAYrob,KAAKlN,OAC3D,CACD00b,uBACI,OAAO,IAAIW,GAAoBr1b,KAAKgqW,KAAMhqW,KAAKqkZ,wBAClD,CACDuwC,aACI50b,KAAKk1b,cACLj3a,MAAM22a,YACT,CACDW,YAAYn7a,GACRpa,KAAKk1b,cACLl1b,KAAKiqI,SAAW7vH,EAAK6vH,SACrBjqI,KAAKgqW,KAAKmzC,QAAQ/iY,EAAK6vH,SAAUjqI,KAAKg1b,YAAY56a,GACrD,CACD26a,YAAY36a,GACR6D,MAAM82a,YAAY36a,GAClBpa,KAAKmgH,OACR,CACD+0U,YAAYjrT,EAAWjqI,KAAKiqI,UACxBhsH,MAAMi3a,YAAYjrT,GAClBjqI,KAAKmgH,OACR,CACDA,eACWngH,KAAKiqI,QACf,EAELqrT,GAAwBvyb,UAAxB,iDA7uuBuGC,MA6uuBcsyb,MAArHv3a,GAAqHu3a,GAArH,KACAA,GAAwBhib,UA9uuB+EtQ,MA8uuBvG,MAAyGsyb,GAAzG/hb,iEA9uuBuGvQ,SA0vuBvG,MAAMwyb,WAAiCF,GACnCx1b,YAAYkqW,EAAMq6C,GACdpmY,MAAM+rV,EAAMq6C,GACZrkZ,KAAKgqW,KAAOA,EACZhqW,KAAKqkZ,wBAA0BA,CAClC,CACDkxC,YAAYn7a,GACR6D,MAAMs3a,YAAYn7a,GAClBpa,KAAKmY,SAAWiC,EAAKjC,SACrBnY,KAAKy1b,eAAiB,GACtBz1b,KAAKu1O,YAAYg/M,aAAav0b,KAAKy1b,eAAgBz1b,KAAKmY,SAC3D,CACD+8a,YAAYjrT,GACJjqI,KAAKmY,UACLnY,KAAKu1O,YAAYg/M,aAAav0b,KAAKmY,SAAUnY,KAAKy1b,gBAEtDx3a,MAAMi3a,YAAYjrT,EACrB,CACD+qT,YAAY56a,GACR,GAAIA,EAAKukY,MACL,OAAO3+Y,KAAK01b,eAEnB,CACDT,UAAU76a,GACN,OAAOA,EAAKjC,QACf,CACDgoG,QACIliG,MAAMkiG,eACCngH,KAAKmY,QACf,EAELq9a,GAAyBzyb,UAAzB,0BAAsHyyb,IAzxuBfxyb,MAyxuByDw+a,IAzxuBzDx+a,MAyxuBmFm0Y,IAA1L,EACAq+C,GAAyBlib,UA1xuB8EtQ,MA0xuBvG,MAA0Gwyb,GAA1Gjib,6HA1xuBuGvQ,SAwyuBvG,MAAM2yb,GAAoBz3Q,IAEtB,GADAA,EAAQ03Q,gBACJ13Q,EAAQ97K,eAAe,YAAa,CACpC,IAAIixJ,EAAW6qB,EAAQ7qB,SACvB,QAASnF,KAASmF,EACVA,EAASjxJ,eAAe8rJ,IACxBynS,GAAiBtiS,EAASnF,GAGrC,GAOL,MAAM2nS,WAAiCP,GACnCx1b,YAAYkqW,EAAMq6C,GACdpmY,MAAM+rV,EAAMq6C,GACZrkZ,KAAKgqW,KAAOA,EACZhqW,KAAKqkZ,wBAA0BA,CAClC,CACD2wC,YAAY56a,GACR,OAAOpa,KAAK81b,gBAAgB17a,EAC/B,CACD66a,WAAY98a,WAAU4lY,YAAWY,UAC7B,GAAKZ,EAAUn7R,OAAU+7R,EAGzB,IAAIZ,EAAU7yG,MACV,YAAK31D,YAAYg/M,aAAap8a,EAAU4lY,EAAU71Y,OAC3CiQ,EAEXw9a,GAAiB53C,EAAD,CACnB,EAEL83C,GAAyB9yb,UAAzB,0BAAsH8yb,IA50uBf7yb,MA40uByDw+a,IA50uBzDx+a,MA40uBmFm0Y,IAA1L,EACA0+C,GAAyBvib,UA70uB8EtQ,MA60uBvG,MAA0G6yb,GAA1Gtib,iIA70uBuGvQ,SA41uBvG,MAAM+yb,WAA+BvB,GACjC10b,YAAYkqW,EAAMq6C,EAAyBjpY,GACvC6C,MAAM+rV,EAAMq6C,GACZrkZ,KAAKgqW,KAAOA,EACZhqW,KAAKqkZ,wBAA0BA,EAC/BrkZ,KAAKob,IAAMA,CACd,CAED45a,YAAY56a,GACR,OAAOpa,KAAK81b,gBAAgB17a,EAC/B,CACD66a,WAAY98a,WAAU4lY,YAAWY,UAC7B,GAAKZ,EAAUn7R,OAAU+7R,EAGzB,IAAIZ,EAAU7yG,MACV,YAAK31D,YAAYg/M,aAAap8a,EAAU4lY,EAAU71Y,OAC3CiQ,EAEXw9a,GAAiB53C,EAAD,CACnB,CAIDzuY,WACI2O,MAAM3O,WACNtP,KAAKknB,cAAclb,IAAIhM,KAAKgqW,KAAKthL,UAAUx8K,UAAUlM,KAAKg2b,iBAAiB9ob,KAAKlN,QAChFA,KAAKknB,cAAclb,IAAIhM,KAAKgqW,KAAKq4E,UAAUn2a,UAAUlM,KAAKi2b,iBAAiB/ob,KAAKlN,OACnF,CACD60b,cAAcz6a,GACV6D,MAAM42a,cAAcz6a,GACpBpa,KAAKgqW,KAAKg0C,YACb,CACDg4C,iBAAiB57a,IACRA,EAAKikY,UAA0B,gBAAdjkY,EAAKqE,OACvBze,KAAKgqW,KAAKszC,SAASljY,EAAK6vH,SAAU7vH,EAAK8vH,YAAalqI,KAAK81b,gBAAgB17a,IACzEpa,KAAKob,IAAIwC,eAEhB,CACDq4a,iBAAiB77a,GACb,MAAQ2jY,YAAW5lY,YAAaiC,EAChC,GAAK2jY,EAAU7yG,OACX,GAEK6yG,EAAUn7R,MAAO,CACtB,GAAIxoG,EAAKuK,eAAiBvK,EAAKuK,cAAczU,UAAYC,YACrD,OAEJnQ,KAAKu1O,YAAYg/M,aAAap8a,EAAU4lY,EAAU71Y,OAClDlI,KAAKu1O,YAAY3tK,OAAOzvD,EAC3B,OARGiC,EAAKvG,gBASZ,EAELkib,GAAuBhzb,UAAvB,0BAAoHgzb,IAj5uBb/yb,MAi5uBqDw+a,IAj5uBrDx+a,MAi5uB+Em0Y,IAj5uB/En0Y,MAi5uBmHA,OAA1N,EACA+yb,GAAuBzib,UAl5uBgFtQ,MAk5uBvG,MAAwG+yb,GAAxGxib,6HAl5uBuGvQ,SA65uBvG,MAAM45W,GAAa/4U,GAAUA,GAASA,EAAMvjC,QAAUujC,EAAM,GAAGrS,OAASqS,EAAM,GAAGA,MAC3EqyZ,GAA2BC,GAAgBlub,GAAUkub,IAAgBA,EAAY71b,OAAS,EAC1F81b,GAAgB,CAAC72a,EAAMia,OAAUrf,OAAQoF,EAAMia,GAAOja,KAEtD82a,GAAY,CAAC53M,EAAYpyM,KAC3B,MAAM4nD,EAAU,GAChB,MAAO,CACHnnD,MAAO2xM,EAAW18O,MAAM,KAAK4jB,OAAO,CAACC,EAAKyC,KACtC,MAAMvnB,EAAM81B,SAASvO,EAAG,IACxB,OAAIzC,EAAIie,OACJowD,EAAQj4E,KAAK4J,GACNA,EAAIie,MAAM/iC,IAEduuB,GAAQzJ,GAAOA,EAAI9kB,GAAO8kB,GAClCymB,GACH4nD,UATG,EAsBLz/C,GAAQ,CAACnI,EAAQiqZ,GAAiB,IAAWjqZ,EAAO1mB,OAAO,CAACC,EAAKknB,KAInE,GAHKA,EAAMmhX,YACProY,IAEAknB,EAAMjJ,MAAO,CACb,MAAMc,EAAW6P,GAAM1H,EAAMjJ,MAAOyyZ,GAChCA,GAAkB3xZ,IAAamI,EAAMypZ,YACrC3wa,IAEJA,GAAO+e,CACV,CACD,OAAO/e,GACR,GAIGlkB,GAAQ,CAAC2qC,EAAQ2H,EAAMtpB,EAAM4ra,GAAiB,KAChD,IAAKrub,GAAUyiB,GACX,OAAO2hB,EAEX,MAAMza,EAAS,GACf,QAAS9wB,EAAM,EAAGR,EAAS+rC,EAAO/rC,OAAQQ,EAAMR,KACxCoqB,GAAQ,GADwC5pB,IAAO,CAI3D,MAAMgsC,GAAQT,EAAOvrC,GACf01b,GAAa1pZ,GAAMjJ,MACzB,IAAI4yZ,GAAYjiZ,GAAMgiZ,GAAYF,GAC9BA,GAAkBE,GAAWl2b,QAC7Bm2b,KAEJ,MAAMxoC,GAAaj6W,EAAO,EAC1B,GAAIA,IACAA,IACIyiZ,IAAaziZ,GAAQyiZ,IACrBziZ,GAAQyiZ,QAIhB,IAAKxoC,IAAcwoC,GAAW,CAC1B,MAAM5yZ,GAAQ,GACd,IAAI0yZ,IAAa,EAIjB,GAHKtoC,IACDvjY,IAEAA,EAAM,CACN,GAAIkyV,GAAU45E,IAAa,CACvB,MAAM7xZ,GAAWjjC,GAAM80b,GAAYxiZ,EAAMtpB,EAAM4ra,GAC/CzyZ,GAAM7nB,QAAQ2oB,IACdja,GAAQ8pB,GAAM7P,GAAU2xZ,EAC3B,MAEGzyZ,GAAM7nB,QAAQw6a,GAAW90b,MAAMsyC,EAAMtf,KAAK9Z,IAAIo5B,EAAOtpB,EAAM8ra,GAAWl2b,UACtEoqB,GAAQmZ,GAAMvjC,OAEdoqB,GAAQ4ra,IACRC,IAAa,EACb7ra,KAEJspB,EAAO,CACV,CACDpiB,EAAO5V,KAAK,CACRm3C,WAAYrmB,GAAMqmB,WAClB3hC,MAAOsb,GAAMtb,MACb+ka,cACA1yZ,SACAlb,OAAQ7nB,EACRmtZ,cACA/lZ,MAAO4kC,GAAM5kC,OAEpB,CACJ,CACD,OAAO0pB,GAeX,MAAM8ka,WAA8BjH,GAChC3vb,YAAYkqW,EAAMpmM,EAAgBygP,GAC9BpmY,MAAM+rV,EAAMpmM,EAAgBygP,EAC/B,CAIGsyC,0BAAsBzub,GACtBlI,KAAKqsC,OAAS,KACdrsC,KAAKgqW,KAAK49E,mBACV5nb,KAAKuf,KAAOrX,CACf,CAIGqX,SAAKrX,GACLlI,KAAKo1O,aAAeltO,GAAS,GAC7BlI,KAAK2zZ,aAAc,CACtB,CAIG/xX,SAAK15B,GACL,MAAMizB,EAAQn7B,KAAKw5B,MAAMoI,OAAS15B,EAClClI,KAAKgqW,KAAKpoU,KAAO5hC,KAAKw5B,MAAMoI,KAAO15B,EAC/BizB,IACAn7B,KAAKqsC,OAAS,KACdrsC,KAAKgqW,KAAK49E,mBAEjB,CAIGtya,WAAOpN,GACOu7Z,GAAYzja,KAAKw5B,MAAMlkB,OAAQpN,KAEzClI,KAAKw5B,MAAMlkB,OAASpN,EACpBlI,KAAKgqW,KAAK10V,OAASkuZ,GAAat7Z,GAChClI,KAAKqsC,OAAS,KACdrsC,KAAKgqW,KAAK49E,mBAEjB,CAIG96Y,UAAM5kC,GAEN,MAAM0ub,EAAgBV,GAAwBl2b,KAAKw5B,MAAMsT,QAAUopZ,GAAwBhub,GACrFizB,EAAQn7B,KAAKw5B,MAAMsT,QAAU5kC,GAAS0ub,EAC5C52b,KAAKgqW,KAAKl9T,MAAQ9sC,KAAKw5B,MAAMsT,MAAQ5kC,EACjCizB,IACAn7B,KAAKqsC,OAAS,KACdrsC,KAAKgqW,KAAK49E,mBACV5nb,KAAKg0C,KAAO,EAEnB,CAID1kC,WACI2O,MAAM3O,WACNtP,KAAKgqW,KAAKi4E,YAAY/1a,UAAUlM,KAAKiib,YAAY/0a,KAAKlN,OACtDA,KAAKgqW,KAAKk4E,cAAch2a,UAAUlM,KAAKkib,cAAch1a,KAAKlN,MAC7D,CACD8V,qBACI,MAAIQ,UAAetW,KAAKgqW,KAAKogF,gBACzB,MAAM,IAAI7pb,MAAM,sQAIvB,CACD0hb,aAAcxjM,eACVz+O,KAAKgqW,KAAK69E,oBAAoBppM,GAC9B,MAAQ3xM,QAAOmnD,WAAYoiW,GAAU53M,EAAYz+O,KAAKqsC,QACtD,IAAKS,EAAMjJ,MAAMvjC,OAAQ,CACrB,MAAM61b,EAAcn2b,KAAKw5B,MAAMsT,MAAMx3B,OA3LjB,EAAC2+E,EAASv1B,IAAUj0B,GAAKA,EAAEjZ,QAAUktC,EAAMltC,QAAUyiE,EAAQzY,KAAKlzD,GAAKA,EAAEkJ,QAAUiZ,EAAEjZ,OA2L7Dqla,CAAwB5iW,EAASnnD,IACvEnI,EA7KG,EAACplB,EAAM00E,KACxB,MAAMguU,EAAUhuU,EAAQ5yF,IAAI6/B,KAAQ1P,MAAO0P,EAAE1P,MAAOwmM,SAAU,KAAM9vN,MAAOg5B,EAAEh5B,SAC7E,SAAO4ub,MAASv3a,EAAM,CAClB0iZ,QAASA,EACTjjC,MAAO,OAFI,EA2KUroJ,CAAa32O,KAAKo1O,aAAcnhJ,EAAQnuE,OAAOgnB,IAChEA,EAAMjJ,MAAQuyZ,GAAczxZ,EAAU,CAClCrvB,OAAQtV,KAAKw5B,MAAMlkB,OACnBw3B,MAAOqpZ,EACPv0Z,KAAM5hC,KAAKw5B,MAAMoI,MAExB,CACD5hC,KAAKgqW,KAAKzqV,KAAOvf,KAAK+2b,WAAW/2b,KAAKw5B,MAAMwa,KAAMh0C,KAAKw5B,MAAM9O,KAChE,CACDw3Z,eAAgBzjM,eACZ,MAAQ3xM,SAAUupZ,GAAU53M,EAAYz+O,KAAKqsC,QACzCS,IACAA,EAAMjJ,MAAQ,IAElB7jC,KAAKgqW,KAAKzqV,KAAOvf,KAAK+2b,WAAW/2b,KAAKw5B,MAAMwa,KAAMh0C,KAAKw5B,MAAM9O,KAChE,CACDvQ,QAAQqf,GACJ,GAAIA,EAAMsT,OAAStT,EAAMsT,MAAMxsC,OAAQ,CACnC,MAAM+rC,EAASrsC,KAAKo2b,cAAc58Z,GAClC,YAAKwwU,KAAKh2T,MA5GE8kW,KACpB,IAAInxW,EAAQ,EACZ,KAAOmxW,GACCA,EAAUmV,YACVtmX,IAEJmxW,EAAYA,EAAUj1W,OAASi1W,EAAUj1W,MAAM,IAAM,KAEzD,OAAO8D,GAoGmBqvZ,CAAe3qZ,EAAO9sB,KAAK,IACtC8sB,CACV,CAID,OAFIrsC,KAAKqsC,OAAS,KAEXpuB,MAAM9D,QAAQqf,EACxB,CACD48Z,cAAc58Z,GACV,QAAKx5B,KAAKqsC,SAAWrsC,KAAKqsC,OAAO/rC,UAC7BN,KAAKqsC,OAAS+pZ,GAAcp2b,KAAKo1O,aAAc,CAC3C9/N,OAAQkkB,EAAMlkB,OACdw3B,MAAOtT,EAAMsT,MACblL,KAAMpI,EAAMoI,QAGb5hC,KAAK+2b,WAAWv9Z,EAAMwa,KAAMxa,EAAM9O,KAC5C,CACDqsa,WAAW/iZ,EAAMtpB,GACb,MAAM4ra,EAAiBt2b,KAAKgqW,KAAKuuE,iBACjC,MAAO,CACHh5Z,KAAM7d,GAAM1B,KAAKqsC,OAAQ2H,EAAMtpB,EAAM4ra,GACrC3uZ,MAAO6M,GAAMx0C,KAAKqsC,OAAQiqZ,GAEjC,CACD5G,YAAa17Y,OAAMtpB,OAAMkX,OAAMkL,QAAOx3B,WAClCtV,KAAKg0C,KAAOA,EACZh0C,KAAKw5B,MAAM9O,KAAOA,EAElB1qB,KAAK4hC,KAAOA,EACZ5hC,KAAK8sC,MAAQA,EACb9sC,KAAKsV,OAASA,CACjB,EAELohb,GAAsB3zb,UAAtB,0BAAmH2zb,IAjpvBZ1zb,MAipvBmDw+a,IAjpvBnDx+a,MAipvB6EA,OAjpvB7EA,MAipvB8Gm0Y,IAArN,EACAu/C,GAAsBpjb,UAlpvBiFtQ,MAkpvBvG,MAAuG0zb,GAAvGnjb,uJAlpvBuGvQ,SA+qvBhGmwb,GAAYL,UACZh+N,GAAag+N,UACboB,GAAWpB,UACXW,GAAaX,UACbsB,GAAatB,UACbG,GAAYH,UACZD,EAAgBC,UAChBM,GAAiBN,UACjBS,GAAiBT,UAmDxB,MAAMmE,IAENA,GAAWl0b,UAAX,0BAAwGk0b,GAAxG,EACAA,GAAWxwb,UA7uvB4FzD,MA6uvBvG,MAAyGi0b,KAsCzGA,GAAWvwb,UAnxvB4F1D,MAmxvBvG,UAA+H,CACnH8T,MACAq8a,GACAr+N,GACAo/N,GACAT,GACAW,GACAnB,GACAJ,EACAO,GACAzkR,KACA4kR,OAuBZ,MAAM2D,WAA2B18E,IAEjC08E,GAAmBn0b,UAAnB,iDAvzvBuGC,MAuzvBSk0b,MAAhHn5a,GAAgHm5a,GAAhH,KACAA,GAAmB3gb,UAxzvBoFvT,MAwzvBvG,MAAoGk0b,GAApG3jb,gDAxzvBuGvQ,OAwzvBvGuf,0DAyDA,MAAM40a,WAA6B78E,GAC/Bx6W,YAAY8X,GACRqG,MAAMrG,EACT,EAELu/a,GAAqBp0b,UAArB,0BAAkHo0b,IAt3vBXn0b,MAs3vBiDA,MAAxJ,KACAm0b,GAAqB7jb,UAv3vBkFtQ,MAu3vBvG,MAAsGm0b,GAAtG5jb,qDAv3vBuGvQ,SAo4vBvG,MAAMo0b,GAAe,gBAIfC,GAAe,gBAGfC,GAAc98C,GAFF,mBAGZ+8C,GAAe/8C,GAFP,SAGR7zM,GAAU25K,GAAWA,EAAS,SAAW,OAI/C,MAAMk3E,GACF13b,YAAY4I,GACR1I,KAAK0I,QAAUA,EACf1I,KAAKy/K,KAAOo7N,GAAYnyY,EAAS4ub,GACpC,CACD71a,QAAQ6+V,GACJ,OAAOu6B,GAAY76Y,KAAKy/K,KAAM86N,GAAgB,kBAAgBj6B,EAAS,UAAY,KACtF,CACDtiI,OAAOsiI,GACH,YAAKm3E,WAAaz3b,KAAKy3b,YAAc58C,GAAY76Y,KAAK0I,QAAS6xY,GAAe68C,KACvEv8C,GAAY76Y,KAAKy3b,WAAYl9C,GAAgB,GAAE68C,MAAgBzwP,GAAO25K,MAChF,CACDr2G,OAAOq2G,GACH,YAAKo3E,WAAa13b,KAAK03b,YAAc78C,GAAY76Y,KAAK0I,QAAS6xY,GAAe88C,KACvEx8C,GAAY76Y,KAAK03b,WAAYn9C,GAAgB,GAAE88C,MAAgB1wP,GAAO25K,MAChF,CACDnrO,QACI,OAAO0lQ,GAAY76Y,KAAK0I,QAAS6ub,GACpC,EAGL,MAAMI,GAAc,UACdC,GAAS,CAAC,QAAS,SAAU,WAAY,UAEzCp5P,GAAav1L,IACf,MAAM9D,EAAQ8D,EAAKu1L,WAAU,GACzBv1L,EAAKm8E,qBACLjgF,EAAMigF,mBAAqBn8E,EAAKm8E,oBAEhCwyW,GAAO32b,QAAQP,OAAOuI,EAAKooO,UAAUt2N,gBAAkB,IACvD5V,EAAMmM,gBAAgB,MACtBnM,EAAMmM,gBAAgB,QACtBnM,EAAM+C,MAAQe,EAAKf,MACnB/C,EAAMg5N,QAAUl1N,EAAKk1N,QACrBh5N,EAAMkH,SAAWpD,EAAKoD,UAE1B,IAAIs6B,EAAQ19B,EAAKsJ,WACjB,KAAOo0B,GACHxhC,EAAM6M,YAAYwsL,GAAU73J,IAC5BA,EAAQA,EAAM6mO,YAElB,OAAOroQ,GAEL0yb,GAAc,CAACnvb,EAAS4gF,KAC1B,MAAMhpF,EAASgpF,EAAMhpF,OACrB,QAASQ,EAAM,EAAGA,EAAMR,EAAQQ,IAC5B4H,EAAQsJ,YAAYwsL,GAAUl1G,EAAMxoF,IAApC,EAGFg3b,GAAa3iT,IACf,MAAMr5H,EAAUzY,SAAS0O,cAAc,OACvC+J,SAAQ/I,UAAY,SACpB+I,EAAQ9J,YAAYmjI,GACbr5H,GAELi8a,GAAsBh+G,IACxB,MAAMi+G,EAAcj+G,EAAQz5U,OACtBoI,EAAU81L,GAAUu7I,EAAQ,IAC5Bk+G,EAAYvvb,EAAQulC,KAAK3tC,OAC/B,GAAI03b,EAAc,EACd,QAAS5pZ,EAAS,EAAGA,EAAS6pZ,EAAW7pZ,IACrC,QAAS8pZ,EAAY,EAAGA,EAAYF,EAAaE,IAC7CL,GAAYnvb,EAAQulC,KAAKG,GAAS2rS,EAAQm+G,GAAWjqZ,KAAKG,GAAQ2zI,OAI9E,OAAOr5K,GAaLwtT,GAAc,CAACiiI,EAAWz4E,EAAS04E,EAAQtqC,KAC7C,MAAM34Q,EAAQ9xI,SAAS0O,cAAc,SAC/Bsmb,EAAWF,EAAU,GAAG35P,WAAU,GACxC,QAAS19L,GAAM,EAAGA,GAAMq3b,EAAU73b,OAAQQ,KACtC+2b,GAAYQ,EAAUF,EAAUr3b,IAAKmiK,iBAAiB,QAE1D,MAAM+6E,EAAS+5M,GAAmBr4E,GAC5B30S,GAAOgtX,GAAmBK,GAMhC,GALAp6M,EAAOjrO,UAAYqkb,GAnBG,EAACp5M,EAAQ0hI,KAC/B,GAAIA,EAAQp/W,OAAS,GAAK09O,EAAO/vM,KAAK3tC,OAAS,EAC3C,QAASQ,EAAM,EAAGA,EAAMk9O,EAAO/vM,KAAK3tC,OAAQQ,IAAO,CAC/C,MAAMw3b,EAAiB54E,EAAQ,GAAGzxU,KAAKntC,GAAKihL,MAAMzhL,OAC5CspI,EAAOo0G,EAAO/vM,KAAKntC,GAAKihL,MAAMu2Q,IACgB,IAAhD53b,OAAOkpI,EAAK72H,WAAW9R,QAAQ02b,MAC/B/tT,EAAK72H,WAAc,IAAG4kb,KAE7B,GAYLY,CAAkBv6M,EAAQ0hI,GAC1BvqO,EAAMnjI,YAAYqmb,GAClBljT,EAAMnjI,YAAYgsO,GAClB7oG,EAAMnjI,YAAY+4D,IACd+iV,EAAQxtZ,OAAQ,CAChB,MAAM2pQ,GAAS8tL,GAAmBjqC,GAClC7jJ,GAAOl3P,UAAYskb,GACnBliT,EAAMnjI,YAAYi4P,GACrB,CACD,OAAO6tL,GAAU3iT,EAAD,EAmCdpjI,GAAgB,CAACvC,EAASuD,KAC5B,MAAMrK,EAAUrF,SAAS0O,cAAcvC,GACvC,OAAIuD,IACArK,EAAQqK,UAAYA,GAEjBrK,GAELg2F,GAAa3rF,GACRhB,GAAc,MAAOgB,GAKhC,MAAMylb,WAAqB/9E,GACvB36W,YAAYi9a,EAAYH,EAAgB9xa,EAAQpC,GAC5CuV,MAAMvV,GACN1I,KAAK+8a,WAAaA,EAClB/8a,KAAK48a,eAAiBA,EACtB58a,KAAK8K,OAASA,EAQd9K,KAAKkkC,MAAQ,EACblkC,KAAK4zP,QAAU,IAAI4gJ,MACnBx0Y,KAAKy4b,iBAAmB1b,EAAWvpB,QAAQtnZ,UAAUlM,KAAKwzZ,QAAQtmZ,KAAKlN,OACvEA,KAAK04b,iBAAmB3b,EAAWtpB,QAAQvnZ,UAAUlM,KAAKyzZ,QAAQvmZ,KAAKlN,OACvEA,KAAK+nE,MAAQ/nE,KAAK+nE,MAAM76D,KAAKlN,MAC7BA,KAAKsiC,KAAOtiC,KAAKsiC,KAAKp1B,KAAKlN,KAC9B,CACD6Q,cACI7Q,KAAKy4b,iBAAiBxnb,cACtBjR,KAAK04b,iBAAiBznb,cACtBjR,KAAK+nE,OACR,CAID8yS,OAAO17L,GACH,MAAM,IAAI5+K,MAAM,6CACnB,CAIDu6W,SACI,MAAM,IAAIv6W,MAAM,2CACnB,CACDizZ,QAAQ3yO,GACJ7gL,KAAK24b,UAAU93Q,EAAW7gL,KAAKsiC,KAClC,CACDmxX,SAAU5yO,YAAW/oF,YACjB93F,KAAK24b,UAAU93Q,EAAW,KACtB7gL,KAAK44b,kBAAkB9gW,EAAvB,EAEP,CACD6gW,UAAU93Q,EAAWpuK,GACjB,MAAMmvN,EAAW/gD,EAAU+gD,SACrBj6L,EAAQk5I,EAAU5kC,KAAKt0G,MACvBisN,EAAU5zP,KAAK4zP,QAAQx+O,UACzBw+O,EAAQtzP,SACRN,KAAK64b,gBAAkBh4Q,EAAU+yE,QAAQx+O,WAE7CpV,KAAK6gL,UAAYA,EACjB7gL,KAAK48a,eAAe99T,QAAS,EAC7B9+G,KAAK+8a,WAAWQ,WAAY,EAC5Bv9a,KAAK84b,eACL94b,KAAK+4b,eAAiB/4b,KAAKg5b,UAAYp3N,EAAWj6L,EAC9C3nC,KAAK+4b,gBACL/4b,KAAKg0C,KAAO6sI,EAAU7sI,KACtBh0C,KAAK4hO,SAAWA,EAChB5hO,KAAK8hP,WAAW,EAAGn6M,EAAOl1B,EAAUmhP,IAE/BA,EAAQtzP,QAAUugL,EAAUo4N,eACjCj5Y,KAAKi5b,cAAcrlM,EAASnhP,GAG5BA,GAEP,CACDqmb,eACI,MAAMtzB,EAAiBxla,KAAK6gL,UAAU/kK,QAAQ3P,cACxCunB,EAAW1zB,KAAK0zB,SAAWgrE,GAAU,sBACrC52D,EAAU02J,GAAUgnO,GAC1B9xY,EAAS1hB,YAAY81B,GACrBpU,EAAS1hB,YAAY0sF,GAAU,oBAC/BhrE,EAAS1hB,YAAYD,GAAc,OAAQ,uBAC3C/R,KAAKk5b,eAAiB1zB,EAAej6Y,MAAMsL,OAC3C72B,KAAKm5b,iBAAmB3zB,EAAej6Y,MAAM+/F,SAC7Ck6S,EAAej6Y,MAAMsL,OAAS2uY,EAAezmU,aAAe,KAC5DymU,EAAej6Y,MAAM+/F,SAAW,SAChCk6S,EAAexzZ,YAAY0hB,GAC3B1zB,KAAKo5b,YAAYtxZ,EACpB,CACDsxZ,YAAYtxZ,GACR,MAAMpb,EAAQ,IAAI8qa,GAAUx3b,KAAK6gL,UAAU/kK,QAAQ3P,eAC7CsV,EAAUiL,EAAMjL,UACtB,GAAIA,EAAS,CACT,MAAM43a,EAAe,IAAI7B,GAAU1vZ,GAC7BwxZ,EAAiBD,EAAa53a,UACpC63a,EAAejja,UAAY5U,EAAQ4U,UACnCija,EAAe9ia,WAAa/U,EAAQ+U,WACpC6ia,EAAar7M,SAASxnN,WAAa9J,EAAMsxN,SAASxnN,WAClD,MAAMyzO,EAASv9O,EAAMu9O,SACjBA,IACAovL,EAAapvL,SAASzzO,WAAayzO,EAAOzzO,YAE9C,MAAM+ia,GAAgB7sa,EAAMjL,SAAQ,GACpC,GAAI83a,GAAe,CACf,MAAMC,GAAuBH,EAAa53a,SAAQ,GAClD+3a,GAAqBnja,UAAYkja,GAAclja,UAC/Cmja,GAAqBhja,WAAa+ia,GAAc/ia,UACnD,CACJ,CACJ,CACD8L,OACItiC,KAAKy5b,oBAAqB/wb,IACtB1I,KAAK2xF,KAAKjpF,EAAS1I,KAAK06W,SAAxB,EAEP,CACDk+E,kBAAkB9gW,GACd93F,KAAKy5b,oBAAqB/wb,IACtB1I,KAAK+6W,cAAcryW,GAASL,KAAKykC,GAASgrD,EAAQ9vF,QAAQ8kC,GAA1D,EAEP,CACD2sZ,oBAAoBhnb,GAChBzS,KAAK8K,OAAO+E,kBAAkB,KAC1B,MAAMtH,EAAYvI,KAAKuI,UAAYm2F,GAAU,6BACvCh2F,EAhKKoT,KACnB,MAAM4Q,EAAQ,IAAI8qa,GAAU17a,GACtB2F,EAAUiL,EAAMjL,UACtB,IAAImQ,EACJ,GAAInQ,EAAS,CACT,MAAM02a,EAAY,CAAC12a,EAAQwJ,cAAc,aACnCy0V,EAAU,CAAChzV,EAAMsxN,SAAS/yN,cAAc,UACxCmta,EAAS,CAAC32a,EAAQwJ,cAAc,UAChCg/O,GAASv9O,EAAMu9O,SACf6jJ,GAAU,GACZ7jJ,IACA6jJ,GAAQ9xY,KAAKiuP,GAAOh/O,cAAc,UAEtC,MAAMsua,GAAgB7sa,EAAMjL,SAAQ,GAChC83a,KACApB,EAAUr0X,QAAQy1X,GAActua,cAAc,aAC9Cy0V,EAAQ57S,QAAQp3C,EAAMsxN,QAAO,GAAM/yN,cAAc,UACjDmta,EAAOt0X,QAAQy1X,GAActua,cAAc,UACvCg/O,IACA6jJ,GAAQhqV,QAAQp3C,EAAMu9O,QAAO,GAAMh/O,cAAc,WAGzD2G,EAASskS,GAAYiiI,EAAWz4E,EAAS04E,EAAQtqC,GACpD,MAEGl8X,EAASkma,GAAUpra,EAAMyoH,QAAQqpD,WAAU,IAE/C,OAAO5sK,GAqIiBmpV,CAAc/6W,KAAK6gL,UAAU/kK,QAAQ3P,eACrD5D,EAAUyJ,YAAYtJ,GACtBrF,SAAS0nE,KAAK/4D,YAAYzJ,GAC1BkK,EAAS/J,EAAD,EAEf,CACD0yW,cACI,MAAMp1W,EAAUiY,MAAMm9V,cACtBp1W,SAAQ8iW,cAAe,EAChB9iW,CACV,CACDq1W,UAGI,GAFAp9V,MAAMo9V,UACNr7W,KAAK+8a,WAAWQ,WAAY,EACxBv9a,KAAK6gL,UAAW,CAChB,MAAMg4Q,EAAkB74b,KAAK64b,uBACtB74b,KAAK64b,gBACR74b,KAAK+4b,eACL/4b,KAAK8hP,WAAW9hP,KAAKg0C,KAAMh0C,KAAK4hO,SAAU5hO,KAAK+nE,MAAO8wX,GAEjDA,GAAmB74b,KAAK6gL,UAAUo4N,eACvCj5Y,KAAKi5b,cAAcJ,EAAiB74b,KAAK+nE,OAGzC/nE,KAAK+nE,OAEZ,MAEG/nE,KAAK+nE,QAET/nE,KAAK05b,iBACR,CACDA,kBACQ15b,KAAKuI,YACLlF,SAAS0nE,KAAKn4D,YAAY5S,KAAKuI,kBACxBvI,KAAKuI,UAEnB,CACDu5O,WAAW9tM,EAAM2lZ,EAAOlnb,EAAUmhP,GAC9B5zP,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK+8a,WAAWppB,YAAYluZ,QAAKilB,MAAK,IAAIxe,UAAU,KAC3C0nP,GAAWA,EAAQtzP,QAAWN,KAAK6gL,UAAUo4N,eAC9Cj5Y,KAAKi5b,cAAcrlM,EAASnhP,GAG5BzS,KAAK4nN,SAASn1M,EAAd,GAGRzS,KAAK6gL,UAAU8oQ,iBAAiB,MAAO,CAAE31Y,KAAMA,EAAMtpB,KAAMiva,GAA3D,EAEP,CACDV,cAAcrlM,EAASnhP,GACnBzS,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK4nN,SAASn1M,GACVmhP,GAAWA,EAAQtzP,QACnBN,KAAK6gL,UAAU+yE,QAAQ7rL,MAAM6rL,EAA7B,EAGX,CACD7rL,QAGI,GAFA/nE,KAAK48a,eAAe99T,QAAS,EAC7B9+G,KAAK+4b,gBAAiB,GACjB/4b,KAAK6gL,UACN,OAEJ,MAAM2kP,EAAiBxla,KAAK6gL,UAAU/kK,QAAQ3P,cAC9Cq5Z,EAAe5yZ,YAAY5S,KAAK0zB,UAChC8xY,EAAej6Y,MAAMsL,OAAS72B,KAAKk5b,eACnC1zB,EAAej6Y,MAAM+/F,SAAWtrH,KAAKm5b,wBAC9Bn5b,KAAK0zB,gBACL1zB,KAAK6gL,SACf,CACD+mC,SAASn1M,GAILC,WAAW,KACP,IAAIk1M,EAAW5nN,KAAK8K,OAAO88M,SAASr9M,eAAe9E,QAAKilB,MAAK,IACzD1qB,KAAKkkC,MAAQ,IACb0jL,EAAWA,EAASniN,QAAKy+B,MAAMlkC,KAAKkkC,SAExC0jL,EAAS17M,UAAUuG,EAAnB,EACD,EACN,EAEL+lb,GAAaz1b,UAAb,0BAA0Gy1b,IA5uwBHx1b,MA4uwBiCuwZ,IA5uwBjCvwZ,MA4uwBwD6wZ,IA5uwBxD7wZ,MA4uwBmFA,OA5uwBnFA,MA4uwByGA,OAAhN,EACAw1b,GAAajib,UA7uwB0FvT,MA6uwBvG,MAA8Fw1b,GAA9Fjlb,uEA7uwBuGvQ,MA6uwBvGwT,EAA+P0gb,GAA/P,GA7uwBuGl0b,MA6uwBvGwT,EAAyW2gb,GAAzW,GA7uwBuGn0b,MA6uwBvGwT,EAA0b89X,GAA1b,eA7uwBuGtxY,MA6uwBvGyT,EA7uwBuGzT,WA6uwBvGwQ,2BA7uwBuGxQ,MA6uwBvGyT,EA7uwBuGzT,WA6uwBvGwQ,iCA7uwBuGxQ,MA6uwBvGyT,EA7uwBuGzT,WA6uwBvGwQ,oEA7uwBuGxQ,OA6uwBvGuf,0DAyCA,MAAMq3a,WAA4BzoO,MAC9BrxN,YAAYi9a,EAAYr0a,EAASiC,EAAUE,EAAcC,GACrDmT,MAAMvV,EAASiC,EAAU,KAAME,EAAcC,GAC7C9K,KAAK+8a,WAAaA,EAClB/8a,KAAK8K,OAASA,CACjB,CAIDyN,QAAQkM,GACJA,EAAE5Q,iBACF7T,KAAK+8a,WAAWrpB,YAAYtjZ,MAC/B,CAIGypb,eACA,OAAO,CACV,EAELD,GAAoB72b,UAApB,0BAAiH62b,IA1ywBV52b,MA0ywB+CuwZ,IA1ywB/CvwZ,MA0ywBsEA,OA1ywBtEA,MA0ywBgGA,OA1ywBhGA,MA0ywByHqQ,OA1ywBzHrQ,MA0ywB4JA,OAAnQ,EACA42b,GAAoBtmb,UA3ywBmFtQ,MA2ywBvG,MAAqG42b,GAArGrmb,qFA3ywBuGvQ,MA2ywBvG,2BAAqGwQ,YAArG,QA3ywBuGxQ,MA2ywBvG,oCA3ywBuGA,SAo2wBvG,MAAM82b,IAENA,GAAU/2b,UAAV,0BAAuG+2b,GAAvG,EACAA,GAAUrzb,UAv2wB6FzD,MAu2wBvG,MAAwG82b,KAOxGA,GAAUpzb,UA92wB6F1D,MA82wBvG,IAYA,MAAM+2b,WAAyBpmb,GAC3B7T,YAAYm9W,GACRh/V,QACAje,KAAKi9W,SAAWA,CACnB,EAGL,MAAM+8E,GAAsBn5Q,KAEpBthK,KAAMshK,EAAU5kC,KAAK56I,IAAImlB,GAAQA,GACjCsmB,MAAO+zI,EAAU/zI,QAiBnBmtZ,GAAkBrmM,IACpB,MAAMhiO,EAAS,GACfm7X,UAAYn5J,GACPnjP,QAAS6rG,IACV,GAAIA,EAAOwtS,aACPl4X,EAAO5V,QAAQi+a,GAAe39U,EAAO+vS,oBAEpC,CACD,MAAM6tC,EAtBK59U,MAEf71F,MAAO61F,EAAO71F,MACd+K,MAAO8qF,EAAO9qF,MACd8uV,OAAQjuU,QAAQiqE,EAAOgkQ,QACvB9rW,MAAO8nG,EAAO9nG,MACds9I,MAAOx1C,EAAOw1C,MACdyhG,QAASj3I,EAAOypG,UAChB03J,oBAAqBnhQ,EAAOmhQ,oBAC5BV,0BAA2BzgQ,EAAOygQ,0BAClCW,oBAAqBphQ,EAAOohQ,oBAC5BC,eAAgBrhQ,EAAOqhQ,iBAWCw8E,CAAc79U,GAC9BA,EAAO4tS,gBACPgwC,EAAYv1Z,SAAW,CAACu1Z,GAAap0a,OAAOm0a,GAAe39U,EAAO+vS,iBAEtEz6X,EAAO5V,KAAKk+a,EACf,IAEEtoa,GAELwoa,GAAoBv5Q,IACtB,MAAM+yE,EAAUqmM,GAAep5Q,EAAU+yE,QAAQx+O,WACjD,SAAO43Y,OAAQp5J,EAAS,CAAC,CAAEpiO,MAAO,SAAU7c,IAAK,SAAnC,EAKlB,MAAM0lb,GACFv6b,YAAY4hb,EAAc72a,EAAcyT,GACpCte,KAAK6K,aAAeA,EACpB7K,KAAKse,KAAOA,EAKZte,KAAK06W,SAAW,cAIhB16W,KAAK4zP,QAAU,IAAI4gJ,MACnBx0Y,KAAKy4b,iBAAmB/W,EAAaptB,YAAYpoZ,UAAUlM,KAAK2xF,KAAKzkF,KAAKlN,MAC7E,CACD6Q,cACI7Q,KAAKy4b,iBAAiBxnb,cAClBjR,KAAKs6b,kBACLt6b,KAAKs6b,iBAAiBrpb,aAE7B,CACD0gF,KAAKkvF,GACD,MAAMthK,GAAQvf,KAAKu6b,WAAaP,IAAoBn5Q,GAC9C6zN,EAAc9iX,WACT5xB,KAAKs6b,iBACZt6b,KAAK00Y,WAAW7zN,EAAWjvJ,EAA3B,EAEArS,aAAgBha,QAChBga,EAAKlX,KAAKqsY,GAELn1X,aAAgBmlE,KACrB1kF,KAAKs6b,iBAAmB/6a,EAAK9Z,QAAKilB,MAAK,IAAIxe,UAAUwoY,GAGrDA,EAAWn1X,EAElB,CACDm1X,WAAW7zN,EAAWjvJ,GAClB,MAAM5rB,EAAUguY,GAAgB,CAC5BpgJ,QAAS5zP,KAAK4zP,QAAQtzP,OAASN,KAAK4zP,QAAUwmM,GAAiBv5Q,GAC/DthK,KAAMqS,EAAOrS,KACbutB,MAAOlb,EAAOkb,MACd+3L,WAAY7kO,KAAK6kO,WACjBwzI,QAASr4W,KAAKq4W,QACdh2W,KAAMrC,KAAKqC,KACXw7W,mBAAoB79W,KAAK69W,mBACzB+B,yBAA0B5/W,KAAK4/W,yBAC/B7zW,IAAK/L,KAAK6K,aAAakB,IACvBixW,YAAah9W,KAAKg9W,cAEhB5iW,EAAO,IAAI2/a,GAAiB/zb,GAClC66K,EAAU0hQ,YAAYnya,KAAKgK,GACtBA,EAAKtG,sBACN9T,KAAKse,KAAKzO,kBAAkB,IAAM7P,KAAKy0Y,SAASzuY,GAEvD,CACDyuY,SAASzuY,GACLgyF,GAAUhyF,GAASqC,KAAMysY,KACrBj6B,OAAOi6B,EAAS90Y,KAAK06W,SAAU,CAC3BkB,WAAY57W,KAAK47W,WACjBG,SAAU/7W,KAAK+7W,UAFb,EAKb,EAELs+E,GAAet3b,UAAf,0BAA4Gs3b,IA9+wBLr3b,MA8+wBqCqxZ,IA9+wBrCrxZ,MA8+wB8DqQ,OA9+wB9DrQ,MA8+wBiGA,OAAxM,EACAq3b,GAAe9jb,UA/+wBwFvT,MA++wBvG,MAAgGq3b,GAAhG9mb,wEA/+wBuGvQ,MA++wBvGwT,EAAgegkb,GAAhe,cA/+wBuGx3b,MA++wBvGyT,EA/+wBuGzT,WA++wBvGwQ,oVAmDA,MAAMinb,WAA8BtpO,MAChCrxN,YAAY4hb,EAAch5a,EAASiC,EAAUE,EAAcC,GACvDmT,MAAMvV,EAASiC,EAAU,KAAME,EAAcC,GAC7C9K,KAAK0hb,aAAeA,EACpB1hb,KAAK8K,OAASA,CACjB,CAIDyN,QAAQkM,GACJA,EAAE5Q,iBACF7T,KAAK0hb,aAAahuB,YAAYtjZ,MACjC,CAIGsqb,iBACA,OAAO,CACV,EAELD,GAAsB13b,UAAtB,0BAAmH03b,IAtjxBZz3b,MAsjxBmDqxZ,IAtjxBnDrxZ,MAsjxB4EA,OAtjxB5EA,MAsjxBsGA,OAtjxBtGA,MAsjxB+HqQ,OAtjxB/HrQ,MAsjxBkKA,OAAzQ,EACAy3b,GAAsBnnb,UAvjxBiFtQ,MAujxBvG,MAAuGy3b,GAAvGlnb,uFAvjxBuGvQ,MAujxBvG,2BAAuGwQ,YAAvG,QAvjxBuGxQ,MAujxBvG,wCAvjxBuGA,SAqmxBvG,MAAM23b,IAENA,GAAY53b,UAAZ,0BAAyG43b,GAAzG,EACAA,GAAYl0b,UAxmxB2FzD,MAwmxBvG,MAA0G23b,KAC1GA,GAAYj0b,UAzmxB2F1D,MAymxBvG,UAAiIoyY,KAAjI,qIEvrxBqGpyY,cAiH7F,2BAjH6FA,cAkH1D,uBAlH0DA,aAkHxF,4BAvMb,MAAMwE,GAAkB,CACpBC,KAAM,gCACNC,YAAa,uBACbC,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbC,QAAS,GACTC,iBAAkB,+JAGhB8yb,GAAc,CAChBnqR,QAAW,SACXoqR,OAAU,YACVzxb,MAAS,YACTC,OAAU,YACVC,MAAS,YACTwxb,OAAU,aAKd,MAAMC,GACFj7b,YAAY4I,GAASiC,IACjB3K,KAAK0I,QAAUA,GACf1I,KAAK2K,SAAWA,MAChBkB,KAAgBrE,GACnB,CACGwzb,qBACA,MAAqB,eAAdh7b,KAAKi7b,MAAuC,SAAdj7b,KAAKi7b,IAC7C,CACGC,mBACA,MAAqB,aAAdl7b,KAAKi7b,MAAqC,SAAdj7b,KAAKi7b,IAC3C,CAkBG1sb,eAAWA,IACX,MAAM7F,GAAU1I,KAAK0I,QAAQyD,cAC7BnM,KAAKyL,YAAc8C,GACnBvO,KAAK2K,SAASqI,YAAYtK,GAAU,WAAU6F,MAC1CA,IACAvO,KAAK2K,SAASyH,SAAS1J,GAAU,WAAU6F,KAElD,CACGA,iBACA,OAAOvO,KAAKyL,WACf,CAaGwC,SAAKA,IACL,MAAMvF,GAAU1I,KAAK0I,QAAQyD,cAC7BnM,KAAKsL,MAAQ2C,GACb,MAAMgK,GAAY2ib,GAAY56b,KAAKiO,MACnCjO,KAAK2K,SAASqI,YAAYtK,GAASuP,IACtB,YAAThK,IACAjO,KAAK2K,SAASyH,SAAS1J,GAASuP,GAEvC,CACGhK,WACA,OAAOjO,KAAKsL,KACf,EAELyvb,GAAkBh4b,UAAlB,4BAA+Gg4b,IAAV/3b,MAA6CA,OAA7CA,MAAuEA,OAA5K,EACA+3b,GAAkBznb,UADmFtQ,MACrG,MAAmG+3b,GAAnGxnb,kFADqGvQ,MACrG,6BADqGA,CACrG,wFAuBA,MAAMm4b,WAAsBJ,GACxBj7b,YAAY4I,GAASiC,IACjBsT,MAAMvV,GAASiC,IACf3K,KAAK0I,QAAUA,GACf1I,KAAK2K,SAAWA,GAChB3K,KAAK0jB,WAAY,CACpB,CAKGjc,SAAKA,IACL,MAAMiB,GAAU1I,KAAK0I,QAAQyD,cAC7BnM,KAAK2K,SAASqI,YAAYtK,GAAU,OAAM1I,KAAKyH,QAC/CzH,KAAKo7b,MAAQ3zb,GACTA,IACAzH,KAAK2K,SAASyH,SAAS1J,GAAU,OAAM1I,KAAKyH,OAEnD,CACGA,WACA,OAAOzH,KAAKo7b,KACf,EAELD,GAAcp4b,UAAd,4BAA2Go4b,IA/CNn4b,MA+CqCA,OA/CrCA,MA+C+DA,OAApK,EACAm4b,GAAc5kb,UAhDuFvT,MAgDrG,MAA+Fm4b,GAA/F5nb,yEAhDqGvQ,MAgDrG,8EAhDqGA,OAgDrGuf,4DAkBA,MAAM84a,WAAyBN,GAC3Bj7b,YAAYw7b,GAAc5yb,GAASiC,IAC/BsT,MAAMvV,GAASiC,IACf3K,KAAKs7b,aAAeA,GACpBt7b,KAAK0I,QAAUA,GACf1I,KAAK2K,SAAWA,GAChB3K,KAAK0jB,WAAY,CACpB,CAIGjX,SAAKA,IACL,MAAM/D,GAAU1I,KAAK0I,QAAQyD,cACzBnM,KAAKu7b,OAASv7b,KAAKu7b,MAAM9zb,MACzBzH,KAAK2K,SAASqI,YAAYtK,GAAU,WAAU1I,KAAKu7b,MAAM9zb,QAE7DzH,KAAKu7b,MAAQ9ub,GACbzM,KAAK2K,SAASyH,SAAS1J,GAAU,WAAU1I,KAAKu7b,MAAM9zb,OACzD,CACGgF,WACA,OAAOzM,KAAKu7b,KACf,CACG95a,cACA,YAAK+5a,YAAcx7b,KAAKw7b,aAAex7b,KAAKs7b,aAAaG,wBAAwBz7b,KAAKyM,KAAKgV,SACpFzhB,KAAKw7b,WACf,CACGl2Z,cACA,OAAOtlC,KAAKyM,SAAQY,OACvB,CACDiC,WACItP,KAAK07b,oBACR,CACDA,qBACI,IAAI,EAACplb,WAGAtW,KAAKu7b,MACN,MAAM,IAAIh7b,MAAO,gPAMxB,EAEL86b,GAAiBt4b,UAAjB,4BAA8Gs4b,IA/GTr4b,MA+G2CqQ,MA/G3CrQ,MA+GuEA,OA/GvEA,MA+GiGA,OAAtM,EACAq4b,GAAiB9kb,UAhHoFvT,MAgHrG,MAAkGq4b,GAAlG9nb,6EAhHqGvQ,MAgHrG,qFAhHqGA,OAgHrGuf,4QAhHqGvf,MAiH7F,iBADR,MAhHqGA,MAiHvF,kBADd,gBAGsDwV,MAHtDC,kBA0DA,MAAMkjb,IAENA,GAAW54b,UAAX,4BAAwG44b,GAAxG,EACAA,GAAWl1b,UA7K0FzD,MA6KrG,MAAyG24b,KACzGA,GAAWj1b,UA9K0F1D,MA8KrG,UAA+H,CAAC8T,SA+ChI,MAAM8kb,IAENA,GAAc74b,UAAd,4BAA2G64b,GAA3G,EACAA,GAAcn1b,UAhOuFzD,MAgOrG,MAA4G44b,KAC5GA,GAAcl1b,UAjOuF1D,MAiOrG,UAAqI,CAAC8T,SAyCtI,MAAM+kb,IAENA,GAAY94b,UAAZ,4BAAyG84b,GAAzG,EACAA,GAAYp1b,UA7QyFzD,MA6QrG,MAA0G64b,KAE1GA,GAAYn1b,UA/QyF1D,MA+QrG,UAAiI24b,GACzHC,KADR,oKC1LkG54b,MA+NtF,YAzYZ,MAAMwE,GAAkB,CACpBC,KAAM,qCACNC,YAAa,uBACbC,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbC,QAAS,GACTC,iBAAkB,+JAGhBg0b,GAAiB,CACnB1yb,MAAS,aACTC,OAAU,aACVC,MAAS,cAMb,MAAMyyb,GACFj8b,YAAY4I,GAASiC,GAAU4Y,IAC3BvjB,KAAK0I,QAAUA,GACf1I,KAAK2K,SAAWA,GAChB3K,KAAKujB,oBAAsBA,GAC3BvjB,KAAK0jB,WAAY,EAUjB1jB,KAAKiO,KAAO,SASZjO,KAAKqnC,KAAO,QAmBZrnC,KAAKuO,WAAa,UAYlBvO,KAAK+uD,MAAQ,SAUb/uD,KAAK2iC,SAAW,OAShB3iC,KAAKg8b,cAAe,EACpBh8b,KAAKi8b,aAAe,GACpBj8b,KAAKk8b,WAAa,CAAEh7a,SAAU,MAAOD,WAAY,OACjDjhB,KAAK+L,KAAM,KACXF,KAAgBrE,IAChBxH,KAAKylB,uBAAyBzlB,KAAKujB,oBAAoBtX,QAAQC,UAAU,EAAGH,WACxE/L,KAAK+L,IAAMA,GACX/L,KAAK8L,UAAY9L,KAAK+L,IAAM,MAAQ,OAE3C,CACGowb,wBACA,OAAOn8b,KAAKg8b,YACf,CAWGh7a,YACA,OAAOhhB,KAAKk8b,UACf,CACGl7a,UAAMA,IACNhhB,KAAKk8b,WAAa78a,OAAOC,OAAOtf,KAAKk8b,WAAYl7a,GACpD,CACDxQ,kBACSxQ,KAAKi8b,aAAa37b,QACnBN,KAAKo8b,iBAEZ,CACD/rb,cACIrQ,KAAKo8b,iBACR,CACDvrb,cACQ7Q,KAAKylB,wBACLzlB,KAAKylB,uBAAuBxU,aAEnC,CACD6X,aACI,MAAQ,KAAI9oB,KAAKk8b,WAAWh7a,YAAYlhB,KAAKk8b,WAAWj7a,YAC3D,CACDo7a,gBACI,MAAQ,WAAUr8b,KAAK2iC,UAC1B,CACD1qB,YACI,OAAO6jb,GAAe97b,KAAKiO,KAC9B,CACDqub,aACI,MAAQ,WAAUt8b,KAAK+uD,OAC1B,CACD37C,kBACI,MAAQ,WAAUpT,KAAKuO,YAC1B,CACDgub,YACI,MAAQ,WAAUv8b,KAAKqnC,MAC1B,CACD+0Z,kBACI,MAAM1zb,GAAU1I,KAAK0I,QAAQyD,cAC7BnM,KAAKi8b,aAAaxrb,QAASsC,KACvB/S,KAAK2K,SAASqI,YAAYtK,GAASqK,GAAnC,GAEJ/S,KAAKi8b,aAAe,CAChBj8b,KAAKoT,kBACLpT,KAAKu8b,YACLv8b,KAAKiY,YACLjY,KAAKs8b,aACLt8b,KAAK8oB,aACL9oB,KAAKq8b,iBAETr8b,KAAKi8b,aAAaxrb,QAASsC,KACvB/S,KAAK2K,SAASyH,SAAS1J,GAASqK,GAAhC,EAEP,EAELgpb,GAAeh5b,UAAf,4BAA4Gg5b,IAAV/4b,MAA0CA,OAA1CA,MAAoEA,OAApEA,MAA6FqQ,MAA/L,EACA0ob,GAAexlb,UADmFvT,MAClG,MAAgG+4b,GAAhGxob,2EADkGvQ,MAClG,oBADkGA,MAClG,uBADkGA,CAClG,+LADkGA,MAC4V,CACtbyQ,KACA,CACItN,QAASuN,KACTlN,SAAU,2BAL4ExD,OAClG0T,oEADkG1T,cAO7C,GANrD,oBA6CA,MAAMw5b,GACF18b,YAAYyjB,IACRvjB,KAAKujB,oBAAsBA,GAC3BvjB,KAAK0jB,WAAY,EACjB1jB,KAAK+L,KAAM,EACX/L,KAAKylB,uBAAyBzlB,KAAKujB,oBAAoBtX,QAAQC,UAAU,EAAGH,WACxE/L,KAAK+L,IAAMA,GACX/L,KAAK8L,UAAY9L,KAAK+L,IAAM,MAAQ,OAE3C,CACD8E,cACQ7Q,KAAKylB,wBACLzlB,KAAKylB,uBAAuBxU,aAEnC,EAELurb,GAAwBz5b,UAAxB,4BAAqHy5b,IA9DnBx5b,MA8D4DqQ,MAA9J,EACAmpb,GAAwBjmb,UA/D0EvT,MA+DlG,MAAyGw5b,GAAzGjpb,qFA/DkGvQ,MA+DlG,oBA/DkGA,MA+DlG,8CA/DkGA,MA+DmL,CAC7QyQ,KACA,CACItN,QAASuN,KACTlN,SAAU,4BAJtBkQ,oEA/DkG1T,cAqElE,GANhC,oBAuCA,MAAMy5b,IAENA,GAAY15b,UAAZ,4BAAyG05b,GAAzG,EACAA,GAAYh2b,UAzGsFzD,MAyGlG,MAA0Gy5b,KAG1GA,GAAY/1b,UA5GsF1D,MA4GlG,UAAiI,CAAC8T,SAUlI,MAAMyQ,GAAe,CACjBne,MAAS,cACTC,OAAU,cACVC,MAAS,eAEPozb,GAAgB,CAClBC,QAAW,EACX,mBAAoB,EACpB,qBAAsB,GAEpBC,GAAe,CACjBD,QAAW,qBACX,mBAAoB,qBACpB,qBAAsB,sBAM1B,MAAME,GACF/8b,YAAY4I,GAASiC,IACjB3K,KAAK0I,QAAUA,GACf1I,KAAK2K,SAAWA,GAChB3K,KAAK0jB,WAAY,EACjB1jB,KAAK6hM,MAAQ,UACb7hM,KAAKyL,YAAc,UACnBzL,KAAKsL,MAAQ,SACbtL,KAAK88b,OAAS98b,KAAK0I,QAAQyD,iBAC3BN,KAAgBrE,GACnB,CASGiX,SAAKA,IACLze,KAAK2K,SAASqI,YAAYhT,KAAK88b,OAAQF,GAAa58b,KAAKye,OACzDze,KAAK2K,SAASyH,SAASpS,KAAK88b,OAAQF,GAAan+a,KACjDze,KAAK6hM,MAAQpjL,EAChB,CACGA,WACA,OAAOze,KAAK6hM,KACf,CAiBGtzL,eAAWA,IACXvO,KAAK2K,SAASqI,YAAYhT,KAAK88b,OAAS,YAAW98b,KAAKuO,cACxDvO,KAAK2K,SAASyH,SAASpS,KAAK88b,OAAS,YAAWvub,MAChDvO,KAAKyL,YAAc8C,EACtB,CACGA,iBACA,OAAOvO,KAAKyL,WACf,CAUGwC,SAAKA,IACLjO,KAAK2K,SAASqI,YAAYhT,KAAK88b,OAAQv1a,GAAavnB,KAAKiO,OACzDjO,KAAK2K,SAASyH,SAASpS,KAAK88b,OAAQv1a,GAAatZ,KACjDjO,KAAKsL,MAAQ2C,EAChB,CACGA,WACA,OAAOjO,KAAKsL,KACf,CACDkF,kBACIxQ,KAAK+8b,kBACR,CAIGC,mBACA,OAAO,IAAI77b,MAAMu7b,GAAc18b,KAAKye,MACvC,CACDs+a,mBACI/8b,KAAK2K,SAASyH,SAASpS,KAAK88b,OAAQF,GAAa58b,KAAKye,OACtDze,KAAK2K,SAASyH,SAASpS,KAAK88b,OAAS,YAAW98b,KAAKuO,cACrDvO,KAAK2K,SAASyH,SAASpS,KAAK88b,OAAQv1a,GAAavnB,KAAKiO,MACzD,EAEL4ub,GAAgB95b,UAAhB,4BAA6G85b,IA5NX75b,MA4N4CA,OA5N5CA,MA4NsEA,OAAxK,EACA65b,GAAgBtmb,UA7NkFvT,MA6NlG,MAAiG65b,GAAjGtpb,2EA7NkGvQ,MA6NlG,yOA7NkGA,MA8N1F,WA9N0FA,MA+NtF,kBA/NsFA,SA6NlG,OA7NkGA,MA+N5D,GA/N4DA,MA+N5D,2BAFtC,gBAI4CyrL,MAJ5Ch2K,kBAoCA,MAAMwkb,IAENA,GAAal6b,UAAb,4BAA0Gk6b,GAA1G,EACAA,GAAax2b,UApQqFzD,MAoQlG,MAA2Gi6b,KAC3GA,GAAav2b,UArQqF1D,MAqQlG,UAAmI,CAAC8T,SAapI,MAAMomb,GAAkB,EAAC,EAAO,QAAS,QAInCC,GAAc,CAAC,SAAU,YAAa,QAKtCC,GAAoB,CACtBC,MAAO,mBACPC,KAAM,mBAKJC,GAAgB,CAClBC,UAAW,kBACX5wY,OAAQ,oBACRv0C,KAAM,mBAeV,MAAMolb,GACF39b,YAAY6K,GAAU6gB,IAClBxrB,KAAK2K,SAAWA,GAChB3K,KAAKwrB,YAAcA,GACnBxrB,KAAK09b,WAAa,QAClB19b,KAAK29b,OAAS,MACjB,CASGhza,cAAUA,IACV,MAAIrU,WAAsD,IAAvC4mb,GAAgBj8b,QAAQ0pB,IACvC,MAAM,IAAIpqB,MAvBqB,IAuBQoqB,4FAEvC3qB,KAAK2qB,WACL3qB,KAAK2K,SAASqI,YAAYhT,KAAKwrB,YAAYrf,cAAeixb,GAAkBp9b,KAAK2qB,YAEjFA,IACA3qB,KAAK2K,SAASyH,SAASpS,KAAKwrB,YAAYrf,cAAeixb,GAAkBzya,KAE7E3qB,KAAK09b,WAAa/ya,EACrB,CACGA,gBACA,OAAO3qB,KAAK09b,UACf,CASG3uY,UAAMA,IACN,MAAIz4C,WAA8C,IAA/B6mb,GAAYl8b,QAAQ8tD,IACnC,MAAM,IAAIxuD,MAlDiB,IAkDQwuD,8DAlD4DouY,GAAY97b,IAAI2hC,IAAM,IAAGA,OAAMrhC,KAAK,WAoDvI3B,KAAK2K,SAASqI,YAAYhT,KAAKwrB,YAAYrf,cAAeoxb,GAAcv9b,KAAK+uD,QAC7E/uD,KAAK2K,SAASyH,SAASpS,KAAKwrB,YAAYrf,cAAeoxb,GAAcxuY,KACrE/uD,KAAK29b,OAAS5uY,EACjB,CACGA,YACA,OAAO/uD,KAAK29b,MACf,CAOGnpb,UAAMA,IACNxU,KAAK2K,SAASyf,SAASpqB,KAAKwrB,YAAYrf,cAAe,QAA0B,iBAAVqI,GAAqBA,GAAQA,GAAQ,KAC/G,CAQGqiB,WAAOA,IACP72B,KAAK2K,SAASyf,SAASpqB,KAAKwrB,YAAYrf,cAAe,SAA4B,iBAAX0qB,GAAsBA,GAASA,GAAS,KACnH,CACDrmB,kBACI,MAAMgb,GAAcxrB,KAAKwrB,YAAYrf,cACrCqf,GAAYkxK,UAAU1wL,IAAI,aAAcuxb,GAAcv9b,KAAK+uD,QACvD/uD,KAAK2qB,WACLa,GAAYkxK,UAAU1wL,IAAIoxb,GAAkBp9b,KAAK2qB,WAExD,EAEL8ya,GAAkB16b,UAAlB,4BAA+G06b,IAhYbz6b,MAgYgDA,OAhYhDA,MAgYyEA,OAA3K,EACAy6b,GAAkBlnb,UAjYgFvT,MAiYlG,MAAmGy6b,GAAnGlqb,wLAsBA,MAAMqqb,IAENA,GAAe76b,UAAf,4BAA4G66b,GAA5G,EACAA,GAAen3b,UA1ZmFzD,MA0ZlG,MAA6G46b,KAC7GA,GAAel3b,UA3ZmF1D,MA2ZlG,UAAuI,CAAC8T,SAyCxI,MAAM+mb,IAENA,GAAiB96b,UAAjB,4BAA8G86b,GAA9G,EACAA,GAAiBp3b,UAvciFzD,MAuclG,MAA+G66b,KAG/GA,GAAiBn3b,UA1ciF1D,MA0clG,UAA2Iy5b,GACnIQ,GACAW,KAFR,2kBCxF0G56b,MAwT9F,YAxT8FA,MAyT1F,KAzT0FA,sEAyT5E,GAzT4EA,MAyT5E,wCAzT4EA,CAyT5E,uDAzT4EA,MA4T9F,GA5T8FA,MA4T1D,UA5T0DA,2CAkTtG,YAlTsGA,MAuTjG,KAvTiGA,MAwT9F,mBAxT8FA,MA4T9F,2BA5T8FA,4DAoTlG,+BApTkGA,MAmTlG,qBAnTkGA,MAuTnF,GAvTmFA,MAuTnF,oBAvTmFA,MAwTvE,GAxTuEA,MAwTvE,mBAxTuEA,MA4T/E,GA5T+EA,MA4T/E,+CA5T+EA,MAiUlG,4BAjUkGA,cAiUlG,0HAjUkGA,MAiyB9F,kBAjyB8FA,MAsyBtF,aAtyBsFA,qCAmyB1F,4BAnyB0FA,MAoyB1F,eApyB0FA,MAuyBlF,GAvyBkFA,MAuyBlF,0BAvyBkFA,CAuyBlF,sDAvyBkFA,MA4yB1F,4BA5yB0FA,cA+yBtF,oBA/yBsFA,CA+yBtF,sBA/yBsFA,CA+yBtF,mBA/yBsFA,CA+yBtF,wBA/yBsFA,CA+yBtF,YA/yBsFA,CA+yBtF,YA/yBsFA,CA+yBtF,wEA/yBsFA,MAszBtF,+CAtzBsFA,MAi1B9F,kBAj1B8FA,MAo1B1F,4BAASiiB,mBAAT,GAp1B0FjiB,MAw1BtF,aAx1BsFA,qCAm1B1F,4BAn1B0FA,MAq1B1F,cAr1B0FA,CAq1B1F,6BAr1B0FA,MAy1BlF,GAz1BkFA,MAy1BlF,0BAz1BkFA,CAy1BlF,sJAz1BkFA,MAu9C1F,4BAv9C0FA,cA09CtF,oBA19CsFA,CA09CtF,sBA19CsFA,CA09CtF,mBA19CsFA,CA09CtF,wBA19CsFA,CA09CtF,YA19CsFA,CA09CtF,YA19CsFA,CA09CtF,wEA19CsFA,MAi+CtF,sOAj+CsFA,MAolH9F,WAplH8FA,CAolH9F,cAplH8FA,MAkmHtF,YAlmHsFA,cAomH3F,cApmH2FA,MA8mHtF,YA9mHsFA,uCAslH1F,4BAtlH0FA,MAslH1F,sCAtlH0FA,MA8lHtF,GA9lHsFA,MA8lHtF,mDA9lHsFA,MA0lHtF,4BA1lHsFA,MA0lHtF,uBA1lHsFA,CA0lHtF,0BA1lHsFA,MA2lHtF,iBA3lHsFA,CA2lHtF,+BA3lHsFA,MA0mHtF,GA1mHsFA,MA0mHtF,qDA1mHsFA,MAsmHtF,4BAtmHsFA,MAsmHtF,uBAtmHsFA,CAsmHtF,0BAtmHsFA,MAumHtF,iBAvmHsFA,CAumHtF,gSAvmHsFA,MA28L9F,wCA38L8FA,cA68L1F,iHA78L0FA,cA+9LlG,YA/9LkGA,MAm+L9F,mBAn+L8FA,MAm+L9Fu5K,YAn+L8Fv5K,QAm+L9F,OAn+L8FA,MAm+LrFqE,gBAAT,EAn+L8FrE,CAm+L9F,gCACaiiB,mBADb,EAn+L8FjiB,CAm+L9F,6BAn+L8FA,MAm+L9Fu5K,YAn+L8Fv5K,QAm+L9F,OAn+L8FA,MAw+L7EkE,kBALjB,EAn+L8FlE,CAm+L9F,6BAn+L8FA,MAm+L9Fu5K,YAn+L8Fv5K,QAm+L9F,OAn+L8FA,MAy+L7Ek5K,kBANjB,GAn+L8Fl5K,MA0+L1F,aA1+L0FA,uCAq+L9F,sBAr+L8FA,CAq+L9F,wBAr+L8FA,MAs+L9F,6BAt+L8FA,MA0+LpF,GA1+LoFA,MA0+LpF,4DA1+LoFA,MA4+LlG,2BA5+LkGA,cA4+L1E,0DA5+L0EA,MA6+LlG,2BA7+LkGA,cA6+LvE,+EA7+LuEA,MA++L9F,wCA/+L8FA,cAi/L1F,4PAj/L0FA,cA2kP1F,gBA3kP0FA,MA8kPtF,4BA9kPsFA,MA8kPtF8D,gBA9kPsF9D,MA8kPtF,UA9kPsFA,MA8kP7E+D,yBAAT,GA9kPsF/D,MAqlPtF,YArlPsFA,uDAmlPtF,mDAnlPsFA,MAglPtF,gEAhlPsFA,CAglPtF,qEAhlPsFA,CAglPtF,kCAhlPsFA,MAulPlF,GAvlPkFA,MAulPlF,gEAvlPkFA,MA0kP9F,WA1kP8FA,MA2kP1F,qBA3kP0FA,qCA2kPjE,GA3kPiEA,MA2kPjE,uDA3kPiEA,cA8lP9F,kBA9lP8FA,MAomP1F,mBApmP0FA,MAomP1Fy5K,YApmP0Fz5K,QAomP1F,OApmP0FA,MAomPjFiE,2BAAT,GApmP0FjE,MAqmPtF,aArmPsFA,uCAkmP1F,sCAlmP0FA,CAkmP1F,sEAlmP0FA,cAumP9F,YAvmP8FA,MAwmP1F,aAxmP0FA,MA6mP1F,aA7mP0FA,MAgnPtF,qBAhnPsFA,MAgnPtFixT,YAhnPsFjxT,QAgnPtF,OAhnPsFA,MAgnP7Ek5K,2BAAT,GAhnPsFl5K,yCA2mPtF,GA3mPsFA,MA2mPtF,gCA3mPsFA,MA0mPtF,mCA1mPsFA,MA8mPtF,GA9mPsFA,MA8mPtF,4BA9mPsFA,MA+mPtF,mEA/mPsFA,cAyyPlG,uCAzyPkGA,MAyyP7D,gIAzyP6DA,cAs7PlG,UAt7PkGA,CAs7PlG,eAt7PkGA,MA87P1F,kBA97P0FA,MA87P1F84K,YA97P0F94K,QA87P1F,OA97P0FA,MA87PlF+4K,wBAAR,EA97P0F/4K,CA87P1F,mBA97P0FA,MA87P1F84K,YA97P0F94K,MA87P1F,MA97P0FA,QA87P1F,OA97P0FA,MA+7PjF+D,kCADT,GA97P0F/D,cAi8P9F,aAj8P8FA,MAi8P/B,SAj8P+BA,yCAy7P1F,GAz7P0FA,MAy7P1F,mBAz7P0FA,CAy7P1F,sBAz7P0FA,CAy7P1F,sBAz7P0FA,CAy7P1F,mBAz7P0FA,MAi8PvF,GAj8PuFA,MAi8PvF,yDAj8PuFA,cAu/P9F,UAv/P8FA,CAu/P9F,gCAv/P8FA,MA8/PtF,2BA9/PsFA,MA8/PtFkxT,YA9/PsFlxT,MA8/PtF,UA9/PsFA,MA8/P3E05K,aAAX,EA9/PsF15K,CA8/PtF,kBA9/PsFA,MA8/PtFkxT,YA9/PsFlxT,MA8/PtF,UA9/PsFA,MAogQ9E44K,yBANR,EA9/PsF54K,CA8/PtF,yBA9/PsFA,MA8/PtFkxT,YA9/PsFlxT,MA8/PtF,UA9/PsFA,MAqgQvE6D,2BAPf,GA9/PsF7D,cAugQ1F,aAvgQ0FA,MAugQrB,OAvgQqBA,sDA0/PtF,GA1/PsFA,MA0/PtF,uBA1/PsFA,CA0/PtF,uBA1/PsFA,CA0/PtF,QA1/PsFA,CA0/PtF,QA1/PsFA,CA0/PtF,kBA1/PsFA,CA0/PtF,iBA1/PsFA,CA0/PtF,cA1/PsFA,CA0/PtF,WA1/PsFA,CA0/PtF,cA1/PsFA,CA0/PtF,cA1/PsFA,MAugQnF,GAvgQmFA,MAugQnF,yDAvgQmFA,cAm8PlG,GAn8PkGA,MAo8P9F,UAp8P8FA,CAo8P9F,+BAp8P8FA,MA28PtF,2BA38PsFA,MA28PtFg1O,YA38PsFh1O,QA28PtF,OA38PsFA,MA28P3Em5K,aAAX,EA38PsFn5K,CA28PtF,kBA38PsFA,MA28PtFg1O,YA38PsFh1O,QA28PtF,OA38PsFA,MAg9P9Eq5K,yBALR,EA38PsFr5K,CA28PtF,yBA38PsFA,MA28PtFg1O,YA38PsFh1O,QA28PtF,OA38PsFA,MAi9PvEs5K,2BANf,GA38PsFt5K,cAm9P1F,aAn9P0FA,MAm9PvB,OAn9PuBA,gBAq9P9F,UAr9P8FA,CAq9P9F,+BAr9P8FA,MA49PtF,2BA59PsFA,MA49PtFg1O,YA59PsFh1O,QA49PtF,OA59PsFA,MA49P3E42O,aAAX,EA59PsF52O,CA49PtF,kBA59PsFA,MA49PtFg1O,YA59PsFh1O,QA49PtF,OA59PsFA,MAi+P9Ek2O,yBALR,EA59PsFl2O,CA49PtF,yBA59PsFA,MA49PtFg1O,YA59PsFh1O,QA49PtF,OA59PsFA,MAk+PvE62O,2BANf,GA59PsF72O,cAo+P1F,aAp+P0FA,MAo+PrB,QAp+PqBA,gBAs+P9F,WAt+P8FA,CAs+P9F,gCAt+P8FA,MA6+PtF,2BA7+PsFA,MA6+PtFg1O,YA7+PsFh1O,QA6+PtF,OA7+PsFA,MA6+P3E61O,aAAX,EA7+PsF71O,CA6+PtF,kBA7+PsFA,MA6+PtFg1O,YA7+PsFh1O,QA6+PtF,OA7+PsFA,MAk/P9Ey2O,yBALR,EA7+PsFz2O,CA6+PtF,yBA7+PsFA,MA6+PtFg1O,YA7+PsFh1O,QA6+PtF,OA7+PsFA,MAm/PvEk1O,2BANf,GA7+PsFl1O,cAq/P1F,cAr/P0FA,MAq/PtB,QAr/PsBA,gBAu/P9F,oBAv/P8FA,4EAu8PtF,GAv8PsFA,MAu8PtF,uBAv8PsFA,CAu8PtF,uBAv8PsFA,CAu8PtF,QAv8PsFA,CAu8PtF,UAv8PsFA,CAu8PtF,kBAv8PsFA,CAu8PtF,iBAv8PsFA,CAu8PtF,cAv8PsFA,CAu8PtF,aAv8PsFA,CAu8PtF,cAv8PsFA,MAm9PnF,GAn9PmFA,MAm9PnF,qBAn9PmFA,MAw9PtF,GAx9PsFA,MAw9PtF,uBAx9PsFA,CAw9PtF,uBAx9PsFA,CAw9PtF,QAx9PsFA,CAw9PtF,UAx9PsFA,CAw9PtF,kBAx9PsFA,CAw9PtF,iBAx9PsFA,CAw9PtF,cAx9PsFA,CAw9PtF,aAx9PsFA,CAw9PtF,cAx9PsFA,MAo+PnF,GAp+PmFA,MAo+PnF,sBAp+PmFA,MAy+PtF,GAz+PsFA,MAy+PtF,uBAz+PsFA,CAy+PtF,uBAz+PsFA,CAy+PtF,QAz+PsFA,CAy+PtF,UAz+PsFA,CAy+PtF,kBAz+PsFA,CAy+PtF,iBAz+PsFA,CAy+PtF,cAz+PsFA,CAy+PtF,aAz+PsFA,CAy+PtF,cAz+PsFA,MAq/PnF,GAr/PmFA,MAq/PnF,sBAr/PmFA,MAu/PvE,GAv/PuEA,MAu/PvE,gDAv/PuEA,MAwqQ9F,YAxqQ8FA,MAyqQ1F,GAzqQ0FA,MA0qQ1F,YA1qQ0FA,sCAyqQ1F,GAzqQ0FA,MAyqQ1F,oDAzqQ0FA,MA4qQ9F,YA5qQ8FA,MA6qQ1F,GA7qQ0FA,MA8qQ1F,YA9qQ0FA,sCA6qQ1F,GA7qQ0FA,MA6qQ1F,oDA7qQ0FA,MAuqQlG,GAvqQkGA,MAwqQ9F,mBAxqQ8FA,MA4qQ9F,mBA5qQ8FA,qCAwqQ1C,GAxqQ0CA,MAwqQ1C,eAxqQ0CA,MA4qQ5C,GA5qQ4CA,MA4qQ5C,yCA5qQ4CA,MA4uQtF,wCA5uQsFA,MA0uQ1F,YA1uQ0FA,MA2uQtF,YA3uQsFA,MA4uQtF,mBA5uQsFA,sCA4uQtD,GA5uQsDA,MA4uQtD,0DA5uQsDA,MA8uQ1F,aA9uQ0FA,MA+uQtF,aA/uQsFA,2CAyuQ9F,GAzuQ8FA,MA0uQ1F,mBA1uQ0FA,MA8uQ1F,mBA9uQ0FA,qCA0uQtC,GA1uQsCA,MA0uQtC,+BA1uQsCA,MA8uQxC,GA9uQwCA,MA8uQxC,yKA9uQwCA,cAm5R1F,2BAn5R0FA,0BAu5RtF,qBAv5RsFA,CAu5RtF,cAv5RsFA,CAu5RtF,sEAv5RsFA,cA65R1F,aA75R0FA,MA+5RtF,mBA/5RsFA,MA+5RtFuE,YA/5RsFvE,QA+5RtF,OA/5RsFA,MA+5R7EgE,WAAT,EA/5RsFhE,CA+5RtF,2BA/5RsFA,MA+5RtFuE,YA/5RsFvE,QA+5RtF,OA/5RsFA,MAg6RrEkE,WADjB,EA/5RsFlE,CA+5RtF,2BA/5RsFA,MA+5RtFuE,YA/5RsFvE,QA+5RtF,OA/5RsFA,MAi6RrEk5K,WAFjB,GA/5RsFl5K,MAq6RtF,aAr6RsFA,uCAk6RtF,gCAl6RsFA,CAk6RtF,qHAl6RsFA,cAw7R1F,wBAx7R0FA,MAw8RtF,2BAx8RsFA,MAw8RtFkxT,YAx8RsFlxT,QAw8RtF,OAx8RsFA,MAw8RvE05K,+BAAf,GAx8RsF15K,uCA27RtF,UA37RsFA,MA27RtF,qBA37RsFA,CA27RtF,uCA37RsFA,CA27RtF,sBA37RsFA,CA27RtF,sBA37RsFA,CA27RtF,iBA37RsFA,CA27RtF,uBA37RsFA,CA27RtF,cA37RsFA,CA27RtF,QA37RsFA,CA27RtF,UA37RsFA,CA27RtF,cA37RsFA,CA27RtF,eA37RsFA,CA27RtF,wDA37RsFA,MAs9RlG,0BAt9RkGA,cAy9R9F,gBAz9R8FA,CAy9R9F,kJAz9R8FA,cAgoTlF,UAhoTkFA,MAyoT9E,4BAzoT8EA,MAyoT9E8D,kCAzoT8E9D,QAyoT9EwJ,SAzoT8ExJ,QAyoT9E,OAzoT8EA,MAyoTrE+D,2CAAT,GAzoT8E/D,kFAkoT9E,gIAloT8EA,CAkoT9E,+IAloT8EA,MAuoT9E,oCAvoT8EA,CAuoT9E,UAvoT8EA,MAuoT9E,qFAvoT8EA,MAooT9E,6HApoT8EA,CAooT9E,eApoT8EA,CAooT9E,wCApoT8EA,MA+nTtF,QA/nTsFA,MAgoTlF,kBAhoTkFA,yCAgoT5D,GAhoT4DA,MAgoT5D,8HAhoT4DA,cAuvUlG,aAvvUkGA,MAgwU9F,8BAhwU8FA,MAgwU9FmE,YAhwU8FnE,QAgwU9F,OAhwU8FA,MAgwU1EoE,wBAApB,EAhwU8FpE,CAgwU9F,0BAhwU8FA,MAgwU9FmE,YAhwU8FnE,QAgwU9F,OAhwU8FA,MAiwUhFqE,oBADd,EAhwU8FrE,CAgwU9F,8BAhwU8FA,MAgwU9FmE,YAhwU8FnE,QAgwU9F,OAhwU8FA,MAkwU5EgE,sBAFlB,GAhwU8FhE,uCA0vU9F,4BA1vU8FA,CA0vU9F,0BA1vU8FA,CA0vU9F,gBA1vU8FA,CA0vU9F,gBA1vU8FA,CA0vU9F,wBA1vU8FA,CA0vU9F,yDA1vU8FA,cAqwU9F,6BArwU8FA,MA8wU1F,2BA9wU0FA,MA8wU1F2yN,YA9wU0F3yN,QA8wU1F,OA9wU0FA,MA8wU3EkE,yBAAf,GA9wU0FlE,uCAuwU1F,gBAvwU0FA,CAuwU1F,oBAvwU0FA,CAuwU1F,kBAvwU0FA,CAuwU1F,qCAvwU0FA,CAuwU1F,iCAvwU0FA,CAuwU1F,+CAvwU0FA,CAuwU1F,2DAvwU0FA,cAixU9F,8BAjxU8FA,MAyxU1F,2BAzxU0FA,MAyxU1FkxT,YAzxU0FlxT,QAyxU1F,OAzxU0FA,MAyxU3E05K,yBAAf,GAzxU0F15K,uCAoxU1F,oCApxU0FA,CAoxU1F,oCApxU0FA,CAoxU1F,sCApxU0FA,CAoxU1F,kBApxU0FA,CAoxU1F,yDApxU0FA,cA6xUlG,eA7xUkGA,MAgyU9F,iCAhyU8FA,MAgyU9FqyY,YAhyU8FryY,QAgyU9F,OAhyU8FA,MAgyUzE6D,gBAArB,GAhyU8F7D,uCA+xU9F,kKA/xU8FA,MAkpW1F,2BAlpW0FA,cAkpWtB,4DAlpWsBA,cA6pW9F,iCA7pW8FA,MAwqW1F,sBAxqW0FA,MAwqW1F8D,YAxqW0F9D,QAwqW1F,OAxqW0FA,MAwqWhF+D,yBAAV,EAxqW0F/D,CAwqW1F,wBAxqW0FA,MAwqW1F8D,YAxqW0F9D,QAwqW1F,OAxqW0FA,MAyqW9EgE,uBADZ,EAxqW0FhE,CAwqW1F,2BAxqW0FA,MAwqW1F8D,YAxqW0F9D,QAwqW1F,OAxqW0FA,MA0qW3EiE,yBAFf,EAxqW0FjE,CAwqW1F,uBAxqW0FA,MAwqW1F8D,YAxqW0F9D,QAwqW1F,OAxqW0FA,MA2qW/EkE,0BAHX,EAxqW0FlE,CAwqW1F,gCAxqW0FA,MAwqW1F8D,YAxqW0F9D,QAwqW1F,OAxqW0FA,MA4qWtEk5K,6BAJpB,EAxqW0Fl5K,CAwqW1F,+BAxqW0FA,MAwqW1F8D,YAxqW0F9D,QAwqW1F,OAxqW0FA,MA6qWrE24K,iBALrB,GAxqW0F34K,uCA+pW1F,gBA/pW0FA,CA+pW1F,kBA/pW0FA,CA+pW1F,gBA/pW0FA,CA+pW1F,0BA/pW0FA,CA+pW1F,gCA/pW0FA,CA+pW1F,oBA/pW0FA,CA+pW1F,sCA/pW0FA,CA+pW1F,oCA/pW0FA,CA+pW1F,gIA/pW0FA,MA+hY9F,kDA/hY8FA,MAgiY9F,iHAhjZNiF,GAAaC,IAAoB,MAAVA,GAIvB41b,GAAU,CAACj+Q,GAAQC,IAAWD,KAAWC,GAAsB,OAAXD,SAA8B9qK,IAAX+qK,QAAqC/qK,IAAX8qK,IAAmC,OAAXC,EAIzH/B,GAAsBC,IAAcA,MACpCA,GAAUC,SAAYD,GAAUE,SAA0C,SAA/BF,GAAUE,QAAQC,UAU7D4/Q,GAAgB,CAAC32C,GAAWxsY,EAAKC,KAC9B5S,GAAUm/Y,KAAcj3X,MAAMi3X,KAG5BA,IAAaxsY,EAFTA,EAEqBwsY,IAAavsY,EAAMA,EAAMusY,GAEvDj+Y,GAAQ,CACVC,MAAO,KACPC,OAAQ,KACRC,MAAO,MAELC,EAAY,CACdH,MAAO,KACPC,OAAQ,KACRC,MAAO,KACPE,KAAM,QAOJC,GAAoB,CAACC,GAAeC,EAAeC,EAAeC,MACpE,OAAQF,OACC,OACD,MAAO,CACHG,SAAW,KAAIJ,MAAiBP,GAAMS,KACtCG,MAAoB,SAAbF,GAAuB,KAAIH,MAAiBP,GAAMU,MAAc,IAFpE,IAIN,UACD,MAAO,CACHC,SAAW,aAAYP,EAAUK,KACjCG,MAAoB,SAAbF,GAAuB,aAAYN,EAAUM,MAAc,IAF/D,IAIN,WACD,MAAO,CACHC,SAAW,KAAIJ,MAAiBE,IAChCG,MAAoB,SAAbF,GAAuB,KAAIH,MAAiBG,KAAa,IAGpE,EAWNm0b,GAAkB1wT,IAAc54G,KAAK9Z,IAAI0yH,GAJzB,IAQhB2wT,GAAkB/1b,KACZxH,OAAOwH,IAAOnG,MAAM,KAAK,IAAM,IAAIzB,OAEzC49b,GAAoB,CAACr+Q,GAAQC,IACxBprJ,KAAK7Z,IAAIojb,GAAep+Q,IAASo+Q,GAAen+Q,IAKrDq+Q,GAAmB,CAACj2b,GAAOolI,KAC7B,MAAM8wT,EAAeJ,GAAe1wT,GACpC,OAAOv7G,WAAW7pB,GAAMwtH,QAAQ0oU,GAAf,EAKfpyb,GAAM,CAAC6zK,GAAQC,KACjB,MAAMs+Q,EAAeF,GAAkBr+Q,GAAQC,GAC/C,OAAOq+Q,GAAiBt+Q,GAASC,EAAQs+Q,EAAlB,EAKrB7iM,GAAW,CAAC17E,GAAQC,IACf9zK,GAAI6zK,IAASC,GAKlB5iJ,GAAW,CAAC2iJ,GAAQC,KACtB,MAAMs+Q,EAAeH,GAAep+Q,IAAUo+Q,GAAen+Q,GAC7D,OAAOq+Q,GAAiBt+Q,GAASC,EAAQs+Q,EAAlB,EAKrBC,GAAS,CAACC,GAAUj0Y,KACtB,GAAgB,IAAZA,EACA,OAAOssK,IAEX,MAAM9qK,EAAQqyY,GAAkBI,GAAUj0Y,GACpCk0Y,GAAkB7pa,KAAKwH,IAAI,GAAI2vB,GACrC,OAAS0yY,GAAkBD,IAAaC,GAAkBl0Y,IAKxDE,GAAY,CAAC+zY,GAAUj0Y,IAClB31B,KAAKsH,IAAIu/N,GAAS+iM,GAAUpha,GAASmtB,EAAS31B,KAAKI,MAAMupa,GAAOC,GAAUj0Y,OAM/Em0Y,GAA0B,EAAG3jb,OAAKD,MAAK6jb,YAAWC,sBAAuB7jb,GAAMD,GAAO6jb,EAAaC,GAanGC,GAAsB,CAAC/jb,GAAM,EAAGC,EAAM,EAAG4jb,EAAY,KACvD,GAAIA,GAAa,EACb,MAAM,IAAIl+b,MAAM,yDAEpB,MAAMq+b,GAAgBlqa,KAAKsH,IAAIu/N,GAAS1gP,EAAKD,KACvCikb,GAAgBnqa,KAAKI,MAAMupa,GAAOO,GAAeH,IAEvD,OADezyb,GAAI6yb,GAAe,EAAhB,EAMhBC,GAAyB,CAACtyb,IAASqO,MAAKD,MAAK6jb,aAAWrpZ,WAASl0B,gBACnE,MAAMhZ,GAAQ8D,GAAI4O,EAAKsiB,GAAS1wB,GAAOiyb,KACvC,OAAOv9a,IAAYk0B,GAAU1gB,KAAKsH,IAAIu/N,GAASrzP,GAAO2S,IAAQ3S,IAK5D62b,GAA0B,EAAGC,cAAYpkb,MAAKC,MAAKu6B,WAASltC,aAC9D,MAAMuS,GAAOukb,GAAatqa,KAAKsH,IAAInhB,EAAMD,GACzC,IAAI2rB,GAAMt+B,GAAUC,IAASuS,IAAQvS,GAAQ0S,GAAOA,EACpD,OAAIw6B,KACA7O,GAAMy4Z,GAAaz4Z,IAEhB7R,KAAKI,MAAMyR,GAAX,EAKL04Z,GAAsB,CAAC/2b,IAAS2S,MAAKD,MAAK6jb,aAAWS,cAAa51b,IAAQ,KAC5E,MAAMmR,GAAOnR,IAAS41b,GAAYhia,GAASuha,GAAWS,IAAaT,GAC7D10Y,GAAYwxM,GAASrzP,GAAO0S,GAClC,IAAIgX,GACJ,MAAMuta,GAAgB50Y,GAAUR,GAAWtvC,IAC3C,OACImX,GAAS2pO,GAASxxM,GADA,IAAlBo1Y,GAC6B1kb,GAGA0kb,IAE1Bpma,GAAW/sB,GAAI4lB,GAAQhX,GAAMA,EAAKC,EAAxB,EAKfukb,GAAsB,CAACl3b,IAAS2S,MAAKD,MAAK6jb,aAAWS,cAAa51b,IAAQ,KAC5E,MAAMmR,GAAOnR,IAAS41b,GAAYhia,GAASuha,GAAWS,IAAaT,GAC7D10Y,GAAYwxM,GAASrzP,GAAO0S,GAC5Bukb,GAAgB50Y,GAAUR,GAAWtvC,IACrCmX,GAAS5lB,GAAIuvP,GAASxxM,GAAWo1Y,IAAgB1kb,IACvD,OAAOse,GAAW/sB,GAAI4lB,GAAQhX,GAAMA,EAAKC,EAAxB,EAKfwkb,GAAiBC,IAAeA,GAAWp3a,GAAGjnB,QAAQ,mBAAoB,EAI1Eu2M,GAAY,CAACtvM,GAAOlC,KACtB,MAAQy4b,YAAW7jb,OAAKC,QAAQ7U,EAC1Bu5b,GAAUxma,GAAW7wB,GAAO0S,GAAKC,IACvC,GAAI3S,KAAUq3b,GACV,OAAOA,GAEX,MAAMr0a,GAAO+za,GAAoB/2b,GAAOlC,GAClCmsB,GAAQita,GAAoBl3b,GAAOlC,GACzC,OAAKkC,GAAQ0S,IAAO6jb,GAAc,EACvBv2b,GAEPiqB,GAAQjqB,KAAUiqB,GAAQjH,IAAQ,EAC3BiH,GAEJjH,IAKLs0a,GAAY,CAAC3kb,GAAKD,EAAK1S,IACrBA,EAAQ2S,GACDA,GAEP3S,EAAQ0S,EACDA,EAEJ1S,EAKLu3b,GAAiB,CAAC5kb,GAAKD,EAAK1S,IACvBA,EAAQ,CAACs3b,GAAU3kb,GAAKD,EAAK1S,EAAM,IAAKs3b,GAAU3kb,GAAKD,EAAK1S,EAAM,KAAO,CAAC0S,EAAKA,GAKpFsmW,GAAYh5W,IAAUA,GAItBw3b,GAAc,CAAC7/Q,GAAQC,IAAWg+Q,GAAQj+Q,GAAO,GAAIC,EAAO,KAAOg+Q,GAAQj+Q,GAAO,GAAIC,EAAO,IAe7F/mJ,GAAa,CAAC7wB,GAAO0S,EAAKC,IACrB6Z,KAAK7Z,IAAI6Z,KAAK9Z,IAAI1S,GAAO2S,GAAMD,GAKpC+kb,GAAa,CAACvpb,GAAWwpb,EAAc55b,KACzC,MAAQ4U,OAAKC,OAAKqG,YAAUnV,QAAQ/F,EAC9B65b,GAnBan3b,MACnB,MAAMwtB,EAAMxtB,GAAQqiB,wBACdoL,EAAkB9yB,SAAS8yB,gBACjC,MAAO,CACHjL,KAAMgL,EAAIhL,MAAQ2G,OAAO0E,aAAeJ,EAAgBK,aAAeL,EAAgBM,YAAc,GACrG5K,IAAKqK,EAAIrK,KAAOgG,OAAOuE,aAAeD,EAAgBE,YAAcF,EAAgBG,WAAa,GAF9F,EAgBaL,CAAc2pa,GAG5BE,IAFS5+a,GAAW9K,GAAU+e,MAAQ0qa,GAAYh0a,IAAMzV,GAAU6e,MAAQ4qa,GAAY30a,QAC7ErQ,GAAMD,KAAQsG,GAAW0+a,EAAa7gU,aAAe6gU,EAAa9gU,cAEjF,IAAI52H,GAAQ6D,IAAOmV,GAAWrG,GAAMilb,GAAcllb,GAAMklb,GACxD,MAAMC,GAAqB9B,GAAej4b,EAAQy4b,WAClDv2b,UAAQi2b,GAAiBj2b,GAAO63b,GAAqB,GAC9CvoP,GAAUtvM,GAAOlC,EAAR,EAKd64N,GAAYn2N,IACPA,GAAQqK,UAAU9R,QAAQ,sBAAwB,GAAKyH,GAAQqK,UAAU9R,QAAQ,sBAAwB,EAK9G++b,GAAah6b,IACRo5b,GAAoBp5b,GAAQkC,MAAOlC,IAKxCi6b,GAAaj6b,IACRi5b,GAAoBj5b,GAAQkC,MAAOlC,IAKxCk6b,GAAkBl6b,IACbo5b,GAAoBp5b,GAAQkC,MAAOlC,IAAS,GAKjDm6b,GAAkBn6b,IACbi5b,GAAoBj5b,GAAQkC,MAAOlC,IAAS,GAKjDo6b,GAAiBl4b,KACnB,GAAIoO,OAAapO,IAASA,GAAM,GAAKA,GAAM,GACvC,MAAM,IAAI3H,MAAM,0EAAV,EAgCd,MAAM8/b,GACFvgc,YAAYi7O,EAAOj/N,EAAS8sG,GAAOj+G,IAC/B3K,KAAK+6O,MAAQA,EACb/6O,KAAK8b,QAAUA,EACf9b,KAAK4oH,MAAQA,GACb5oH,KAAK2K,SAAWA,GAChB3K,KAAK+6O,MAAQA,EACb/6O,KAAK8b,QAAUA,EACf9b,KAAK4oH,MAAQA,GACb5oH,KAAKsgc,UAAYtgc,KAAKugc,cACzB,CACDC,cACI,MAAMtlW,EAAcl7F,KAAK+6O,MAAM75N,SAAW,SAAW,QAC/Cu/a,EAAiBzgc,KAAK+6O,MAAM75N,SAAW,QAAU,SACjD89a,GAAah/b,KAAKg/b,aACxBh/b,KAAK4oH,MAAMhxF,cAAcrM,MAAM2vE,GAAgB,GAAE8jW,OACjDh/b,KAAK4oH,MAAMhxF,cAAcrM,MAAMk1a,GAAkB,EACpD,CACDC,YAAYC,EAAgBzjZ,GACxB,MAAM+iG,GAAYjgJ,KAAK+6O,MAAM75N,SAAW,SAAW,QACnD,IAAIg8B,GAAO77C,IAAI,CAAC8G,GAAMqE,KAAUrE,GAAKojB,MAAM00H,IAAc,GAAEjgJ,KAAKsgc,UAAU9zb,SACtExM,KAAK+6O,MAAM75N,UACXlhB,KAAK4gc,cAAcD,EAE1B,CACDE,gBACI,MAAM5gT,EAAYjgJ,KAAK+6O,MAAM75N,SAAW,SAAW,QAC7C4/a,EAAkBtC,GAAwBx+b,KAAK+6O,OAC/CgmN,GAAkB/gc,KAAK8b,QAAQ8b,cACjCkpa,IACAC,GAAgBx1a,MAAM00H,GAAa,OAE1C,CACD++S,aACI,OAAIh/b,KAAK+6O,MAAM2jN,eACJF,GAAwBx+b,KAAK+6O,OAEjC/6O,KAAK22B,YAAY32B,KAAK4oH,MAAMhxF,cACtC,CACD2oa,eACI,MAAQ3lb,MAAKC,MAAK4jb,cAAcz+b,KAAK+6O,MAC/BvmM,GAAQmqZ,GAAoB/jb,EAAKC,EAAK4jb,IACtC51U,GAAY7oH,KAAKg/b,aACjBgC,GAAWn4U,GAAY0yI,GAAS1gP,EAAKD,GACrCgX,GAAS,GACf,IAAI0Z,GAAY,EACZ/J,GAAW,EACf,QAAS/rB,GAAI,EAAGA,GAAIg/B,GAAOh/B,KAAK,CAExB+rB,IADM,IAAN/rB,IAAWA,KAAMg/B,GAAQ,EACZiqZ,GAAY,EAAKuC,GAGlBvC,GAAYuC,GAG5Bz/Z,IAAYA,GAASm0F,QAAQ,GAAK,IAClC,MAAMznH,GAAOymB,KAAK7E,MAAM0R,GAAW+J,IACnC1Z,GAAO5V,KAAK/N,IACZq9B,IAAar9B,EAChB,CACD,OAAIq9B,IAAau9E,KACbj3F,GAAOA,GAAOtxB,OAAS,IAAM,GAE1BsxB,EACV,CACDgva,cAAcD,GACV,MAAMM,EAAgBjhc,KAAKsgc,UAAU36a,OAAO,CAACywK,GAAMC,KAASD,GAAOC,GAAM,GAEnEwkO,GADa76Z,KAAKg/b,aACMiC,EAC9B,GAAiB,IAAbpmC,GAAgB,CAChB,MAAM/7X,GAAU+7X,GAAW76Z,KAAKi2B,cAAcj2B,KAAK4oH,OACnD+3U,EAAep1a,MAAM2L,WAAc,GAAE4H,MACxC,CACJ,CACD7I,cAAcvtB,GACV,MAAQwY,YAAalhB,KAAK+6O,MACpBxvN,GAAQuG,iBAAiBppB,GAC/B,OAAOkuB,SAAS1V,EAAWqK,GAAMQ,OAASR,GAAML,KAAM,GACzD,CACDyL,YAAYjuB,GACR,MAAQwY,YAAalhB,KAAK+6O,MAC1B,OAAO75N,EAAWxY,EAAQq2H,aAAer2H,EAAQo2H,WACpD,EAML,MAAMoiU,WAAoBb,GACtBc,eAAe7B,GACX,MAAQzkb,MAAKD,OAAKw6B,WAASl0B,aAAalhB,KAAK+6O,MACvCp4M,GAAWzhB,GAAW,SAAW,OACjC89a,GAAah/b,KAAKg/b,aAClB92b,GAAQs3b,GAAU3kb,EAAKD,GAAK5a,KAAK+6O,MAAM7yO,OAC7ClI,KAAKohc,eAAiBrC,GAAwB,CAC1Cnkb,OACAC,MACAu6B,WACAltC,SACA82b,gBAEJh/b,KAAK2K,SAASyf,SAASk1a,EAAY38Z,GAAW,GAAE3iC,KAAKohc,mBACxD,CACDC,kBAAkBptb,GACd,MAAQmhC,UAASl0B,aAAalhB,KAAK+6O,MAC7B96F,GAAY/+H,GAAW,SAAW,QACxC,IAAIjT,GAAOjO,KAAKohc,eACZhsZ,IACAnnC,GAAOjO,KAAKg/b,aAAe/wb,IAE/BjO,KAAK2K,SAASyf,SAASnW,EAAWgsI,GAAY,GAAEhyI,OACnD,EAGL,MAKM+vZ,GAAW,CAACt1Z,GAASqK,IAAcs/B,QAJpBngC,KAAexR,OAAOwR,IAAYJ,OAAO/P,MAAM,KAInBujN,CAAY58M,GAAQqK,WAAWsS,KAAM5d,GAASA,IAASsL,IAIxG,SAASuub,GAAoB54b,GAASjB,KAAS2S,GAC3C,GAAI1R,IAAWA,GAAQyD,cACnB,OAAOzD,GAAQyD,cAAc1E,GAAM0sB,MAAMzrB,GAAQyD,cAAeiO,EAEvE,CAID,MAQM3R,GAAU,CAACQ,GAAMoxB,KACnB,KAAOpxB,KAASoxB,EAAUpxB,KACtBA,GAAOA,GAAKC,WAEhB,OAAOD,IAMLzB,GAAkB,CACpBC,KAAM,iCACNC,YAAa,uBACbC,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbC,QAAS,GACTC,iBAAkB,+JA2BtB,MAAMy5b,GACFzhc,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAEL2pb,GAAuBx+b,UAAvB,0BAAoHw+b,IAAVv+b,MAAkDA,MAA5J,KACAu+b,GAAuBjub,UADmFtQ,MAC1G,MAAwGu+b,GAAxGhub,iDAaA,MAAMiub,GACF1hc,YAAYyjB,EAAqBsiK,EAAUl7K,GAAUG,GAAQ84J,GAAgBp4I,IACzExrB,KAAKujB,oBAAsBA,EAC3BvjB,KAAK6lL,SAAWA,EAChB7lL,KAAK2K,SAAWA,GAChB3K,KAAK8K,OAASA,GACd9K,KAAK4jK,eAAiBA,GACtB5jK,KAAKwrB,YAAcA,GAMnBxrB,KAAKymB,MAAQy6V,GAUblhX,KAAKyhc,cAAgB,OAKrBzhc,KAAKkhB,UAAW,EAKhBlhB,KAAK4a,IAAM,EAKX5a,KAAK6a,IAAM,GAKX7a,KAAKy+b,UAAY,EAMjBz+b,KAAKk/b,UAAY,KAIjBl/b,KAAKoN,UAAW,EAIhBpN,KAAKqpM,UAAW,EAIhBrpM,KAAK+T,SAAW,EAIhB/T,KAAKkP,QAAU,IAAIhE,MAInBlL,KAAKmP,OAAS,IAAIjE,MAIlBlL,KAAK+wL,YAAc,IAAI7lL,MACvBlL,KAAK0hc,aAAc,EACnB1hc,KAAKknB,cAAgB,IAAItb,KAIzB5L,KAAK2hc,UAAY,CAAClvb,GAAUzC,MACnBhQ,KAAKmL,YACNsH,GAASnR,KAAKtB,KAAMgQ,GAApB,GAEP,EACDnE,MAAgBrE,IAChBxH,KAAK8L,UAAYyX,EAAoBxX,IAAM,MAAQ,KACtD,CACG8sL,sBACA,OAAQ74L,KAAKkhB,QAChB,CACG0gb,oBACA,OAAO5hc,KAAKkhB,QACf,CACG5M,oBACA,OAAOtU,KAAKoN,QACf,CAQD8nL,iBAAiB/pL,GACbnL,KAAK4jK,eAAehmJ,eACpB5d,KAAKoN,SAAWjC,CACnB,CACDmE,WACItP,KAAKknB,cAAclb,IAAIhM,KAAKujB,oBACvBtX,QACAC,UAAU,EAAGH,UACd/L,KAAK8L,UAAYC,EAAM,MAAQ,MAC/B/L,KAAK6hc,eAAL,IAEA7hc,KAAKwrB,aACLxrB,KAAK2K,SAAS2G,gBAAgBtR,KAAKwrB,YAAYrf,cAAe,YAElEnM,KAAKk+K,QAAUl+K,KAAK6lL,SAAS9lK,IAAI0iL,KAAW,KAC/C,CAIGt3L,iBACA,OAAOnL,KAAKoN,UAAYpN,KAAKqpM,QAChC,CAKDviJ,UACI,OAAO,CACV,CACG1R,cACA,OAAOp1C,KAAKujB,oBAAoBxX,MAAQ/L,KAAKkhB,QAChD,CACG4gb,iBACA,MAAM1sZ,EAAUp1C,KAAKo1C,QACrB,MAAO,CACH,CAACjlC,iBAAiBilC,EAAU4qZ,GAAYC,GACxC,CAAC9vb,kBAAkBilC,EAAU6qZ,GAAYD,GACzC,CAAC7vb,iBAAiB8vb,GAClB,CAAC9vb,eAAe6vb,GAChB,CAAC7vb,cAAc+vb,GACf,CAAC/vb,gBAAgBgwb,GACjB,CAAChwb,YAAY,EAAGyK,SAAUA,EAC1B,CAACzK,WAAW,EAAG0K,SAAUA,EAEhC,CACDknb,YAAY95Z,GACRA,EAASx3B,QAAQ3H,IACTA,IACI9I,KAAKkhB,UACLlhB,KAAK2K,SAASsiL,YAAYnkL,EAAI,SAC9B9I,KAAK2K,SAASsiL,YAAYnkL,EAAI,QAC9B9I,KAAK2K,SAASsiL,YAAYnkL,EAAI,WAG9B9I,KAAK2K,SAASsiL,YAAYnkL,EAAI,UAC9B9I,KAAK2K,SAASsiL,YAAYnkL,EAAI,WAElC9I,KAAK2K,SAASsiL,YAAYnkL,EAAI,eAA9B,EAGX,EAEL04b,GAAWz+b,UAAX,0BAAwGy+b,IAnLEx+b,MAmL0BqQ,OAnL1BrQ,MAmL6DA,OAnL7DA,MAmLqFA,OAnLrFA,MAmL8GA,OAnL9GA,MAmLoIA,OAnLpIA,MAmLqKA,OAA/Q,EACAw+b,GAAWjrb,UApL+FvT,MAoL1G,MAA4Fw+b,GAA5Fjub,0EApL0GvQ,MAoL1GwT,GAAuwB+qb,GAAvwB,eApL0Gv+b,MAoL1GyT,GApL0GzT,WAoL1GwQ,6DApL0GxQ,KAoL1G2T,MApL0G3T,KAoL1GgjK,MApL0GhjK,KAoL1Gu2T,MApL0Gv2T,KAoL1G8e,KAAmtCE,OApLzmChf,KAoL1G8e,mBApL0G9e,MAoL1GyT,GApL0GzT,WAoL1GwQ,oBApL0GxQ,MAoL1GyT,GApL0GzT,WAoL1GwQ,kBApL0GxQ,MAoL1GyT,GApL0GzT,WAoL1GwQ,4BApL0GxQ,MAoL1GyT,GApL0GzT,WAoL1GwQ,2BApL0GxQ,MAoL1GyT,GApL0GzT,WAoL1GwQ,gEApL0GxQ,MAoL1G,mBApL0GA,MAoL1G,wCApL0GA,CAoL1G,oCApL0GA,CAoL1G,yBApL0GA,CAoL1G,uYA4EA,MAAMg/b,GACFlic,YAAYoI,GACRlI,KAAKkI,MAAQA,EACblI,KAAK2M,QAAU,CACX,UAAU,EAEjB,EAKL,MAAMs1b,GACFnic,cACIE,KAAK24L,eAAiB,yBACtB34L,KAAKk9C,MAAQ,EAChB,CACD7sC,YAAY8uK,GACRn/K,KAAKy1C,aACR,CACDA,cACI,MAAMjB,EAAQmqZ,GAAoB3+b,KAAK4a,IAAK5a,KAAK6a,IAAK7a,KAAKya,MACrDykb,EAAYl/b,KAAKk/b,UACjBgD,GAAiB,CACnBrnb,IAAK7a,KAAK6a,IACVD,IAAK5a,KAAK4a,IACV6jb,UAAWz+b,KAAKya,MAEpB,IAAImX,GAAS,GACb,QAASpc,GAAI,EAAGA,GAAIg/B,EAAOh/B,KACvBoc,GAAO5V,KAAK,IAAIgmb,GAAWlD,GAAuBtpb,GAAG0sb,MACjDhD,GAAa1pb,GAAI0pb,GAAc,IAC/Btta,GAAOpc,IAAGlM,OAAQ,EAClBsoB,GAAOpc,IAAG7I,QAAQ,iBAAkB,GAGxCilB,GAAOtxB,OAAS,IAChB+e,OAAOC,OAAOsS,GAAO,GAAGjlB,QAAS3M,KAAKmic,gBAAe,IACrD9ib,OAAOC,OAAOsS,GAAOA,GAAOtxB,OAAS,GAAGqM,QAAS3M,KAAKmic,gBAAe,KAEzEnic,KAAKk9C,MAAQtrB,EAChB,CACDuwa,eAAepsb,GACX,MAAO,CACH,UAAYA,IAAU/V,KAAKkhB,WAAenL,GAAS/V,KAAKkhB,SACxD,UAAYnL,IAAU/V,KAAKkhB,UAAcnL,GAAS/V,KAAKkhB,SAE9D,EAEL+gb,GAAqBl/b,UAArB,0BAAkHk/b,GAAlH,EACAA,GAAqB1rb,UAjTqFvT,MAiT1G,MAAsGi/b,GAAtG1ub,uEAjT0GvQ,KAiT1G+e,kBAjT0G/e,MAiT1GyT,GAjT0GzT,WAiT1GwQ,gEAjT0GxQ,MAiT1GwQ,oKAjT0GxQ,OAiT1G4kF,4WAjT0G5kF,MAkTtG,iBAlTsGA,MAgUrG,8BAhUqGA,QAiT1G,KAjT0GA,MAkTpE,kBADtC,gBAkB0CyrL,MAA4GA,MAA6EA,MAAuEA,MAAmFA,OAlB7Xh2K,kBAoEA,MAAM2pb,WAAuBtkb,OAE7Bskb,GAAer/b,UAAf,oDAvX0GC,MAuXEo/b,MAA5Grkb,GAA4Gqkb,GAA5G,KACAA,GAAe9ub,UAxX2FtQ,MAwX1G,MAAgGo/b,GAAhG7ub,kIAxX0GvQ,SA0Y1G,MAAMq/b,WAAyCD,GAC3Ctic,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,EAELy3b,GAAiCt/b,UAAjC,0BAA8Hs/b,IAhZpBr/b,MAgZsEqQ,OAAhL,EACAgvb,GAAiC/ub,UAjZyEtQ,MAiZ1G,MAAkHq/b,GAAlH9ub,6DAjZ0GvQ,MAiZiG,CACnM,CACImD,QAASi8b,GACTlkb,eAAaC,OAAW,IAAMkkb,OApZgEr/b,SAoa1G,MAAMs/b,GAAY,YAIlB,MAAMC,WAAwBf,GAC1B1hc,YAAY+K,EAAcg7K,EAAUl7K,GAAUG,GAAQ84J,GAAgBp4I,IAClEvN,MAAMpT,EAAcg7K,EAAUl7K,GAAUG,GAAQ84J,GAAgBp4I,IAChExrB,KAAK6K,aAAeA,EACpB7K,KAAK6lL,SAAWA,EAChB7lL,KAAK2K,SAAWA,GAChB3K,KAAK8K,OAASA,GACd9K,KAAK4jK,eAAiBA,GACtB5jK,KAAKwrB,YAAcA,GAInBxrB,KAAKopM,YAAe,QAAIxtL,WAKxB5b,KAAKyb,SAAU,EAKfzb,KAAKwic,aAAc,EAKnBxic,KAAKkI,MAAQlI,KAAK4a,IAClB5a,KAAK4gU,8BAA+B,EAIpC5gU,KAAKyic,YAAerob,KAChB,MAAMyC,GAASzC,GAAKyC,OACpB,IAAK7c,KAAKmL,aAAgB0zN,GAAShiN,MAAWgiN,GAAShiN,GAAO3T,YAAc,CACxE,MAAMhB,GAAQy3b,GAAWvlb,GAAMpa,KAAK4oH,MAAMz8G,cAAenM,KAAK0ic,YAC9D1ic,KAAKi/T,YAAY/2T,GACpB,CACDo5b,GAAoBthc,KAAK2ic,WAAY,QAAlB,EAKvB3ic,KAAKmqN,UAAa1lM,KACd,MAAMze,GAAUhG,KAAK0ic,YACb7nb,OAAKD,QAAQ5U,GACf++E,GAAU/kF,KAAK8hc,WAAWr9a,GAAEvU,SAClC,GAAIlQ,KAAKmL,aAAe45E,GACpB,OAEJ,MAAM78E,GAAQ68E,GAAQ/+E,IACtBhG,KAAKi/T,YAAYugI,GAAU3kb,GAAKD,GAAK1S,KACrCuc,GAAE5Q,gBAAF,EAEJ7T,KAAK4ic,SAAYzjR,OACjBn/K,KAAK6ic,UAAY,OACjB7ic,KAAK8ic,cAAgB,KACjB9ic,KAAKi/T,YAAYggI,GAAoBj/b,KAAKkI,MAAOlI,KAAK0ic,YAAtD,EAEJ1ic,KAAK+ic,cAAgB,KACjB/ic,KAAKi/T,YAAYmgI,GAAoBp/b,KAAKkI,MAAOlI,KAAK0ic,YAAtD,EAEJ1ic,KAAKsjM,WAAa,KACdtjM,KAAK4jK,eAAehmJ,eACpB5d,KAAKgX,SAAU,MACXvF,OAAazR,KAAKmP,SAAW4uK,GAAmB/9K,KAAKk+K,WACrDl+K,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK6ic,YACA7ic,KAAK4gU,8BACN5gU,KAAKmP,OAAOiB,MAAZ,EAHR,CAQX,CAIG7D,aAASA,GACTvM,KAAK+T,SAAWxH,CACnB,CACGA,eACA,OAAOvM,KAAK+T,QACf,CAIG6M,mBACA,OAAO3Y,GAAUjI,KAAKkI,OAASlI,KAAKkI,MAAMzG,WAAa,EAC1D,CAgBD2P,QACSpR,KAAKoN,WACNpN,KAAK4gU,8BAA+B,EACpC0gI,GAAoBthc,KAAK2ic,WAAY,SACrC3ic,KAAK4gU,8BAA+B,EAE3C,CAID7yT,OACI/N,KAAK4gU,8BAA+B,EACpC0gI,GAAoBthc,KAAK2ic,WAAY,QACrC3ic,KAAKsjM,aACLtjM,KAAK4gU,8BAA+B,CACvC,CACDvwT,YAAYpE,IACR,EAAI2kK,OAAW,CAAC,QAAS,iBAAkB,iBAAkB3kK,GAAS,IAClEjM,KAAK8K,OAAO88M,SAASr9M,eAAe9E,QAAKilB,MAAK,IAAIxe,UAAU,KACxDlM,KAAK6hc,eAAc,EAAnB,EAGX,CACDrxb,oBACQ,EAACnD,WAGDrN,KAAKwic,cACLxic,KAAKgjc,uBAAuBhjc,KAAKijc,eAAe92b,cAAe,IAAMnM,KAAK+ic,iBAC1E/ic,KAAKgjc,uBAAuBhjc,KAAKkjc,eAAe/2b,cAAe,IAAMnM,KAAK8ic,kBAE9E9ic,KAAK6hc,eAAc,GACf7hc,KAAKk9C,OACLl9C,KAAKk9C,MAAMimZ,aACNl3b,QACAC,UAAU,IAAMlM,KAAK6hc,eAAc,IAE5C7hc,KAAKikB,6BACR,CACDpT,cACQ7Q,KAAKknB,eACLlnB,KAAKknB,cAAcjW,aAE1B,CAIGmyb,uBACA,OAAOpjc,KAAKqjc,gBAAkBrjc,KAAKujB,oBAAoBxD,IAAI,YAC9D,CAIGujb,uBACA,OAAOtjc,KAAKujc,gBAAkBvjc,KAAKujB,oBAAoBxD,IAAI,YAC9D,CAIGyjb,wBACA,OAAOxjc,KAAKyjc,iBAAmBzjc,KAAKujB,oBAAoBxD,IAAI,aAC/D,CAID2jb,gBAAgBtpb,GACRA,EAAKuK,eACLvK,EAAKuK,cAAc9Q,iBAEvB7T,KAAK2K,SAASqI,YAAYhT,KAAKwrB,YAAYrf,cAAe,uBAC7D,CAIDw3b,aAAavpb,GACTpa,KAAK8pS,UAAW,EAChB9pS,KAAKi/T,YAAY0gI,GAAWvlb,EAAMpa,KAAK4oH,MAAMz8G,cAAenM,KAAK0ic,YACpE,CAIDkB,kBACI5jc,KAAK8pS,UAAW,EAChB9pS,KAAK2K,SAASyH,SAASpS,KAAKwrB,YAAYrf,cAAe,uBAC1D,CAKD4oL,WAAW7sL,GACPlI,KAAK4jK,eAAehmJ,eACpB5d,KAAKkI,MAAQA,EACblI,KAAK6hc,cAAc7hc,KAAKyb,QAC3B,CAIDu5K,iBAAiBxkK,GACbxwB,KAAK4ic,SAAWpya,CACnB,CAIDykK,kBAAkBzkK,GACdxwB,KAAK6ic,UAAYrya,CACpB,CAIDyuS,YAAY/2T,GACH41b,GAAQ99b,KAAKkI,MAAOA,IACrBlI,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkI,MAAQA,EACblI,KAAK4ic,SAAS16b,GACdlI,KAAK+wL,YAAY3gL,KAAKlI,GACtBlI,KAAK6hc,cAAc7hc,KAAKyb,SACxBzb,KAAK4jK,eAAehmJ,cAApB,EAGX,CAIDikb,cAAcpmb,GACV,KAAI,EAACpO,SACD,OAEJ,MAAMyO,EAAU9b,KAAK8b,QAAQ3P,cACvBy8G,GAAQ5oH,KAAK4oH,MAAMz8G,cACnB03b,GAAc7jc,KAAK8jc,gBAAgB33b,cACnC43b,GAAe/jc,KAAK2ic,WAAWx2b,cAC/B+wC,GAAQl9C,KAAKk9C,MAAQl9C,KAAK2gc,eAAex0b,cAAgB,KAC1DsP,GACDzb,KAAK2K,SAASqI,YAAYhT,KAAKwrB,YAAYrf,cAAe,wBAE9DnM,KAAK+hc,YAAY,CAACn5U,GAAOi7U,GAAaE,GAAc7mZ,GAAOl9C,KAAKwrB,YAAYrf,gBAC5E,MAAM4uO,GAAQ/6O,KAAK0ic,WACb3vV,GAAQ,IAAImuV,GAAYnmN,GAAOj/N,EAAS8sG,GAAO5oH,KAAK2K,UAC1DooG,GAAMytV,cACFxgc,KAAKk9C,OACL61D,GAAM2tV,YAAY1gc,KAAK2gc,eAAex0b,cAAenM,KAAKk9C,MAAMimZ,aAAa9hc,IAAIqH,IAAWA,GAAQyD,gBAExG4mG,GAAMouV,eAAe4C,IACrBhxV,GAAMsuV,kBAAkBwC,IACnBpob,IACDzb,KAAKwrB,YAAYrf,cAAc4e,wBAC/B/qB,KAAK2K,SAASyH,SAASpS,KAAKwrB,YAAYrf,cAAe,yBAEvDnM,KAAK0+b,gBACL3rV,GAAM8tV,eAEb,CACG7pb,YAAQ9O,GACJlI,KAAK0O,YAAcxG,GAASlI,KAAKwrB,cACjCxrB,KAAK0O,UAAYxG,EAExB,CACG4hS,aAAS5hS,GACT,GAAIlI,KAAKgkc,YAAc97b,GAASlI,KAAK8jc,iBAAmB9jc,KAAK2ic,WAAY,CACrE,MAAMmB,EAAkB9jc,KAAK8jc,gBAAgB33b,cACvCw2b,GAAa3ic,KAAK2ic,WAAWx2b,cAC/BjE,GACAlI,KAAK2K,SAASyH,SAAS0xb,EAAiBxB,IACxCtic,KAAK2K,SAASyH,SAASuwb,GAAYL,MAGnCtic,KAAK2K,SAASqI,YAAY8wb,EAAiBxB,IAC3Ctic,KAAK2K,SAASqI,YAAY2vb,GAAYL,KAE1Ctic,KAAKgkc,UAAY97b,CACpB,CACJ,CACD86b,uBAAuBt6b,EAAS+J,GAC5BzS,KAAK8K,OAAO+E,kBAAkB,KAC1B,MAAM+S,MAAYjG,KAAUjU,EAAS,aAC/Bma,MAAUlG,KAAUjU,EAAS,WAC7B6nF,MAAW5zE,KAAUjU,EAAS,YAC9BqxJ,GAAen3I,GAAUnd,QAAK6P,MAAQmP,IAAmB,IAAbA,GAAEha,SAAiBzK,KAAKmL,aAAhC,EAA6CoiP,MAAU,OAAM1/L,KAAS,KAAKpoD,QAAKw+b,OAAU,IAAD,EAAMz2O,SAAUvwM,KAAM4F,GAAS0tE,QAAcrkF,UAAU,KACjLlM,KAAK0O,WACN4yb,GAAoBthc,KAAK2ic,WAAY,SAEzClwb,GAAQ,GAEZzS,KAAKknB,cAAclb,IAAI+tJ,GAAvB,EAEP,CACD2oS,WACI,MAAO,CACHvtb,QAASnV,KAAKwic,YACdp1b,SAAUpN,KAAKoN,SACfsxb,eAAgB1+b,KAAK0+b,eACrBQ,UAAWl/b,KAAKk/b,UAChBrkb,IAAK7a,KAAK6a,IACVD,IAAK5a,KAAK4a,IACVyuL,SAAUrpM,KAAKqpM,SACfj0J,QAASp1C,KAAKo1C,QACdrpC,IAAK/L,KAAKujB,oBAAoBxX,IAC9B0yb,UAAWz+b,KAAKy+b,UAChBv2b,MAAOs3b,GAAUx/b,KAAK6a,IAAK7a,KAAK4a,IAAK5a,KAAKkI,OAC1CgZ,SAAUlhB,KAAKkhB,SAEtB,CACD+C,6BACI,MAAMuH,EAAcxrB,KAAKwrB,YAAYrf,cACrC,IAAI+3b,GAAU,EACVC,IAAsB,EAC1Bnkc,KAAK8K,OAAO+E,kBAAkB,KAE1B7P,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,UAAW,KAC3DxrB,KAAK0O,WACN1O,KAAK8K,OAAO4G,IAAI,KACP1R,KAAK4gU,8BACN5gU,KAAKkP,QAAQkB,OAEjBpQ,KAAKgX,SAAU,GAJnB,IAQRhX,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,WAAapR,MAC7Dpa,KAAK0O,YAGNw1b,GACI9pb,GAAK1E,gBAAkB1V,KAAK2ic,WAAWx2b,eACvCnM,KAAKsjM,aAET4gQ,GAAU,GAGLC,IACDnkc,KAAKsjM,aAAL,IAIZtjM,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,aAAc,KACnE24a,IAAsB,KAE1Bnkc,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,aAAc,KACnE24a,IAAsB,KAE1Bnkc,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,UAAYpR,KAE7D8pb,EADA9pb,GAAKlK,UAAYC,SAIP,GALlB,EASP,EAELoyb,GAAgBx/b,UAAhB,0BAA6Gw/b,IA5wBHv/b,MA4wBoCqQ,OA5wBpCrQ,MA4wBuEA,OA5wBvEA,MA4wB+FA,OA5wB/FA,MA4wBwHA,OA5wBxHA,MA4wB8IA,OA5wB9IA,MA4wB+KA,OAAzR,EACAu/b,GAAgBhsb,UA7wB0FvT,MA6wB1G,MAAiGu/b,GAAjGhvb,8DA7wB0GvQ,KA6wB1Gkf,MA7wB0Glf,KA6wB1G04T,MA7wB0G14T,KA6wB1GwjP,mBA7wB0GxjP,MA6wB1GyT,GA7wB0GzT,WA6wB1GwQ,uBA7wB0GxQ,MA6wB1GyT,GA7wB0GzT,WA6wB1GwQ,2BA7wB0GxQ,MA6wB1GyT,GA7wB0GzT,WA6wB1GwQ,mRA7wB0GxQ,MA6wBmR,CACrXyQ,MACA,CAAEtN,QAASuN,MAAalN,SAAU,gBAClC,CAAEF,OAAO,EAAMH,QAASiqL,KAAmBlyK,eAAaC,OAAW,IAAMokb,KACzE,CAAEp8b,QAASutK,MAAYx1J,eAAaC,OAAW,IAAMokb,OAjxB6Cv/b,aA6wB1Guf,wDAQuBH,iGARvByxM,EAUuBzxM,iGAVvB0xM,EAYwB1xM,qFAZxB,g9CA7wB0Gpf,MAmxBlG,KAnxBkGA,MA2xBlG,aA3xBkGA,MAiyB9F,qBAjyB8FA,MA2yB9F,WA3yB8FA,MA4yB1F,iBA5yB0FA,MAyzB1F,aAzzB0FA,MA0zBtF,aA1zBsFA,MA4zBtF,cA5zBsFA,MA20BlF,iCAAcwQ,iCAAd,EA30BkFxQ,CA20BlF,gCACawQ,8BADb,EA30BkFxQ,CA20BlF,mCAEgBwQ,iCAFhB,GA30BkFxQ,kBAi1B9F,uBAj1B8FA,MA61B9F,6BA71B8FA,MA61BzE,2BAAUwQ,iBAAc,EAAxB,GA71ByExQ,mBA6wB1G,MA7wB0GA,MA4xB9F,GA5xB8FA,MA4xB9F,iCA5xB8FA,CA4xB9F,8CA5xB8FA,CA4xB9F,kDA5xB8FA,MA+xB9F,4BA/xB8FA,MA+xB9F,kCA/xB8FA,MAiyBrF,GAjyBqFA,MAiyBrF,sBAjyBqFA,MA8yBrF,GA9yBqFA,MA8yBrF,iCA9yBqFA,MAq0BlF,GAr0BkFA,MAq0BlF,uCAr0BkFA,MAu0BlF,4BAv0BkFA,CAu0BlF,oBAv0BkFA,MA8zBlF,sBA9zBkFA,CA8zBlF,sBA9zBkFA,CA8zBlF,+BA9zBkFA,CA8zBlF,gCA9zBkFA,CA8zBlF,qCA9zBkFA,CA8zBlF,qCA9zBkFA,CA8zBlF,sDA9zBkFA,CA8zBlF,uCA9zBkFA,MAi1BrF,GAj1BqFA,MAi1BrF,sBApErB,gBAkF0Ci/b,GAAuJpgb,MAA+Hwgb,GAAwFxgb,MAAqI4sK,MAAmF5sK,OAlFhnBpJ,kBA2MA,MAAM2rb,WAAyB/D,GAC3Bc,eAAe7B,GACX,IAAKA,EAAWp3a,GACZ,OAEJ,MAAQrN,MAAKD,OAAKw6B,WAASl0B,aAAalhB,KAAK+6O,MACvCp4M,GAAWzhB,GAAW,SAAW,OACjC89a,GAAah/b,KAAKg/b,aAClB92b,GAAQm3b,GAAcC,GAAcG,GAAe5kb,EAAKD,GAAK5a,KAAK+6O,MAAM7yO,OAAO,GAC/Eu3b,GAAe5kb,EAAKD,GAAK5a,KAAK+6O,MAAM7yO,OAAO,GAC7Cm3b,GAAcC,IACdt/b,KAAKqkc,oBAAsBtF,GAAwB,CAC/Cnkb,OACAC,MACAu6B,WACAltC,SACA82b,gBAEJh/b,KAAK2K,SAASyf,SAASk1a,EAAY38Z,GAAW,GAAE3iC,KAAKqkc,2BAGrDrkc,KAAKskc,kBAAoBvF,GAAwB,CAC7Cnkb,OACAC,MACAu6B,WACAltC,SACA82b,gBAEJh/b,KAAK2K,SAASyf,SAASk1a,EAAY38Z,GAAW,GAAE3iC,KAAKskc,uBAE5D,CACDjD,kBAAkB/B,EAAYrrb,GAC1B,MAAQmhC,WAASl0B,aAAalhB,KAAK+6O,MAC7B96F,GAAY/+H,GAAW,SAAW,QAClCyhB,GAAWzhB,GAAW,SAAWk0B,GAAU,QAAU,OACrDnnC,GAAOymB,KAAKsH,IAAIh8B,KAAKskc,kBAAoBtkc,KAAKqkc,qBAC9CE,GAA2Brjb,GAAWo+a,EAAW/za,MAAMQ,OAASuza,EAAW/za,MAAML,KACvFlrB,KAAK2K,SAASyf,SAASnW,EAAWgsI,GAAY,GAAEhyI,QAChDjO,KAAK2K,SAASyf,SAASnW,EAAW0uB,GAAUyS,GAAUp1C,KAAKg/b,aAAejta,WAAWwya,IAA4B,KAC3Gxya,WAAWwya,IAA4B,KAChD,EAML,MAAMC,WAA4B1mb,OAElC0mb,GAAoBzhc,UAApB,oDAxgC0GC,MAwgCOwhc,MAAjHzmb,GAAiHymb,GAAjH,KACAA,GAAoBlxb,UAzgCsFtQ,MAygC1G,MAAqGwhc,GAArGjxb,mIAzgC0GvQ,SAyhC1G,MAAMyhc,WAA8CD,GAChD1kc,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,EAEL65b,GAAsC1hc,UAAtC,0BAAmI0hc,IA/hCzBzhc,MA+hCgFqQ,OAA1L,EACAoxb,GAAsCnxb,UAhiCoEtQ,MAgiC1G,MAAuHyhc,GAAvHlxb,6DAhiC0GvQ,MAgiC2G,CAC7M,CACImD,QAASq+b,GACTtmb,eAAaC,OAAW,IAAMsmb,OAniCgEzhc,SAmjC1G,MAAM0hc,GAAU,YAIhB,MAAMC,WAA6BnD,GAC/B1hc,YAAY+K,EAAcg7K,EAAUl7K,GAAUG,GAAQ84J,GAAgBp4I,IAClEvN,MAAMpT,EAAcg7K,EAAUl7K,GAAUG,GAAQ84J,GAAgBp4I,IAChExrB,KAAK6K,aAAeA,EACpB7K,KAAK6lL,SAAWA,EAChB7lL,KAAK2K,SAAWA,GAChB3K,KAAK8K,OAASA,GACd9K,KAAK4jK,eAAiBA,GACtB5jK,KAAKwrB,YAAcA,GAInBxrB,KAAK4kc,cAAiB,qBAAiBhpb,WAIvC5b,KAAK6kc,YAAe,mBAAejpb,WAInC5b,KAAKopM,YAAcppM,KAAK4kc,cACxB5kc,KAAK8kc,aAAe,EACpB9kc,KAAK6rT,aAAe,cACpB7rT,KAAK4gU,8BAA+B,EAIpC5gU,KAAKyic,YAAerob,KAChB,IAAKpa,KAAKmL,WAAY,CAClBnL,KAAKkI,MAAQlI,KAAKkI,OAAS,CAAClI,KAAK4a,IAAK5a,KAAK4a,KAC3C,MAAMmqb,GAAapF,GAAWvlb,GAAMpa,KAAK4oH,MAAMz8G,cAAenM,KAAK0ic,YACnE,IAAIsC,GACJ,MAAOljZ,GAAYqI,IAAY66Y,GAAgBhlc,KAAKkI,MAChD68b,IAAcjjZ,IACdkjZ,GAAgB,CAACD,GAAY56Y,IAC7BnqD,KAAK6rT,aAAe,eAEf/pQ,GAAaijZ,IAAcA,GAAa56Y,GACzC46Y,IAAcjjZ,GAAaqI,IAAY,GACvC66Y,GAAgB,CAACD,GAAY56Y,IAC7BnqD,KAAK6rT,aAAe,gBAGpBm5I,GAAgB,CAACljZ,GAAYijZ,IAC7B/kc,KAAK6rT,aAAe,aAGnBk5I,IAAc56Y,KACnB66Y,GAAgB,CAACljZ,GAAYijZ,IAC7B/kc,KAAK6rT,aAAe,aAGxBy1I,GAD2C,gBAAtBthc,KAAK6rT,aAAiC7rT,KAAKilc,gBAAkBjlc,KAAKklc,cACrD,SAClCllc,KAAKi/T,YAAY+lI,GACpB,GAKLhlc,KAAKmqN,UAAa1lM,KACdzkB,KAAKkI,MAAQlI,KAAKkI,OAAS,CAAClI,KAAK4a,IAAK5a,KAAK4a,KAC3C,MAAM5U,GAAUhG,KAAK0ic,YACb7nb,OAAKD,QAAQ5U,GACf++E,GAAU/kF,KAAK8hc,WAAWr9a,GAAEvU,SAClC,GAAIlQ,KAAKmL,aAAe45E,GACpB,OAEJ/kF,KAAK2K,SAASyf,SAAS3F,GAAE5H,OAAQ,WAAY7c,KAAK8kc,cAClD,MAAMK,GAAsB9F,GAAc56a,GAAE5H,QACtC3U,GAAQ68E,GAAQ1lE,OAAOC,OAAOD,OAAOC,OAAO,GAAItZ,IAAU,CAAEkC,MAAOi9b,GAAsBnlc,KAAKkI,MAAM,GAAKlI,KAAKkI,MAAM,MACtHi9b,GACIj9b,GAAQlI,KAAKkI,MAAM,KACnBlI,KAAKkI,MAAM,GAAKA,IAIhBA,GAAQlI,KAAKkI,MAAM,KACnBlI,KAAKkI,MAAM,GAAKA,IAGxB,MAAMk9b,GAAe5F,GAAU3kb,GAAKD,GAAK1S,IACnC2B,GAAWs7b,GAAsB,CAACC,GAAcplc,KAAKkI,MAAM,IAC3D,CAAClI,KAAKkI,MAAM,GAAIk9b,IACtBplc,KAAKi/T,YAAYp1T,IACjB4a,GAAE5Q,gBAAF,EAEJ7T,KAAK4ic,SAAYzjR,OACjBn/K,KAAK6ic,UAAY,OACjB7ic,KAAKsjM,WAAa,KACdtjM,KAAK4jK,eAAehmJ,eACpB5d,KAAKgX,SAAU,MACXvF,OAAazR,KAAKmP,SAAW4uK,GAAmB/9K,KAAKk+K,WACrDl+K,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK6ic,YACA7ic,KAAK4gU,8BACN5gU,KAAKmP,OAAOiB,MAAZ,EAHR,CAQX,CAkBDgB,QACIpR,KAAK4gU,8BAA+B,EACpC0gI,GAAoBthc,KAAKilc,gBAAiB,SAC1Cjlc,KAAK4gU,8BAA+B,CACvC,CAID7yT,OACI/N,KAAK4gU,8BAA+B,EAEpC0gI,GAD2C,gBAAtBthc,KAAK6rT,aAAiC7rT,KAAKilc,gBAAkBjlc,KAAKklc,cACrD,QAClCllc,KAAKsjM,aACLtjM,KAAK4gU,8BAA+B,CACvC,CACDtxT,WACStP,KAAKkI,QACNlI,KAAKkI,MAAQ,CAAClI,KAAK4a,IAAK5a,KAAK6a,MAEjCoD,MAAM3O,UACT,CACDe,YAAYpE,IACR,EAAI2kK,OAAW,CAAC,QAAS,iBAAkB,iBAAkB3kK,GAAS,KAC9DA,EAAQ/D,OAAS+D,EAAQ/D,MAAM0Y,cAC/Bw/a,GAAcn0b,EAAQ/D,MAAM0Y,cAEhC5gB,KAAK8K,OAAO88M,SAASr9M,eAAe9E,QAAKilB,MAAK,IAAIxe,UAAU,KACxDlM,KAAK6hc,eAAL,GAGX,CACDrxb,oBACQ,EAACnD,WAGLrN,KAAK6hc,gBACD7hc,KAAKk9C,OACLl9C,KAAKk9C,MAAMimZ,aACNl3b,QACAC,UAAU,IAAMlM,KAAK6hc,iBAE9B7hc,KAAKikB,6BACR,CACDpT,cACQ7Q,KAAKknB,eACLlnB,KAAKknB,cAAcjW,aAE1B,CAID4mT,QAAQj+R,GACJ,OAAO55B,KAAK6K,aAAakV,IAAI6Z,EAChC,CAIGyra,gBACA,OAAOrlc,KAAKkI,MAAS,GAAElI,KAAKkI,MAAM,QAAQlI,KAAKkI,MAAM,KAAO,EAC/D,CAIDw7b,gBAAgBtpb,GACRA,EAAKuK,eACLvK,EAAKuK,cAAc9Q,iBAEvB,MAAMgJ,EAASzC,EAAKuK,cAAc9H,OAClC7c,KAAKslc,cAAgBzob,EACrB7c,KAAK2K,SAASyf,SAASvN,EAAQ,WAAY7c,KAAK8kc,aACnD,CAIDnB,aAAavpb,GACTpa,KAAKkI,MAAQlI,KAAKkI,OAAS,CAAClI,KAAK4a,IAAK5a,KAAK4a,KAC3C,MAAMiC,EAASzC,EAAKuK,cAAc9H,OAC5B0ob,GAAavlc,KAAKslc,cAAcv6a,wBACtC/qB,KAAKwlc,mBAAqB,CAAEn9a,EAAGk9a,GAAWr6a,KAAM5C,EAAGi9a,GAAW15a,KAC9D7rB,KAAK8pS,SAAW,CAAE5hS,OAAO,EAAM2U,UAC/B,MAAM4/R,KACEriS,EAAK6a,MAAQ,GAAQswa,GAAW/wb,MAAQ,EAD1CioS,KAEEriS,EAAK+a,MAASowa,GAAW/wb,MAAQ,EAEnC0W,GAAOuxR,KAAaz8S,KAAKwlc,mBAAmBn9a,EAC5C8J,GAAQsqR,KAAaz8S,KAAKwlc,mBAAmBn9a,EAC7CisH,GAAKmoK,KAAaz8S,KAAKwlc,mBAAmBl9a,EAC1Cm9a,GAAkB,IAAMzlc,KAAKi/T,YAAY,CAAC0gI,GAAWvlb,EAAMpa,KAAK4oH,MAAMz8G,cAAenM,KAAK0ic,YAAa1ic,KAAKkI,MAAM,KAClHw9b,GAAgB,IAAM1lc,KAAKi/T,YAAY,CAACj/T,KAAKkI,MAAM,GAAIy3b,GAAWvlb,EAAMpa,KAAK4oH,MAAMz8G,cAAenM,KAAK0ic,cACvGiD,GAAkB,IAAM3lc,KAAKi/T,YAAY,CAAC0gI,GAAWvlb,EAAMpa,KAAK4oH,MAAMz8G,cAAenM,KAAK0ic,YAAa/C,GAAWvlb,EAAMpa,KAAK4oH,MAAMz8G,cAAenM,KAAK0ic,cACvJkD,GAAoBvG,GAAcr/b,KAAKslc,eACvCpkb,GAAWlhB,KAAKkhB,SAChBD,IAAcC,GACd+uH,GAAW/uH,IAAYozH,KAAQt0I,KAAKo1C,QAAUn0B,IAAckR,GAAQlR,IAAciK,IAClF26a,GAAsB7lc,KAAKkI,MAAM,GAAKlI,KAAKkI,MAAM,GACnDlI,KAAKkI,MAAM,KAAOlI,KAAKkI,MAAM,IAAM29b,GAC/B51T,GAEA21T,GAAoBH,KAAoBE,KAIxCC,GAAoBD,KAAoBD,KAK5CE,GAAoBH,KAAoBC,IAE/C,CAID9B,gBAAgBxpb,GACZpa,KAAK8pS,SAAW,CAAE5hS,OAAO,EAAO2U,OAAQzC,EAAKuK,cAAc9H,QAC3D7c,KAAKslc,mBAAgBvwb,CACxB,CAKDggL,WAAW7sL,GACPk4b,GAAcl4b,GACdlI,KAAKkI,MAAQA,EACblI,KAAK6hc,eACR,CAID7sQ,iBAAiBxkK,GACbxwB,KAAK4ic,SAAWpya,CACnB,CAIDykK,kBAAkBzkK,GACdxwB,KAAK6ic,UAAYrya,CACpB,CAIDyuS,YAAY/2T,KACHlI,KAAKkI,QAAUw3b,GAAY1/b,KAAKkI,MAAOA,KACxClI,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkI,MAAQA,EACblI,KAAK4ic,SAAS16b,GACVlI,KAAKkI,OACLlI,KAAK+wL,YAAY3gL,KAAKlI,GAE1BlI,KAAK6hc,eAAL,EAGX,CAIDA,gBACI,KAAI,EAACx0b,SACD,OAEJ,MAAMyO,EAAU9b,KAAK8b,QAAQ3P,cACvBy8G,EAAQ5oH,KAAK4oH,MAAMz8G,cACnB03b,GAAc7jc,KAAK8jc,gBAAgB33b,cACnC25b,GAAoB9lc,KAAKilc,gBAAgB94b,cACzC45b,GAAkB/lc,KAAKklc,cAAc/4b,cACrC+wC,GAAQl9C,KAAKk9C,MAAQl9C,KAAK2gc,eAAex0b,cAAgB,KAC/DnM,KAAK+hc,YAAY,CAACn5U,EAAOi7U,GAAaiC,GAAmBC,GAAiB7oZ,GAAOl9C,KAAKwrB,YAAYrf,gBAClG,MAAM4uO,GAAQ/6O,KAAK0ic,WACb3vV,GAAQ,IAAIqxV,GAAiBrpN,GAAOj/N,EAAS8sG,EAAO5oH,KAAK2K,UAC/DooG,GAAMytV,cACFxgc,KAAKk9C,OACL61D,GAAM2tV,YAAY1gc,KAAK2gc,eAAex0b,cAAenM,KAAKk9C,MAAMimZ,aAAa9hc,IAAIqH,IAAWA,GAAQyD,gBAExG4mG,GAAMouV,eAAe2E,IACrB/yV,GAAMouV,eAAe4E,IACrBhzV,GAAMsuV,kBAAkByE,GAAmBjC,IACvC7jc,KAAK0+b,gBACL3rV,GAAM8tV,eAEb,CAIG11b,iBACA,OAAOnL,KAAKoN,UAAYpN,KAAKqpM,QAChC,CAKDviJ,UACI,OAAO,CACV,CACG9vC,YAAQ9O,GACJlI,KAAK0O,YAAcxG,GAASlI,KAAKwrB,cACjCxrB,KAAK0O,UAAYxG,EAExB,CACG4hS,aAASvqR,GACT,GAAIvf,KAAKgkc,YAAczkb,EAAKrX,OAASlI,KAAK8jc,iBAAmB9jc,KAAKilc,iBAAmBjlc,KAAKklc,cAAe,CACrG,MAAMpB,EAAkB9jc,KAAK8jc,gBAAgB33b,cACvCw2b,GAAapjb,EAAK1C,OACpB0C,EAAKrX,OACLlI,KAAK2K,SAASyH,SAAS0xb,EAAiBY,IACxC1kc,KAAK2K,SAASyH,SAASuwb,GAAY+B,MAGnC1kc,KAAK2K,SAASqI,YAAY8wb,EAAiBY,IAC3C1kc,KAAK2K,SAASqI,YAAY2vb,GAAY+B,KAE1C1kc,KAAKgkc,UAAYzkb,EAAKrX,KACzB,CACJ,CACDw6b,WACI,MAAO,CACHt1b,SAAUpN,KAAKoN,SACfsxb,eAAgB1+b,KAAK0+b,eACrBQ,UAAWl/b,KAAKk/b,UAChBrkb,IAAK7a,KAAK6a,IACVD,IAAK5a,KAAK4a,IACVyuL,SAAUrpM,KAAKqpM,SACfj0J,QAASp1C,KAAKo1C,QACdrpC,IAAK/L,KAAKujB,oBAAoBxX,IAC9B0yb,UAAWz+b,KAAKy+b,UAChBv2b,MAAOu3b,GAAez/b,KAAK6a,IAAK7a,KAAK4a,IAAK5a,KAAKkI,OAC/CgZ,SAAUlhB,KAAKkhB,SACf/L,SAAS,EAEhB,CACD8O,6BACI,MAAMuH,EAAcxrB,KAAKwrB,YAAYrf,cACrC,IAAI+3b,GAAU,EACVC,IAAsB,EAC1Bnkc,KAAK8K,OAAO+E,kBAAkB,KAE1B7P,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,UAAW,KAC3DxrB,KAAK0O,WACN1O,KAAK8K,OAAO4G,IAAI,KACP1R,KAAK4gU,8BACN5gU,KAAKkP,QAAQkB,OAEjBpQ,KAAKgX,SAAU,GAJnB,IAQRhX,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,WAAapR,MAC7Dpa,KAAK0O,YAGNw1b,GACI9pb,GAAK1E,gBAAkB1V,KAAKilc,gBAAgB94b,eAAiBiO,GAAK1E,gBAAkB1V,KAAKklc,cAAc/4b,eACvGnM,KAAKsjM,aAET4gQ,GAAU,GAGLC,IACDnkc,KAAKsjM,aAAL,IAIZtjM,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,aAAc,KACnE24a,IAAsB,KAE1Bnkc,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,aAAc,KACnE24a,IAAsB,KAE1Bnkc,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,UAAYpR,KAE7D8pb,EADA9pb,GAAKlK,UAAYC,SAIP,GALlB,EASP,EAELw0b,GAAqB5hc,UAArB,0BAAkH4hc,IAn8CR3hc,MAm8C8CqQ,OAn8C9CrQ,MAm8CiFA,OAn8CjFA,MAm8CyGA,OAn8CzGA,MAm8CkIA,OAn8ClIA,MAm8CwJA,OAn8CxJA,MAm8CyLA,OAAnS,EACA2hc,GAAqBpub,UAp8CqFvT,MAo8C1G,MAAsG2hc,GAAtGpxb,mEAp8C0GvQ,KAo8C1G6nP,MAp8C0G7nP,KAo8C1GgxN,mBAp8C0GhxN,MAo8C1GyT,GAp8C0GzT,WAo8C1GwQ,4BAp8C0GxQ,MAo8C1GyT,GAp8C0GzT,WAo8C1GwQ,2FAp8C0GxQ,MAo8CwF,CAC1LyQ,MACA,CAAEtN,QAASuN,MAAalN,SAAU,qBAClC,CAAEF,OAAO,EAAMH,QAASiqL,KAAmBlyK,eAAaC,OAAW,IAAMwmb,KACzE,CAAEx+b,QAASutK,MAAYx1J,eAAaC,OAAW,IAAMwmb,OAx8C6C3hc,aAo8C1Guf,sDAQ6BH,yGAR7B8gT,EAU2B9gT,qGAV3B,kpBAp8C0Gpf,MA08ClG,KA18CkGA,MAi9ClG,YAj9CkGA,CAi9ClG,WAj9CkGA,MAu9C1F,iBAv9C0FA,MAo+C1F,aAp+C0FA,MAq+CtF,aAr+CsFA,MAu+CtF,YAv+CsFA,MAs/ClF,iCAAcwQ,iCAAd,EAt/CkFxQ,CAs/ClF,gCACawQ,8BADb,EAt/CkFxQ,CAs/ClF,mCAEgBwQ,iCAFhB,GAt/CkFxQ,cA0/CtF,aA1/CsFA,MAygDlF,iCAAcwQ,iCAAd,EAzgDkFxQ,CAygDlF,gCACawQ,8BADb,EAzgDkFxQ,CAygDlF,mCAEgBwQ,iCAFhB,GAzgDkFxQ,kBA+gD9F,6BA/gD8FA,MA+gDzE,2BAAUwQ,iBAAV,GA/gDyExQ,mBAo8C1G,MAp8C0GA,MAk9C9F,GAl9C8FA,MAk9C9F,8CAl9C8FA,CAk9C9F,kDAl9C8FA,MAo9C9F,4BAp9C8FA,MAo9C9F,kCAp9C8FA,MAy9CrF,GAz9CqFA,MAy9CrF,iCAz9CqFA,MAk/ClF,GAl/CkFA,MAk/ClF,uCAl/CkFA,MAy+ClF,qBAz+CkFA,CAy+ClF,sCAz+CkFA,MA0+ClF,wCA1+CkFA,CA0+ClF,sBA1+CkFA,CA0+ClF,sBA1+CkFA,CA0+ClF,wCA1+CkFA,CA0+ClF,6BA1+CkFA,CA0+ClF,qCA1+CkFA,CA0+ClF,qCA1+CkFA,CA0+ClF,uDA1+CkFA,MAqgDlF,GArgDkFA,MAqgDlF,uCArgDkFA,MA4/ClF,mBA5/CkFA,CA4/ClF,oCA5/CkFA,MA6/ClF,wCA7/CkFA,CA6/ClF,sBA7/CkFA,CA6/ClF,sBA7/CkFA,CA6/ClF,wCA7/CkFA,CA6/ClF,6BA7/CkFA,CA6/ClF,qCA7/CkFA,CA6/ClF,qCA7/CkFA,CA6/ClF,uDAzDxB,gBA6E0Ci/b,GAAuJpgb,MAA+H4ib,GAA6F5ib,MAAqI4sK,MAAmF5sK,OA7ErnBpJ,kBAgLA,MAAMoF,WAAiBC,OAEvBD,GAAS9a,UAAT,oDAtnD0GC,MAsnDJ6a,MAAtGE,GAAsGF,GAAtG,KACAA,GAASvK,UAvnDiGtQ,MAunD1G,MAA0F6a,GAA1FtK,gFAvnD0GvQ,SAuoD1G,MAAMgjc,WAAyCnob,GAC3C/d,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,EAELo7b,GAAiCjjc,UAAjC,0BAA8Hijc,IA7oDpBhjc,MA6oDsEqQ,OAAhL,EACA2yb,GAAiC1yb,UA9oDyEtQ,MA8oD1G,MAAkHgjc,GAAlHzyb,6DA9oD0GvQ,MA8oDiG,CACnM,CACImD,QAAS0X,GACTK,eAAaC,OAAW,IAAM6nb,OAjpDgEhjc,SAiqD1G,MAAMijc,GAAY,UAOlB,MAAMC,GACFpmc,YAAY6K,EAAU6gB,EAAajI,GAAqBsiK,GAAUjiB,GAAgB94J,IAC9E9K,KAAK2K,SAAWA,EAChB3K,KAAKwrB,YAAcA,EACnBxrB,KAAKujB,oBAAsBA,GAC3BvjB,KAAK6lL,SAAWA,GAChB7lL,KAAK4jK,eAAiBA,GACtB5jK,KAAK8K,OAASA,GAId9K,KAAKopM,YAAe,QAAIxtL,WAIxB5b,KAAKoN,UAAW,EAIhBpN,KAAKqpM,UAAW,EAIhBrpM,KAAK+T,SAAW,EAIhB/T,KAAKkP,QAAU,IAAIhE,MAInBlL,KAAKmP,OAAS,IAAIjE,MAIlBlL,KAAK+wL,YAAc,IAAI7lL,MACvBlL,KAAK+jK,aAAc,EAInB/jK,KAAK0wP,aAAc,EACnB1wP,KAAKmmc,sBAAwB,IAAIv6b,KACjC5L,KAAKomc,UAAW,EAChBpmc,KAAKsL,MAAQ,SACbtL,KAAKqmc,cAAgB,OACrBrmc,KAAKsmc,cAAgB,OACrBtmc,KAAK4ic,SAAYzjR,OACjBn/K,KAAK6ic,UAAY,OAIjB7ic,KAAK+iB,YAAc,KACX/iB,KAAK0O,YAGT1O,KAAKgX,SAAU,KACXvF,OAAazR,KAAKkP,UAClBlP,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkP,QAAQkB,MAAb,GADJ,EAQRpQ,KAAKsjM,WAActzL,KACf,MAAM0F,GAAgB1F,IAASA,GAAM0F,cACjC1V,KAAKwrB,YAAYrf,cAAcuR,SAAShI,MAG5C1V,KAAK4jK,eAAehmJ,eACpB5d,KAAKgX,SAAU,MACXvF,OAAazR,KAAKmP,SAAW4uK,GAAmB/9K,KAAKk+K,WACrDl+K,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK6ic,YACL7ic,KAAKmP,OAAOiB,MAAZ,GAFJ,GAKP,EACDvE,MAAgBrE,IAChBxH,KAAK8L,UAAYyX,GAAoBxX,IAAM,MAAQ,MACnD/L,KAAKkd,eAAiBld,KAAKkd,eAAehQ,KAAKlN,MAC/CA,KAAKspB,aAAetpB,KAAKspB,aAAapc,KAAKlN,KAC9C,CAIGm+N,YAAQj2N,GACRlI,KAAKumc,eAAer+b,GACpBlI,KAAKomc,SAAWl+b,CACnB,CACGi2N,cACA,OAAOn+N,KAAKomc,QACf,CAUGn4b,SAAKA,GACL,MAAMC,EAAUD,GA9GD,SA+GfjO,KAAKmO,cAAcD,EAAS,QAC5BlO,KAAKsL,MAAQ4C,CAChB,CACGD,WACA,OAAOjO,KAAKsL,KACf,CAWGk7b,iBAAaA,GACb,MAAMC,EAAkBD,GA/HF,OAgItBxmc,KAAK0mc,mBAAmBD,GACxBzmc,KAAKsmc,cAAgBG,CACxB,CACGD,mBACA,OAAOxmc,KAAKsmc,aACf,CAWGK,iBAAaA,GACb,MAAMC,EAAkBD,GAhJF,OAiJtB3mc,KAAK6mc,mBAAmBD,GACxB5mc,KAAKqmc,cAAgBO,CACxB,CACGD,mBACA,OAAO3mc,KAAKqmc,aACf,CAIG95b,aAASA,GACTvM,KAAK+T,SAAWxH,CACnB,CACGA,eACA,OAAOvM,KAAK+T,QACf,CACG+yb,cACA,OAAOl5b,OAAWA,UACrB,CACGgH,mBACA,QAAO5U,KAAKoN,eAAkB2H,CACjC,CACGgyb,mBACA,OAAO/mc,KAAKqpM,QACf,CACG/0L,oBACA,OAAOtU,KAAKoN,QACf,CAIG45b,qBACA,OAAOhnc,KAAKinc,SAAWjnc,KAAKujB,oBAAoBxD,IAAI,KACvD,CAIGmnb,sBACA,OAAOlnc,KAAKmnc,UAAYnnc,KAAKujB,oBAAoBxD,IAAI,MACxD,CACGqnb,gBACA,OAAQpnc,KAAKoN,WAAapN,KAAKqpM,QAClC,CACD/5L,WACI,GAAItP,KAAKwrB,YAAa,CAClB,MAAM1P,EAAU9b,KAAKwrB,YAAYrf,cACjCnM,KAAK2K,SAAS2G,gBAAgBwK,EAAS,WAC1C,CACD9b,KAAKsiM,+BAAiCtiM,KAAKujB,oBACtCtX,QACAxG,QAAKuuC,MAAK,IACV9nC,UAAU,EAAGH,UACd/L,KAAK8L,UAAYC,EAAM,MAAQ,QAEnC/L,KAAKk+K,QAAUl+K,KAAK6lL,SAAS9lK,IAAI0iL,KAAW,MAC5CziM,KAAK8K,OAAO88M,SAASniN,QAAKilB,MAAK,IAAIxe,UAAU,IAAMlM,KAAK0wP,aAAc,EACzE,CACDlgP,kBACI,MAAMsL,EAAU9b,KAAKwrB,YAAYrf,cACjCnM,KAAKqnc,0BACArnc,KAAKm+N,UAAYriN,EAAQ4gL,UAAUh/K,SAAS,iBAC7C1d,KAAK2K,SAASyH,SAAS0J,EAAS,gBAEpC9b,KAAKmO,cAAcnO,KAAKiO,KAAM,QAC9BjO,KAAK6mc,mBAAmB7mc,KAAK2mc,cAC7B3mc,KAAK0mc,mBAAmB1mc,KAAKwmc,aAChC,CACD31b,cACQ7Q,KAAKsiM,gCACLtiM,KAAKsiM,+BAA+BrxL,cAEpCjR,KAAKmmc,uBACLnmc,KAAKmmc,sBAAsBl1b,aAElC,CAgBDG,SACSpR,KAAK4oH,OAGV5oH,KAAK4oH,MAAMz8G,cAAciF,OAC5B,CAIDrD,QACS/N,KAAK4oH,OAGV5oH,KAAK4oH,MAAMz8G,cAAc4B,MAC5B,CAMDmnL,iBAAiB/pL,GACbnL,KAAKoN,SAAWjC,EAChBnL,KAAK4jK,eAAehmJ,cACvB,CAIDm3K,WAAW7sL,GACPlI,KAAKm+N,QAAoB,OAAVj2N,GAAyBA,EACxClI,KAAK4jK,eAAehmJ,cACvB,CAIDo3K,iBAAiBxkK,GACbxwB,KAAK4ic,SAAWpya,CACnB,CAIDykK,kBAAkBzkK,GACdxwB,KAAK6ic,UAAYrya,CACpB,CAIDtT,eAAeuH,GACX,MAAMvU,EAAUuU,EAAEvU,QACdlQ,KAAKonc,YAAcl3b,IAAYC,aAAcD,IAAYC,eACzDnQ,KAAKi/T,aAAaj/T,KAAKm+N,SACvB15M,EAAE5Q,iBAET,CAIDyV,eACQtpB,KAAKonc,WACLpnc,KAAKi/T,aAAaj/T,KAAKm+N,QAE9B,CAKDr3K,UACI,OAAO,CACV,CACDm4Q,YAAY/2T,GACJlI,KAAKm+N,UAAYj2N,GACjBlI,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKm+N,QAAUj2N,EACflI,KAAK4ic,SAAS16b,GACdlI,KAAK+wL,YAAY3gL,KAAKlI,GACtBlI,KAAK4jK,eAAehmJ,cAApB,EAGX,CACG5G,YAAQ9O,GACR,GAAIlI,KAAK0O,YAAcxG,GAASlI,KAAKwrB,YAAa,CAC9C,MAAM1P,EAAU9b,KAAKwrB,YAAYrf,cAC7BjE,EACAlI,KAAK2K,SAASyH,SAAS0J,EAASmqb,IAGhCjmc,KAAK2K,SAASqI,YAAY8I,EAASmqb,IAEvCjmc,KAAK0O,UAAYxG,CACpB,CACJ,CACDm/b,yBACIrnc,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKmmc,sBAAsBn6b,IAAIhM,KAAK2K,SAASmF,OAAO9P,KAAKwrB,YAAYrf,cAAe,QAASnM,KAAKspB,cAAlG,EAEP,CACDi9a,eAAer+b,GACX,MAAM4T,EAAU9b,KAAKwrB,YAAYrf,cAC7BjE,GACAlI,KAAK2K,SAASqI,YAAY8I,EAAS,gBACnC9b,KAAK2K,SAASyH,SAAS0J,EAAS,iBAGhC9b,KAAK2K,SAASqI,YAAY8I,EAAS,eACnC9b,KAAK2K,SAASyH,SAAS0J,EAAS,gBAEvC,CACD3N,cAAcjG,EAAOwI,GACjB,MAAMuC,GAAOjT,KAAKwrB,YAAYrf,cACxBQ,GAAUlD,GAAkB,SAAUiH,EAAO1Q,KAAK0Q,GAAQxI,GAC5DyE,GAAQ7C,UACR9J,KAAK2K,SAASqI,YAAYC,GAAMtG,GAAQ7C,UAExC6C,GAAQ5C,OACR/J,KAAK2K,SAASyH,SAASa,GAAMtG,GAAQ5C,MAE5C,CACD88b,mBAAmB3+b,GACf,IAAIq/Q,EAAIguC,GACR,MAAMtiT,GAAmC,QAA3Bs0Q,EAAKvnR,KAAKwrB,mBAAgC,IAAP+7P,OAAgB,EAASA,EAAGp7Q,cACvEy8G,GAA8B,QAArB2sM,GAAKv1T,KAAK4oH,aAA0B,IAAP2sM,QAAgB,EAASA,GAAGppT,cACxE,IAAK8G,KAAS21G,GACV,OAEJ,MAAMj8G,GAAUlD,GAAkB,SAAU,UAAWzJ,KAAK2mc,aAAcz+b,GACtEyE,GAAQ7C,WACR9J,KAAK2K,SAASqI,YAAYC,GAAMtG,GAAQ7C,UACxC9J,KAAK2K,SAASqI,YAAY41G,GAAOj8G,GAAQ7C,WAEzC6C,GAAQ5C,QACR/J,KAAK2K,SAASyH,SAASa,GAAMtG,GAAQ5C,OACrC/J,KAAK2K,SAASyH,SAASw2G,GAAOj8G,GAAQ5C,OAE7C,CACD28b,mBAAmBx+b,GACf,IAAIq/Q,EACJ,MAAM+/K,GAA8B,QAArB//K,EAAKvnR,KAAKsnc,aAA0B,IAAP//K,OAAgB,EAASA,EAAGp7Q,cACxE,IAAKm7b,GACD,OAEJ,MAAM36b,GAAUlD,GAAkB,SAAU,UAAWzJ,KAAKwmc,aAAct+b,GACtEyE,GAAQ7C,UACR9J,KAAK2K,SAASqI,YAAYs0b,GAAO36b,GAAQ7C,UAEzC6C,GAAQ5C,OACR/J,KAAK2K,SAASyH,SAASk1b,GAAO36b,GAAQ5C,MAE7C,EAELm8b,GAAgBnjc,UAAhB,0BAA6Gmjc,IAliEHljc,MAkiEoCA,OAliEpCA,MAkiE6DA,OAliE7DA,MAkiEuFqQ,OAliEvFrQ,MAkiE0HA,OAliE1HA,MAkiEkJA,OAliElJA,MAkiEmLA,OAA7R,EACAkjc,GAAgB3vb,UAniE0FvT,MAmiE1G,MAAiGkjc,GAAjG3yb,8DAniE0GvQ,KAmiE1GgjK,MAniE0GhjK,KAmiE1GmrM,mBAniE0GnrM,MAmiE1GyT,GAniE0GzT,WAmiE1GwQ,kBAniE0GxQ,MAmiE1GyT,GAniE0GzT,WAmiE1GwQ,gEAniE0GxQ,MAmiE1G,kBAniE0GA,CAmiE1G,+BAniE0GA,CAmiE1G,gCAniE0GA,MAmiE1G,iBAniE0GA,CAmiE1G,yBAniE0GA,CAmiE1G,oXAniE0GA,MAmiE4nB,CAC9tByQ,MACA,CAAEtN,QAASuN,MAAalN,SAAU,gBAClC,CACIF,OAAO,EACPH,QAASiqL,KACTlyK,eAAaC,OAAW,IAAM+nb,KAElC,CACI//b,QAASutK,MACTx1J,eAAaC,OAAW,IAAM+nb,QAV1C3jb,sDAegBH,+DAfhBmlb,EAiBiBnlb,kEAjBjB,oUAniE0Gpf,MAgjElG,KAhjEkGA,MAujElG,aAvjEkGA,CAujElG,YAvjEkGA,MAikEnC,GAjkEmCA,cAkkE9F,YAlkE8FA,MAkkEnC,GAlkEmCA,gBAokElG,YApkEkGA,MA4kE9F,cA5kE8FA,iBAmiE1G,MAniE0GA,MA4jE9F,GA5jE8FA,MA4jE9F,mDA5jE8FA,MA0jE9F,mBA1jE8FA,CA0jE9F,4BA1jE8FA,MA0jE9F,oDA1jE8FA,MA6jE9F,yBA7jE8FA,CA6jE9F,yCA7jE8FA,MAikE9D,GAjkE8DA,MAikE9D,kBAjkE8DA,MAikEnC,GAjkEmCA,MAikEnCwQ,kBAjkEmCxQ,MAkkE7D,GAlkE6DA,MAkkE7D,kBAlkE6DA,MAkkEnC,GAlkEmCA,MAkkEnCwQ,mBAlkEmCxQ,MAukE9F,GAvkE8FA,MAukE9F,mDAvkE8FA,MAukEnC,4BAvkEmCA,MAukEnC,oDApCvE,gBA2C0Cgjc,GAAwFnkb,OA3ClIpJ,kBAkKA,MAAM+ub,GACF1nc,YAAY6K,EAAUmgM,EAAchgM,IAChC9K,KAAK2K,SAAWA,EAChB3K,KAAK8qM,aAAeA,EACpB9qM,KAAK8K,OAASA,GACd9K,KAAK+jK,aAAc,EAInB/jK,KAAKkP,QAAU,IAAIhE,MAInBlL,KAAKmP,OAAS,IAAIjE,MAIlBlL,KAAKs6T,cAAgB,IAAIpvT,MAIzBlL,KAAKync,cAAgB,IAAIv8b,MAIzBlL,KAAK0nc,YAAc,IAAIx8b,MACvBlL,KAAK2nc,UAAY,EACpB,CAIGz/b,UAAMmQ,IACDrY,KAAK8qM,eAGV9qM,KAAK8qM,aAAa3+L,cAAcjE,MAA+BmQ,GAAiB,GAChFrY,KAAKs6T,cAAclqT,OACtB,CAIGlI,YACA,OAAOlI,KAAK8qM,aAAa3+L,cAAcjE,KAC1C,CACGggB,SACA,OAAOloB,KAAK8qM,aAAa3+L,cAAc+b,EAC1C,CACGA,OAAGA,GACHloB,KAAK2K,SAASiF,aAAa5P,KAAK8qM,aAAa3+L,cAAe,KAAM+b,EACrE,CACD1X,kBACI,MAAME,EAAQ1Q,KAAK8qM,aAAa3+L,cAChCnM,KAAK2nc,UAAY,CACb3nc,KAAK2K,SAASmF,OAAOY,EAAO,QAAS,IAAM1Q,KAAKkP,QAAQkB,QACxDpQ,KAAK2K,SAASmF,OAAOY,EAAO,OAAQ,IAAM1Q,KAAKmP,OAAOiB,SAE1DpQ,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAK2K,SAASmF,OAAOY,EAAO,iBAAmB+T,IACnB,kBAApBA,EAAEmjb,cACF5nc,KAAKync,cAAcr3b,OAEM,gBAApBqU,EAAEmjb,eACP5nc,KAAK0nc,YAAYt3b,MAAjB,EALR,EASP,CACDS,cACI7Q,KAAK2nc,UAAUl3b,QAAQ8yW,GAAYA,IACtC,EAELikF,GAAiBzkc,UAAjB,0BAA8Gykc,IA5wEJxkc,MA4wEsCA,OA5wEtCA,MA4wE+DA,OA5wE/DA,MA4wEyFA,OAAnM,EACAwkc,GAAiBl0b,UA7wEyFtQ,MA6wE1G,MAAkGwkc,GAAlGj0b,oFA7wE0GvQ,MA6wE1G,0BA7wE0GA,CA6wE1G,wBA7wE0GA,CA6wE1G,2BA7wE0GA,CA6wE1G,6BA7wE0GA,CA6wE1G,iEA7wE0GA,MA6wEqT,CAAC,CACpZmD,QAASutK,MACTx1J,eAAaC,OAAW,IAAMqpb,UAuC1C,MAAMK,GACF/nc,YAAY6K,EAAUjC,EAAS4V,GAAMslJ,GAAgBiiB,GAAU95K,IAC3D/L,KAAK2K,SAAWA,EAChB3K,KAAK0I,QAAUA,EACf1I,KAAKse,KAAOA,GACZte,KAAK4jK,eAAiBA,GACtB5jK,KAAK6lL,SAAWA,GAChB7lL,KAAK8nc,gBAAiB,EACtB9nc,KAAK+nc,eAAgB,EAIrB/nc,KAAK+wL,YAAc,IAAI7lL,MAOvBlL,KAAK6hb,UAAW,EAIhB7hb,KAAKkP,QAAU,IAAIhE,MAInBlL,KAAKmP,OAAS,IAAIjE,MAIlBlL,KAAKs6T,cAAgB,IAAIpvT,MAIzBlL,KAAKync,cAAgB,IAAIv8b,MAIzBlL,KAAK0nc,YAAc,IAAIx8b,MACvBlL,KAAK2nc,UAAY,GACjB3nc,KAAK4ic,SAAYzjR,OACjBn/K,KAAK6ic,UAAY,OACjB7ic,KAAK8L,UAAYC,GAAM,MAAQ,KAClC,CACGmc,SACA,OAAOloB,KAAK0I,QAAQyD,cAAc+b,EACrC,CACGA,OAAGA,GACHloB,KAAK2K,SAASiF,aAAa5P,KAAK0I,QAAQyD,cAAe,KAAM+b,EAChE,CAID6sK,WAAW7sL,GACPlI,KAAKgoc,aAAe9/b,EACpBlI,KAAKsmF,QACR,CAID0uG,iBAAiBxkK,GACbxwB,KAAK4ic,SAAWpya,CACnB,CAIDykK,kBAAkBzkK,GACdxwB,KAAK6ic,UAAYrya,CACpB,CAID0kK,iBAAiB/pL,GACbnL,KAAKioc,mBAAmB,WAAY98b,EACvC,CACDmE,WACI,MAAM5G,EAAU1I,KAAK0I,QAAQyD,cAC7BnM,KAAKse,KAAKzO,kBAAkB,KACxB7P,KAAK2nc,UAAY,CACb3nc,KAAK2K,SAASmF,OAAOpH,EAAS,QAAS1I,KAAK+iB,YAAY7V,KAAKlN,OAC7DA,KAAK2K,SAASmF,OAAOpH,EAAS,OAAQ1I,KAAKsjM,WAAWp2L,KAAKlN,OAC3DA,KAAK2K,SAASmF,OAAOpH,EAAS,iBAAmB+b,IACrB,kBAApBA,EAAEmjb,cACF5nc,KAAKync,cAAcr3b,OAEM,gBAApBqU,EAAEmjb,eACP5nc,KAAK0nc,YAAYt3b,MAAjB,KARK,EAYb/C,UAAyBrN,KAAK6hb,WAC9B7hb,KAAKk1Z,sBAAqBv4Y,KAAUkV,OAAQ,UACvCpsB,QAAMmxM,MAAa,KACnB1qM,UAAU,IAAMlM,KAAKsmF,WAE9BtmF,KAAKkoc,qBAAoBvrb,KAAUjU,EAAS,SACvCwD,UAAUlM,KAAKmtM,YAAYjgM,KAAKlN,MADZ,GAG7BA,KAAKk+K,QAAUl+K,KAAK6lL,SAAS9lK,IAAI0iL,KAAW,KAC/C,CACDpyL,YAAYpE,GACR,MAAMvD,EAAU1I,KAAK0I,QAAQyD,cACzBF,EAAQ/D,QACRlI,KAAKgoc,aAAehoc,KAAKkI,OAEzB+D,EAAQ41a,WACJ7hb,KAAK6hb,UACL7hb,KAAKmoc,cAAgBz/b,EAAQq2F,aAC7B/+F,KAAK2K,SAASyf,SAAS1hB,EAAS,SAAU,UAG1C1I,KAAK2K,SAASyf,SAAS1hB,EAAS,aAAc,QAC9C1I,KAAK2K,SAASyf,SAAS1hB,EAAS,SAAU,QAC1CA,EAAQ6iB,MAAMsL,OAAU,GAAE72B,KAAKmoc,oBAGvCnoc,KAAKse,KAAKspM,SAASniN,QAAKilB,MAAK,IAAIxe,UAAU,IAAMlM,KAAKsmF,SACzD,CACDz1E,cACI7Q,KAAK2nc,UAAUl3b,QAAQ8yW,GAAYA,KAC/BvjX,KAAKkoc,mBACLloc,KAAKkoc,kBAAkBj3b,cAEvBjR,KAAKk1Z,oBACLl1Z,KAAKk1Z,mBAAmBjkZ,aAE/B,CACG+2b,mBACA,OAAIhoc,KAAK0I,QACE1I,KAAK0I,QAAQyD,cAAcjE,MAE/B,EACV,CACG8/b,iBAAa9/b,GACblI,KAAKioc,mBAAmB,QAAiC//b,GAAkB,GAC9E,CACD+/b,mBAAmBxgc,EAAMS,GACjBlI,KAAK0I,SACL1I,KAAK2K,SAASqD,YAAYhO,KAAK0I,QAAQyD,cAAe1E,EAAMS,EAEnE,CACDo+E,SACI,IAAKtmF,KAAK6hb,SACN,OAEJ,MAAMn5a,EAAU1I,KAAK0I,QAAQyD,cAC7BnM,KAAK2K,SAASyf,SAAS1hB,EAAS,aAAc,UAC9CA,EAAQ6iB,MAAMsL,OAAU,GAAE72B,KAAKmoc,kBAC/B,MAAMx4S,EAAejnJ,EAAQinJ,aACzBA,EAAe3vJ,KAAKmoc,gBACpBz/b,EAAQ6iB,MAAMsL,OAAU,GAAE84H,MAEjC,CACDw9C,cACI,MAAMjlM,EAAQlI,KAAKgoc,aACnBhoc,KAAKkI,MAAQA,GACTlI,KAAKk+K,YAAWzsK,OAAazR,KAAKs6T,iBAAN,EAAwB7oT,OAAazR,KAAK+wL,eACtE/wL,KAAKse,KAAK5M,IAAI,KACV1R,KAAK4ic,SAAS16b,GACdlI,KAAKs6T,cAAclqT,KAAKlI,GACxBlI,KAAK+wL,YAAY3gL,KAAKlI,GACtBlI,KAAK4jK,eAAehmJ,cAApB,GAGR5d,KAAKsmF,QACR,CACDvjE,eACI,EAAItR,OAAazR,KAAKkP,UAClBlP,KAAKse,KAAK5M,IAAI,KACV1R,KAAKkP,QAAQkB,MAAb,EAGX,CACDkzL,eACI,EAAI7xL,OAAazR,KAAKmP,SAAW4uK,GAAmB/9K,KAAKk+K,WACrDl+K,KAAKse,KAAK5M,IAAI,KACV1R,KAAK6ic,YACL7ic,KAAKmP,OAAOiB,OACZpQ,KAAK4jK,eAAehmJ,cAApB,EAGX,EAELiqb,GAAkB9kc,UAAlB,0BAA+G8kc,IA9+EL7kc,MA8+EwCA,OA9+ExCA,MA8+EiEA,OA9+EjEA,MA8+E2FA,OA9+E3FA,MA8+EiHA,OA9+EjHA,MA8+EkJA,OA9+ElJA,MA8+E0K8/M,MAApR,KACA+kP,GAAkBv0b,UA/+EwFtQ,MA++E1G,MAAmG6kc,GAAnGt0b,yFA/+E0GvQ,MA++E1G,mBA/+E0GA,MA++E1G,8BA/+E0GA,CA++E1G,2BA/+E0GA,CA++E1G,8BA/+E0GA,CA++E1G,gCA/+E0GA,CA++E1G,iCA/+E0GA,CA++E1G,yHA/+E0GA,MA++Ekd,CAAC,CACjjBmD,QAASiqL,KACTlyK,eAAaC,OAAW,IAAM0pb,IAC9Bvhc,OAAO,GACR,CACCH,QAASutK,MACTx1J,eAAaC,OAAW,IAAM0pb,OAr/EgE7kc,SAyiF1G,MAsDMolc,GAAiB,qBAwBjBC,GAAengc,IACVA,IAAS,EAAIwsB,KAAKI,MAAM5sB,IAASwsB,KAAKG,KAAK3sB,IAKhDsuI,GAAQ2oC,OAURjvJ,GAAYhoB,KACNioB,MAAMjoB,KAAoB,OAAVA,GAK5B,SAAS22B,GAAI32B,GAAO6zH,GAChB,MAAMvnF,EAAQunF,EAASr7H,OAAOwH,IAAO5H,OACrC,IAAIsxB,GAAS1pB,GACb,GAAIssC,EAAQ,EAAG,CACX,MAAM42V,GAAY,IAAIjqY,MAAMqzC,EAAQ,GAAG7yC,KAAK,KAC5CiwB,GAASG,WAAW7pB,GAAQkjY,GAC/B,CACD,OAAOx5W,EACV,CAsCD,IAAI02a,GACOA,OAIRA,KAAmBA,GAAiB,KAHpBA,GAAetrR,MAAU,GAAM,OAC9CsrR,GAAeA,GAAelkQ,KAAU,GAAK,OAC7CkkQ,GAAeA,GAAevrR,GAAQ,GAAK,KAM/C,MAAMwrR,WAA+Bzqb,OAErCyqb,GAAuBxlc,UAAvB,oDAvsF0GC,MAusFUulc,MAApHxqb,GAAoHwqb,GAApH,KACAA,GAAuBj1b,UAxsFmFtQ,MAwsF1G,MAAwGulc,GAAxGh1b,kHAxsF0GvQ,SAwtF1G,MAAMwlc,WAAiDD,GACnDzoc,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,EAEL49b,GAAyCzlc,UAAzC,0BAAsIylc,IA9tF5Bxlc,MA8tFsFqQ,OAAhM,EACAm1b,GAAyCl1b,UA/tFiEtQ,MA+tF1G,MAA0Hwlc,GAA1Hj1b,qEA/tF0GvQ,MA+tFyH,CAC3N,CACImD,QAASoic,GACTrqb,eAAaC,OAAW,IAAMqqb,OAluFgExlc,SAkvF1G,MAAMylc,GAAmB,CAAC,MAAO,MAAO,OAAQ,YAC1CC,GAAoB,CACtBr9D,SAAU,KACVxwX,IAAK,KACLD,IAAK,KACLH,KAAM,GAEJkub,GAAY,UAOlB,MAAMptC,GACFz7Z,YAAY+xC,EAAMlnC,EAAU4Y,GAAqBsiK,GAAU/6K,GAAQ84J,GAAgBp4I,IAC/ExrB,KAAK6xC,KAAOA,EACZ7xC,KAAK2K,SAAWA,EAChB3K,KAAKujB,oBAAsBA,GAC3BvjB,KAAK6lL,SAAWA,GAChB7lL,KAAK8K,OAASA,GACd9K,KAAK4jK,eAAiBA,GACtB5jK,KAAKwrB,YAAcA,GAInBxrB,KAAKopM,YAAe,QAAIxtL,WAIxB5b,KAAKoN,UAAW,EAIhBpN,KAAKqpM,UAAW,EAIhBrpM,KAAKymB,MAAQ,GAKbzmB,KAAKwpM,aAAc,EAKnBxpM,KAAKqrY,SAAW,KAKhBrrY,KAAKya,KAAO,EAKZza,KAAK0pM,UAAW,EAOhB1pM,KAAKywL,iBAAkB,EAIvBzwL,KAAK+T,SAAW,EAMhB/T,KAAK4oc,qBAAsB,EAI3B5oc,KAAK6oc,eAAgB,EAKrB7oc,KAAKkI,MAAQ,KAIblI,KAAK+wL,YAAc,IAAI7lL,MAIvBlL,KAAKkP,QAAU,IAAIhE,MAInBlL,KAAKmP,OAAS,IAAIjE,MAIlBlL,KAAKsoc,eAAiBA,GAItBtoc,KAAK8pM,eAAiBw+P,GAAelkQ,KACrCpkM,KAAK+jK,aAAc,EACnB/jK,KAAK4pB,WAAa,GAClB5pB,KAAK0xL,cAAgBl7C,GACrBx2I,KAAK2xL,cAAgBn7C,GACrBx2I,KAAKk8M,QAAU,KACfl8M,KAAK8oc,UAAW,EAChB9oc,KAAKutN,WAAY,EACjBvtN,KAAKsL,MAAQ,SACbtL,KAAKuL,SAAW,SAChBvL,KAAKwL,UAAY,QACjBxL,KAAK4ic,SAAWpsT,GAChBx2I,KAAK6ic,UAAYrsT,GACjBx2I,KAAK+oc,kBAAoBvyT,GACzBx2I,KAAKw0G,UAAY,GAIjBx0G,KAAKgpc,cAAiBvkb,KAClBzkB,KAAKipc,WAAWX,GAAevrR,GAAIt4J,GAAnC,EAKJzkB,KAAKkpc,cAAiBzkb,KAClBzkB,KAAKipc,WAAWX,GAAetrR,KAAMv4J,GAArC,EAKJzkB,KAAKmpc,aAAe,KAChBj4b,aAAalR,KAAKopc,aACdppc,KAAK8pM,iBAAmBw+P,GAAelkQ,OACvCpkM,KAAK8pM,eAAiBw+P,GAAelkQ,KACrCpkM,KAAK4jK,eAAez8I,gBAApB,EAMRnnB,KAAKktM,YAAc,KACfltM,KAAK8oc,UAAW,GAKpB9oc,KAAKmtM,YAAc,KACf,MAAMz8L,GAAQ1Q,KAAKm7Z,aAAahvZ,cAChC,IAAMogM,kBAAgBC,gBAActkM,MAAO0hB,IAAelZ,GAO1D,GANI1Q,KAAKqpc,aAAel5b,sBACpByZ,GAAa5pB,KAAKspc,yBAElBtpc,KAAK8oc,WACLl/a,GAAa5pB,KAAKupc,iBAAiBvpc,KAAK6xC,KAAKopM,YAAYrxN,OAExD5pB,KAAKsrO,QAAQ1hN,IAGd,OAFAlZ,GAAMxI,MAAQlI,KAAK4pB,gBACnB5pB,KAAKwlB,aAAa+mL,GAAiB,EAAGC,GAAe,GAGzD,MAAMonB,GAAc5zN,KAAK6xC,KAAKopM,YAAYrxN,IAC1C,IAAI1hB,GAAQlI,KAAKwpc,iBAAiB51O,IAClC,GAAI5zN,KAAKwpM,YAAa,CAClB,MAAM+1P,GAAUv/b,KAAKypc,gBAAgBvhc,IACrCA,GAAQq3b,GAAQr3b,MAChBqkM,GAAiBgzP,GAAQhzP,eACzBC,GAAe+yP,GAAQ/yP,YAC1B,CACGonB,KAAgB1rN,IAASlI,KAAK0pc,iBAAiB9/a,MAAgB5pB,KAAKgX,SACpEhX,KAAK2pc,cAAczhc,IACnBlI,KAAKwlB,aAAa+mL,GAAgBC,KAGlCxsM,KAAK4pB,WAAaA,GAElB5pB,KAAK8oc,WACLp4b,GAAMxI,MAAQlI,KAAK4pB,YAEvB5pB,KAAKq4P,YAAYnwP,IACjBlI,KAAK4pc,kBAAoB,KACzB5pc,KAAK8oc,UAAW,GAKpB9oc,KAAK6pc,gBAAkB,MACd7pc,KAAKgX,UAAYhX,KAAKmL,YACvBnL,KAAK2pc,cAAc3pc,KAAKkI,OAAO,EAA/B,EAMRlI,KAAKgsT,gBAAkB,KACnBhsT,KAAKutN,WAAY,GAKrBvtN,KAAK+iB,YAAc,KACf,IAAK/iB,KAAKgX,UACNhX,KAAKgX,SAAU,GACVhX,KAAKmL,YAAY,CAClB,MAAM2+b,GAAkB9pc,KAAK6oc,gBAAkB7oc,KAAKutN,UACpDvtN,KAAK8K,OAAO+E,kBAAkB,KAC1B6C,WAAW,KACHo3b,GACA9pc,KAAKwqR,YAGLxqR,KAAK+pc,aAAL,EAEL,EAPO,EASjB,CAEL/pc,KAAKutN,WAAY,KACb97M,OAAazR,KAAKkP,UAClBlP,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkP,QAAQkB,MAAb,EADJ,EAQRpQ,KAAKsjM,WAAa,KACdtjM,KAAK4jK,eAAehmJ,eACpB5d,KAAKgX,SAAU,EAEXhX,KAAK4pB,aAAe5pB,KAAKgoc,cACzBhoc,KAAKmtM,cAETntM,KAAK2pc,kBAAL,EACIl4b,OAAazR,KAAKmP,SAAW4uK,GAAmB/9K,KAAKk+K,WACrDl+K,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK6ic,YACL7ic,KAAKmP,OAAOiB,MAAZ,EAFJ,EASRpQ,KAAK22M,cAAiBlyL,KAClB,GAAIzkB,KAAKmL,WACL,OAEJ,IAAIsP,GACAgK,GAAEvU,UAAYC,gBACdsK,IAAO,EAEFgK,GAAEvU,UAAYC,gBACnBsK,GAAO,GAEPA,IAAQza,KAAKya,OACbgK,GAAE5Q,iBACF7T,KAAK63Q,QAAQp9P,KAEjB,MAAM/J,GAAQ1Q,KAAKm7Z,aAAahvZ,cAChCnM,KAAK4pc,kBAAoB,CACrB9ub,IAAKpK,GAAM87L,aACX7xL,MAAOjK,GAAM67L,gBAEjBvsM,KAAKqpc,WAAa5kb,GAAEvU,SAKxBlQ,KAAKgqc,YAAevlb,KAChB,GAAIzkB,KAAKgX,UAAYhX,KAAKmL,YAAcnL,KAAK4oc,oBAAqB,CAC9Dnkb,GAAE5Q,iBACF,MAAM0gB,GA7WU9P,MAC5B,IAAI8P,EAAQ,EACZ,OAAI9P,GAAE+P,YACFD,EAAQ9P,GAAE+P,WAAa,IACvBD,EAAQA,EAAQ,EAAIG,KAAKG,KAAKN,GAASG,KAAKI,MAAMP,IAE7C9P,GAAEmQ,SACPL,EAAQG,KAAK7E,OAAOpL,GAAEmQ,OAAS,IAE5BL,GAoWmB01a,CAAuBxlb,IACrCzkB,KAAK63Q,QAAQtjP,GAChB,IACJ,EACD1oB,MAAgBrE,IAChBxH,KAAK8L,UAAYyX,GAAoBxX,IAAM,MAAQ,KACtD,CAMGojC,aAEA,OADenvC,KAAKk8M,SACsC,IAC7D,CACG/sK,WAAOjnC,GACPlI,KAAKk8M,QAAUh0M,CAClB,CAIGqE,aAASA,GACTvM,KAAK+T,SAAWxH,CACnB,CACGA,eACA,OAAOvM,KAAK+T,QACf,CAUG9F,SAAKA,GACL,MAAMC,EAAUD,GAlTD,SAmTfjO,KAAKmO,cAAcD,EAAS,QAC5BlO,KAAKsL,MAAQ4C,CAChB,CACGD,WACA,OAAOjO,KAAKsL,KACf,CAUG8C,YAAQA,GACR,MAAMC,EAAaD,GAlUD,SAmUlBpO,KAAKmO,cAAcE,EAAY,WAC/BrO,KAAKuL,SAAW8C,CACnB,CACGD,cACA,OAAOpO,KAAKuL,QACf,CAUGrB,aAASA,GACT,MAAMoE,EAAcpE,GAlVA,QAmVpBlK,KAAKmO,cAAcG,EAAa,YAChCtO,KAAKwL,UAAY8C,CACpB,CACGpE,eACA,OAAOlK,KAAKwL,SACf,CACG0+b,mBACA,OAAOlqc,KAAKoN,QACf,CACDkC,WACItP,KAAKknB,cAAgBlnB,KAAKujB,oBACrBtX,QACAC,UAAU,EAAGH,UACd/L,KAAK8L,UAAYC,EAAM,MAAQ,QAEnC/L,KAAKknB,cAAclb,IAAIhM,KAAK6xC,KAAK5lC,QAAQC,UAAUlM,KAAKokK,WAAWl3J,KAAKlN,QACpEA,KAAKwrB,aACLxrB,KAAK2K,SAAS2G,gBAAgBtR,KAAKwrB,YAAYrf,cAAe,YAElEnM,KAAKk+K,QAAUl+K,KAAK6lL,SAAS9lK,IAAI0iL,KAAW,MAC5CziM,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKw0G,UAAUx4F,KAAKhc,KAAK2K,SAASmF,OAAO9P,KAAKwrB,YAAYrf,cAAe,aAAcnM,KAAKgqc,YAAY98b,KAAKlN,QAC7GA,KAAKw0G,UAAUx4F,KAAKhc,KAAK2K,SAASmF,OAAO9P,KAAKwrB,YAAYrf,cAAe,iBAAkBnM,KAAKgqc,YAAY98b,KAAKlN,OAAjH,EAEP,CACDwQ,kBAC0B,CAAC,OAAQ,UAAW,YAC5BC,QAAQC,IAClB1Q,KAAKmO,cAAcnO,KAAK0Q,GAAQA,EAAhC,EAEP,CAIDL,YAAYpE,IACR,EAAI2kK,OAAW63R,GAAkBx8b,GAAS,IACtCjM,KAAKsgR,aAAamoL,GAAiBnzb,OAAOuT,GAAU5c,EAAQ4c,KAEhE7oB,KAAKkW,kBAAL,EACI06J,OAAW,CAAC,MAAO,MAAO,mBAAoB3kK,GAAS,KACvDjM,KAAK0xL,cAAgB1xL,KAAKywL,gBA7jBVl2I,KAChBh5C,IACC0G,GAAUsyC,MAActyC,GAAU1G,EAAE2G,QAAU3G,EAAE2G,OAASqyC,GACnD,KAEJ,CACHm1I,SAAU,CACNn1I,SAAUA,GACVryC,MAAO3G,EAAE2G,QAqjB+Biic,CAAmBnqc,KAAK4a,KAAO47H,GAC3Ex2I,KAAK2xL,cAAgB3xL,KAAKywL,gBA/kBVj2I,KAChBj5C,IACC0G,GAAUuyC,MAAcvyC,GAAU1G,EAAE2G,QAAU3G,EAAE2G,OAASsyC,GACnD,KAEJ,CACHo1I,SAAU,CACNp1I,SAAUA,GACVtyC,MAAO3G,EAAE2G,QAukB+Bkic,CAAmBpqc,KAAK6a,KAAO27H,GAC3Ex2I,KAAK+oc,sBAAL,EAEAn4R,OAAW,CAAC,cAAe,WAAY,OAAQ3kK,WACxCjM,KAAKqqc,gBAEZz5R,OAAW,CAAC,QAAS,UAAW3kK,GAAS,KACzCjM,KAAK8xL,YAAY9xL,KAAKkI,OACtBlI,KAAKkI,MAAQlI,KAAKsqc,mBAAmBtqc,KAAKkI,SACrClI,KAAKgX,SAAYhX,KAAK6xC,KAAKopM,YAAYj7O,KAAKgoc,gBAAkBhoc,KAAKkI,QACpElI,KAAK2pc,gBAGhB,CAID94b,cACQ7Q,KAAKknB,eACLlnB,KAAKknB,cAAcjW,cAEvBC,aAAalR,KAAKopc,aAClBppc,KAAKw0G,UAAU/jG,QAAQ85b,GAAiBA,IAC3C,CAIDlwU,SAAS6jD,GACL,OAAOl+K,KAAK0xL,cAAcxT,IAAYl+K,KAAK2xL,cAAczT,EAC5D,CAIDiX,0BAA0B3kK,GACtBxwB,KAAK+oc,kBAAoBv4a,CAC5B,CAIDukK,WAAW7sL,GACPlI,KAAK8xL,YAAY5pL,GACjB,IAAIsic,EAAkBxqc,KAAKsqc,mBAAmBpic,GAC9ClI,KAAKkI,MAAQsic,EACbxqc,KAAK2pc,eACR,CAID30Q,iBAAiBxkK,GACbxwB,KAAK4ic,SAAWpya,CACnB,CAIDykK,kBAAkBzkK,GACdxwB,KAAK6ic,UAAYrya,CACpB,CAQD0kK,iBAAiB/pL,GACbnL,KAAK4jK,eAAehmJ,eACpB5d,KAAKoN,SAAWjC,CACnB,CAgBDiG,QACIkwb,GAAoBthc,KAAKm7Z,aAAc,QAC1C,CAIDptZ,OACIuzb,GAAoBthc,KAAKm7Z,aAAc,OAC1C,CAKDsvC,oBACIzqc,KAAK2pc,eACR,CAIGtG,qBACA,OAAOrjc,KAAKujB,oBAAoBxD,IAAI,YACvC,CAIGwjb,qBACA,OAAOvjc,KAAKujB,oBAAoBxD,IAAI,YACvC,CACG2qb,uBAEA,OADsB1qc,KAAK6xC,KAAK84Z,gBACXroE,OACxB,CACG0lE,mBACA,OAAOhoc,KAAKm7Z,aAAahvZ,cAAcjE,KAC1C,CACG8/b,iBAAa9/b,GACblI,KAAK2K,SAASqD,YAAYhO,KAAKm7Z,aAAahvZ,cAAe,QAASjE,EACvE,CACG8O,cACA,OAAOhX,KAAK0O,SACf,CACGk8b,kBACA,OAAyB,OAAlB5qc,KAAKqrY,UAAqBrrY,KAAKqrY,UAAY,CACrD,CACGr0X,YAAQ9O,GACR,GAAIlI,KAAK0O,YAAcxG,GAASlI,KAAKwrB,YAAa,CAC9C,MAAMyS,EAAOj+B,KAAKwrB,YAAYrf,cAC1BjE,EACAlI,KAAK2K,SAASyH,SAAS6rB,EAAM0qa,IAG7B3oc,KAAK2K,SAASqI,YAAYirB,EAAM0qa,IAEpC3oc,KAAK0O,UAAYxG,CACpB,CACJ,CACGiD,iBACA,OAAOnL,KAAKoN,UAAYpN,KAAKqpM,QAChC,CACD4/P,WAAWn9b,EAAW2Y,GAClBA,EAAE5Q,kBACE7T,KAAKmL,aAtlBK6E,MAClB,MAAM66b,EAAiB76b,GAAMvF,QAA2B,IAAjBuF,GAAMvF,OACvCqgc,EAAoB96b,GAAMsxF,OAAyB,IAAhBtxF,GAAMsxF,MAC/C,OAAOupW,GAAkBC,GAmlBEC,CAAatmb,KAG/BhX,QACDzN,KAAKgX,SAAU,EACfhX,KAAKoR,SAELpR,KAAK8pM,iBAAmBh+L,IACxB9L,KAAK8pM,eAAiBh+L,EACtB9L,KAAK4jK,eAAez8I,iBAEpBnnB,KAAKya,KACLza,KAAKgrc,KAAKl/b,EA7rBK,KAgsBf9L,KAAK2pc,gBAEZ,CACDtxM,YAAYnwP,GACH41b,GAAQ99b,KAAKkI,MAAOA,IACrBlI,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkI,MAAQA,EACblI,KAAK4ic,SAAS16b,GACdlI,KAAK+wL,YAAY3gL,KAAKlI,GACtBlI,KAAK4jK,eAAehmJ,cAApB,EAGX,CACD0rb,wBACI,IAAIphc,EAAQlI,KAAK4pB,YAAc,GAC/B,GAAI5pB,KAAK4pc,kBAAmB,CACxB,MAAMl5b,EAAQ1Q,KAAKm7Z,aAAahvZ,eACxBogM,kBAAgBC,iBAAiB97L,GACjCiK,SAAOG,QAAQ9a,KAAK4pc,kBAC5Bl5b,EAAMxI,MAAQA,EAAQA,EAAMgqC,UAAU,EAAGv3B,IAAS3a,KAAK0qc,iBAAmBxic,EAAMgqC,UAAUp3B,IAC1F9a,KAAKwlB,aAAa+mL,GAAgBC,GACrC,CACD,OAAOtkM,CACV,CACDojO,QAAQpjO,GACJ,OAAKlI,KAAKqqc,eACNrqc,KAAKqqc,aA7sBKrkc,MAClB,MAAQwjM,cAAa6hM,WAAUzwX,QAAQ5U,GACvC,IAKIilc,GALA/zT,GAAYlxI,GAAQkxI,UAMxB,MAzBU,MAoBNA,KACAA,GAAY,KAAOA,IAKnB+zT,GADa,IAAb5/D,EACgB,OAGC,cAAan0P,gBAAuBA,YAElD,IAAIzyI,OAAQ,IARC+kM,GAAuB,OAAR5uL,IAAgBA,IAAO,EAAI,GAAK,OAQ/Bqwb,MAA7B,EA+rBqBZ,CAAa,CAC7B7gQ,YAAaxpM,KAAKwpM,YAClB6hM,SAAUrrY,KAAKqrY,SACfzwX,IAAK5a,KAAK4a,IACVs8H,UAAWl3I,KAAK0qc,oBAGjB1qc,KAAKqqc,aAAa3lc,KAAKwD,EACjC,CACD8ic,KAAKvwb,EAAMq3E,GACP5gF,aAAalR,KAAKopc,aAClBppc,KAAKopc,YAAcv3a,OAAOnf,WAAW,KACjC1S,KAAKgrc,KAAKvwb,EAluBH,GAkuBP,EACDq3E,GACH9xF,KAAK63Q,QAAQp9P,EAChB,CACDo9P,QAAQp9P,GACJ,IAAIvS,EAAQ8D,GAAIhM,KAAKkI,OAAS,EAAGlI,KAAKya,KAAOA,GAC7CvS,EAAQlI,KAAK+4B,WAAW7wB,GACxBA,EAAQlI,KAAKwpc,iBAAiBthc,GAC9BlI,KAAK2pc,cAAczhc,GACnBlI,KAAKq4P,YAAYnwP,EACpB,CACDsd,aAAa7K,EAAOG,GACZ9a,KAAKgX,SACLsqb,GAAoBthc,KAAKm7Z,aAAc,oBAAqBxgZ,EAAOG,EAE1E,CACDie,WAAW7wB,GACP,IAAI0pB,EAAS1pB,EACb,OAAKlI,KAAK6+K,UAAU32K,KACZgoB,GAASlwB,KAAK6a,MAAQ3S,EAAQlI,KAAK6a,MACnC+W,EAAS5xB,KAAK6a,KAEdqV,GAASlwB,KAAK4a,MAAQ1S,EAAQlI,KAAK4a,MACnCgX,EAAS5xB,KAAK4a,MAGfgX,CACV,CACD63a,gBAAgBvhc,GACZ,IAAMqkM,iBAAgBC,gBAActkM,MAAOgjc,IAAiBlrc,KAAKm7Z,aAAahvZ,cAC1Eg/b,GAAejjc,EACfkjc,IAAc,EAClB,IAAKprc,KAAK6+K,UAAU32K,GAAQ,CACxB,MAAMmjc,GAAeH,GAAa5qc,OAASI,OAAOV,KAAK4pB,YAAYtpB,QAC3Dsa,OAAKC,QAAQ7a,KACfsrc,GAASp7a,GAASrV,IAClB0wb,GAASr7a,GAAStV,IACxB,IAAI4wb,GAAUC,GACVC,GAAiBxjc,EACrB,GAAuB,IAAnBqkM,GAAwBvsM,KAAK4pB,WAAWwuG,OAAO,KAAO8yU,GACtD,MAAO,CACH1+P,aAAcA,GACdD,eAAgBA,EAChBrkM,MAAO,MAmBf,GAhBIojc,IAAUpjc,EAAQ2S,GACd3S,EAAQ,EACRujc,IAAc,EAGdD,GAAW3wb,GAGV0wb,IAAUrjc,EAAQ0S,KACnB1S,EAAQ,EACRsjc,GAAW5wb,GAGX6wb,IAAc,GAGlBD,GAAU,CACV,MAAMG,GAAc3rc,KAAK4rc,YAAY1jc,EAAOsjc,IACxCG,IAAetD,GAAYngc,KAAWmgc,GAAYmD,MAClDE,GAAiBC,GACjBP,IAAc,EAErB,MACQK,IACDzrc,KAAK4pB,YAAc2iL,IAAmB2+P,GAAa5qc,SACnDorc,GAAiB35a,WAAWm5a,GAAa9yU,OAAO,EAAGm0E,GAC/C2+P,GAAa9yU,OAAOm0E,EAAiB8+P,MAGjDF,GAAenrc,KAAK+4B,WAAW2ya,IAC/BN,IAAeA,IAAeD,KAAiBO,KAAmB1rc,KAAK4pc,mBAClE5pc,KAAK4pc,kBAAkB9ub,IAAM9a,KAAK4pc,kBAAkBjvb,MAAQ0wb,GAAgB,CACpF,CACD,MAAO,CACH7+P,aAAc4+P,GAAc1qc,OAAOyqc,IAAc7qc,OAASksM,GAC1DD,eAAgBA,EAChBrkM,MAAOijc,GAEd,CACDS,YAAY1jc,EAAOixC,GACf,MAAM0yZ,GAAcnrc,OAAOg0B,KAAKI,MAAMqkB,IAAQ74C,OACxCwrc,GAAajta,GAAI32B,EAAO2jc,IACxBE,GAAiBlta,GAAI32B,EAAO2jc,GAAc,GAChD,IAAIj6a,GACJ,OAAI5xB,KAAK6+K,UAAUitR,IACfl6a,GAASk6a,GAEJ9rc,KAAK6+K,UAAUktR,MACpBn6a,GAASm6a,IAENn6a,EACV,CACDitJ,UAAU32K,GACN,OAAQgoB,GAAShoB,MAAagoB,GAASlwB,KAAK4a,MAAQ5a,KAAK4a,KAAO1S,MAAYgoB,GAASlwB,KAAK6a,MAAQ3S,GAASlI,KAAK6a,IACnH,CACDyvb,mBAAmBpic,GACf,IAAI0pB,EAAS5xB,KAAKwpc,iBAAiBthc,GAAO,GAC1C,OAAIlI,KAAKwpM,aAAexpM,KAAK+4B,WAAWnH,KAAYA,IAChDA,EAAS,MAENA,CACV,CACD43a,iBAAiBthc,EAAO2nB,GACpB,IAAI+B,GAAS1pB,EACb,GAAIA,GAASlI,KAAK4qc,YAAa,CAC3B,MAAMv/D,GAAWrrY,KAAKqrY,SAChB2gE,GAActrc,OAAOwH,GAC3B,GAAI2nB,GAASu4a,GAAe1jc,KAAKsnc,IAC7Bp6a,GAASusa,GAAiBj2b,EAAOmjY,QAEhC,CACD,MAAMvpY,GAAQkqc,GAAYjqc,MA/1B5B,KAg2BE,IAAI0qY,GAAW3qY,GAAM,GACjB2qY,IAAYA,GAASnsY,OAAS+qY,KAC9BoB,GAAWA,GAASr0Q,OAAO,EAAGizQ,IAC9Bz5W,GAASG,WAAY,GAAEjwB,GAAM,MAAa2qY,MAEjD,CACJ,CACD,OAAO76W,EACV,CACD23a,iBAAiBrhc,GACb,IAAI8jc,EAAc3sb,OAAOm4G,GAAGtvH,GAAO,GAAM,KAAOxH,OAAOwH,GACvD,MAAM+jc,GAAgB7D,GAAehzY,KAAK42Y,GAC1C,OAAIC,KACAD,EAAc9jc,EAAMwtH,QAAQsoU,GAAepna,SAASq1a,GAAc,GAAI,OAEnED,EAAY3rc,QA/2Bb,IA+2B4BL,KAAK0qc,iBAC1C,CACD3pY,YAAY74D,EAAO8O,GACf,IAAI+5D,GACJ,OAIIA,GAJU,OAAV7oE,GAr0BKA,YACCA,GAAU,IAo0BG8sB,CAAQ9sB,IAAoB,KAAVA,EAGhC8O,IAAYhX,KAAKqpM,SACLrpM,KAAKupc,iBAAiBrhc,GAGtBlI,KAAK6xC,KAAK28V,aAAatmY,EAAOlI,KAAKmvC,QANnC,GAQd4hC,EACV,CACD44X,cAAczhc,EAAQlI,KAAKkI,MAAO8O,EAAUhX,KAAKgX,SAC7C,MAAM+5D,GAAiB/wE,KAAK+gE,YAAY74D,EAAO8O,GAC/ChX,KAAKgoc,aAAej3X,GACpB/wE,KAAK4pB,WAAamnD,EACrB,CACD76D,iBACI,IAAI,EAACI,UAGY,OAAbtW,KAAK4a,KAA6B,OAAb5a,KAAK6a,KAAgB7a,KAAK4a,IAAM5a,KAAK6a,IAC1D,MAAM,IAAIta,MAAO,sPAExB,CACDuxL,YAAY5pL,GACR,MAAIoO,UAAepO,GAA0B,iBAAVA,EAC/B,MAAM,IAAI3H,MAAO,kEAAiE0B,KAAKsiP,UAAUr8O,cAExG,CACDo4Q,aAAat6Q,GACT,QAASlF,EAAM,EAAGA,EAAMkF,EAAQ1F,OAAQQ,IAAO,CAC3C,MAAM2G,GAAOzB,EAAQlF,GACfoH,GAAQlI,KAAKyH,IACnB,GAAqB,iBAAVS,GAAoB,CAC3B,MAAMw7R,GAAS3xQ,WAAW7pB,IACpBgjS,IAAS/6Q,MAAMuzQ,IACrB,MAAIptR,WAAgB40R,IAAmB,KAAVhjS,GACzB,MAAM,IAAI3H,MAAM,wGACQkH,mBAAqBxF,KAAKsiP,UAAUr8O,gBAEhElI,KAAKyH,IAAQyjS,GAAQxH,GAASglK,GAAkBjhc,GACnD,CACJ,CACJ,CACD28J,oBACWpkK,KAAKqqc,aACRrqc,KAAKm7Z,gBAAkBn7Z,KAAKgX,UAAYhX,KAAKsrO,QAAQtrO,KAAKgoc,gBAC1Dhoc,KAAK2pc,eAEZ,CACDD,iBAAiB9/a,GACb,GAAI5pB,KAAK4qc,aAAe5qc,KAAKgX,QAAS,CAClC,MAAMy1X,EAAW7iX,EAAW7nB,MAAM/B,KAAK0qc,kBAAkB,GACzD,OAAOj+D,GAAYA,EAASnsY,OAASN,KAAKqrY,UAAYoB,EAAS/zK,YAAY,OAAS+zK,EAASnsY,OAAS,CACzG,CACJ,CACDkqR,YACIxqR,KAAK2pc,gBACL3pc,KAAKwlB,aAAa,EAAGxlB,KAAK4pB,WAAWtpB,OACxC,CACDypc,cACI,MAAMmC,EA51BYxjc,KAAYA,GAAQ6jM,eA41BhB4/P,CAAiBnsc,KAAKm7Z,aAAahvZ,eACnD4kE,EAAiB/wE,KAAKgoc,aACtBoE,GAAer7X,EAAe7+B,UAAU,EAAGg6Z,GAEjD,GADAlsc,KAAK2pc,gBACDyC,GAAa9rc,OAAQ,CACrB,MAAM+rc,GA71BqB,EAACC,GAAiBp1T,KACrD,MAAMq1T,EAAyB,GAAEr1T,eACjC,OAAOo1T,GAAgBvqc,MAAM,IAAI4jB,OAAO,CAACC,GAAKywK,KAASk2Q,EAAsBjoc,SAAS+xL,MAAUzwK,GAAMA,GAAK,EAApG,EA21B0C4mb,CAA+BJ,GAAcpsc,KAAK0qc,kBACrF+B,GAA2Bzsc,KAAK0sc,uBAAuB37X,EAAgBs7X,IAC7Ersc,KAAKwlB,aAAainb,GAA0BA,GAC/C,MAEGzsc,KAAKwlB,aAAa,EAAG,EAE5B,CACDmnb,sBAAsB57X,GAClB,MAAM67X,EAAiB77X,EAAe9vE,QAAQjB,KAAK0qc,kBAC7CmC,GAAuB97X,EAAel+C,MAAM,iBAClD,GAAIg6a,GAAsB,CACtB,MAAMC,GAAgBD,GAAqB,GAAGvsc,OACxCysc,GAA6BF,GAAqB,GAAGvsc,OAC3D,OAAOwsc,KAAkBF,EAAiBG,GAA6B,EAAIA,EAC9E,CACD,OAAO,CACV,CACDL,uBAAuB37X,EAAgBi8X,GACnC,MAAMC,GAAgBjtc,KAAK2sc,sBAAsB57X,GACjD,OAAIk8X,GAAgB,EACTv4a,KAAK7Z,IAAI,EAAGmyb,EAAmBC,IAEnCD,CACV,CACD7+b,cAAcjG,EAAOwI,GACjB,MAAMuC,GAAOjT,KAAKwrB,YAAYrf,cACxBQ,GAAUlD,GAAkB,QAASiH,EAAO1Q,KAAK0Q,GAAQxI,GAC3DyE,GAAQ7C,UACR9J,KAAK2K,SAASqI,YAAYC,GAAMtG,GAAQ7C,UAExC6C,GAAQ5C,OACR/J,KAAK2K,SAASyH,SAASa,GAAMtG,GAAQ5C,MAE5C,EAELwxZ,GAAwBx4Z,UAAxB,0BAAqHw4Z,IA5iHXv4Z,MA4iHoDw3T,OA5iHpDx3T,MA4iHiFA,OA5iHjFA,MA4iH0GqQ,OA5iH1GrQ,MA4iH6IA,OA5iH7IA,MA4iHqKA,OA5iHrKA,MA4iH2LA,OA5iH3LA,MA4iH4NA,OAAtU,EACAu4Z,GAAwBhlZ,UA7iHkFvT,MA6iH1G,MAAyGu4Z,GAAzGhoZ,qEA7iH0GvQ,KA6iH1Gkqc,kBA7iH0Glqc,MA6iH1GyT,GA7iH0GzT,WA6iH1GwQ,uEA7iH0GxQ,MA6iH1G,mBA7iH0GA,MA6iH1G,4BA7iH0GA,CA6iH1G,wBA7iH0GA,CA6iH1G,8lBA7iH0GA,MA6iHg0B,CACl6ByQ,MACA,CAAEtN,QAASuN,MAAalN,SAAU,wBAClC,CAAEL,QAASiqL,KAAmBlyK,eAAaC,OAAW,IAAMo9Y,IAA0Bj1Z,OAAO,GAC7F,CAAEH,QAASoqL,KAAeryK,eAAaC,OAAW,IAAMo9Y,IAA0Bj1Z,OAAO,GACzF,CAAEH,QAASutK,MAAYx1J,eAAaC,OAAW,IAAMo9Y,OAljH6Cv4Z,OA6iH1Guf,qDASuBH,uHATvB+qb,EAWuB/qb,uHAXvB,+zBA7iH0Gpf,MAojHlG,KApjHkGA,MA2jH9F,eA3jH8FA,MAolH9F,qBAvCZ,MA7iH0GA,MAgkH9F,GAhkH8FA,MAgkH9F,mBAhkH8FA,CAgkH9F,sBAhkH8FA,CAgkH9F,sBAhkH8FA,CAgkH9F,sBAhkH8FA,CAgkH9F,4BAhkH8FA,MAgkH9F,mHAhkH8FA,MAikH9F,sBAjkH8FA,CAikH9F,sBAjkH8FA,CAikH9F,wBAjkH8FA,CAikH9F,gBAjkH8FA,CAikH9F,4BAjkH8FA,CAikH9F,yBAjkH8FA,MAqlHnD,GArlHmDA,MAqlHnD,mBAxCvD,gBAoE8Cwlc,GAAwG3mb,MAAqI4sK,OApE3Rh2K,kBAyNA,MAAM20b,WAA8C7E,GAChDzoc,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,CACG0X,eACA,OAAO,CACV,EA0BL,IAAI+qb,GAxBJD,GAAsCrqc,UAAtC,0BAAmIqqc,IA/wHzBpqc,MA+wHgFqQ,OAA1L,EACA+5b,GAAsC72b,UAhxHoEvT,MAgxH1G,MAAuHoqc,GAAvH75b,wDAhxH0GvQ,MAgxH0G,CAC5M,CACImD,QAASoic,GACTrqb,eAAaC,OAAW,IAAMivb,OAnxHgEpqc,OAgxH1Guf,0DAwBA,SAAW8qb,IACPA,GAAWA,GAAWC,QAAa,GAAK,UACxCD,GAAWA,GAAW1oQ,KAAU,GAAK,OAErC0oQ,GAAWA,GAAWr0b,UAAe,GAAK,WAC7C,CALD,CAKGq0b,KAAeA,GAAa,KAI/B,MAAME,GACFztc,YAAYoI,EAAOqvM,EAAM94L,GAAO4ub,GAAWr0b,WACvChZ,KAAKkI,MAAQA,EACblI,KAAKu3M,KAAOA,EACZv3M,KAAKye,KAAOA,EACf,CAEDpd,IAAImvB,GACA,OAAO,IAAI+8a,GAAO/8a,EAAGxwB,KAAKkI,OAAQlI,KAAKu3M,KAC1C,CAEDi2P,MAAMh9a,GACF,OAAOA,EAAGxwB,KAAKkI,MAAOlI,KAAKu3M,KAC9B,CACDk2P,KAAKzqa,EAAGm8I,GACJ,OAAOn8I,EAAEhjC,KAAKkI,MAAOlI,KAAKu3M,KAC7B,CACDzxL,OAAOykB,GACH,OAAOvqC,KAAKqB,IAAI,CAACqsc,EAAIvuR,KAAM50I,EAAEija,MAAM,CAAC31O,GAAGjjB,KAAO84P,EAAG5nb,OAAO,CAAC+xM,MAC5D,CACDp2N,WACI,MAAQ,oBAAmBzB,KAAKkI,iBAAiBlI,KAAKu3M,SACzD,EAML,MAAMo2P,GACF7tc,YAAY4Q,EAAQ,GAAIwtK,EAAU,IAC9Bl+K,KAAK0Q,MAAQA,EACb1Q,KAAKk+K,QAAUA,EACfl+K,KAAK4tc,YAAc,EACnB5tc,KAAK6tc,cAAgB,CACxB,CACDvhI,MACI,OAAOtsU,KAAK4tc,aAAe5tc,KAAK0Q,MAAMpQ,MACzC,CAED2E,OACI,MAAO,CACH6oc,KAAM9tc,KAAK0Q,MAAM1Q,KAAK4tc,eACtB1vR,QAASl+K,KAAKk+K,QAAQl+K,KAAK6tc,iBAElC,CACDnmQ,OACI,MAAO,CACHomQ,KAAM9tc,KAAK0Q,MAAM1Q,KAAK4tc,aACtB1vR,QAASl+K,KAAKk+K,QAAQl+K,KAAK6tc,eAElC,CACDE,YACI/tc,KAAK4tc,aACR,CACDI,cACIhuc,KAAK6tc,eACR,CACD7nM,MACIhmQ,KAAK4tc,cACL5tc,KAAK6tc,eACR,EAGL,MAAMz4b,GAAWlN,KAAWA,IAAS,IAAInG,MAAM,IAK/C,MAAMksc,GACFnuc,YAAYoC,GACRlC,KAAKkC,MAAQA,CAChB,CACDwP,IAAIhB,EAAOwtK,EAAU,IACjB,OAAIxtK,aAAiBi9b,GACV3tc,KAAKkC,MAAMwO,GAGX1Q,KAAKkC,MAAM,IAAIyrc,GAAOv4b,GAAQ1E,GAAQ0E,GAAQ8oK,IAE5D,CAED78K,IAAI+G,GACA,OAAO,IAAI6lc,GAAOtzQ,GAAU36L,KAAKkC,MAAMy4L,GAAQt5L,IAAI+G,GACtD,CAEDolc,MAAMplc,GACF,OAAO,IAAI6lc,GAAOtzQ,GAAU36L,KAAKkC,MAAMy4L,GAAQ6yQ,MAAM,CAAC31O,GAAG70L,KAAM56B,EAAEyvN,IAAGnmN,IAAIsxB,KAC3E,CACDkra,UAAU3sc,GACN,OAAOvB,KAAK0R,IAAInQ,GAAGkd,OAAS4ub,GAAWC,OAC1C,EAKL,MA6EMzrc,GAAQ,CAAC0mQ,GAAO8vG,IAAY,IAAI41F,GAAOtzQ,IACzC,IAAMmzQ,SAASnzQ,EAAO11L,OACtB,MAAMujQ,GAAOD,GAAMulM,IACnB,MA/GqB,OA+GjBA,IACAA,GAAOnzQ,EAAO11L,OAAO6oc,KACd,IAAIP,GAAOl1F,EAAQ41B,QAAQ6/D,IAAOnzQ,IAKtC,IAAI4yQ,GAHN/kM,GAGa6vG,EAAQvvK,KAAK0/D,IAFT6vG,EAAQ41B,QAAQ6/D,IAEAnzQ,EAF3B,GAOTwzQ,GAAU,EAAGC,UAAQC,uBAAwB,IAAIJ,GAAOtzQ,IAC1D,IAAMmzQ,SAASnzQ,EAAO11L,OACtB,OACW,IAAIsoc,GADXO,KAASM,GACSC,EAEJP,GAFuBnzQ,EAElC,GAKL2zQ,GAAaC,IAAmB,IAAIN,GAAOtzQ,IAC7C,IAAMmzQ,QAASnzQ,EAAO11L,OACtB,OACW,IAAIsoc,GADXgB,GACkBT,EAEJ,GAFUnzQ,EAErB,GAcLluK,GAAWgzJ,IAAQA,GAAK95J,OAAO,CAACC,EAAKomP,IAJ5B,EAACxqN,GAAIC,IAAOD,GAAGgsZ,MAAME,GAAMjsZ,EAAGpgD,IAAIw2N,IAAK61O,EAAG5nb,OAAO,CAAC+xM,OAIX1/L,CAAOvS,EAAKomP,GARnD9jQ,KAAS,IAAI+lc,GAAOtzQ,GAAU,IAAI4yQ,GAAOrlc,GAAOyyL,IAQY6zQ,CAAO,KAI5EC,GAASziM,IAAU,IAAIiiM,GAAOtzQ,IAChC,IAAI/oK,EAAS,IAAI27a,GAAO,GAAI5yQ,GAC5B,MAAQA,EAAO2xI,OACX16S,EAASA,EAAO9L,OAAOkmP,GAAOt6P,IAAIipL,IAEtC,OAAO/oK,IAMX,MAAM88a,GACF5uc,cACIE,KAAKuoQ,MAAQ,GACbvoQ,KAAKouc,OAAS,IACdpuc,KAAK8oM,KAAO,GACZ9oM,KAAKquc,kBAAoB,IACzBruc,KAAKuuc,iBAAkB,EACvBvuc,KAAK2uc,WAAa,GAClB3uc,KAAK4uc,aAAe,GACpB5uc,KAAK6uc,UAAY,GACjB7uc,KAAK8uc,iBAAmB,EAC3B,CACDlnY,QAASkhI,OAAO,GAAIslQ,SAAS,GAAIC,qBAAoB,IAAK9lM,SAAQ,GAAIgmM,oBAAkB,IACpFvuc,KAAK8oM,KAAOA,EACZ9oM,KAAKouc,OAASA,EACdpuc,KAAKquc,kBAAoBA,GACzBruc,KAAKuoQ,MAAQA,GACbvoQ,KAAKuuc,gBAAkBA,GACvBvuc,KAAK+uc,UACR,CACDC,gBAAgBC,EAAc,IAC1B,IAAI/mc,EAAQ+mc,EACZxib,UAASzsB,KAAK8uc,kBACTp9b,IAAIu9b,GACJxB,KAAKyB,KACNhnc,EAAQgnc,GAASvtc,KAAK,GAAd,GAELuG,CACV,CACDinc,SAASF,EAAc,IACnB,IAAI/mc,EAAQ+mc,EACZ,OAAKjvc,KAAK6uc,UAAUvuc,QAGpBmsB,GAASzsB,KAAK6uc,WACTn9b,IAAIu9b,GACJxB,KAAKyB,KACNhnc,EAAQgnc,GAASvtc,KAAK,GAAd,GAELuG,CACV,CAIDknc,QAAQD,EAAW,IACf,IAAIjnc,EAAQinc,EACZ,OAAKnvc,KAAK2uc,WAAWruc,QAGrBmsB,GAASzsB,KAAK2uc,YACTj9b,IAAIy9b,GACJ1B,KAAK4B,KACNnnc,EAAQmnc,GAAO1tc,KAAK,GAAZ,GAELuG,CACV,CACDonc,UAAU5+b,EAAOwtK,EAASqxR,IACtB,OAAI7+b,EAAMpQ,OAAS49K,EAAQ59K,OAChBN,KAAKwvc,YAAY9+b,EAAOwtK,EAASqxR,IAErCvvc,KAAKyvc,aAAa/+b,EAAOwtK,EAASqxR,GAC5C,CACDG,YAAYC,EAAQx1K,EAAUx/Q,GAAOG,IACjC,IAAI5S,GAAQ,GACR+L,GAAY6G,GAChB,MAAM80b,GAAez1K,EAASp4R,MAAM,IAAIL,MAAM,EAAGiZ,IAC3Ck1b,GAAc11K,EAASp4R,MAAM,IAAIL,MAAMoZ,IAC7C2R,UAASzsB,KAAK2uc,WAAWjtc,MAAMiZ,GAAOG,KACjCpJ,IAAIi+b,GACJlC,KAAK4B,KACNnnc,GAAQ0nc,GACH9pb,OAAOupb,IACPvpb,OAAO+pb,IACPluc,KAAK,GAHF,GAKL,CACHsS,aACA/L,SAEP,CACDsnc,YAAY9+b,EAAOwtK,EAASqxR,IACxB,IAAIrnc,GAAQ,GACR+L,GAAYs7b,GAChB,MAAMO,GAAYp/b,EAAM3O,MAAM,IAAIL,MAAM6tc,IAClC/9b,GAAUd,EAAM3O,MAAM,IAAIL,MAAM,EAAG6tc,IAAY5tc,KAAK,IACpD+oB,GAAO1qB,KAAK2uc,WAAWruc,QAAUoQ,EAAMpQ,OAASivc,IACtD9ib,UAASzsB,KAAK2uc,WAAWjtc,MAAM,EAAGgpB,KAC7BhZ,IAAIF,GAAS0sK,GACbuvR,KAAK4B,KACNp7b,GAAYjU,KAAK+vc,eAAeV,GAAQp7b,IACxC/L,GAAQmnc,GAAOvpb,OAAOgqb,IAAWnuc,KAAK,GAA9B,GAEL,CACHsS,aACA/L,SAEP,CACD6nc,eAAer/b,EAAOuD,GAClB,MAAM+7b,GAAYt/b,EAAMuD,GAExB,OADkBjU,KAAK2uc,WAAW16b,GAAWi6b,UAAU8B,KACrCA,KAAchwc,KAAKouc,OAG9Bn6b,EAFIA,EAAY,CAG1B,CACDw7b,aAAa/+b,EAAOwtK,EAASqxR,IACzB,IAAIrnc,GAAQ,GACR+L,GAAYs7b,GAChB,MAAM/9b,GAAUd,EAAMhP,MAAM,EAAG6tc,IAC/B9ib,UAASzsB,KAAK4uc,cACTl9b,IAAIF,GAAS0sK,GACbsvR,MAAM0B,KACPj7b,GAAYi7b,GAASvtc,KAAK,IAAIrB,OAC9B,MAAMwvc,GAAY5xR,EAAQx8K,MAAMuS,IAChC,OAAOwY,GAASzsB,KAAK2uc,YAChBj9b,IAAIw9b,GAASvtc,KAAK,IAAMmuc,GAAW5xR,EADjC,GAGNuvR,KAAK4B,KACNnnc,GAAQmnc,GAAO1tc,KAAK,GAAZ,GAEL,CACHsS,aACA/L,SAEP,CACG+nc,uBACA,MAAQ7B,SAAQC,qBAAsBruc,KACtC,MAAO,CACHiuY,QAASzlI,IAjPL0nM,KAAU,IAAIjC,GAAOtzQ,GAEtBA,EAAO+M,OAAOomQ,OACZoC,IACTv1Q,EAAOqrE,MACA,IAAIunM,GAAO2C,GAAQv1Q,EAAQ0yQ,GAAWC,UAY1C,IAAIC,GAAO2C,GAAQv1Q,EAAQ0yQ,GAAWC,UAgOpBr/D,CAAQzlI,IACzB1/D,KAAM0/D,IAzQL,GAAG4lM,UAAQC,uBAAwB7lM,GAAQ,IAAIylM,GAAOtzQ,KAC/D,MAAQA,GAAO2xI,OAAO,CAClB,MAAQwhI,QAAM5vR,YAAYyc,GAAO+M,OACjC,GAAIomQ,KAAS5vR,IAAWA,KAAYkwR,GAChCzzQ,UAAOqrE,MACA,IAAIunM,GAAOa,GAAQzzQ,GAAQ0yQ,GAAW1oQ,MAEjD,GAAI6jE,EAAK9jQ,KAAKopc,IACVnzQ,UAAOqrE,MACA,IAAIunM,GAAOO,GAAMnzQ,GAAQ0yQ,GAAW1oQ,MAE/C,GAAImpQ,KAASO,EACT1zQ,UAAOqrE,MACA,IAAIunM,GAAOa,GAAQzzQ,GAAQ0yQ,GAAW1oQ,MAEjDhK,GAAOozQ,WACV,CACDpzQ,UAAOqrE,MACA,IAAIunM,GAAOa,GAAQzzQ,GAAQ0yQ,GAAW1oQ,KAAtC,GAuPemE,CAAK,CAAEslQ,SAAQC,qBAAfvlQ,CAAoC0/D,IAEzD,CACG2nM,yBACA,MAAO,CACHliE,QAASzlI,GA9MH0nM,KAAU,IAAIjC,GAAOtzQ,IACnC,GAAIA,EAAO2xI,MACP,OAAO,IAAIihI,GAAO,GAAI5yQ,GAE1B,MAAQmzQ,QAASnzQ,EAAO+M,OACxB,OAAIomQ,IAASoC,IACTv1Q,EAAOqrE,MAEJ,IAAIunM,GAAO2C,GAAQv1Q,EAAnB,GAsMkBy1Q,CAAU5nM,GAC3B1/D,KAAM0/D,GAlOH4lM,KAAU5lM,GAAQ,IAAIylM,GAAOtzQ,IACxC,MAAQA,EAAO2xI,OAAO,CAClB,MAAQwhI,QAAM5vR,YAAYyc,EAAO+M,OACjC,GAAIomQ,KAASM,IAAUlwR,KAAYkwR,GAC/BzzQ,SAAOqrE,MACA,IAAIunM,GAAOO,GAAMnzQ,GAE5B,GAAI6tE,EAAK9jQ,KAAKopc,IACVnzQ,SAAOqrE,MACA,IAAIunM,GAAOO,GAAMnzQ,GAE5BA,EAAOozQ,WACV,CACDpzQ,SAAOqrE,MACA,IAAIunM,GAAO,GAAI5yQ,EAAf,GAoNe01Q,CAAOrwc,KAAKouc,OAAZiC,CAAoB7nM,GAEzC,CACG8nM,sBACA,MAAQlC,SAAQC,oBAAmBE,oBAAoBvuc,KACvD,MAAO,CACHiuY,QAAS9uN,IAAKmvR,GAAWC,IACzBzlQ,KAAM3pB,IAAKgvR,GAAQ,CAAEC,SAAQC,sBAEpC,CACGkC,6BACA,MAAQnC,UAAWpuc,KACnB,MAAO,CACHiuY,QAAS9uN,GAAKmvR,IAAW,GACzBxlQ,KAAM3pB,GAAKgvR,GAAQ,CAAEC,SAAQC,kBAAmB,KAEvD,CACDU,WACIN,GAAO5sc,GAAM7B,KAAKuoQ,MAAOvoQ,KAAKiwc,mBACzBv+b,IAAI1R,KAAK8oM,MACT2kQ,KAAK,CAAC1nM,EAAQ5mF,KACfn/K,KAAK2uc,WAAa5oM,IAEtB0oM,GAAO5sc,GAAM7B,KAAKuoQ,MAAOvoQ,KAAKmwc,qBACzBz+b,IAAI1R,KAAK8oM,MACT2kQ,KAAK,CAAC1nM,EAAQ5mF,KACfn/K,KAAK4uc,aAAe7oM,IAExB0oM,GAAO5sc,GAAM7B,KAAKuoQ,MAAOvoQ,KAAKswc,kBACzB5+b,IAAI1R,KAAK8oM,MACT2kQ,KAAK,CAAC1nM,EAAQ5mF,KACfn/K,KAAK6uc,UAAY9oM,IAErB0oM,GAAO5sc,GAAM7B,KAAKuoQ,MAAOvoQ,KAAKuwc,yBACzB7+b,IAAI1R,KAAK8oM,MACT2kQ,KAAK,CAAC1nM,EAAQ5mF,KACfn/K,KAAK8uc,iBAAmB/oM,GAE/B,EAEL2oM,GAAe3rc,UAAf,0BAA4G2rc,GAA5G,EACAA,GAAezrc,WAxsI2FD,MAwsI1G,OAAgH0rc,GAAhHxrc,QAAgHwrc,GAAhH,YAKA,MAAM3mc,GAAkBxC,QAAQyC,QAAQ,MAClCwoc,GAAY,UA0BlB,MAAMC,GACF3wc,YAAY8K,EAASD,EAAU6gB,GAAa1gB,GAAQ+6K,GAAUjiB,GAAgB73J,IAC1E/L,KAAK4K,QAAUA,EACf5K,KAAK2K,SAAWA,EAChB3K,KAAKwrB,YAAcA,GACnBxrB,KAAK8K,OAASA,GACd9K,KAAK6lL,SAAWA,GAChB7lL,KAAK4jK,eAAiBA,GAItB5jK,KAAKopM,YAAe,QAAIxtL,WAIxB5b,KAAKoN,UAAW,EAIhBpN,KAAKqpM,UAAW,EAKhBrpM,KAAKouc,OAAS,IAKdpuc,KAAKquc,kBAAoB,IAKzBruc,KAAKuuc,iBAAkB,EAIvBvuc,KAAK0wc,aAAc,EAMnB1wc,KAAK2wc,gBAAiB,EAItB3wc,KAAK+T,SAAW,EAqBhB/T,KAAKkP,QAAU,IAAIhE,MAqBnBlL,KAAKmP,OAAS,IAAIjE,MAIlBlL,KAAK+wL,YAAc,IAAI7lL,MACvBlL,KAAK+jK,aAAc,EACnB/jK,KAAK4wc,YAAa,EAClB5wc,KAAK6wc,aAAe,CAChB,IAAK,aACL,IAAK,OACL,EAAK,OACL,EAAK,SACL,IAAK,aACL98U,EAAK,cACLC,EAAK,IACLS,EAAK,WACLt3F,EAAK,iBAETn9B,KAAK8oc,UAAW,EAChB9oc,KAAKiU,UAAY,CAAC,EAAG,GACrBjU,KAAKsL,MAAQ,SACbtL,KAAKuL,SAAW,SAChBvL,KAAKwL,UAAY,QAIjBxL,KAAK+iB,YAAc,KACf/iB,KAAKgX,SAAU,EACXhX,KAAK0wc,aAAe1wc,KAAK8wc,YACzB9wc,KAAK+wc,YAAY/wc,KAAK4K,QAAQwkc,QAAQpvc,KAAKkI,QAC3ClI,KAAK8K,OAAO+E,kBAAkB,KAC1B6C,WAAW,KAAQ1S,KAAKwlB,aAAa,EAAG,EAArB,EAA4B,EAArC,KADd,EAIA/T,OAAazR,KAAKkP,UAClBlP,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkP,QAAQkB,MAAb,EADJ,EAQRpQ,KAAKg0L,YAAc,KACf,GAAIh0L,KAAKgX,UAAYhX,KAAK4wc,WAAY,CAClC5wc,KAAK4wc,YAAa,EAClB,MAAQrkQ,kBAAgBC,iBAAiBxsM,KAAK0Q,MAAMvE,cAChDogM,KAAmBC,IACnBxsM,KAAKgxc,mBAEZ,GAKLhxc,KAAKsjM,WAAa,KACdtjM,KAAK4jK,eAAehmJ,eACpB5d,KAAKgX,SAAU,EACfhX,KAAK4wc,YAAa,EACd5wc,KAAK0wc,aAAe1wc,KAAK8wc,WACzB9wc,KAAK+wc,YAAY/wc,KAAKivc,eAAtB,EAEAx9b,OAAazR,KAAKmP,SAAW4uK,GAAmB/9K,KAAKk+K,WACrDl+K,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKixc,YACLjxc,KAAKmP,OAAOiB,MAAZ,EAFJ,EAMRpQ,KAAKk9O,SAAY/9D,OACjBn/K,KAAKixc,UAAY,QAAS,EAC1Bplc,MAAgBrE,IAChBxH,KAAK8L,UAAYC,GAAM,MAAQ,MAC/B/L,KAAKkxc,eACR,CAUGjjc,SAAKA,GACL,MAAMC,EAAUD,GAxMD,SAyMfjO,KAAKmO,cAAcD,EAAS,QAC5BlO,KAAKsL,MAAQ4C,CAChB,CACGD,WACA,OAAOjO,KAAKsL,KACf,CAUG8C,YAAQA,GACR,MAAMC,EAAaD,GAxND,SAyNlBpO,KAAKmO,cAAcE,EAAY,WAC/BrO,KAAKuL,SAAW8C,CACnB,CACGD,cACA,OAAOpO,KAAKuL,QACf,CAUGrB,aAASA,GACT,MAAMoE,EAAcpE,GAxOA,QAyOpBlK,KAAKmO,cAAcG,EAAa,YAChCtO,KAAKwL,UAAY8C,CACpB,CACGpE,eACA,OAAOlK,KAAKwL,SACf,CAIG+8P,UAAMrgQ,GACNlI,KAAKmxc,OAAS9xb,OAAOC,OAAO,GAAItf,KAAK6wc,aAAc3oc,EACtD,CACGqgQ,YACA,OAAOvoQ,KAAKmxc,QAAUnxc,KAAK6wc,YAC9B,CAIGtkc,aAASA,GACTvM,KAAK+T,SAAWxH,CACnB,CACGA,eACA,OAAOvM,KAAK+T,QACf,CACGq9b,wBACA,OAAOpxc,KAAKoN,QACf,CACDkC,WACQtP,KAAKwrB,aACLxrB,KAAK2K,SAAS2G,gBAAgBtR,KAAKwrB,YAAYrf,cAAe,YAElEnM,KAAKk+K,QAAUl+K,KAAK6lL,SAAS9lK,IAAI0iL,KAAW,KAC/C,CACDjyL,kBAC0B,CAAC,OAAQ,UAAW,YAC5BC,QAAQC,IAClB1Q,KAAKmO,cAAcnO,KAAK0Q,GAAQA,EAAhC,EAEP,CAKDo2C,UACI,GAAI9mD,KAAK0Q,MACL,OAAQ2hC,QAAQryC,KAAK0Q,MAAMvE,cAAcjE,MAEhD,CAIDmpc,iBACI,OAAO,CACV,CAgBDjgc,SACSpR,KAAK0Q,QAGV1Q,KAAK0Q,MAAMvE,cAAciF,QACzBpR,KAAKgxc,oBACR,CAIDjjc,QACS/N,KAAK0Q,OAGV1Q,KAAK0Q,MAAMvE,cAAc4B,MAC5B,CAIDujc,aAAa7sb,GACT,MAAQ8nL,iBAAgBC,iBAAiB/nL,EAAE5H,OACvC2vL,KAAiBD,IAGrBvsM,KAAK8oc,UAAW,EAChB9oc,KAAKiU,UAAY,CAACs4L,EAAgBC,IACrC,CAID+kQ,aAAa9sb,GACT,MAAMvc,EAAQuc,EAAE5H,OAAO3U,OAChByS,GAAOG,IAAO9a,KAAKiU,UAC1B,IAAKjU,KAAK8oM,KAGN,OAFA9oM,KAAKwxc,sBAAsBtpc,QAC3BlI,KAAK8oc,UAAW,GAGpB,IAAIl3a,GACJ,GAAI5xB,KAAK8oc,SAAU,CACf9oc,KAAK8oc,UAAW,EAChB,MAAM1sU,GAAYp8H,KAAKivc,YAAY3uc,OAASwa,GACtCk8B,GAAK9uC,EAAM5H,OAAS87H,GAC1BxqG,GAAS5xB,KAAK4K,QAAQ8kc,YAAYxnc,EAAMxG,MAAMiZ,GAAOq8B,IAAKh3C,KAAKivc,YAAat0b,GAAOG,GACtF,MAEG8W,GAAS5xB,KAAK4K,QAAQ0kc,UAAUpnc,EAAOlI,KAAKivc,aAAe,GAAIxqb,EAAE5H,OAAO0vL,gBAE5EvsM,KAAK+wc,YAAYn/a,GAAO1pB,MAAO0pB,GAAO3d,WACtCjU,KAAKwxc,sBAAsB5/a,GAAO1pB,MACrC,CAIDmI,YAAYpE,GAIR,GAHIA,EAAQ/D,QACRlI,KAAKkI,MAAQlI,KAAK45P,mBAEjB55P,KAAK8oM,KAEN,YADA9oM,KAAK+wc,YAAY/wc,KAAKkI,OAG1B,MAAMjD,EAAOjF,KAAKyxc,eAAexlc,GACjCjM,KAAKkxc,cAAcjsc,GACnB,MAAMgqc,GAAcjvc,KAAK4K,QAAQwkc,QAAQpvc,KAAKkI,OAC9ClI,KAAK+wc,YAAY9B,GAAa,MAAM,IAChChjc,EAAQsic,oBAAmBh+b,OAAU,oBAAqBtE,KAC1DlE,GAAgBM,KAAK,KACjBrI,KAAKwxc,sBAAsBxxc,KAAKivc,YAAhC,EAGX,CAKDl6Q,WAAW7sL,GACPlI,KAAKkI,MAAQlI,KAAK45P,eAAe1xP,GACjClI,KAAK+wc,YAAY/wc,KAAK4K,QAAQwkc,QAAQpvc,KAAKkI,QACvClI,KAAKuuc,iBACLvuc,KAAKq4P,YAAYr4P,KAAKivc,YAE7B,CAKDj6Q,iBAAiBxkK,GACbxwB,KAAKk9O,SAAW1sN,CACnB,CAKDykK,kBAAkBzkK,GACdxwB,KAAKixc,UAAYzgb,CACpB,CAQD0kK,iBAAiB/pL,GACbnL,KAAK4jK,eAAehmJ,eACpB5d,KAAKoN,SAAWjC,CACnB,CAIDkvH,SAAS8kD,GAIL,OAH4B,IAAxBn/K,KAAK2wc,gBAA6B3wc,KAAK8oM,MAGtC9oM,KAAK4K,QAAQokc,gBAAgBhvc,KAAKivc,eAGO,IAA1Cjvc,KAAKivc,YAAYhuc,QAAQjB,KAAKouc,QACvB,CACHsD,aAAc,CACV5oQ,KAAM9oM,KAAK8oM,KACXmmQ,YAAajvc,KAAKivc,YAClB/mc,MAAOlI,KAAKkI,QAPb,IAYd,CAIDspc,sBAAsBvC,GAClBjvc,KAAKq4P,YAAY42M,IAAjB,EACIx9b,OAAazR,KAAK+wL,cAClB/wL,KAAK+wL,YAAY3gL,KAAKpQ,KAAKkI,MAElC,CACDmwP,YAAYnwP,IACJlI,KAAK8oM,MAAS9oM,KAAK4K,QAAQokc,gBAAgB9mc,IAAWlI,KAAKuuc,gBAI3Dvuc,KAAKkI,MAAQlI,KAAK4K,QAAQukc,SAASjnc,GAHnClI,KAAKkI,MAAQ,GAKjBlI,KAAKk9O,SAASl9O,KAAKkI,MACtB,CACD6oc,YAAY9B,EAAc,GAAIh7b,EAAW09b,IACrC,GAAIA,IAAmB1C,IAAgBjvc,KAAKivc,YACxC,OAEJjvc,KAAKivc,YAAcA,EACnB,MAAM/mc,GAAQlI,KAAK0wc,cAAgB1wc,KAAKgX,SAAWhX,KAAK8wc,UAAY,GAAK7B,EACzEjvc,KAAK2K,SAASqD,YAAYhO,KAAK0Q,MAAMvE,cAAe,QAASjE,SAC3C6M,IAAdd,GACAjU,KAAKwlB,aAAavR,EAAWA,EAEpC,CACDw9b,eAAexlc,GACX,OAAOoT,OAAOsa,KAAK1tB,GAASqJ,OAAOskB,GAAe,UAARA,GAAiBjU,OAAO,CAACoN,EAAK6G,MACpE7G,EAAI6G,IAAO3tB,EAAQ2tB,IAAKhZ,aACjBmS,GACR,GACN,CACDm+a,cAAcpxM,GACV,MAAM//P,EAASsf,OAAOC,OAAO,CACzBivb,gBAAiBvuc,KAAKuuc,gBACtBzlQ,KAAM9oM,KAAK8oM,KACXslQ,OAAQpuc,KAAKouc,OACbC,kBAAmBruc,KAAKquc,kBACxB9lM,MAAOvoQ,KAAKuoQ,OACbzI,GACH9/P,KAAK4K,QAAQg9D,OAAO7nE,EACvB,CACDylB,aAAa7K,EAAQ3a,KAAKiU,UAAU,GAAI6G,EAAM9a,KAAKiU,UAAU,IACrDjU,KAAKgX,SACLsqb,GAAoBthc,KAAK0Q,MAAO,oBAAqBiK,EAAOG,EAEnE,CACGg2b,gBACA,OAAO9wc,KAAK4K,QAAQwkc,YAAcpvc,KAAKivc,WAC1C,CACD+B,oBACI,MAAMzkQ,EAAiBvsM,KAAK0Q,MAAMvE,cAAcogM,eAC1C//L,EAAQxM,KAAKivc,YAAcjvc,KAAKivc,YAAYhuc,QAAQjB,KAAKouc,QAAU,EACrE5hc,GAAS,GAAKA,EAAQ+/L,IACtBvsM,KAAKiU,UAAY,CAACzH,EAAOA,GACzBxM,KAAKwlB,eAEZ,CACGxO,cACA,OAAOhX,KAAK0O,SACf,CACGsI,YAAQ9O,GACR,GAAIlI,KAAK0O,YAAcxG,GAASlI,KAAKwrB,YAAa,CAC9C,MAAM9iB,EAAU1I,KAAKwrB,YAAYrf,cAC7BjE,EACAlI,KAAK2K,SAASyH,SAAS1J,EAAS8nc,IAGhCxwc,KAAK2K,SAASqI,YAAYtK,EAAS8nc,IAEvCxwc,KAAK0O,UAAYxG,CACpB,CACJ,CACD0xP,eAAe1xP,EAAQlI,KAAKkI,OACxB,MAAM0pc,EAAU3pc,GAAUC,GAC1B,GAAI0pc,GAA4B,iBAAV1pc,EAAoB,CACtC,MAAIoO,SACA,MAAM,IAAI/V,MAAM,4DAEpB,OAAOG,OAAOwH,EACjB,CACD,OAAO0pc,EAAU1pc,EAAQ,EAC5B,CACDiG,cAAcjG,EAAOwI,GACjB,MAAMuC,GAAOjT,KAAKwrB,YAAYrf,cACxBQ,GAAUlD,GAAkB,QAASiH,EAAO1Q,KAAK0Q,GAAQxI,GAC3DyE,GAAQ7C,UACR9J,KAAK2K,SAASqI,YAAYC,GAAMtG,GAAQ7C,UAExC6C,GAAQ5C,OACR/J,KAAK2K,SAASyH,SAASa,GAAMtG,GAAQ5C,MAE5C,EAEL0mc,GAAuB1tc,UAAvB,0BAAoH0tc,IAjuJVztc,MAiuJkD0rc,IAjuJlD1rc,MAiuJ6EA,OAjuJ7EA,MAiuJsGA,OAjuJtGA,MAiuJgIA,OAjuJhIA,MAiuJsJA,OAjuJtJA,MAiuJ8KA,OAjuJ9KA,MAiuJ+M8/M,MAAzT,KACA2tP,GAAuBl6b,UAluJmFvT,MAkuJ1G,MAAwGytc,GAAxGl9b,oEAluJ0GvQ,KAkuJ1G6uc,kBAluJ0G7uc,MAkuJ1GyT,GAluJ0GzT,WAkuJ1GwQ,+DAluJ0GxQ,MAkuJ1G,4BAAwGwQ,kBAAxG,EAluJ0GxQ,CAkuJ1G,4BAAwGwQ,kBAAxG,SAluJ0GxQ,MAkuJ1G,mBAluJ0GA,MAkuJ1G,wBAluJ0GA,CAkuJ1G,gCAluJ0GA,CAkuJ1G,6fAluJ0GA,MAkuJwyB,CAC14B0rc,GACA,CACIpoc,OAAO,EACPH,QAASiqL,KACTlyK,eAAaC,OAAW,IAAMsyb,KAElC,CACInqc,OAAO,EACPH,QAASoqL,KACTryK,eAAaC,OAAW,IAAMsyb,KAElC,CACItqc,QAASutK,MACTx1J,eAAaC,OAAW,IAAMsyb,OAhvJgEztc,OAkuJ1Guf,6PAluJ0Gvf,MAmvJlG,eAjBR,MAluJ0GA,MA0vJ9F,mBA1vJ8FA,CA0vJ9F,sBA1vJ8FA,CA0vJ9F,sBA1vJ8FA,CA0vJ9F,sBA1vJ8FA,CA0vJ9F,4BA1vJ8FA,MA0vJ9F,kFA1vJ8FA,MA4vJ9F,iBA1BZ,gBAqC4C6e,OArC5CpJ,kBA4JA,MAAMq5b,IAENA,GAAoB/uc,UAApB,0BAAiH+uc,GAAjH,EACAA,GAAoBrrc,UAj4JsFzD,MAi4J1G,MAAkH8uc,KAMlHA,GAAoBprc,UAv4JsF1D,MAu4J1G,UAAiJ,CAAC8T,MAAcy6J,MAAiB9jJ,MAAckhJ,OAAqB4C,MAC5M9jJ,MACAkhJ,SAsBR,MAAMojS,WAAsC3P,GACxCtic,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,CACG0X,eACA,OAAO,CACV,EAELyvb,GAA8Bhvc,UAA9B,0BAA2Hgvc,IAx6JjB/uc,MAw6JgEqQ,OAA1K,EACA0+b,GAA8Bx7b,UAz6J4EvT,MAy6J1G,MAA+G+uc,GAA/Gx+b,gDAz6J0GvQ,MAy6JkF,CACpL,CACImD,QAASi8b,GACTlkb,eAAaC,OAAW,IAAM4zb,OA56JgE/uc,OAy6J1Guf,0DAoDA,MAAMyvb,IAENA,GAAajvc,UAAb,0BAA0Givc,GAA1G,EACAA,GAAavrc,UAh+J6FzD,MAg+J1G,MAA2Ggvc,KAM3GA,GAAatrc,UAt+J6F1D,MAs+J1G,UAAmI,CAAC8T,MAAcg7b,OAsBlJ,MAAMG,WAA2CzN,GAC7C1kc,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,CACG0X,eACA,OAAO,CACV,EAEL2vb,GAAmClvc,UAAnC,0BAAgIkvc,IArgKtBjvc,MAqgK0EqQ,OAApL,EACA4+b,GAAmC17b,UAtgKuEvT,MAsgK1G,MAAoHivc,GAApH1+b,qDAtgK0GvQ,MAsgKiG,CACnM,CACImD,QAASq+b,GACTtmb,eAAaC,OAAW,IAAM8zb,OAzgKgEjvc,OAsgK1Guf,0DAoDA,MAAM2vb,IAENA,GAAkBnvc,UAAlB,0BAA+Gmvc,GAA/G,EACAA,GAAkBzrc,UA7jKwFzD,MA6jK1G,MAAgHkvc,KAMhHA,GAAkBxrc,UAnkKwF1D,MAmkK1G,UAA6I,CAAC8T,MAAcg7b,OAsB5J,MAAMK,WAAsCt0b,GACxC/d,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,CACG0X,eACA,OAAO,CACV,EAEL6vb,GAA8Bpvc,UAA9B,0BAA2Hovc,IAlmKjBnvc,MAkmKgEqQ,OAA1K,EACA8+b,GAA8B57b,UAnmK4EvT,MAmmK1G,MAA+Gmvc,GAA/G5+b,gDAnmK0GvQ,MAmmKkF,CACpL,CACImD,QAAS0X,GACTK,eAAaC,OAAW,IAAMg0b,OAtmKgEnvc,OAmmK1Guf,0DAmDA,MAAM6vb,IAENA,GAAarvc,UAAb,0BAA0Gqvc,GAA1G,EACAA,GAAa3rc,UAzpK6FzD,MAypK1G,MAA2Govc,KAK3GA,GAAa1rc,UA9pK6F1D,MA8pK1G,UAAmI,CAAC8T,MAAc2W,MAAckhJ,UAiDhK,MAAMu7J,IAENA,GAAqBnnU,UAArB,0BAAkHmnU,GAAlH,EACAA,GAAqBzjU,UAltKqFzD,MAktK1G,MAAmHknU,KAInHA,GAAqBxjU,UAttKqF1D,MAstK1G,UAAmJ,CAAC8T,MAAc2W,UAgDlK,MAAM4kb,IAENA,GAAoBtvc,UAApB,0BAAiHsvc,GAAjH,EACAA,GAAoB5rc,UAzwKsFzD,MAywK1G,MAAkHqvc,KAClHA,GAAoB3rc,UA1wKsF1D,MA0wK1G,UAAiJ,CAAC8T,MAAc2W,UA8ChK,MAAM6kb,GACFxyc,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAEL06b,GAA+Bvvc,UAA/B,0BAA4Huvc,IA7zKlBtvc,MA6zKkEA,MAA5K,KACAsvc,GAA+Bh/b,UA9zK2EtQ,MA8zK1G,MAAgHsvc,GAAhH/+b,mDA2BA,MAAMg/b,GACFzyc,YAAY8X,GACR5X,KAAK4X,YAAcA,CACtB,EAEL26b,GAA+Bxvc,UAA/B,0BAA4Hwvc,IA91KlBvvc,MA81KkEA,MAA5K,KACAuvc,GAA+Bj/b,UA/1K2EtQ,MA+1K1G,MAAgHuvc,GAAhHh/b,mDAaA,MAAMi/b,WAAwB10b,OAE9B00b,GAAgBzvc,UAAhB,oDA92K0GC,MA82KGwvc,MAA7Gz0b,GAA6Gy0b,GAA7G,KACAA,GAAgBl/b,UA/2K0FtQ,MA+2K1G,MAAiGwvc,GAAjGj/b,6EA/2K0GvQ,SA63K1G,MAAMyvc,WAA0CD,GAC5C1yc,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,EAEL6nc,GAAkC1vc,UAAlC,0BAA+H0vc,IAn4KrBzvc,MAm4KwEqQ,OAAlL,EACAo/b,GAAkCn/b,UAp4KwEtQ,MAo4K1G,MAAmHyvc,GAAnHl/b,8DAp4K0GvQ,MAo4KoG,CACtM,CACImD,QAASqsc,GACTt0b,eAAaC,OAAW,IAAMs0b,OAv4KgEzvc,SAu5K1G,MAAM0vc,GAAY,UAIlB,MAAMC,GACF7yc,YAAYyjB,EAAqBzY,EAAQ84J,GAAgBj5J,GAAUk7K,GAAUr6J,IACzExrB,KAAKujB,oBAAsBA,EAC3BvjB,KAAK8K,OAASA,EACd9K,KAAK4jK,eAAiBA,GACtB5jK,KAAK2K,SAAWA,GAChB3K,KAAK6lL,SAAWA,GAChB7lL,KAAKwrB,YAAcA,GAInBxrB,KAAKopM,YAAe,QAAIxtL,WAIxB5b,KAAKymB,MAAQ,GAMbzmB,KAAKoN,UAAW,EAMhBpN,KAAKqpM,UAAW,EAMhBrpM,KAAK+T,SAAW,EAIhB/T,KAAKkI,MAAQ,KAMblI,KAAK6oc,eAAgB,EAYrB7oc,KAAK4yc,iBAAkB,EAYvB5yc,KAAK6yc,eAAgB,EAMrB7yc,KAAKgjP,aAAc,EASnBhjP,KAAK+wL,YAAc,IAAI7lL,MAIvBlL,KAAK8yc,WAAa,IAAI5nc,MAItBlL,KAAK+yc,UAAY,IAAI7nc,MAqBrBlL,KAAKkP,QAAU,IAAIhE,MAqBnBlL,KAAKmP,OAAS,IAAIjE,MAClBlL,KAAK+jK,aAAc,EACnB/jK,KAAK6b,YAAa,EAClB7b,KAAK4gU,8BAA+B,EACpC5gU,KAAKsL,MAAQ,SACbtL,KAAKuL,SAAW,SAChBvL,KAAKwL,UAAY,QAIjBxL,KAAKgzc,iBAAmB,KACfhzc,KAAKoN,WACFpN,KAAK6oc,eAAiB7oc,KAAKkI,OAC3BlI,KAAK8K,OAAO4G,IAAI,KACZgB,WAAW,KAAQ1S,KAAKwqR,WAAL,EAAT,IADd,EAIA/4Q,OAAazR,KAAKkP,WACblP,KAAK0O,WACN1O,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkP,QAAQkB,MAAb,KADJ,EAKJqB,OAAazR,KAAK8yc,eACb9yc,KAAK4gU,8BAAiC5gU,KAAK4gU,8BAAgC5gU,KAAKizc,qBACjFjzc,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK8yc,WAAW1ic,MAAhB,GAIZpQ,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK0O,WAAY,IADrB,EAQR1O,KAAKkzc,gBAAkB,KACnBlzc,KAAK4jK,eAAehmJ,iBAApB,EACInM,OAAazR,KAAK+yc,YAAch1R,GAAmB/9K,KAAKk+K,WACxDl+K,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK6ic,YACL7ic,KAAK+yc,UAAU3ic,MAAf,EAFJ,EASRpQ,KAAKmtM,YAAe+c,KAChB,MAAMrtM,GAASqtM,GAAGrtM,OACZs2b,GA3TA7lc,MACd,MAAMC,KAAiBC,OAAqBF,IACtCG,KAAWC,OAAeJ,IAChC,OAAQC,GAAkBA,EAAeknI,QAAYhnI,GAAiC,iBAArBA,EAASG,OAAY,EAwTtDwlc,CAAStlc,UAAUR,WACrC+tZ,GAAgB83C,IAlTdzic,KACM,0HACDhM,KAAKgM,IAgTuB2ic,CAAWx2b,GAAO3U,OAASgiN,GAAG3qM,KAAO1C,GAAO3U,OAC9Eorc,GAAYC,IAAY,CAAC12b,GAAO0vL,eAAgB1vL,GAAO2vL,cAC9DxsM,KAAKq4P,YAAYgjK,IACb83C,IACAt2b,GAAOiwL,kBAAkBwmQ,GAAYC,GAArC,EAGRvzc,KAAK4ic,SAAYzjR,OACjBn/K,KAAK6ic,UAAY,QAAS,EAC1Bh3b,MAAgBrE,IAChBxH,KAAK8L,UAAYyX,EAAoBxX,IAAM,MAAQ,KACtD,CAWGkC,SAAKA,GACL,MAAMC,EAAUD,GApND,SAqNfjO,KAAKmO,cAAcD,EAAS,QAC5BlO,KAAKsL,MAAQ4C,CAChB,CACGD,WACA,OAAOjO,KAAKsL,KACf,CAYG8C,YAAQA,GACR,MAAMC,EAAaD,GAtOD,SAuOlBpO,KAAKmO,cAAcE,EAAY,WAC/BrO,KAAKuL,SAAW8C,CACnB,CACGD,cACA,OAAOpO,KAAKuL,QACf,CAWGrB,aAASA,GACT,MAAMoE,EAAcpE,GAvPA,QAwPpBlK,KAAKmO,cAAcG,EAAa,YAChCtO,KAAKwL,UAAY8C,CACpB,CACGpE,eACA,OAAOlK,KAAKwL,SACf,CAIGe,aAASA,GACTvM,KAAK+T,SAAWxH,CACnB,CACGA,eACA,OAAOvM,KAAK+T,QACf,CACGO,oBACA,OAAOtU,KAAKoN,QACf,CACDkC,WACItP,KAAKk+K,QAAUl+K,KAAK6lL,SAAS9lK,IAAI0iL,KAAW,MAC5CziM,KAAKwzc,mBACLxzc,KAAKknB,cAAgBlnB,KAAKujB,oBAAoBtX,QAAQC,UAAU,EAAGH,UAC/D/L,KAAK8L,UAAYC,EAAM,MAAQ,OAEtC,CACDyE,kBACI,MAAMgb,EAAcxrB,KAAKwrB,YAAYrf,cACrC,IAAIg4b,GAAsB,EACtBD,IAAU,EACdlkc,KAAK8K,OAAO+E,kBAAkB,KAE1B7P,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,UAAW,KAC3DxrB,KAAK0O,WACN1O,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkP,QAAQkB,OACbpQ,KAAK0O,WAAY,GAFrB,IAMR1O,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,WAAapR,MAC7Dpa,KAAK0O,YAGNw1b,IACuBz7b,GAAQ2R,GAAK1E,cAAgBhN,IAAYA,KAAY1I,KAAKwrB,YAAYrf,gBAEzFnM,KAAKsjM,aAET4gQ,IAAU,IAGLC,IAAwBnkc,KAAKizc,oBAC9Bjzc,KAAKsjM,aAAL,IAIZtjM,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,aAAc,KACnE24a,GAAsB,KAE1Bnkc,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,aAAc,KACnE24a,GAAsB,KAE1Bnkc,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,UAAYpR,KAE7D8pb,GADA9pb,GAAKlK,UAAYC,SAIP,GALlB,GASkB,CAAC,OAAQ,UAAW,YAC5BM,QAAQC,KAClB1Q,KAAKmO,cAAcnO,KAAK0Q,IAAQA,GAAhC,EAEP,CACDL,YAAYpE,IACJA,EAAQmB,UAAYnB,EAAQo9L,UAAYp9L,EAAQ/D,QAChDlI,KAAKwzc,kBAEZ,CACD3ic,cACQ7Q,KAAKknB,eACLlnB,KAAKknB,cAAcjW,aAE1B,CAgBDG,SACSpR,KAAK0Q,QAGV1Q,KAAK4gU,8BAA+B,EACpC5gU,KAAK0O,WAAY,EACjB1O,KAAK0Q,MAAMvE,cAAciF,QACzBpR,KAAK4gU,8BAA+B,EACvC,CAID7yT,OACI/N,KAAK4gU,8BAA+B,EACpC,MAAM6yI,EAAmBzzc,KAAKwrB,YAAYrf,cAAc8e,cAAc,UAClEwob,GACAA,EAAiB1lc,OAErB/N,KAAK0O,WAAY,EACjB1O,KAAK4gU,8BAA+B,CACvC,CAIDlsR,aACI,OAAO10C,KAAKujB,oBAAoBxD,IAAI,QACvC,CAIDyzb,mBACIxzc,KAAK0zc,iBACA1zc,KAAKoN,WACDpN,KAAKqpM,UACNrpM,KAAKgjP,eACHhjP,KAAKkI,KAClB,CAIDy8O,WAAWz6B,GACHA,GACAA,EAAGr2M,iBAEP7T,KAAKizc,oBAAqB,EAC1Bjzc,KAAK0Q,MAAMvE,cAAcjE,MAAQ,GACjClI,KAAK0Q,MAAMvE,cAAciF,QACzBpR,KAAKq4P,YAAY,IACjBr4P,KAAKwzc,mBACLxzc,KAAKizc,oBAAqB,CAC7B,CAIDl+Q,WAAW7sL,GACPlI,KAAKkI,MAAQA,EACblI,KAAKwzc,kBACR,CAIDx+Q,iBAAiBxkK,GACbxwB,KAAK4ic,SAAWpya,CACnB,CAIDykK,kBAAkBzkK,GACdxwB,KAAK6ic,UAAYrya,CACpB,CAQD0kK,iBAAiB/pL,GACbnL,KAAK4jK,eAAehmJ,eACpB5d,KAAKoN,SAAWjC,CACnB,CAIDwoc,oBACI,IAAK3zc,KAAKk+K,QACN,OAAO,EAEX,MAAQu1N,UAAS7wR,QAAOq7D,YAAYj+K,KAAKk+K,QACzC,OAAOu1N,IAAY7wR,GAASq7D,GAC/B,CAID21R,qBACI,IAAK5zc,KAAKk+K,QACN,OAAO,EAEX,MAAQgtH,QAAOtoL,QAAOq7D,YAAYj+K,KAAKk+K,QACvC,OAAOgtH,IAAUtoL,GAASq7D,GAC7B,CAIG41R,yBACA,OAAO7zc,KAAK8zc,YACL,GAAE9zc,KAAK8zc,cACP,0CACV,CAIGC,uBACA,OAAO/zc,KAAKg0c,UACL,GAAEh0c,KAAKg0c,YACP,4CACV,CAIGC,yBACA,OAAOj0c,KAAKk0c,gBACNl0c,KAAKk0c,gBACJ,cACV,CAIGC,gBACA,MAA8B,YAAvBn0c,KAAK6yc,cACN7yc,KAAK2zc,oBACL3zc,KAAK6yc,aACd,CAIGuB,mBACA,MAAgC,YAAzBp0c,KAAK4yc,gBACN5yc,KAAK4zc,qBACL5zc,KAAK4yc,eACd,CACDptb,aAAa7K,EAAOG,GACZ9a,KAAK0O,WACL4yb,GAAoBthc,KAAK0Q,MAAO,oBAAqBiK,EAAOG,EAEnE,CACD0vQ,YACQxqR,KAAKkI,OACLlI,KAAKwlB,aAAa,EAAGxlB,KAAKkI,MAAM5H,OAEvC,CACD+3P,YAAYnwP,GACH41b,GAAQ99b,KAAKkI,MAAOA,IACrBlI,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkI,MAAQA,EACblI,KAAK4ic,SAAS16b,GACdlI,KAAK+wL,YAAY3gL,KAAKlI,GACtBlI,KAAKwzc,mBACLxzc,KAAK4jK,eAAehmJ,cAApB,EAGX,CACGlP,gBACA,OAAO1O,KAAK6b,UACf,CACGnN,cAAUxG,GACV,GAAIlI,KAAK6b,aAAe3T,GAASlI,KAAKwrB,YAAa,CAC/C,MAAM9iB,EAAU1I,KAAKwrB,YAAYrf,cAC7BjE,IAAUlI,KAAKoN,SACfpN,KAAK2K,SAASyH,SAAS1J,EAASgqc,IAGhC1yc,KAAK2K,SAASqI,YAAYtK,EAASgqc,IAEvC1yc,KAAK6b,WAAa3T,CACrB,CACJ,CACDo7L,aACItjM,KAAK8K,OAAO4G,IAAI,KACP1R,KAAK4gU,8BACN5gU,KAAKmP,OAAOiB,OAEhBpQ,KAAK0O,WAAY,GAExB,CACDP,cAAcjG,EAAOwI,GACjB,MAAMuC,GAAOjT,KAAKwrB,YAAYrf,cACxBQ,GAAUlD,GAAkB,QAASiH,EAAO1Q,KAAK0Q,GAAQxI,GAC3DyE,GAAQ7C,UACR9J,KAAK2K,SAASqI,YAAYC,GAAMtG,GAAQ7C,UAExC6C,GAAQ5C,OACR/J,KAAK2K,SAASyH,SAASa,GAAMtG,GAAQ5C,MAE5C,EAEL4oc,GAAiB5vc,UAAjB,0BAA8G4vc,IA37LJ3vc,MA27LsCqQ,OA37LtCrQ,MA27LyEA,OA37LzEA,MA27L+FA,OA37L/FA,MA27LgIA,OA37LhIA,MA27LyJA,OA37LzJA,MA27LiLA,OAA3R,EACA2vc,GAAiBp8b,UA57LyFvT,MA47L1G,MAAkG2vc,GAAlGp/b,uEA57L0GvQ,MA47L1GwT,GAS2E87b,GAT3E,GA57L0Gtvc,MA47L1GwT,GAS0L+7b,GAT1L,gBA57L0Gvvc,MA47L1GyT,GA57L0GzT,WA47L1GwQ,2BA57L0GxQ,MA47L1GyT,GA57L0GzT,WA47L1GwQ,6DA57L0GxQ,KA47L1G6uc,kBA57L0G7uc,MA47L1GyT,GA57L0GzT,WA47L1GwQ,gEA57L0GxQ,MA47L1G,mBA57L0GA,MA47L1G,6BA57L0GA,CA47L1G,0BA57L0GA,CA47L1G,0mBA57L0GA,MA47L+zB,CACj6ByQ,MACA,CAAEtN,QAASuN,MAAalN,SAAU,iBAClC,CACIL,QAASiqL,KACTlyK,eAAaC,OAAW,IAAMw0b,IAC9Brsc,OAAO,GAEX,CAAEH,QAASutK,MAAYx1J,eAAaC,OAAW,IAAMw0b,OAp8L6C3vc,OA47L1Guf,oDAYmBH,yFAZnB,4gBA57L0Gpf,MAs8LlG,KAt8LkGA,MA08LlG,YA18LkGA,MA28L9F,iBA38L8FA,cAg9LlG,eAh9LkGA,MA+9LlG,mBA/9LkGA,MA4+LlG,mBA5+LkGA,MA6+LlG,mBA7+LkGA,MA8+LlG,YA9+LkGA,MA++L9F,iBA/+L8FA,SA47L1G,MA57L0GA,MA48LzF,GA58LyFA,MA48LzF,yBA58LyFA,MAk9L9F,GAl9L8FA,MAk9L9F,mBAl9L8FA,CAk9L9F,sBAl9L8FA,CAk9L9F,sBAl9L8FA,CAk9L9F,gBAl9L8FA,CAk9L9F,4BAl9L8FA,MAk9L9F,2DAl9L8FA,MAq9L9F,wCAr9L8FA,CAq9L9F,4BAr9L8FA,CAq9L9F,gBAr9L8FA,CAq9L9F,yBAr9L8FA,MAk+L7F,GAl+L6FA,MAk+L7F,0BAl+L6FA,MA4+L3F,GA5+L2FA,MA4+L3F,oBA5+L2FA,MA6+L3F,GA7+L2FA,MA6+L3F,uBA7+L2FA,MAg/LzF,GAh/LyFA,MAg/LzF,yBApDjB,gBAwD4Cyvc,GAA0FhkR,MAAmFA,MAA0H5sK,MAAqI4sK,OAxDxdh2K,kBAqMA,MAAM47b,WAAuC7B,GACzC1yc,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,CACG0X,eACA,OAAO,CACV,EAEL+xb,GAA+Btxc,UAA/B,0BAA4Hsxc,IA1oMlBrxc,MA0oMkEqQ,OAA5K,EACAghc,GAA+B99b,UA3oM2EvT,MA2oM1G,MAAgHqxc,GAAhH9gc,iDA3oM0GvQ,MA2oMqF,CACvL,CACImD,QAASqsc,GACTt0b,eAAaC,OAAW,IAAMk2b,OA9oMgErxc,OA2oM1Guf,0DAsCA,MAAM+xb,GACFx0c,cACIE,KAAK0jB,WAAY,CACpB,EAEL4wb,GAAwBvxc,UAAxB,0BAAqHuxc,GAArH,EACAA,GAAwB/9b,UAvrMkFvT,MAurM1G,MAAyGsxc,GAAzG/gc,6GAvrM0GvQ,MAurM1G,4FAsBA,MAAM8xN,IAENA,GAAa/xN,UAAb,0BAA0G+xN,GAA1G,EACAA,GAAaruN,UAhtM6FzD,MAgtM1G,MAA2G8xN,KAG3GA,GAAapuN,UAntM6F1D,MAmtM1G,IAwCA,MAAMonU,IAENA,GAAcrnU,UAAd,0BAA2GqnU,GAA3G,EACAA,GAAc3jU,UA9vM4FzD,MA8vM1G,MAA4GonU,KAY5GA,GAAc1jU,UA1wM4F1D,MA0wM1G,UAAqI,CAAC8T,MAAc2W,MAAcqnM,IAAernM,SA6BjL,MAAM8mb,GACFz0c,YAAYyjB,EAAqBzY,EAAQ84J,GAAgBj5J,GAAUk7K,GAAUr6J,IACzExrB,KAAKujB,oBAAsBA,EAC3BvjB,KAAK8K,OAASA,EACd9K,KAAK4jK,eAAiBA,GACtB5jK,KAAK2K,SAAWA,GAChB3K,KAAK6lL,SAAWA,GAChB7lL,KAAKwrB,YAAcA,GAInBxrB,KAAKymB,MAAQ,GAMbzmB,KAAKoN,UAAW,EAMhBpN,KAAKqpM,UAAW,EAIhBrpM,KAAKkI,MAAQ,KAMblI,KAAK6oc,eAAgB,EAKrB7oc,KAAK8yc,WAAa,IAAI5nc,MAKtBlL,KAAK+yc,UAAY,IAAI7nc,MACrBlL,KAAKknB,cAAgB,IAAItb,KACzB5L,KAAK6b,YAAa,EAClB7b,KAAK4gU,8BAA+B,EAIpC5gU,KAAKkzc,gBAAkB,KACnBlzc,KAAK4jK,eAAehmJ,iBAApB,EACInM,OAAazR,KAAK+yc,YAAch1R,GAAmB/9K,KAAKk+K,WACxDl+K,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK6ic,YACL7ic,KAAK+yc,UAAU3ic,MAAf,EAFJ,EAMRpQ,KAAK4ic,SAAYzjR,OACjBn/K,KAAK6ic,UAAY,MACpB,CACGvub,oBACA,OAAOtU,KAAKoN,QACf,CACDyD,cACI7Q,KAAKknB,cAAcjW,aACtB,CAQDikL,iBAAiB/pL,GACbnL,KAAK4jK,eAAehmJ,eACpB5d,KAAKoN,SAAWjC,CACnB,EAELopc,GAAexxc,UAAf,0BAA4Gwxc,IAv3MFvxc,MAu3MkCqQ,OAv3MlCrQ,MAu3MqEA,OAv3MrEA,MAu3M2FA,OAv3M3FA,MAu3M4HA,OAv3M5HA,MAu3MqJA,OAv3MrJA,MAu3M6KA,OAAvR,EACAuxc,GAAeh+b,UAx3M2FvT,MAw3M1G,MAAgGuxc,GAAhGhhc,qEAx3M0GvQ,KAw3M1G6uc,kBAx3M0G7uc,MAw3M1GyT,GAx3M0GzT,WAw3M1GwQ,gEAx3M0GxQ,MAw3M1G,mBAx3M0GA,MAw3M1G,uRAkCA,MAAMwxc,GAAgB,CAClBtzb,SAAY,oBACZD,WAAc,sBACdwzb,KAAQ,gBACR/1M,KAAQ,gBACRhuN,KAAQ,iBAENgka,GAAU,UAOhB,MAAMC,WAA0BJ,GAC5Bz0c,YAAYyjB,EAAqBzY,EAAQ84J,GAAgBj5J,GAAUk7K,GAAUr6J,IACzEvN,MAAMsF,EAAqBzY,EAAQ84J,GAAgBj5J,GAAUk7K,GAAUr6J,IACvExrB,KAAKujB,oBAAsBA,EAC3BvjB,KAAK8K,OAASA,EACd9K,KAAK4jK,eAAiBA,GACtB5jK,KAAK2K,SAAWA,GAChB3K,KAAK6lL,SAAWA,GAChB7lL,KAAKwrB,YAAcA,GAInBxrB,KAAKopM,YAAe,QAAIxtL,WACxB5b,KAAK+jK,aAAc,EASnB/jK,KAAK40c,KAAO,WAIZ50c,KAAK+T,SAAW,EAYhB/T,KAAKqtN,UAAY,WAqBjBrtN,KAAKkP,QAAU,IAAIhE,MAqBnBlL,KAAKmP,OAAS,IAAIjE,MAMlBlL,KAAK+wL,YAAc,IAAI7lL,MACvBlL,KAAKsL,MAAQ,SACbtL,KAAKuL,SAAW,SAChBvL,KAAKwL,UAAY,QAIjBxL,KAAKmtM,YAAe+c,KAChB,IAAImxM,GAAgBnxM,GAAGrtM,OAAO3U,MAC9BlI,KAAKq4P,YAAYgjK,IACjBr7Z,KAAKsmF,QAAL,EAKJtmF,KAAKgzc,iBAAmB,KACfhzc,KAAKoN,WACFpN,KAAK6oc,eAAiB7oc,KAAKkI,OAC3BlI,KAAK8K,OAAO4G,IAAI,KACZgB,WAAW,KAAQ1S,KAAKwqR,WAAL,EAAT,IADd,EAIA/4Q,OAAazR,KAAKkP,WACblP,KAAK0O,WACN1O,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkP,QAAQkB,MAAb,KADJ,EAKJqB,OAAazR,KAAK8yc,cACb9yc,KAAK4gU,8BACN5gU,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK8yc,WAAW1ic,MAAhB,IAIZpQ,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAK0O,WAAY,IADrB,GAIP,EACD7C,MAAgBrE,IAChBxH,KAAK8L,UAAYyX,EAAoBxX,IAAM,MAAQ,KACtD,CACG8oc,cACA,MAAqB,aAAd70c,KAAK40c,IACf,CACGE,cACA,MAAqB,eAAd90c,KAAK40c,IACf,CAIGroc,aAASA,GACTvM,KAAK+T,SAAWxH,CACnB,CACGA,eACA,OAAOvM,KAAK+T,QACf,CAWG9F,SAAKA,GACL,MAAMC,EAAUD,GAlKD,SAmKfjO,KAAKmO,cAAcD,EAAS,QAC5BlO,KAAKsL,MAAQ4C,CAChB,CACGD,WACA,OAAOjO,KAAKsL,KACf,CAWG8C,YAAQA,GACR,MAAMC,EAAaD,GAnLD,SAoLlBpO,KAAKmO,cAAcE,EAAY,WAC/BrO,KAAKuL,SAAW8C,CACnB,CACGD,cACA,OAAOpO,KAAKuL,QACf,CAWGrB,aAASA,GACT,MAAMoE,EAAcpE,GApMA,QAqMpBlK,KAAKmO,cAAcG,EAAa,YAChCtO,KAAKwL,UAAY8C,CACpB,CACGpE,eACA,OAAOlK,KAAKwL,SACf,CACDgF,kBACI,MAAMgb,EAAcxrB,KAAKwrB,YAAYrf,cACrC,IAAIg4b,GAAsB,EACtBD,IAAU,EACdlkc,KAAK8K,OAAO+E,kBAAkB,KAE1B7P,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,UAAW,KAC3DxrB,KAAK0O,WACN1O,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkP,QAAQkB,OACbpQ,KAAK0O,WAAY,GAFrB,IAMR1O,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,WAAapR,MAC7Dpa,KAAK0O,YAGNw1b,IACuBz7b,GAAQ2R,GAAK1E,cAAgBhN,IAAYA,KAAY1I,KAAKwrB,YAAYrf,gBAEzFnM,KAAKsjM,aAET4gQ,IAAU,GAGLC,GACDnkc,KAAKsjM,aAAL,IAIZtjM,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,aAAc,KACnE24a,GAAsB,KAE1Bnkc,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,aAAc,KACnE24a,GAAsB,KAE1Bnkc,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,UAAYpR,KAE7D8pb,GADA9pb,GAAKlK,UAAYC,SAIP,IAGlBnQ,KAAK+0c,YAAL,GAEkB,CAAC,OAAQ,UAAW,YAC5Btkc,QAAQC,KAClB1Q,KAAKmO,cAAcnO,KAAK0Q,IAAQA,GAAhC,EAEP,CACDpB,WACItP,KAAKk+K,QAAUl+K,KAAK6lL,SAAS9lK,IAAI0iL,KAAW,OAA7B,EACXp1L,UAA4C,SAAnBrN,KAAKqtN,YAC9BrtN,KAAKk1Z,sBAAqBv4Y,KAAUkV,OAAQ,UACvCpsB,QAAMmxM,MAAa,KACnB1qM,UAAU,IAAMlM,KAAKsmF,WAE1BtmF,KAAKwrB,aACLxrB,KAAK2K,SAAS2G,gBAAgBtR,KAAKwrB,YAAYrf,cAAe,YAElEnM,KAAKknB,cAAgBlnB,KAAKujB,oBAAoBtX,QAAQC,UAAU,EAAGH,UAC/D/L,KAAK8L,UAAYC,EAAM,MAAQ,OAEtC,CACDsE,YAAYpE,GACR,MAAMuf,EAAcxrB,KAAKwrB,YAAYrf,cAC/BzD,GAAU1I,KAAK0Q,MAAMvE,cACvBF,EAAQ2oc,MACR50c,KAAK+0c,aAEL9oc,EAAQohN,YACe,SAAnBrtN,KAAKqtN,WACLrtN,KAAK2K,SAASqI,YAAYtK,GAAS,sBACnC1I,KAAKmoc,cAAgBz/b,GAAQq2F,eAG7B/+F,KAAK2K,SAASyH,SAAS1J,GAAS,sBAChCA,GAAQ6iB,MAAMsL,OAAU,GAAE72B,KAAKmoc,oBAGnCl8b,EAAQizL,OACJj3L,GAAUgE,EAAQizL,KAAKt+K,cACvB5gB,KAAK2K,SAASyf,SAASoB,EAAa,QAAS,QAG7CxrB,KAAK2K,SAASsiL,YAAYzhK,EAAa,UAG3Cvf,EAAQ/D,OACRlI,KAAKsmF,QAEZ,CAIDyuG,WAAW7sL,GACPlI,KAAKkI,MAAQA,EACblI,KAAKsmF,QACR,CAID0uG,iBAAiBxkK,GACbxwB,KAAK4ic,SAAWpya,CACnB,CAIDykK,kBAAkBzkK,GACdxwB,KAAK6ic,UAAYrya,CACpB,CACD6nO,YAAYnwP,GACH41b,GAAQ99b,KAAKkI,MAAOA,IACrBlI,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKkI,MAAQA,EACblI,KAAK4ic,SAAS16b,GACdlI,KAAK+wL,YAAY3gL,KAAKlI,GACtBlI,KAAK4jK,eAAehmJ,cAApB,EAGX,CACD/M,cACIoN,MAAMpN,cACF7Q,KAAKk1Z,oBACLl1Z,KAAKk1Z,mBAAmBjkZ,aAE/B,CAIG2uT,qBACA,OAAO40I,GAAcx0c,KAAKqtN,UAC7B,CAgBDj8M,SACSpR,KAAK0Q,QAGV1Q,KAAK4gU,8BAA+B,EACpC5gU,KAAK0O,WAAY,EACjB1O,KAAK0Q,MAAMvE,cAAciF,QACzBpR,KAAK4gU,8BAA+B,EACvC,CAID7yT,OACI/N,KAAK4gU,8BAA+B,EACpC,MAAM6yI,EAAmBzzc,KAAKwrB,YAAYrf,cAAc8e,cAAc,UAClEwob,GACAA,EAAiB1lc,OAErB/N,KAAK0O,WAAY,EACjB1O,KAAK4gU,8BAA+B,CACvC,CACDt6O,SAC2B,SAAnBtmF,KAAKqtN,WAKTrtN,KAAK8K,OAAO+E,kBAAkB,KAC1B6C,WAAW,KACP,MAAM8Y,EAAcxrB,KAAKwrB,YAAYrf,cAC/BzD,EAAU1I,KAAK0Q,MAAMvE,cAC3BnM,KAAK2K,SAASyf,SAAS1hB,EAAS,SAAW,GAAE1I,KAAKmoc,mBAClD,MAAMx4S,GAAejnJ,EAAQinJ,aAC7B3vJ,KAAK2K,SAASyf,SAASoB,EAAa,aAAe,GAAEmkI,QACjDA,GAAe3vJ,KAAKmoc,eACpBnoc,KAAK2K,SAASyf,SAAS1hB,EAAS,SAAW,GAAEinJ,OAA7C,EAEL,EATO,EAWjB,CACGjhJ,gBACA,OAAO1O,KAAK6b,UACf,CACGnN,cAAUxG,GACV,GAAIlI,KAAK6b,aAAe3T,GAASlI,KAAKwrB,YAAa,CAC/C,MAAM9iB,EAAU1I,KAAKwrB,YAAYrf,cAC7BjE,IAAUlI,KAAKoN,SACfpN,KAAK2K,SAASyH,SAAS1J,EAASgsc,IAGhC10c,KAAK2K,SAASqI,YAAYtK,EAASgsc,IAEvC10c,KAAK6b,WAAa3T,CACrB,CACJ,CACDo7L,aACItjM,KAAK8K,OAAO4G,IAAI,KACP1R,KAAK4gU,8BACN5gU,KAAKmP,OAAOiB,OAEhBpQ,KAAK0O,WAAY,GAExB,CACD8W,aAAa7K,EAAOG,GACZ9a,KAAK0O,WACL4yb,GAAoBthc,KAAK0Q,MAAO,oBAAqBiK,EAAOG,EAEnE,CACD0vQ,YACQxqR,KAAKkI,OACLlI,KAAKwlB,aAAa,EAAGxlB,KAAKkI,MAAM5H,OAEvC,CACD6N,cAAcjG,EAAOwI,GACjB,MAAMuC,GAAOjT,KAAKwrB,YAAYrf,cACxBQ,GAAUlD,GAAkB,QAASiH,EAAO1Q,KAAK0Q,GAAQxI,GAC3DyE,GAAQ7C,UACR9J,KAAK2K,SAASqI,YAAYC,GAAMtG,GAAQ7C,UAExC6C,GAAQ5C,OACR/J,KAAK2K,SAASyH,SAASa,GAAMtG,GAAQ5C,MAE5C,CACDgrc,aACI,MAAMx6Y,EAA2B,aAAdv6D,KAAK40c,KAClBppb,EAAcxrB,KAAKwrB,YAAYrf,cAC/BzD,GAAU1I,KAAK0Q,MAAMvE,cACrBw6L,GAASn7K,EAAYmZ,SAAS,GACpC3kC,KAAK2K,SAAS4vD,EAAa,WAAa,eAAe7xD,GAAS,gBAC5Di+L,IACA3mM,KAAK2K,SAAS4vD,EAAa,cAAgB,YAAYosI,GAAQ,uBAEtE,EAELguQ,GAAkB5xc,UAAlB,0BAA+G4xc,IAn2NL3xc,MAm2NwCqQ,OAn2NxCrQ,MAm2N2EA,OAn2N3EA,MAm2NiGA,OAn2NjGA,MAm2NkIA,OAn2NlIA,MAm2N2JA,OAn2N3JA,MAm2NmLA,OAA7R,EACA2xc,GAAkBp+b,UAp2NwFvT,MAo2N1G,MAAmG2xc,GAAnGphc,0EAp2N0GvQ,MAo2N1G,2BAp2N0GA,CAo2N1G,wBAp2N0GA,CAo2N1G,wBAp2N0GA,CAo2N1G,8UAp2N0GA,MAo2NqhB,CACvnByQ,MACA,CAAEtN,QAASuN,MAAalN,SAAU,kBAClC,CACIL,QAASiqL,KACTlyK,eAAaC,OAAW,IAAMw2b,IAC9Bruc,OAAO,GAEX,CAAEH,QAASutK,MAAYx1J,eAAaC,OAAW,IAAMw2b,OA52N6C3xc,aAo2N1G0T,+MAp2N0G1T,MAo2N1Ggyc,IAp2N0Ghyc,MA82NlG,kBA92NkGA,MAm4N9F,kBAn4N8FA,cAo4N9F,IAhCZ,MAp2N0GA,MAo3N9F,2BAp3N8FA,CAo3N9F,mBAp3N8FA,CAo3N9F,gBAp3N8FA,CAo3N9F,sBAp3N8FA,CAo3N9F,sBAp3N8FA,CAo3N9F,4BAp3N8FA,MAo3N9F,2DAp3N8FA,MAg3N9F,oBAh3N8FA,CAg3N9F,qCAh3N8FA,CAg3N9F,qCAh3N8FA,CAg3N9F,4BAh3N8FA,CAg3N9F,cAh3N8FA,CAg3N9F,cAh3N8FA,CAg3N9F,sBAh3N8FA,CAg3N9F,gBAh3N8FA,CAg3N9F,yBAZZ,gBAiC4CyrL,MAA6E5sK,OAjCzHpJ,kBAuIA,MAAMw8b,GACFn1c,cACIE,KAAK0jB,WAAY,CACpB,EAELuxb,GAAwBlyc,UAAxB,0BAAqHkyc,GAArH,EACAA,GAAwB1+b,UAj/NkFvT,MAi/N1G,MAAyGiyc,GAAzG1hc,iFAj/N0GvQ,MAi/N1G,kIAj/N0GA,cAi/N2L,GAArS,oBA4CA,MAAMkyc,IAENA,GAAenyc,UAAf,0BAA4Gmyc,GAA5G,EACAA,GAAezuc,UAhiO2FzD,MAgiO1G,MAA6Gkyc,KAI7GA,GAAexuc,UApiO2F1D,MAoiO1G,UAAuI,CAAC8T,MAAc2W,MAAcqnM,IAAernM,SAsBnL,MAAM0nb,GAAiB,CACnBC,MAAO,CACH7/V,OAAQ,8IACRq+I,QAAS,IAEbyhN,OAAQ,CACJ9/V,OAAQ,ieACRq+I,QAAS,IAEb0hN,KAAM,CACF//V,OAAQ,ieACRq+I,QAAS,IAEb2hN,OAAQ,CACJhgW,OAAQ,ieACRq+I,QAAS,IAEb4hN,QAAS,CACLjgW,OAAQ,ieACRq+I,QAAS,IAEb6hN,WAAY,CACRlgW,OAAQ,ieACRq+I,QAAS,IAEb8hN,MAAO,CACHngW,OAAQ,ieACRq+I,QAAS,IAEbghN,KAAM,CACFr/V,OAAQ,ieACRq+I,QAAS,IAEb+hN,UAAW,CACPpgW,OAAQ,ieACRq+I,QAAS,IAEbgiN,KAAM,CACFrgW,OAAQ,ieACRq+I,QAAS,IAEbiiN,MAAO,CACHtgW,OAAQ,ieACRq+I,QAAS,IAEbkiN,WAAY,CACRvgW,OAAQ,iGACRq+I,QAAS,IAEbmiN,WAAY,CACRxgW,OAAQ,oLACRq+I,QAAS,KASjB,MAAMoiN,WAA+Bric,MACjC7T,YAAY6kB,GACR1G,QACAje,KAAK2kB,cAAgBA,CACxB,EAML,MAAMsxb,WAA8Btic,OAMpC,MAAMuic,WAA6Bvic,OAiCnC,MAAMwic,GAKFr2c,YAAY26B,GACRz6B,KAAKy6B,MAAQA,EACbz6B,KAAKo2c,eAAgB,CACxB,CAID3wI,cACIzlU,KAAKo2c,eAAgB,CACxB,CAMDC,kBACI,OAAOr2c,KAAKo2c,aACf,EAQL,MAAMngX,GAAa,CAAC/tF,GAAOinC,EAAQmna,GAAiB,EAAOj9O,IAAO,KAE9D,IAAuC,IADhB,CAAC,MAAO,OAAQ,QACpBp4N,QAAQkuC,GACvB,MAAM,IAAI5uC,MAAO,oCAAmC4uC,0DAExD,IAAKlnC,GAAUC,IACX,OAEJ,GAAe,SAAXinC,EACA,OA8ER,SAASona,GAAWruc,GAAOmxN,GAEvB,GADAnxN,GAAQA,GAAM6S,cAAcjJ,OACxB7J,GAAUuuc,KAAYtuc,KACtB,OAAOA,IAEX,EAAIuuc,OAAavuc,GAAOmxN,KACpBnxN,MAAQuuc,OAAavuc,GAAOmxN,GAAMn4J,SAEtC,MAAMtnC,EAAMva,OAAOsa,KAAK68a,MAAanxb,KAAKuU,IAAO48a,KAAY58a,MAAS1xB,IACtE,IAAK0xB,IAAQy/L,EACT,MAAM,IAAI94N,MAAO,sBAAqB2H,+DAAkEA,+EAE5G,OAAO0xB,CACV,CA3Fc28a,CAAWruc,GAAOmxN,IAE7B,MAAMq9O,MAAcD,OAAavuc,GAAM4J,OAAQunN,IAC/C,OAAKpxN,GAAUyuc,IAGsB,QAAXvna,EAAmBwna,GAAYD,GAAaJ,GAAkBI,GAAYvgX,iBAFhG,GAsBFygX,GAAU,CAAC1uc,GAAOmxN,GAAO,KAC3B,MAAMqqE,KAAS+yK,OAAavuc,GAAOmxN,GACnC,OAAKpxN,GAAUy7R,GAGRA,EAAOmzK,UAFH,IASTC,GAAkB,CAACC,GAAM5na,EAAS,OAAQmna,GAAiB,KAC7D,MAAMU,GAAMjZ,GAAcgZ,GAAKrsa,EAAG,EAAG,OAC/Busa,GAAalZ,GAAcgZ,GAAK/za,EAAG,EAAG,GACtC96B,GAAQ61b,GAAcgZ,GAAKl/O,EAAG,EAAG,GACjC3qK,GAAQ6wY,GAAcgZ,GAAK55a,EAAG,EAAG,GACjC1C,GAAQC,aAAcs8a,GAAKC,GAAY/uc,GAAOglD,IACpD,MAAkB,QAAX/d,EAAmBwna,GAAYl8a,GAAO67a,GAAkB77a,GAAM07D,WAAN,EAO7DwgX,GAAc,CAACl8a,GAAO9N,IACjBA,GAAW8N,GAAM0C,EAAI,EAAI1C,GAAM+zE,MAAM,CAAEthD,OAAO,IAAUzyB,GAAM+zE,QAOnE0oW,GAAmBF,IACdF,GAAgB,CAAEpsa,EAAGssa,GAAKh0a,EAAG,EAAG60L,EAAG,EAAG16L,EAAG,IAqCpD,MAAMg6a,GAAiB,CAACC,GAAiB/mY,KACrC,MAAMhxC,EAAK0+Z,GAAcqZ,GAAgB7sa,EAAG,EAAG,KACzCy0T,GAAK++F,GAAcqZ,GAAgB3sa,EAAG,EAAG,KACzCu+D,GAAK+0V,GAAcqZ,GAAgBr/a,EAAG,EAAG,KACzC+wE,GAAKi1V,GAAcqZ,GAAgBj6a,EAAG,EAAG,GACzCoC,GAAKw+Z,GAAc1tX,EAAgB9lC,EAAG,EAAG,KACzC00T,GAAK8+F,GAAc1tX,EAAgB5lC,EAAG,EAAG,KACzCw+D,GAAK80V,GAAc1tX,EAAgBt4C,EAAG,EAAG,KAC/C,MAAO,CACHwS,EAAG7V,KAAK7E,OAAQ,EAAIi5E,IAAMvpE,GAAOupE,GAAKzpE,GACtCoL,EAAG/V,KAAK7E,OAAQ,EAAIi5E,IAAMm2P,GAAOn2P,GAAKk2P,IACtCjnU,EAAGrD,KAAK7E,OAAQ,EAAIi5E,IAAMG,GAAOH,GAAKE,IAHnC,EAWLquW,GAAgBphH,KAClB,IAAI94T,EAAI,CAAC84T,GAAI1rT,EAAG0rT,GAAIxrT,EAAGwrT,GAAIl+T,GAAG12B,IAAI,SAAUw2N,GACxCA,UAAK,MACO,OACNA,EAAI,MACJnjM,KAAKwH,KAAK27L,EAAI,MAAS,MAAO,IACvC,GACD,MAAc,MAAP16L,EAAE,GAAqB,MAAPA,EAAE,GAAqB,MAAPA,EAAE,EAAK,EAkB5Cm6a,GAA0B,CAACn6a,GAAGpF,IAXhB,EAACw/a,GAAYC,KACX9ib,KAAK7Z,IAAI08b,GAAYC,GAEnB,MADJ9ib,KAAK9Z,IAAI28b,GAAYC,GAEpB,KAQVC,CAAYJ,GAAaF,GAAeh6a,GAAGpF,IAAKs/a,GAAaF,GAAep/a,EAAG,CAAEwS,EAAG,EAAGE,EAAG,EAAG1S,EAAG,EAAGoF,EAAG,MAoC3G2T,GAAO,CAAC4ma,GAAQC,KAClB,MAAMC,EAAUD,EAAO,GAAKD,GAAO,GAC7BG,GAAUF,EAAO,GAAKD,GAAO,GACnC,MAAO,CACHp3c,OAAQo0B,KAAK6I,KAAK7I,KAAKwH,IAAI07a,EAAS,GAAKljb,KAAKwH,IAAI27a,GAAS,IAC3Dr6a,MAAO9I,KAAKi6B,MAAMkpZ,GAASD,GAFxB,EAiCLE,GAAU,CAAC74a,GAAQojP,IACC,IAAlBpjP,GAAO3+B,OACA,GAGD2+B,GAAOtZ,OAAO,CAACC,GAAK4W,GAAOhnB,GAAG2nB,KAAY,IAAN3nB,GAEzC,KAAIgnB,GAAM,MAAMA,GAAM,KAEtB,GAAE5W,MAAOy8P,EAAQ7lP,GAAOhnB,GAAG2nB,MAAM,IAO1C,MAAM46a,WAAuCtkc,MACzC3T,YAAYu1I,EAAQiyE,EAAgBgwG,IAChCr5S,MAAMo3H,EAAQiyE,EAAgBgwG,GACjC,EAELygJ,GAA+Bh1c,UAA/B,0BAA4Hg1c,IAz7OlB/0c,MAy7OkE0Q,OAz7OlE1Q,MAy7O0FqQ,MAApM,GAz7O0GrQ,MAy7OwI8/M,MAAlP,KACAi1P,GAA+B90c,WA17O2ED,MA07O1G,OAAgI+0c,GAAhI70c,QAAgI60c,GAAhI,YAkBA,MAwBMC,GAA8B,aASpC,MAAMC,WAA2Cxkc,MAC7C3T,YAAYu1I,EAAQiyE,EAAgBgwG,GAAM4gJ,IACtCj6b,MAAMo3H,EAAQiyE,EAAgBgwG,IAC9Bt3T,KAAKk4c,wBAA0BA,EAClC,CACDn4b,IAAIynM,GACA,OAAIxnN,KAAKk4c,wBACEl4c,KAAKk4c,wBAAwBn4b,IAAIynM,GAErCvpM,MAAM8B,IAAIynM,EACpB,EAELywP,GAAmCl1c,UAAnC,0BAAgIk1c,IAz/OtBj1c,MAy/O0E0Q,OAz/O1E1Q,MAy/OkGqQ,MAA5M,GAz/O0GrQ,MAy/OgJ8/M,MAA1P,GAz/O0G9/M,MAy/OgL+0c,GAA1R,KACAE,GAAmCh1c,WA1/OuED,MA0/O1G,OAAoIi1c,GAApI/0c,QAAoI+0c,GAApI,YAuBA,MAAME,GACFC,mBAAmBh5b,EAAU+vB,GACzB,MAAMkpa,GAA4B,SAAXlpa,EAnDN,SAmD8C6oa,GACzDM,GAAkBl5b,EAASm5b,QAC3BC,GAA2C,iBAApBF,IAAgCnD,GAAemD,IACxEnD,GAAemD,IAAiB1kN,aAChC7+O,EACJ,MAAO,CACHwjc,QAASD,IAAmBD,GAC5Bl8T,SAAU/8H,EAAS+8H,UAAY,GAC/By3G,QAASx0O,EAASw0O,SAAW4kN,IAAiB,GAErD,CACDC,kBAAkBt8T,GACd,MAAwB,iBAAbA,EACA,CAAE3nI,MAAO2nI,EAAUtlH,OAAQslH,GAE/B,CACH3nI,MAAO2nI,EAAS3nI,MAAQ2nI,EAAS3nI,MAAQ2nI,EAAStlH,OAClDA,OAAQslH,EAAStlH,OAASslH,EAAStlH,OAASslH,EAAS3nI,MAE5D,EAEL2jc,GAAuBp1c,UAAvB,0BAAoHo1c,GAApH,EACAA,GAAuBl1c,WAziPmFD,MAyiP1G,OAAwHm1c,GAAxHj1c,QAAwHi1c,GAAxH,YAQA,MAAMO,GACF54c,YAAYyjB,GACRvjB,KAAKujB,oBAAsBA,EAC3BvjB,KAAK+jK,aAAc,EACnB/jK,KAAK24c,WAAa,IAAIztc,MACtBlL,KAAK44c,eAAiB,IAAI1tc,MAC1BlL,KAAK64c,iBAAmB,IAAI3tc,KAC/B,CACD4tc,kBAAkB78T,GACdj8I,KAAKmmL,WAAalqC,EAClBj8I,KAAK24c,WAAWvoc,KAAK6rI,EACxB,CACG88T,kBACA,OAAO/4c,KAAKmrL,OAASnrL,KAAKmrL,MAAMlqL,QAAQ,aAAe,GAAKjB,KAAKmrL,MAAMlqL,QAAQ,YAAc,CAChG,CACD+3c,kBAAkB/8T,GACd,MAAgB,aAATA,EAAsB,mBAAqB,aACrD,CACD/jI,QAAQG,GACJ,OAAOrY,KAAKujB,oBAAoBxD,IAAI1H,EACvC,EAELqgc,GAA+B31c,UAA/B,0BAA4H21c,IAvkPlB11c,MAukPkEqQ,OAA5K,EACAqlc,GAA+Bnic,UAxkP2EvT,MAwkP1G,MAAgH01c,GAAhHnlc,kFAxkP0GvQ,KAwkP1Gg3M,KAA+pBh4L,OAxkPrjBhf,KAwkP1Gi3M,KAA2wBj4L,QAA3wB,YAxkP0Ghf,MAwkP1GyT,GAxkP0GzT,WAwkP1GwQ,+BAxkP0GxQ,MAwkP1GyT,GAxkP0GzT,WAwkP1GwQ,yEAxkP0GxQ,MAwkP1G,qCAxkP0GA,CAwkP1G,+0CAxkP0GA,MAykPlG,WAzkPkGA,MA0kP9F,kBA1kP8FA,cA4lPlG,WA5lPkGA,MA6lPlG,WA7lPkGA,MA8lP9F,qBA9lP8FA,MAumP9F,kBAvmP8FA,SAwkP1G,MAxkP0GA,MA0kPxF,GA1kPwFA,MA0kPxF,sBA1kPwFA,MA8lPrF,GA9lPqFA,MA8lPrF,sBA9lPqFA,MAumPjD,GAvmPiDA,MAumPjD,kBA/BzD,gBA4C4CyrL,MAAmFA,MAA4GA,OA5C3Oh2K,kBAmIA,MAAMwgc,WAAyCxlc,MAC3C3T,YAAYu1I,EAAQiyE,EAAgBgwG,GAAM4hJ,IACtCj7b,MAAMo3H,EAAQiyE,EAAgBgwG,IAC9Bt3T,KAAKk5c,4BAA8BA,EACtC,CACDn5b,IAAIynM,GACA,OAAIxnN,KAAKk5c,4BACEl5c,KAAKk5c,4BAA4Bn5b,IAAIynM,GAEzCvpM,MAAM8B,IAAIynM,EACpB,EAELyxP,GAAiCl2c,UAAjC,0BAA8Hk2c,IAvtPpBj2c,MAutPsE0Q,OAvtPtE1Q,MAutP8FqQ,MAAxM,GAvtP0GrQ,MAutP4I8/M,MAAtP,GAvtP0G9/M,MAutP4Ki1c,GAAtR,KACAgB,GAAiCh2c,WAxtPyED,MAwtP1G,OAAkIi2c,GAAlI/1c,QAAkI+1c,GAAlI,YAuBA,MAAME,GACFr5c,cACIE,KAAK0jB,WAAY,CACpB,CACDlT,kBACIxQ,KAAK6xU,QAAU7xU,KAAK8b,QAAQiP,wBAC5B/qB,KAAKo5c,KAAOp5c,KAAK+2c,KAAK7uc,MAAMi1B,EAC5Bn9B,KAAKq5c,KAAOr5c,KAAK+2c,KAAK7uc,MAAMwiC,EAC5B1qC,KAAK+2c,KAAK7qc,UAAWhE,KACbA,EAAMwiC,IAAM1qC,KAAKq5c,MAAQnxc,EAAMi1B,IAAMn9B,KAAKo5c,QAC1Cp5c,KAAKq5c,KAAOnxc,EAAMwiC,EAClB1qC,KAAKo5c,KAAOlxc,EAAMi1B,EAClBn9B,KAAKs5c,WAAL,EAGX,CACDjpc,YAAYpE,GACJhE,GAAUgE,EAAQokE,kBAAoBrwE,KAAK6xU,SAC3C7xU,KAAKs5c,UAEZ,CACDA,WACI,MAAMC,EAnaSC,KAAqB,CAACh9a,EAAOhnB,EAAG2nB,MAEnD,MAAOs8a,GAAMC,IAAQF,GAAiBr8a,GAAE3nB,EAAI,GAAI2nB,GAAE3nB,EAAI,GAAIgnB,IAEnDm9a,GAAMC,IAAQJ,GAAiBh9a,EAAOW,GAAE3nB,EAAI,GAAI2nB,GAAE3nB,EAAI,IAAI,GACjE,MAAQ,KAAIikc,MAAQC,MAAQC,MAAQC,MAAQp9a,EAAM,MAAMA,EAAM,MA8ZhCq9a,CAzZZC,KAAa,CAACzkc,EAASsyH,EAAU1iI,GAAMmwC,MAIzD,MAIMm5D,GAAIurW,GAJAnyU,GAAYtyH,EACZpQ,IAAQoQ,GAKZmoB,GAAQ+wE,GAAE/wE,OAAS4X,GAAU1gB,KAAKkO,GAAK,GACvCtiC,GALS,GAKAiuG,GAAEjuG,OAIjB,MAAO,CAFG+U,EAAQ,GAAKqf,KAAKmI,IAAIW,IAASl9B,GAC/B+U,EAAQ,GAAKqf,KAAKqI,IAAIS,IAASl9B,GAClC,EA0YqC4xD,CAAaphB,KACrD9wC,KAAKs6E,MAAQ,CAACw9X,GAAQ93c,KAAK+5c,SA1SlB,IAYE,IA8RgDR,GACvDzB,GAAQ93c,KAAK+5c,SA3SR,IAYE,IA+RqC,GAAOR,GACnDzB,GAAQ93c,KAAK+5c,SAhTP,EAgBC,IAgSuCR,GAC9CzB,GAAQ93c,KAAK+5c,SAjTP,EAgBC,IAiSsC,GAAOR,GAC3D,CACDS,UAAUC,EAAUhD,EAAYrhZ,GAAKC,GAAMylD,IACvC,MAAM/wC,IAAO3U,GAAMC,IAAQ,EACrBkhZ,GAAO13b,OAAOC,OAAO,GAAItf,KAAK+2c,KAAK7uc,MAAO,CAAE86B,EAAGi0a,EAAaj3c,KAAK6xU,QAAQr9T,MAAOqjN,EAAG,EAAIttJ,GAAMvqE,KAAK6xU,QAAQh7S,SAC1Gqjb,GAAkB5C,GAAwBV,GAAQE,GAAgBC,KAAQH,GAAQ52c,KAAKqwE,iBAAmB,KAChH,OAAIza,GAAM,GAAMC,GACRqkZ,GAAkBD,EAAW,GAAKC,GAAkBD,EAAW,EACxD1vY,GAGA,KAGX+wC,GAAS4+V,GAAiBD,GACnBj6c,KAAKg6c,UAAUC,EAAUhD,EAAYrhZ,GAAKC,IAAQA,GAAOD,IAAO,EAAG0lD,IAEvEt7G,KAAKg6c,UAAUC,EAAUhD,EAAYrhZ,IAAOC,GAAOD,IAAO,EAAGC,GAAMylD,GAC7E,CACDy+V,SAASE,EAAUE,EAAWC,IAAW,GACrC,MAAMn7a,GAAS,GACf,QAASzpB,GAAI,EAAGA,IAAKxV,KAAK6xU,QAAQr9T,MAAOgB,IAAKxV,KAAK6xU,QAAQr9T,MAAQ2lc,EAAW,CAC1E,MAAMjyc,GAAQlI,KAAKg6c,UAAUC,EAAUzkc,GAAG,EAAGxV,KAAK6xU,QAAQh7S,OAAQujb,GAAY,CAACj9a,GAAGpF,KAAMoF,GAAIpF,GAAM,CAACoF,GAAGpF,KAAMoF,GAAIpF,IAClG,OAAV7vB,IACA+2B,GAAOjjB,KAAK,CAACxG,GAAGtN,IAEvB,CACD,OAAO+2B,EACV,EAELk6a,GAA0Bp2c,UAA1B,0BAAuHo2c,GAAvH,EACAA,GAA0B5ic,UAxyPgFvT,MAwyP1G,MAA2Gm2c,GAA3G5lc,uFAxyP0GvQ,MAwyP1G,wHAxyP0GA,OAwyP1G4kF,mNAxyP0G5kF,MAyyPlG,mBADR,KAxyP0GA,MAyyPvE,kBADnC,gBAE4CyrL,OAF5Ch2K,kBA0BA,MAAM4hc,GACFv6c,YAAYoE,EAAMyG,EAAU4Y,IACxBvjB,KAAKkE,KAAOA,EACZlE,KAAK2K,SAAWA,EAChB3K,KAAKujB,oBAAsBA,GAI3BvjB,KAAKopM,YAAe,QAAIxtL,WAIxB5b,KAAK2sB,SAAU,EAIf3sB,KAAKoN,UAAW,EAIhBpN,KAAKqpM,UAAW,EAIhBrpM,KAAK+wL,YAAc,IAAI7lL,MACvBlL,KAAKs6c,iBAAkB,EAIvBt6c,KAAKu6c,KAAO,GACZv6c,KAAKknB,cAAgB,IAAItb,IAC5B,CAIG8C,gBACA,KAAI,EAAErB,WAAyBpF,GAAUjI,KAAKkE,MAC1C,OAAO,EAEX,MAAMo6K,EAAgBj7K,SAASi7K,cAC/B,OAAOt+K,KAAKkE,KAAKiI,cAAcuR,SAAS4gK,EAC3C,CAIGk8R,qBACA,OAAOn7b,OAAOsa,KAAK35B,KAAKu6c,MAAM/5R,MAAM5mJ,GAAO3xB,GAAUjI,KAAKu6c,KAAK3gb,IAClE,CACDppB,kBACIxQ,KAAKgqN,eACR,CACDn5M,cACQ7Q,KAAKknB,eACLlnB,KAAKknB,cAAcjW,aAE1B,CACDZ,YAAYpE,GACJhE,GAAUgE,EAAQ/D,SAAWlI,KAAK0O,YAClC1O,KAAKgpX,IAAM/yR,GAAWj2F,KAAKkI,MAAO,MAAOlI,KAAK2sB,SAC9C3sB,KAAKu6c,KAAO3D,GAAQ52c,KAAKkI,OACzBlI,KAAKu6c,KAAKp9a,EAAI84D,GAAWj2F,KAAKkI,MAAO,OAAQlI,KAAK2sB,SAAW3sB,KAAKu6c,KAAKp9a,EAAI,EAElF,CACGs9a,wBACA,OAAOz6c,KAAKujB,oBAAoBxD,IAAI,eACvC,CACD26b,wBACI,MAAMjgb,EApnBY8/a,MACtB,MAAMI,EAAM5c,GAAcwc,GAAKhwa,EAAG,EAAG,KAC/Bqwa,EAAQ7c,GAAcwc,GAAK9va,EAAG,EAAG,KACjCowa,GAAO9c,GAAcwc,GAAKxib,EAAG,EAAG,KAChCm1B,GAAQ6wY,GAAcwc,GAAKp9a,EAAG,EAAG,GACvC,OAAOzC,eAAgBigb,EAAKC,EAAOC,GAAM3tZ,IAAOipC,WAAzC,EA+mBW2kX,CAAiB96c,KAAKu6c,OAC/Bv6c,KAAKw6c,gBAAkB//a,IAAUz6B,KAAKkI,QAG3ClI,KAAKkI,MAAQuyB,EACbz6B,KAAKu6c,KAAO3D,GAAQ52c,KAAKkI,OACzBlI,KAAKgpX,IAAM/yR,GAAWx7D,EAAO,MAAOz6B,KAAK2sB,SACzC3sB,KAAK+wL,YAAY3gL,KAAKqqB,GACzB,CACDsgb,qBAAqB/xF,GACjBhpX,KAAKgpX,IAAMA,EACX,MAAMvuV,EAAQw7D,GAAW+yR,EAAK,OAAQhpX,KAAK2sB,UACtC1kB,GAAUwyB,IAAUA,IAAUz6B,KAAKkI,QAGxClI,KAAKkI,MAAQuyB,EACbz6B,KAAKu6c,KAAO3D,GAAQn8a,GACpBz6B,KAAK+wL,YAAY3gL,KAAKqqB,GACzB,CACDugb,sBACSh7c,KAAKw6c,iBACNx6c,KAAKu6c,KAAO3D,GAAQ52c,KAAKkI,OAEhC,CACD+yc,qBACIj7c,KAAKgpX,IAAM/yR,GAAWj2F,KAAKkI,MAAO,MAAOlI,KAAK2sB,QACjD,CACDuub,mBACIl7c,KAAKm7c,WAAiC,QAApBn7c,KAAKm7c,WAAuB,OAAS,KAC1D,CACDnxP,iBACShqN,KAAKkE,MAGVlE,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO9P,KAAKo7c,mBAAmBjvc,cAAe,QAAS,IAAMnM,KAAKk7c,oBAC1G,EAELb,GAAoBt3c,UAApB,0BAAiHs3c,IA16PPr3c,MA06P4CA,OA16P5CA,MA06PsEA,OA16PtEA,MA06P+FqQ,OAAzM,EACAgnc,GAAoB9jc,UA36PsFvT,MA26P1G,MAAqGq3c,GAArG9mc,kEA36P0GvQ,KA26P1G+9a,MA36P0G/9a,KA26P1Gq4c,KAAupBr5b,OA36P7iBhf,KA26P1Gs4c,KAAkwBt5b,OA36PxpBhf,KA26P1G+1P,mBA36P0G/1P,MA26P1GyT,GA36P0GzT,WA26P1GwQ,yBA36P0GxQ,MA26P1GyT,GA36P0GzT,WA26P1GwQ,qBA36P0GxQ,MA26P1GyT,GA36P0GzT,WA26P1GwQ,sBA36P0GxQ,MA26P1GyT,GA36P0GzT,WA26P1GwQ,4EA36P0GxQ,MA26P1G,2CA36P0GA,CA26P1G,gNA36P0GA,OA26P1Guf,iyBA36P0Gvf,MA46PlG,UA56PkGA,CA46PlG,gBA56PkGA,MAm7P1F,YAn7P0FA,gBAs7PlG,kBAt7PkGA,MAm8PlG,8BAxBR,MA36P0GA,MA+6P1F,GA/6P0FA,MA+6P1F,iCA/6P0FA,CA+6P1F,6BA/6P0FA,MAs7P5F,GAt7P4FA,MAs7P5F,6BAt7P4FA,MAm8PnF,GAn8PmFA,MAm8PnF,8BAxBvB,gBA+F4Cu4Z,GAAyb9sO,OA/Freh2K,kBA0OA,MAAM8ic,GACFz7c,YAAY+K,GACR7K,KAAK6K,aAAeA,CACvB,CACG2wc,kBACA,OAAOx7c,KAAK6K,aAAakV,IAAI,eAChC,CACG07b,kBACA,OAAOz7c,KAAK6K,aAAakV,IAAI,eAChC,CACG27b,mBACA,IAAIpxZ,EAAsB,OAAdtqD,KAAKye,KApsBR,IAJC,EAysBV,MAAQ,GAAEze,KAAKye,SAAS6rC,EAAMorE,QAAQ,IACzC,EAEL6lV,GAA4Bx4c,UAA5B,0BAAyHw4c,IApqQfv4c,MAoqQ4DqQ,OAAtK,EACAkoc,GAA4Bhlc,UArqQ8EvT,MAqqQ1G,MAA6Gu4c,GAA7Ghoc,8bArqQ0GvQ,MAsqQlG,UAtqQkGA,MAsqQ5F,GAtqQ4FA,cAuqQlG,4BAFR,MArqQ0GA,MAsqQ5F,GAtqQ4FA,MAsqQ5FwQ,gBAtqQ4FxQ,MAuqQnF,GAvqQmFA,MAuqQnF,gBAFvB,gBAY4CyrL,OAZ5Ch2K,kBA2CA,MAAMkjc,GACF77c,YAAY+K,GACR7K,KAAK6K,aAAeA,CACvB,CACG+wc,oBACA,OAAO57c,KAAK67c,cAAcnmV,QAAQ,EACrC,CACGomV,wBACA,MAAQ,GAAE97c,KAAK6K,aAAakV,IAAI,qBAAqB/f,KAAKkI,MAAQlI,KAAK47c,cAAgB,OAC1F,CACGG,2BACA,OAAO/7c,KAAK67c,eA/vBH,GAgwBZ,CACGG,4BACA,OAAOh8c,KAAK67c,eAtwBF,CAuwBb,CACGA,oBAEA,OADevE,GAAwBV,GAAQ52c,KAAKkI,OAAQ0uc,GAAQ52c,KAAKsqD,OAE5E,EAELqxZ,GAAkB54c,UAAlB,0BAA+G44c,IAruQL34c,MAquQwCqQ,OAAlJ,EACAsoc,GAAkBplc,UAtuQwFvT,MAsuQ1G,MAAmG24c,GAAnGpoc,0nBAtuQ0GvQ,MAuuQlG,UAvuQkGA,CAuuQlG,YAvuQkGA,MAwuQ1D,GAxuQ0DA,cAyuQ9F,2BAzuQ8FA,cAmvQlG,UAnvQkGA,CAmvQlG,YAbR,MAtuQ0GA,MAwuQ1D,GAxuQ0DA,MAwuQ1DwQ,qBAxuQ0DxQ,MAyuQ/E,GAzuQ+EA,MAyuQ/E,gBAzuQ+EA,MAqvQ9F,GArvQ8FA,MAqvQ9F,gBArvQ8FA,CAqvQ9F,+BArvQ8FA,MA0vQ9F,GA1vQ8FA,MA0vQ9F,gBA1vQ8FA,CA0vQ9F,gCApBZ,gBAuB4Cu4c,GAA+H9sR,OAvB3Kh2K,kBA+DA,MAAMwjc,WAA4Bn+b,OAElCm+b,GAAoBl5c,UAApB,oDAvyQ0GC,MAuyQOi5c,MAAjHl+b,GAAiHk+b,GAAjH,KACAA,GAAoB3oc,UAxyQsFtQ,MAwyQ1G,MAAqGi5c,GAArG1oc,y3BAxyQ0GvQ,SAk2Q1G,MAAMk5c,WAA8CD,GAChDn8c,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,EAELsxc,GAAsCn5c,UAAtC,0BAAmIm5c,IAx2QzBl5c,MAw2QgFqQ,OAA1L,EACA6oc,GAAsC5oc,UAz2QoEtQ,MAy2Q1G,MAAuHk5c,GAAvH3oc,6MAz2Q0GvQ,MAy2QsO,CACxU,CACImD,QAAS81c,GACT/9b,eAAaC,OAAW,IAAM+9b,OA52QgEl5c,SA43Q1G,IAAIm5c,GAAW,EAKf,MAAMC,GACFt8c,YAAYoE,EAAM4G,EAAQH,GAAUyQ,GAAKmI,IACrCvjB,KAAKkE,KAAOA,EACZlE,KAAK8K,OAASA,EACd9K,KAAK2K,SAAWA,GAChB3K,KAAKob,IAAMA,GACXpb,KAAKujB,oBAAsBA,GAC3BvjB,KAAK+jK,aAAc,EAInB/jK,KAAKkoB,GAAM,mBAAkBi0b,KAM7Bn8c,KAAK2sB,SAAU,EAMf3sB,KAAKoN,UAAW,EAMhBpN,KAAKqpM,UAAW,EAMhBrpM,KAAKgjP,aAAc,EAMnBhjP,KAAKkkC,MAAQ,EAUblkC,KAAKmvC,OAx+BiB,OA4+BtBnvC,KAAK+wL,YAAc,IAAI7lL,MAIvBlL,KAAKqwE,gBA5+B6B,qBAo/BlCrwE,KAAK+2c,KAAO,IAAIx9S,KAAgB,IAChCv5J,KAAKo4I,UAAY,EACjBp4I,KAAK2nc,UAAY,GACjB3nc,KAAKq8c,kBAAmB,EACxBr8c,KAAKs8c,oBAAqB,EAC1Bt8c,KAAKu8c,aAAe,IAAIlyc,KACxBrK,KAAKw8c,gBAAkB,OACvBx8c,KAAKy8c,gBAAkB,QAAS,EAChC5wc,MAAgBrE,IAChBxH,KAAKylB,uBAAyBlC,GAAoBtX,QAAQC,UAAU,EAAGH,WACnE/L,KAAK8L,UAAYC,GAAM,MAAQ,OAEtC,CACG2wc,wBACA,OAAO18c,KAAKqpM,QACf,CACG/0L,oBACA,OAAOtU,KAAKoN,QACf,CACGuvc,iBACA,OAAO38c,KAAKkoB,EACf,CACG00b,mBACA,OAAO58c,KAAK+T,QACf,CAIG7L,UAAMA,GACNlI,KAAKkhG,OAASjL,GAAW/tF,EAAOlI,KAAKmvC,OAAQnvC,KAAK2sB,QACrD,CACGzkB,YACA,OAAOlI,KAAKkhG,MACf,CAKG27W,iBAAa30c,GACblI,KAAK88c,cAAgB7mX,GAAW/tF,EAAOlI,KAAKmvC,OAAQnvC,KAAK2sB,QAC5D,CACGkwb,mBACA,OAAO78c,KAAK88c,aACf,CAMG/oc,aAAS7L,GACT,GAAID,GAAUC,GAAQ,CAClB,MAAM6L,EAAWwa,OAAOrmB,GACxBlI,KAAKo4I,UAAajoH,MAAMpc,GAAuB,EAAXA,CACvC,MAGG/T,KAAKo4I,UAAYlwI,CAExB,CACG6L,eACA,OAAQ/T,KAAKoN,cAA4B2H,EAAjB/U,KAAKo4I,SAChC,CAIG1pI,gBACA,YAAMrB,WAAyBpF,GAAUjI,KAAKkE,SAGvClE,KAAKkE,KAAKiI,gBAAkB9I,SAASi7K,eAAiBt+K,KAAKkE,KAAKiI,cAAcuR,SAASra,SAASi7K,eAC1G,CAIGy+R,uBAEA,GAAM90c,GAAUjI,KAAK+2c,KAAK7uc,QAAUD,GAAUjI,KAAK+2c,KAAK7uc,MAAMi1B,GAG9D,OAA2B,IAApBn9B,KAAK+2c,KAAK7uc,MAAMi1B,CAC1B,CACG6/a,mBACA,OAAOh9c,KAAKi9c,gBAAgB9wc,cAAc4e,uBAC7C,CAIGmyb,0BACA,OAAOl9c,KAAK68c,cAAgB78c,KAAK68c,aAAav8c,OAAS,CAC1D,CACDkQ,kBACIxQ,KAAKm9c,WACLn9c,KAAKob,IAAI+L,gBACTnnB,KAAK81I,oBACL91I,KAAKska,kBACR,CACDj0Z,YAAYpE,IACR,EAAIsE,OAAU,QAAStE,KAAajM,KAAK0O,WACrC1O,KAAKm9c,YAAL,EAEA5sc,OAAU,QAAStE,KACnBjM,KAAKwka,qBACLxka,KAAKska,mBAEZ,CACDzzZ,cACI7Q,KAAK2nc,UAAUl3b,QAAQ2sc,GAAkBA,KACrCp9c,KAAKylB,wBACLzlB,KAAKylB,uBAAuBxU,cAEhCjR,KAAKwka,oBACR,CAIDpzZ,QACQpR,KAAKoN,UAGTpN,KAAKq9c,mBAAmBlxc,cAAciF,OACzC,CAID22D,QACI/nE,KAAKu9M,uBAAkBxoM,GACvB/U,KAAKm9c,WACLn9c,KAAKkE,KAAKiI,cAAciF,OAC3B,CAIDsyb,gBAAgBtpb,GACRpa,KAAKoN,UAAYpN,KAAKqpM,WAAaphM,GAAUmS,EAAKuK,iBAGtD3kB,KAAKoR,QACLgJ,EAAKuK,cAAc9Q,iBACtB,CAID8vb,aAAavpb,GACLpa,KAAKoN,UAAYpN,KAAKqpM,WAG1BrpM,KAAK2K,SAASyH,SAASpS,KAAKi9c,gBAAgB9wc,cAAe,cAC3DnM,KAAKs9c,eAAeljc,GACvB,CAIDwpb,kBACQ5jc,KAAKoN,UAAYpN,KAAKqpM,WAG1BrpM,KAAK2K,SAASqI,YAAYhT,KAAKi9c,gBAAgB9wc,cAAe,cAC9DnM,KAAKu9M,kBAAkBu5P,GAAgB92c,KAAK+2c,KAAK7uc,MAAOlI,KAAKmvC,OAAQnvC,KAAK2sB,UAC7E,CAID4wb,iBAAiBnjc,GACb,IAAIpa,KAAKoN,WAAYpN,KAAKqpM,UAGtBjvL,EAAKwf,MAAqC,IAA9Bxf,EAAKwf,IAAI34B,QAAQ,SAAiB,CAC9CmZ,EAAKvG,iBACL,MAAM2pc,EAAoBx9c,KAAKq9c,mBAAmBlxc,cAClDnM,KAAK2K,SAASyH,SAASpS,KAAKi9c,gBAAgB9wc,cAAe,cAC3D,IAAIsxc,GAAgB,EAChBC,GAAgB,EACpB,OAAQtjc,EAAKwf,SACJ,aACD6jb,GA9pCU,EA+pCV,UACC,YACDA,IAjqCU,EAkqCV,UACC,UACDC,IApqCU,EAqqCV,UACC,YACDA,GAvqCU,EA2qClB,MAAMC,GAAO/mb,SAAS4mb,EAAkBjyb,MAAMM,IAAK,IAAM6xb,GACnDE,GAAOhnb,SAAS4mb,EAAkBjyb,MAAML,KAAM,IAAMuyb,GAC1Dz9c,KAAK2K,SAASyf,SAASozb,EAAmB,MAAQ,GAAEG,QACpD39c,KAAK2K,SAASyf,SAASozb,EAAmB,OAAS,GAAEI,QACrD59c,KAAK8K,OAAO4G,IAAI,IAAM1R,KAAK69c,eAAeD,GAAMD,IACnD,CACJ,CAIDL,eAAe36a,GACX,GAAI3iC,KAAKoN,UAAYpN,KAAKqpM,SACtB,OAEJrpM,KAAKq9c,mBAAmBlxc,cAAciF,QACtC,MAAM4rc,EAAeh9c,KAAKg9c,aACpBY,GAAOj7a,EAASzN,QAAU8nb,EAAa9xb,KACvCyyb,GAAOh7a,EAASvN,QAAU4nb,EAAanxb,IAC7C7rB,KAAK8K,OAAO4G,IAAI,IAAM1R,KAAK69c,eAAeD,GAAMD,IACnD,CAIDG,sBAAsB9G,GAClB,MAAMD,EAAO/2c,KAAK+2c,KAAK7uc,MACvB6uc,EAAKrsa,EAAIssa,EACTh3c,KAAK+2c,KAAK9xc,KAAK8xc,GACf/2c,KAAKu9M,kBAAkBu5P,GAAgB92c,KAAK+2c,KAAK7uc,MAAOlI,KAAKmvC,OAAQnvC,KAAK2sB,UAC1E3sB,KAAKqwE,gBAAkB6mY,GAAgBF,GACvCh3c,KAAK+9c,mBAAmB/9c,KAAKqwE,iBAC7BrwE,KAAKg+c,yBAAyBh+c,KAAKqwE,iBACnCrwE,KAAKq8c,kBAAmB,CAC3B,CAID4B,wBAAwB/wZ,GACpB,MAAM6pZ,EAAO/2c,KAAK+2c,KAAK7uc,MACvB6uc,EAAK55a,EAAI+vB,EAAQ,IACjBltD,KAAK+2c,KAAK9xc,KAAK8xc,GACf/2c,KAAKu9M,kBAAkBu5P,GAAgB92c,KAAK+2c,KAAK7uc,MAAOlI,KAAKmvC,OAAQnvC,KAAK2sB,UAC1E3sB,KAAKs8c,oBAAqB,CAC7B,CAID4B,wBAAwBzjb,GACpB,MAAMipQ,EAASztM,GAAWx7D,EAAOz6B,KAAKmvC,OAAQnvC,KAAK2sB,SAC/C3sB,KAAKkI,QAAUw7R,IACf1jS,KAAKu9M,kBAAkBmmF,GACvB1jS,KAAKm9c,WAEZ,CAIDpoR,WAAW7sL,GACPlI,KAAKkI,MAAQA,EACTD,GAAUjI,KAAKi9c,kBACfj9c,KAAKm9c,UAEZ,CAIDnoR,iBAAiBxkK,GACbxwB,KAAKw8c,gBAAkBhsb,CAC1B,CAIDykK,kBAAkBzkK,GACdxwB,KAAKy8c,gBAAkBjsb,CAC1B,CAID0kK,iBAAiB/pL,GACbnL,KAAKob,IAAIwC,eACT5d,KAAKoN,SAAWjC,CACnB,CAIGgzc,+BACA,OAAOn+c,KAAKujB,oBAAoBxD,IAAI,sBACvC,CAIGq+b,mCACA,MAAM16K,EAASztM,GAAWj2F,KAAKkI,MAAOlI,KAAKmvC,OAAQnvC,KAAK2sB,SACxD,MAAQ,GAAE3sB,KAAKkI,MAAQw7R,EAAS1jS,KAAKujB,oBAAoBxD,IAAI,wBAChE,CAIGs+b,qBACA,OAAOr+c,KAAKujB,oBAAoBxD,IAAI,kBACvC,CAIGu+b,yBACA,OAAOt+c,KAAKujB,oBAAoBxD,IAAI,sBACvC,CAIGw+b,uBACA,OAAOv+c,KAAKujB,oBAAoBxD,IAAI,cACvC,CAKD+mC,UACI,OAAO,CACV,CACD+2Z,eAAeW,EAAWC,GACtB,MAAMzB,GAAeh9c,KAAKg9c,aACpB0B,GAAoB1B,GAAaxoc,MACjCmqc,GAAqB3B,GAAanmb,OAClChL,GAAMkya,GAAc0gB,EAAW,EAAGE,IAClCzzb,GAAO6ya,GAAcygB,EAAW,EAAGE,IACzC1+c,KAAK4+c,6BAA6B/yb,GAAKX,IACvC,MAAM6rb,GAAO/2c,KAAK+2c,KAAK7uc,MACvB6uc,GAAK/za,EAAI9X,GAAOwzb,GAChB3H,GAAKl/O,EAAI,EAAIhsM,GAAM8yb,GACnB3+c,KAAK+2c,KAAK9xc,KAAK8xc,IACf/2c,KAAKu8c,aAAat3c,KAAK6xc,GAAgB92c,KAAK+2c,KAAK7uc,MAAOlI,KAAKmvC,OAAQnvC,KAAK2sB,UAC1E3sB,KAAKg+c,yBAAyBlH,GAAgBz3b,OAAOC,OAAOD,OAAOC,OAAO,GAAItf,KAAK+2c,KAAK7uc,OAAQ,CAAEi1B,EAAG,IAAMn9B,KAAKmvC,OAAQnvC,KAAK2sB,SAChI,CACD4wL,kBAAkB9iL,GACVz6B,KAAKkI,QAAUuyB,IAGnBz6B,KAAKkI,MAAQuyB,EACbz6B,KAAK+wL,YAAY3gL,KAAKqqB,GACtBz6B,KAAKw8c,gBAAgB/hb,GACrBz6B,KAAK6+c,0BACR,CACDD,6BAA6B/yb,EAAKX,GAC9B,MAAMo0a,GAAat/b,KAAKq9c,mBAAmBlxc,cAC3CnM,KAAK2K,SAASyf,SAASk1a,GAAY,MAAQ,GAAEzza,OAC7C7rB,KAAK2K,SAASyf,SAASk1a,GAAY,OAAS,GAAEp0a,MACjD,CACD8yb,yBAAyB3tY,GACrB,IAAKpoE,GAAUjI,KAAK8+c,aAChB,OAEJ,MAAMC,EAAc/+c,KAAK8+c,YAAYl2V,MAAMz8G,cAC3CnM,KAAK2K,SAASyf,SAAS20b,EAAa,aAAe,wCAAuC1uY,KAC7F,CACDwuY,0BACI,MAAMn7K,EAASztM,GAAWj2F,KAAKkI,MAAOlI,KAAKmvC,OAAQnvC,KAAK2sB,SACxD3sB,KAAK2K,SAASiF,aAAa5P,KAAKkE,KAAKiI,cAAe,aAAe,GAAEnM,KAAKkI,MAAQw7R,EAAS1jS,KAAKujB,oBAAoBxD,IAAI,0BAC3H,CACDg+b,mBAAmBtjb,GACfz6B,KAAK2K,SAASyf,SAASpqB,KAAKg/c,aAAa7yc,cAAe,aAAcsuB,EACzE,CACD0ib,WACI,KAAI,EAAC9vc,SACD,OAEJ,GAAIrN,KAAKq8c,kBAAoBr8c,KAAKs8c,mBAG9B,OAFAt8c,KAAKq8c,kBAAmB,OACxBr8c,KAAKs8c,oBAAqB,GAG9Bt8c,KAAK+2c,KAAK9xc,KAAKjF,KAAKkI,MA7kDb,EAACA,GAAOmxN,GAAO,KAC1B,MAAMqqE,KAAS+yK,OAAavuc,GAAOmxN,GACnC,OAAKpxN,GAAUy7R,GAGRA,EAAOu7K,QAFH,IA0kDqBC,CAAOl/c,KAAKkI,OAAS,CAAEwiC,EAAG,EAAG1H,EAAG,EAAG60L,EAAG,EAAG16L,EAAG,IACxE,MAAM6/a,EAAeh9c,KAAKg9c,aACpBnxb,GAAO,EAAI7rB,KAAK+2c,KAAK7uc,MAAM2vN,GAAKmlP,EAAanmb,OAC7C3L,GAAOlrB,KAAK+2c,KAAK7uc,MAAM86B,EAAIg6a,EAAaxoc,MAC9CxU,KAAK4+c,6BAA6B/yb,EAAKX,IACvClrB,KAAKqwE,gBAAkB6mY,GAAgBl3c,KAAK+2c,KAAK7uc,MAAMwiC,GACvD1qC,KAAK+9c,mBAAmB/9c,KAAKqwE,iBAC7BrwE,KAAKg+c,yBAAyBh+c,KAAKqwE,iBACnCrwE,KAAK6+c,yBACR,CACD/oU,oBACI91I,KAAK8K,OAAO+E,kBAAkB,KAC1B,MAAMsvc,EAAmBn/c,KAAK2K,SAASmF,OAAO9P,KAAKkE,KAAKiI,cAAe,WAAa6D,MAz2R1E,EAACwb,GAAa47X,IAAc57X,IAAe47X,IAAc57X,KAAgB47X,GAAa57X,GAAY9N,SAAS0pY,IA02R5Gg4D,CAAcp/c,KAAKkE,KAAKiI,cAAe6D,GAAM0F,gBA92R7ChN,KAAYA,IAAWA,GAAQyD,eAAiB6xZ,GAASt1Z,GAAQyD,cAjBpE,gBA+3RkE6uO,CAAYh7O,KAAKkE,OACjFlE,KAAK8K,OAAO4G,IAAI,IAAM1R,KAAKy8c,kBAA3B,GAGF4C,EAAkBr/c,KAAK2K,SAASmF,OAAO9P,KAAKq9c,mBAAmBlxc,cAAe,UAAY6D,KAC5FhQ,KAAKu9c,iBAAiBvtc,GAAtB,GAEEsvc,GAAgBt/c,KAAK2K,SAASmF,OAAO9P,KAAKq9c,mBAAmBlxc,cAAe,QAAS,KACvFnM,KAAK2K,SAASqI,YAAYhT,KAAKi9c,gBAAgB9wc,cAAe,eACzDnM,KAAKqpM,WAAarpM,KAAKoN,UACxBpN,KAAK8K,OAAO4G,IAAI,IAAM1R,KAAKu9M,kBAAkBu5P,GAAgB92c,KAAK+2c,KAAK7uc,MAAOlI,KAAKmvC,OAAQnvC,KAAK2sB,UAAhG,GAGF4yb,GAA4Bv/c,KAAK2K,SAASmF,OAAO9P,KAAKq9c,mBAAmBlxc,cAAe,UAAW,KACrGnM,KAAK2K,SAASyH,SAASpS,KAAKq9c,mBAAmBlxc,cAAe,gBAA9D,GAEEqzc,GAA6Bx/c,KAAK2K,SAASmF,OAAO9P,KAAKq9c,mBAAmBlxc,cAAe,WAAY,KACvGnM,KAAK2K,SAASqI,YAAYhT,KAAKq9c,mBAAmBlxc,cAAe,gBAAjE,GAEJnM,KAAK2nc,UAAU3rb,KAAKmjc,EAAkBE,EAAiBC,GAAeC,GAA2BC,GAAjG,EAEP,CACDl7C,mBACItka,KAAKyka,2BAA6Bzka,KAAKu8c,aAAa92c,QAAKguK,MAAazzK,KAAKkkC,QAAQh4B,UAAUhE,IACzFlI,KAAKu9M,kBAAkBr1M,EAAvB,EAEP,CACDs8Z,qBACQxka,KAAKyka,4BACLzka,KAAKyka,2BAA2BxzZ,aAEvC,EAELmrc,GAAuBr5c,UAAvB,0BAAoHq5c,IAv1RVp5c,MAu1RkDA,OAv1RlDA,MAu1R4EA,OAv1R5EA,MAu1RkGA,OAv1RlGA,MAu1R2HA,OAv1R3HA,MAu1R4JqQ,OAAtQ,EACA+oc,GAAuB7lc,UAx1RmFvT,MAw1R1G,MAAwGo5c,GAAxG7oc,qEAx1R0GvQ,KAw1R1G+ob,KAmBoI/pa,OA32R1Bhf,KAw1R1Ggpb,MAx1R0Ghpb,KAw1R1Gipb,MAx1R0Gjpb,KAw1R1Gy8c,MAx1R0Gz8c,KAw1R1G08c,mBAx1R0G18c,MAw1R1GyT,GAx1R0GzT,WAw1R1GwQ,+BAx1R0GxQ,MAw1R1GyT,GAx1R0GzT,WAw1R1GwQ,mBAx1R0GxQ,MAw1R1GyT,GAx1R0GzT,WAw1R1GwQ,wBAx1R0GxQ,MAw1R1GyT,GAx1R0GzT,WAw1R1GwQ,4BAx1R0GxQ,MAw1R1GyT,GAx1R0GzT,WAw1R1GwQ,uEAx1R0GxQ,MAw1R1G,oCAx1R0GA,CAw1R1G,kBAx1R0GA,CAw1R1G,kBAx1R0GA,CAw1R1G,2BAx1R0GA,MAw1R1G,gCAx1R0GA,CAw1R1G,qTAx1R0GA,MAw1R4kB,CAC9qB,CACIsD,OAAO,EACPH,QAASiqL,KACTlyK,eAAaC,OAAW,IAAMi+b,KAElC,CACIj2c,QAASutK,MACTx1J,eAAaC,OAAW,IAAMi+b,KAElCnD,GACA,CACI9yc,QAASsN,MACTyK,YAAa+6b,IAEjB,CACI9yc,QAASuN,MACTlN,SAAU,yBAz2RoFxD,OAw1R1Guf,0EAsBkCH,kKAtBlC+pa,EAwBiC/pa,uHAxBjCgqa,EA0ByBhqa,wFA1BzBiqa,GA4B6Bjqa,6FA5B7Bkqa,GA8BiClqa,yGA9BjCmqa,GAgC0Bnqa,0FAhC1Boqa,GAkC0Bpqa,0FAlC1Bqqa,GAoC2Brqa,+GApC3Bsqa,GAsC0Btqa,iHAtC1B,ggEAx1R0Gpf,MA42RlG,KA52RkGA,MAg4RlG,UAh4RkGA,CAg4RlG,YAh4RkGA,CAg4RlG,aAh4RkGA,MAs4RtF,4BAASwQ,oBAAT,EAt4RsFxQ,CAs4RtF,iCACcwQ,qBADd,EAt4RsFxQ,CAs4RtF,gCAEawQ,kBAFb,EAt4RsFxQ,CAs4RtF,iCAGgBwQ,mBAHhB,GAt4RsFxQ,MA04RtF,aA14RsFA,cAm5R1F,kBAn5R0FA,cA45R9F,SA55R8FA,MA65R1F,oBA75R0FA,MAu6R1F,sBAv6R0FA,MAq7RtF,kCAAewQ,2BAAf,GAr7RsFxQ,cAw7R1F,8BAx7R0FA,gBA68RlG,6BA78RkGA,MAm9R9F,kCAAewQ,6BAAf,GAn9R8FxQ,cAs9RlG,qBA9HR,cAx1R0GA,MAw1R1G,GAx1R0GA,MA84RlF,GA94RkFA,MA84RlF,mCA94RkFA,CA84RlF,6CA94RkFA,MAo5RrF,GAp5RqFA,MAo5RrF,kCAp5RqFA,MA45RzF,GA55RyFA,MA45RzF,2EA55RyFA,MA85RrF,GA95RqFA,MA85RrF,sBA95RqFA,MAw6RtF,GAx6RsFA,MAw6RtF,UAx6RsFA,MAw6RtF,qBAx6RsFA,CAw6RtF,mCAx6RsFA,CAw6RtF,sBAx6RsFA,CAw6RtF,sBAx6RsFA,CAw6RtF,iBAx6RsFA,CAw6RtF,uBAx6RsFA,CAw6RtF,cAx6RsFA,CAw6RtF,QAx6RsFA,CAw6RtF,UAx6RsFA,CAw6RtF,uBAx6RsFA,CAw6RtF,cAx6RsFA,CAw6RtF,gBAx6RsFA,MAy7RrF,GAz7RqFA,MAy7RrF,kBAz7RqFA,MA88R9F,GA98R8FA,MA88R9F,oBA98R8FA,CA88R9F,sBA98R8FA,CA88R9F,gBA98R8FA,CA88R9F,sBA98R8FA,CA88R9F,uBA98R8FA,MAu9R7F,GAv9R6FA,MAu9R7F,6BA/Hb,iBAoIyfm2c,GAA0H5W,GAA+M8X,GAA0KsB,GAAwGO,GAAwNr6b,MAA6I4sK,MAAmFA,OApI5gD/8J,sfAgWA,MAAMiub,WAAwClsc,MAC1C3T,YAAYu1I,EAAQiyE,EAAgBgwG,GAAM4hJ,IACtCj7b,MAAMo3H,EAAQiyE,EAAgBgwG,IAC9Bt3T,KAAKk5c,4BAA8BA,EACtC,CACDn5b,IAAIynM,GACA,OAAIxnN,KAAKk5c,4BACEl5c,KAAKk5c,4BAA4Bn5b,IAAIynM,GAEzCvpM,MAAM8B,IAAIynM,EACpB,EAELm4P,GAAgC58c,UAAhC,0BAA6H48c,IApsSnB38c,MAosSoE0Q,OApsSpE1Q,MAosS4FqQ,MAAtM,GApsS0GrQ,MAosS0I8/M,MAApP,GApsS0G9/M,MAosS0Ki1c,GAApR,KACA0H,GAAgC18c,WArsS0ED,MAqsS1G,OAAiI28c,GAAjIz8c,QAAiIy8c,GAAjI,YAuBA,MAAMC,GACF9/c,cACIE,KAAK6/c,UAAY,EACpB,CACDC,eAAevH,EAAS3kN,GAEpB,GADA5zP,KAAK6/c,UAAY,GACX53c,GAAUswc,IAAYA,EAAQj4c,OAGpCszP,GAAUA,GAAW2kN,EAAQj4c,OAC7B,QAASqa,GAAQ,EAAGA,GAAQ49b,EAAQj4c,OAAQqa,IAASi5O,EAAS,CAC1D,MAAMvgM,GAAMklZ,EAAQ72c,MAAMiZ,GAAOi5O,EAAUj5O,IAC3C3a,KAAK6/c,UAAU7jc,KAAKq3C,GACvB,EACJ,CACD0sZ,iBAAiBtlb,GACb,GAAKxyB,GAAUwyB,GAGf,QAAS44B,EAAM,EAAGA,EAAMrzD,KAAK6/c,UAAUv/c,OAAQ+yD,IAC3C,QAASwxO,GAAM,EAAGA,GAAM7kS,KAAK6/c,UAAUxsZ,GAAK/yD,OAAQukS,KAChD,GAAI7kS,KAAK6/c,UAAUxsZ,GAAKwxO,MAASpqQ,EAC7B,MAAO,CAAE44B,MAAKwxO,OAI7B,CACDm7K,WAAWC,GACP,GAAMh4c,GAAUg4c,IAAeh4c,GAAUjI,KAAK6/c,UAAUI,EAAW5sZ,MAGnE,OAAOrzD,KAAK6/c,UAAUI,EAAW5sZ,KAAK4sZ,EAAWp7K,IACpD,CACDnkK,YAAYrrH,EAAS6qc,EAAgBC,IACjC,KAAMl4c,GAAUoN,IAAYpN,GAAUoN,EAAQg+C,MAAQprD,GAAUoN,EAAQwvR,MACpE,MAAO,CAAExxO,IAAK,EAAGwxO,IAAK,GAE1B,MAAMxxO,GAAMrzD,KAAKm/O,WAAW9pO,EAAQg+C,IAAM8sZ,GAAcngd,KAAK6/c,UAAUv/c,OAAS,GAEhF,MAAO,CAAE+yD,OAAKwxO,IADF7kS,KAAKm/O,WAAW9pO,EAAQwvR,IAAMq7K,EAAgBlgd,KAAK6/c,UAAUxsZ,IAAK/yD,OAAS,GAE1F,CACD6+O,WAAW3yO,EAAOqO,GAEd,OAAIrO,EAAQ4zc,EACDA,EAEP5zc,EAAQqO,EACDA,EAEJrO,CACV,EAELozc,GAAoB78c,UAApB,0BAAiH68c,GAAjH,EACAA,GAAoB38c,WAjxSsFD,MAixS1G,OAAqH48c,GAArH18c,QAAqH08c,GAArH,YASA,IAAIS,GAAW,EAKf,MAAMC,GACFxgd,YAAYoE,EAAM0G,EAASwQ,GAAKzQ,GAAU4Y,GAAqBzY,IAC3D9K,KAAKkE,KAAOA,EACZlE,KAAK4K,QAAUA,EACf5K,KAAKob,IAAMA,GACXpb,KAAK2K,SAAWA,GAChB3K,KAAKujB,oBAAsBA,GAC3BvjB,KAAK8K,OAASA,GAId9K,KAAKkoB,GAAM,kBAAiBm4b,KAW5Brgd,KAAKmvC,OAAS,MAIdnvC,KAAKoN,UAAW,EAIhBpN,KAAKqpM,UAAW,EAQhBrpM,KAAKm8I,SAAW,CAAE3nI,MA/CA,GA+C0BqiB,OA/C1B,IAmDlB72B,KAAKykO,gBAAkB,IAAIv5N,MAI3BlL,KAAK+wL,YAAc,IAAI7lL,MAMvBlL,KAAK6nZ,cAAgB,IAAI38Y,MAIzBlL,KAAK+jK,aAAc,EAInB/jK,KAAKugd,YAAW3kc,SAChB5b,KAAKo4I,UAAY,EACjBp4I,KAAKy8c,gBAAkB,OACvBz8c,KAAKw8c,gBAAkB,QAAS,EAChC3wc,MAAgBrE,IAChBxH,KAAKylB,uBAAyBlC,GAAoBtX,QAAQC,UAAU,EAAGH,WACnE/L,KAAK8L,UAAYC,GAAM,MAAQ,OAEtC,CAIGy0c,gBACA,OAAOxgd,KAAKkoB,EACf,CAIGhgB,UAAMA,GACNlI,KAAKkhG,OAASjL,GAAW/tF,EAAOlI,KAAKmvC,OACxC,CACGjnC,YACA,OAAOlI,KAAKkhG,MACf,CAKG0yJ,YAAQ1rP,GAERlI,KAAKm9W,SAAWj1W,EAAQu4c,EAAkBv4c,EAAQu4c,CACrD,CACG7sN,cACA,OAAO5zP,KAAKm9W,QACf,CASGo7F,YAAQrwc,GACHD,GAAUC,KACXA,EAhHW,UAkHM,iBAAVA,GAAsBD,GAAUktc,GAAejtc,MACtDlI,KAAK4zP,QAAU5zP,KAAK4zP,SAAWuhN,GAAejtc,GAAO0rP,QACrD1rP,EAAQitc,GAAejtc,GAAOqtG,QAElC,MAAMA,EAA2B,iBAAVrtG,EAAsBA,EAAMnG,MAAM,KAAOmG,EAChElI,KAAK0gd,SAAWnrW,EAAOl0G,IAAIo5B,IAASw7D,GAAWx7D,GAAOz6B,KAAKmvC,QAAQ,GAAO,GAC7E,CACGopa,cACA,OAAOv4c,KAAK0gd,QACf,CAIG3sc,aAAS7L,GACT,MAAM6L,EAAWwa,OAAOrmB,GAExBlI,KAAKo4I,UAAajoH,MAAMpc,GADH,EACeA,CACvC,CACGA,eACA,OAAQ/T,KAAKoN,cAA4B2H,EAAjB/U,KAAKo4I,SAChC,CAIGuoU,iBACA,MAA6B,iBAAlB3gd,KAAKm8I,SACLn8I,KAAKm8I,SAET,CAAE3nI,MAAOxU,KAAKm8I,SAAUtlH,OAAQ72B,KAAKm8I,SAC/C,CAIG0jU,gBACA,OAAO7/c,KAAK4K,QAAQi1c,SACvB,CAIGjD,mBAAiB,OAAO58c,KAAK+T,QAAW,CAIxCO,oBAAkB,OAAOtU,KAAKoN,QAAW,CAIzCsvc,wBAAsB,OAAO18c,KAAKqpM,QAAW,CACjD/5L,WACI,GAA8B,IAA1BtP,KAAK6/c,UAAUv/c,OAAc,CAC7B,MAAM+3c,EAAiC,SAAhBr4c,KAAKmvC,OApKjB,SACW,aAoKtBnvC,KAAKu4c,QAAUv4c,KAAKu4c,SAAWF,EAC/Br4c,KAAK4gd,SACR,CACJ,CACDpwc,kBACIxQ,KAAK6+c,0BACD7+c,KAAKkI,OACLlI,KAAK8K,OAAO88M,SAASniN,QAAKilB,MAAK,IAAIxe,UAAU,KACzClM,KAAK6gd,WAAW7gd,KAAKkI,MAArB,EAGX,CACD2I,cACQ7Q,KAAKylB,wBACLzlB,KAAKylB,uBAAuBxU,aAEnC,CACDZ,YAAYpE,IACJA,EAAQssc,SAAWtsc,EAAQ2nP,UAC3B5zP,KAAK4gd,WAEL30c,EAAQssc,SAAWtsc,EAAQ/D,OAAS+D,EAAQ2nP,WAC5C5zP,KAAK6gd,WAAW7gd,KAAKkI,OACrBlI,KAAK6+c,0BAEZ,CAIDl7Q,cAAc3zL,GACV,MAAM+1J,EAA2B,QAAnB/lK,KAAK8L,UACnB,OAAQkE,EAAME,cACLC,gBACDnQ,KAAK8gd,qBAAqB,EAAG,GAC7B,WACC3wc,cACDnQ,KAAK8gd,qBAAqB,GAAG,GAC7B,WACC3wc,iBACDnQ,KAAK8gd,qBAAqB/6S,GAAQ,EAAK,EAAG,GAC1C,WACC51J,gBACDnQ,KAAK8gd,qBAAqB/6S,EAAQ,GAAI,EAAI,GAC1C,WACC51J,YACDnQ,KAAK07N,cACL,cACK,OAEb1rN,EAAM6D,gBACT,CAIDktc,iBACI/gd,KAAKy8c,kBACLz8c,KAAKghd,uBACR,CAIDC,oBAAoB/4c,EAAOg5c,GACvB,GAAIlhd,KAAKqpM,SACL,OAEJrpM,KAAKmhd,aAAeD,EACpBlhd,KAAKkhd,YAAclhd,KAAKmhd,aACxBnhd,KAAKohd,kBAAmB,EACxB,MAAM1K,GAAczgX,GAAW/tF,EAAOlI,KAAKmvC,QAAQ,GAAO,GAC1DnvC,KAAK6nZ,cAAcz3Y,KAAKsmc,IACxB12c,KAAKu9M,kBAAkBm5P,IACnB12c,KAAKiU,YAAcyic,KACnB12c,KAAKiU,UAAYyic,GACjB12c,KAAKykO,gBAAgBr0N,KAAKsmc,KAE1BwK,IACAlhd,KAAKqhd,aAAgB,KAAIrhd,KAAKmhd,aAAa9tZ,OAAOrzD,KAAKmhd,aAAat8K,OAAO7kS,KAAKugd,WAEvF,CAIDxrR,WAAW7sL,GACPlI,KAAKkI,MAAQA,EACblI,KAAK6gd,WAAW34c,EACnB,CAID8sL,iBAAiBxkK,GACbxwB,KAAKw8c,gBAAkBhsb,CAC1B,CAIDykK,kBAAkBzkK,GACdxwB,KAAKy8c,gBAAkBjsb,CAC1B,CAID0kK,iBAAiB/pL,GACbnL,KAAKob,IAAIwC,eACT5d,KAAKoN,SAAWjC,CACnB,CAKD27C,UACI,OAAO,CACV,CAIDihB,QACI/nE,KAAKkhd,YAAc,KACfj5c,GAAUjI,KAAKkI,QACflI,KAAKu9M,uBAAkBxoM,GAE3B/U,KAAKmhd,kBAAepsc,CACvB,CACDwoM,kBAAkB9iL,GACVz6B,KAAKkI,QAAUuyB,IAGnBz6B,KAAKkI,MAAQuyB,EACbz6B,KAAK+wL,YAAY3gL,KAAKqqB,GACtBz6B,KAAKw8c,gBAAgB/hb,GACrBz6B,KAAK6+c,0BACR,CACDmC,wBACIhhd,KAAKohd,kBAAmB,EACxBphd,KAAKkhd,YAAclhd,KAAKmhd,YAC3B,CACDN,WAAW34c,GACPlI,KAAKmhd,aAAenhd,KAAK4K,QAAQm1c,iBAAiB73c,GAClDlI,KAAKkhd,YAAclhd,KAAKmhd,YAC3B,CACDP,WACS34c,GAAUjI,KAAKu4c,WAGpBv4c,KAAK4zP,QAAU5zP,KAAK4zP,SArTE,GAsTtB5zP,KAAK4K,QAAQk1c,eAAe9/c,KAAKu4c,QAASv4c,KAAK4zP,SAClD,CACDktN,qBAAqBZ,EAAgBC,GAC7Bngd,KAAKqpM,WAGTrpM,KAAKkhd,YAAclhd,KAAK4K,QAAQ81H,YAAY1gI,KAAKkhd,YAAahB,EAAgBC,GAC9Engd,KAAKohd,kBAAmB,EAC3B,CACDvC,0BACI,MAAMn7K,EAASztM,GAAWj2F,KAAKkI,MAAOlI,KAAKmvC,QAC3CnvC,KAAK2K,SAASiF,aAAa5P,KAAKkE,KAAKiI,cAAe,aAAe,GAAEnM,KAAKkI,MAAQw7R,EAAS1jS,KAAKujB,oBAAoBxD,IAAI,yBAC3H,CACD27M,cACI,IAAKzzN,GAAUjI,KAAKkhd,aAChB,OAEJ,MAAMI,EAAgBthd,KAAK4K,QAAQo1c,WAAWhgd,KAAKkhd,aACnDlhd,KAAKihd,oBAAoBK,EAAethd,KAAKkhd,YAChD,EAELZ,GAAsBv9c,UAAtB,0BAAmHu9c,IAlmTTt9c,MAkmTgDA,OAlmThDA,MAkmT0E48c,IAlmT1E58c,MAkmT0GA,OAlmT1GA,MAkmT2IA,OAlmT3IA,MAkmToKqQ,OAlmTpKrQ,MAkmTuMA,OAAjT,EACAs9c,GAAsB/pc,UAnmToFvT,MAmmT1G,MAAuGs9c,GAAvG/sc,8EAnmT0GvQ,MAmmT1G,8BAAuGwQ,mBAAvG,EAnmT0GxQ,CAmmT1G,yBAAuGwQ,kBAAvG,SAnmT0GxQ,MAmmT1G,kBAnmT0GA,CAmmT1G,iBAnmT0GA,CAmmT1G,0BAnmT0GA,CAmmT1G,gCAnmT0GA,CAmmT1G,qCAnmT0GA,MAmmT1G,+BAnmT0GA,CAmmT1G,sVAnmT0GA,MAmmTsuB,CACx0B,CACIsD,OAAO,EACPH,QAASiqL,KACTlyK,eAAaC,OAAW,IAAMmic,KAC/B,CACCn6c,QAASutK,MACTx1J,eAAaC,OAAW,IAAMmic,KAElCV,GACAD,GACA,CACIx5c,QAASsN,MACTyK,YAAayhc,IAEjB,CACIx5c,QAASuN,MACTlN,SAAU,wBApnToFxD,OAmmT1Guf,kDAsBiCH,8JAtBjC,oZAnmT0Gpf,MAunTlG,KAvnTkGA,MA2nTlG,UA3nTkGA,CA2nTlG,YA3nTkGA,CA2nTlG,WA3nTkGA,MA+nTtF,iBA/nTsFA,aAmmT1G,MAnmT0GA,MA4nT9F,GA5nT8FA,MA4nT9F,wCA5nT8FA,MA+nTlE,GA/nTkEA,MA+nTlE,uBA5BxC,gBAkD4Ck5c,GAAwNztR,MAA4GA,OAlDhXh2K,kBAqKA,MAAM8oc,GACFzhd,YAAYyjB,GACRvjB,KAAKujB,oBAAsBA,EAC3BvjB,KAAK+jK,aAAc,EACnB/jK,KAAKwhd,kBAAoB,IAAIt2c,KAChC,CACDgN,QAAQG,GACJ,OAAOrY,KAAKujB,oBAAoBxD,IAAI1H,EACvC,CACDopc,oBAAoBhjc,EAAMyrM,GACtB,IAAI9vM,GAAO,CACPyC,OAAQ4B,EACRkG,cAAeulM,GAEnBlqN,KAAKwhd,kBAAkBpxc,KAAKgK,GAC/B,EAELmnc,GAAsCx+c,UAAtC,0BAAmIw+c,IAzxTzBv+c,MAyxTgFqQ,OAA1L,EACAkuc,GAAsChrc,UA1xToEvT,MA0xT1G,MAAuHu+c,GAAvHhuc,wFA1xT0GvQ,KA0xT1G0+c,KAAogB1/b,OAApgB,YA1xT0Ghf,MA0xT1GyT,GA1xT0GzT,WA0xT1GwQ,oEA1xT0GxQ,MA0xT1G,qCA1xT0GA,CA0xT1G,0BA1xT0GA,CA0xT1G,uaA1xT0GA,MA2xTlG,cA3xTkGA,MA8xT9F,4BAASwQ,sBAAoB,SAApByR,GAAT,GA9xT8FjiB,MAgyTjG,GAhyTiGA,cAiyTlG,gBAjyTkGA,MAoyT9F,4BAASwQ,sBAAoB,QAApByR,GAAT,GApyT8FjiB,MAsyTjG,GAtyTiGA,SA0xT1G,MA1xT0GA,MA6xT9F,mCA7xT8FA,MAgyTjG,GAhyTiGA,MAgyTjGwQ,2BAhyTiGxQ,MAmyT9F,GAnyT8FA,MAmyT9F,kCAnyT8FA,MAsyTjG,GAtyTiGA,MAsyTjGwQ,0BAZT,oBAqDA,MAAMmuc,GACF7hd,YAAYoE,EAAM4G,GACd9K,KAAKkE,KAAOA,EACZlE,KAAK8K,OAASA,CACjB,CACDgL,qBACI9V,KAAK4hd,iBACR,CACDA,kBACI5hd,KAAK8K,OAAO+E,kBAAkB,IAAM6C,WAAW,IAAM1S,KAAKkE,KAAKiI,cAAciF,SAChF,EAELuwc,GAAyB5+c,UAAzB,0BAAsH4+c,IA31TZ3+c,MA21TsDA,OA31TtDA,MA21TgFA,OAA1L,EACA2+c,GAAyBruc,UA51TiFtQ,MA41T1G,MAA0G2+c,GAA1Gpuc,6CAcA,MAAMsuc,GACF/hd,YAAYoE,EAAM0G,EAAS2Y,GAAqBnI,GAAKzQ,GAAUG,IAC3D9K,KAAKkE,KAAOA,EACZlE,KAAK4K,QAAUA,EACf5K,KAAKujB,oBAAsBA,GAC3BvjB,KAAKob,IAAMA,GACXpb,KAAK2K,SAAWA,GAChB3K,KAAK8K,OAASA,GACd9K,KAAK+jK,aAAc,EAMnB/jK,KAAKqpM,UAAW,EAMhBrpM,KAAKoN,UAAW,EAUhBpN,KAAKmvC,OAAS,OAMdnvC,KAAKgjP,aAAc,EAYnBhjP,KAAK8hd,SAAU,EAQf9hd,KAAKipN,cAAgB,MAIrBjpN,KAAKmrL,MAAQ,CAAC,WAAY,WAI1BnrL,KAAK+wL,YAAc,IAAI7lL,MAMvBlL,KAAKkyF,OAAS,IAAIhnF,MAKlBlL,KAAK8wL,iBAAmB,IAAI5lL,MAI5BlL,KAAKwhd,kBAAoB,IAAIt2c,MAC7BlL,KAAKo4I,UAAY,EACjBp4I,KAAK+hd,kBAAoB,CAAEp1b,SAAS,EAAMuX,MAAO,GACjDlkC,KAAKgid,iBAAmB,GACxBhid,KAAKknB,cAAgB,IAAItb,KACzB5L,KAAKw8c,gBAAkB,OACvBx8c,KAAKy8c,gBAAkB,QAAS,EAChC5wc,MAAgBrE,IAChBxH,KAAKylB,uBAAyBzlB,KAAKujB,oBAAoBtX,QAAQC,UAAU,EAAGH,WACxE/L,KAAK8L,UAAYC,GAAM,MAAQ,OAEtC,CACGuI,oBACA,OAAOtU,KAAKoN,QACf,CACG25b,mBACA,OAAO/mc,KAAKqpM,QACf,CACGuzQ,mBACA,OAAO58c,KAAK+T,QACf,CAIG7L,UAAMA,GACNlI,KAAKkhG,OAASjL,GAAW/tF,EAAOlI,KAAKmvC,OAAQnvC,KAAKiid,iBAAiBt1b,QACtE,CACGzkB,YACA,OAAOlI,KAAKkhG,MACf,CAMGntF,aAAS7L,GACT,MAAM6L,EAAWwa,OAAOrmB,GAExBlI,KAAKo4I,UAAajoH,MAAMpc,GADH,EACeA,CACvC,CACGA,eACA,OAAQ/T,KAAKoN,cAA4B2H,EAAjB/U,KAAKo4I,SAChC,CAIG6pU,qBAAiB/5c,GACjBmX,OAAOC,OAAOtf,KAAK+hd,kBAAmB75c,EACzC,CACG+5c,uBACA,OAAOjid,KAAK+hd,iBACf,CAIGp8I,oBAAgBz9T,GAChBmX,OAAOC,OAAOtf,KAAKgid,iBAAkB95c,EACxC,CACGy9T,sBACA,OAAO3lU,KAAKgid,gBACf,CACD1yc,WACItP,KAAKiU,UAAYjU,KAAKkI,MACtBlI,KAAKgid,iBAAmBhid,KAAK4K,QAAQwtc,mBAAmBp4c,KAAKgid,iBAAkBhid,KAAKmvC,QACpFnvC,KAAKkid,eACR,CACD1xc,kBACIxQ,KAAK6+c,0BACL7+c,KAAKgqN,gBACLhqN,KAAKmid,oBACR,CACD9xc,YAAYpE,IACR,EAAIsE,OAAU,QAAStE,KACnBjM,KAAKiU,UAAYjU,KAAKkI,MACtBlI,KAAK6+c,4BAAL,EAEAtuc,OAAU,kBAAmBtE,IAC7BjM,KAAKmid,oBAEZ,CACDtxc,cACQ7Q,KAAKylB,wBACLzlB,KAAKylB,uBAAuBxU,cAEhCjR,KAAKknB,cAAcjW,aACtB,CAIGmxc,uBACA,OAAOpid,KAAK8hd,SAAW9hd,KAAKmrL,MAAM7qL,OAAS,GAAKN,KAAKgjP,WACxD,CAKDl8L,UACI,OAAO,CACV,CAID11C,QACQpR,KAAKoN,UAAYpN,KAAKgX,UAG1BhX,KAAKkE,KAAKiI,cAAciF,QACxBpR,KAAKgX,SAAU,EAClB,CAIDjJ,QACS/N,KAAKgX,UAGVhX,KAAKy8c,kBACLz8c,KAAKkE,KAAKiI,cAAc4B,OACxB/N,KAAKgX,SAAU,EAClB,CAID+wD,SACS9/D,GAAUjI,KAAKkI,SAGpBlI,KAAKkI,WAAQ6M,EACb/U,KAAKw8c,qBAAgBznc,GACrB/U,KAAK6+c,0BACR,CAIDwD,aAAapmU,GACLj8I,KAAKmmL,aAAelqC,IAGxBj8I,KAAKmmL,WAAalqC,EAClBj8I,KAAK8wL,iBAAiB1gL,KAAK6rI,GACH,aAApBj8I,KAAKmmL,YACLnmL,KAAK8K,OAAO+E,kBAAkB,KAC1B6C,WAAW,KACP1S,KAAKkrC,SAASmya,mBAAmBlxc,cAAciF,OAA/C,EADM,GAKrB,CAIDkxc,qBACItid,KAAKuid,2BACLvid,KAAKkE,KAAKiI,cAAciF,OAC3B,CAIDmsM,kBAAkB9iL,GAEdz6B,KAAK8hd,QAAU9hd,KAAKwid,mBAAmB/nb,GAASz6B,KAAKyid,wBAAwBhob,EAChF,CAIDiob,SAASx4P,GAES,UAAdA,EAAGrtM,OAAqB7c,KAAKyid,wBAAwBzid,KAAKiU,WAAajU,KAAKu9O,eAAerzB,EAAGvlM,eAC9F3kB,KAAKwhd,kBAAkBpxc,MAC1B,CAID2kL,WAAW7sL,GACPlI,KAAKkI,MAAQA,CAChB,CAID8sL,iBAAiBxkK,GACbxwB,KAAKw8c,gBAAkBhsb,CAC1B,CAIDykK,kBAAkBzkK,GACdxwB,KAAKy8c,gBAAkBjsb,CAC1B,CAID0kK,iBAAiB/pL,GACbnL,KAAKob,IAAIwC,eACT5d,KAAKoN,SAAWjC,CACnB,CAIDoyO,eAAerzB,GACX,MAAM9zM,EAAY,IAAI4/b,GAAuB9rP,GAC7ClqN,KAAKkyF,OAAO9hF,KAAKgG,GACZA,EAAUtC,uBACX9T,KAAKiU,UAAYjU,KAAKkI,OAE1BlI,KAAKy8c,iBACR,CACDoC,0BACI,MAAMn7K,EAASztM,GAAWj2F,KAAKkI,MAAOlI,KAAKmvC,OAAQnvC,KAAKiid,iBAAiBt1b,SACnEg2b,EAAkB,GAAE3id,KAAKkI,MAAQw7R,EAAS1jS,KAAKujB,oBAAoBxD,IAAI,4BAC7E/f,KAAK2K,SAASiF,aAAa5P,KAAKkE,KAAKiI,cAAe,aAAcw2c,EACrE,CACDR,qBACI,MAAMS,EAAkB5id,KAAK4K,QAAQ6tc,kBAAkBz4c,KAAK2lU,gBAAgBxpL,UACtEj0I,EAAS,kCAAiClI,KAAK2lU,gBAAgB/xE,sDAClCgvN,EAAgBpuc,uDACfouc,EAAgB/rb,YACpD72B,KAAKkE,KAAKiI,cAAc8e,cAAc,iCAAiCrb,aAAa,QAAS1H,EAChG,CACDs6c,mBAAmB/nb,GACfz6B,KAAKiU,UAAYwmB,EACjBz6B,KAAKy8c,iBACR,CACD8F,2BACIvid,KAAKiU,UAAY,KACbjU,KAAKkrC,SACLlrC,KAAKkrC,SAAS68B,QAGlB/nE,KAAKu4c,QAAQxwY,OAChB,CACD06Y,wBAAwBhob,GAChBz6B,KAAKkI,QAAUuyB,IAGnBz6B,KAAKkI,MAAQuyB,EACbz6B,KAAK+wL,YAAY3gL,KAAKqqB,GACtBz6B,KAAKw8c,gBAAgB/hb,GACrBz6B,KAAK6+c,0BACR,CACDqD,gBACI,GAAKj6c,GAAUjI,KAAKmmL,aAIpB,MAAI7vK,WAAuD,IAAxCtW,KAAKmrL,MAAMlqL,QAAQjB,KAAKmmL,YACvC,MAAM,IAAI5lL,MAAM,6FAJhBP,KAAKmmL,WAAanmL,KAAKmrL,MAAM,EAMpC,CACD6+B,gBACI,IAAKhqN,KAAKkE,KACN,OAEJ,IAAIsnB,EAAcxrB,KAAKkE,KAAKiI,cAC5BnM,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,QAAS,KAC9DxrB,KAAKgX,SAAU,KAEnBhX,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,OAAQ,KAC7DxrB,KAAKgX,SAAU,EACfhX,KAAKy8c,iBAAL,GAFJ,EAKP,EAELoF,GAAyB9+c,UAAzB,0BAAsH8+c,IAjsUZ7+c,MAisUsDA,OAjsUtDA,MAisUgFm1c,IAjsUhFn1c,MAisUmHqQ,OAjsUnHrQ,MAisUsJA,OAjsUtJA,MAisUuLA,OAjsUvLA,MAisUgNA,OAA1T,EACA6+c,GAAyBtrc,UAlsUiFvT,MAksU1G,MAA0G6+c,GAA1Gtuc,uEAlsU0GvQ,KAksU1G6/c,MAlsU0G7/c,KAksU1G8/c,MAlsU0G9/c,KAksU1G+/c,MAlsU0G//c,KAksU1Gggd,mBAlsU0Ghgd,MAksU1GyT,GAlsU0GzT,WAksU1GwQ,mBAlsU0GxQ,MAksU1GyT,GAlsU0GzT,WAksU1GwQ,qBAlsU0GxQ,MAksU1GyT,GAlsU0GzT,WAksU1GwQ,oBAlsU0GxQ,MAksU1GyT,GAlsU0GzT,WAksU1GwQ,kEAlsU0GxQ,MAksU1G,gCAlsU0GA,CAksU1G,+BAlsU0GA,CAksU1G,kBAlsU0GA,CAksU1G,2BAlsU0GA,MAksU1G,kCAlsU0GA,CAksU1G,8BAlsU0GA,CAksU1G,yeAlsU0GA,MAksUo0B,CACt6B,CACIsD,OAAO,EACPH,QAASiqL,KACTlyK,eAAaC,OAAW,IAAM0jc,KAElC,CACI17c,QAASutK,MACTx1J,eAAaC,OAAW,IAAM0jc,KAElC1J,GACAF,GACA,CACI9xc,QAASsN,MACTyK,YAAa+5b,IAEjB,CACI9xc,QAASuN,MACTlN,SAAU,2BAptUoFxD,OAksU1Guf,0FAuBoCH,0KAvBpC28L,EAyBkC38L,oKAzBlC48L,EA2BiC58L,iKA3BjC68L,GA6BiC78L,yHA7BjC88L,GA+ByB98L,0FA/BzB+8L,GAiC6B/8L,+FAjC7Bg9L,GAmCiCh9L,2GAnCjCi9L,GAqC2Bj9L,iHArC3Buqa,GAuC0Bvqa,qGAvC1Bwqa,GAyC6Bxqa,4GAzC7Byqa,GA2C0Bzqa,uGA3C1B0qa,GA6CyB1qa,oGA7CzB2qa,GA+C0B3qa,mHA/C1B4qa,GAiDyB5qa,6FAjDzB6qa,GAmD0B7qa,gGAnD1B,kzCAlsU0Gpf,MAutUlG,KAvtUkGA,MAuvUlG,kBAvvUkGA,MAowUlG,WApwUkGA,MAqwU9F,kCArwU8FA,MAixU9F,iCAjxU8FA,cA6xUlG,mBA3FR,MAlsU0GA,MAwvU7F,GAxvU6FA,MAwvU7F,2BAxvU6FA,MAswUzF,GAtwUyFA,MAswUzF,kCAtwUyFA,MAkxUzF,GAlxUyFA,MAkxUzF,iCAlxUyFA,MA6xU1D,GA7xU0DA,MA6xU1D,kBA3FhD,gBAgGwC01c,GAAoO0D,GAAyPkE,GAAyQiB,GAAgJrF,GAAwNztR,MAAmFkzR,GAAwElzR,OAhGjxCh2K,kBA4QA,MAAMwqc,GAAmB,CAAC,QAAS,QAUnC,MAAMp9I,GACF/lU,YAAYoE,EAAMqa,EAAcnD,GAAKmI,GAAqBzY,GAAQH,IAC9D3K,KAAKkE,KAAOA,EACZlE,KAAKue,aAAeA,EACpBve,KAAKob,IAAMA,GACXpb,KAAKujB,oBAAsBA,GAC3BvjB,KAAK8K,OAASA,GACd9K,KAAK2K,SAAWA,GAChB3K,KAAK+jK,aAAc,EACnB/jK,KAAKgL,KAAO,UAKZhL,KAAKmrL,MAAQ,CAAC,WAAY,WAM1BnrL,KAAKqpM,UAAW,EAMhBrpM,KAAKoN,UAAW,EAUhBpN,KAAKmvC,OAAS,OAMdnvC,KAAKgjP,aAAc,EAYnBhjP,KAAK8hd,SAAU,EAUf9hd,KAAKipN,cAAgB,MAIrBjpN,KAAK+wL,YAAc,IAAI7lL,MAKvBlL,KAAK2Z,KAAO,IAAIzO,MAKhBlL,KAAK4Z,MAAQ,IAAI1O,MAIjBlL,KAAKkP,QAAU,IAAIhE,MAInBlL,KAAKmP,OAAS,IAAIjE,MAMlBlL,KAAKkyF,OAAS,IAAIhnF,MAOlBlL,KAAKkjd,iBAAmB,IAAIh4c,MAK5BlL,KAAK8wL,iBAAmB,IAAI5lL,MAI5BlL,KAAK0O,WAAY,EACjB1O,KAAKo4I,UAAY,EACjBp4I,KAAKwb,eAAiB,CAAEC,SAAS,GACjCzb,KAAKgid,iBAAmB,GACxBhid,KAAK+hd,kBAAoB,CAAEp1b,SAAS,EAAMuX,MAAO,GACjDlkC,KAAKsL,MAAQ,SACbtL,KAAKuL,SAAW,SAChBvL,KAAKwL,UAAY,QACjBxL,KAAKknB,cAAgB,IAAItb,KACzB5L,KAAKy8c,gBAAkB,OACvBz8c,KAAKw8c,gBAAkB,OACvBx8c,KAAKmjd,iBAAoBnzc,IAAUA,GAAM40O,4BAAN,EACnC/4O,MAAgBrE,IAChBxH,KAAKylB,uBAAyBzlB,KAAKujB,oBAAoBtX,QAAQC,UAAU,EAAGH,WACxE/L,KAAK8L,UAAYC,GAAM,MAAQ,OAEtC,CACGgY,mBACA,OAAO/jB,KAAK0O,SACf,CACG4F,oBACA,OAAOtU,KAAKoN,QACf,CACG25b,mBACA,OAAO/mc,KAAKqpM,QACf,CACGjgL,mBACA,OAAOppB,KAAKif,MACf,CACG29b,mBACA,OAAO58c,KAAK+T,QACf,CAIGkoI,SAAKA,GACLj8I,KAAKmrL,MAAQ,CAAClvC,EACjB,CACGA,WACA,OAAQj8I,KAAKmrL,OAASnrL,KAAKmrL,MAAM7qL,OAAS,EAAKN,KAAKmrL,MAAM,GAAK,IAClE,CAIGjjL,UAAMA,GACNlI,KAAKkhG,OAASjL,GAAW/tF,EAAOlI,KAAKmvC,OAAQnvC,KAAKiid,iBAAiBt1b,QACtE,CACGzkB,YACA,OAAOlI,KAAKkhG,MACf,CAIG/hF,kBAAcjX,GACdlI,KAAKwb,eAAiB6D,OAAOC,OAAOtf,KAAKwb,eAAgBtT,EAC5D,CACGiX,oBACA,OAAOnf,KAAKwb,cACf,CAIGmqT,oBAAgBz9T,GAChBlI,KAAKgid,iBAAmB3ic,OAAOC,OAAOtf,KAAKgid,iBAAkB95c,EAChE,CACGy9T,sBACA,OAAO3lU,KAAKgid,gBACf,CAIGC,qBAAiB/5c,GACjBlI,KAAK+hd,kBAAoB1ic,OAAOC,OAAOtf,KAAK+hd,kBAAmB75c,EAClE,CACG+5c,uBACA,OAAOjid,KAAK+hd,iBACf,CAMGhuc,aAAS7L,GACT,MAAM6L,EAAWwa,OAAOrmB,GAExBlI,KAAKo4I,UAAajoH,MAAMpc,GADH,EACeA,CACvC,CACGA,eACA,OAAQ/T,KAAKoN,cAA4B2H,EAAjB/U,KAAKo4I,SAChC,CAWGnqI,SAAKA,GACL,MAAMC,EAAUD,GA1ND,SA2NfjO,KAAKmO,cAAcD,EAAS,QAC5BlO,KAAKsL,MAAQ4C,CAChB,CACGD,WACA,OAAOjO,KAAKsL,KACf,CAYG8C,YAAQA,GACR,MAAMC,EAAaD,GA5OD,SA6OlBpO,KAAKmO,cAAcE,EAAY,WAC/BrO,KAAKuL,SAAW8C,CACnB,CACGD,cACA,OAAOpO,KAAKuL,QACf,CAWGrB,aAASA,GACT,MAAMoE,EAAcpE,GA7PF,QA8PlBlK,KAAKmO,cAAcG,EAAa,YAChCtO,KAAKwL,UAAY8C,CACpB,CACGpE,eACA,OAAOlK,KAAKwL,SACf,CAIGyT,aACA,OAAOhX,GAAUjI,KAAKwgB,SACzB,CAIG4ic,iBACA,OAAIpjd,KAAK8M,UACE9M,KAAK8M,UAEZ9M,KAAKyM,KACG,cAAazM,KAAKyM,YAD9B,CAGH,CACD6C,WACI,MAAM+oc,EAAiC,SAAhBr4c,KAAKmvC,OAvwGX,SAuwGmD6oa,GAC9DM,EAAkBt4c,KAAKgid,iBAAiBzJ,QACxCC,GAA2C,iBAApBF,GAAgCnD,GAAemD,GACxEnD,GAAemD,GAAiB1kN,aAChC7+O,EACJ/U,KAAKgid,iBAAmB,CACpBzJ,QAASD,GAAmBD,EAC5Bl8T,SAAUn8I,KAAKgid,iBAAiB7lU,UAAY,GAC5Cy3G,QAAS5zP,KAAKgid,iBAAiBpuN,SAAW4kN,IAAiB,GAElE,CACDhoc,kBAC0B,CAAC,OAAQ,UAAW,YAC5BC,QAAQC,IAClB1Q,KAAKmO,cAAcnO,KAAK0Q,GAAQA,EAAhC,GAEJ1Q,KAAK6+c,0BACL7+c,KAAKqjd,eACLrjd,KAAKgqN,eACR,CACD35M,YAAYpE,GACJA,EAAQkjC,QAA0C,SAAhCljC,EAAQkjC,OAAOvuB,eACjC5gB,KAAKmmL,WAAa,WAEE,aAApBnmL,KAAKmmL,YAA6BnmL,KAAKiid,iBAAiBt1b,UACxD3sB,KAAKmvC,OAAS,OACdnvC,KAAKkI,MAAQ+tF,GAAWj2F,KAAKkI,MAAOlI,KAAKmvC,OAAQnvC,KAAKiid,iBAAiBt1b,WAAhD,EAEvBpc,OAAU,QAAStE,IACnBjM,KAAK6+c,yBAEZ,CACDhuc,cACI7Q,KAAKuqB,aACDvqB,KAAKylB,wBACLzlB,KAAKylB,uBAAuBxU,cAEhCjR,KAAKknB,cAAcjW,cACnBjR,KAAKsjd,gBAAgB,SAAUL,GAClC,CAIDM,kBAAkBr5P,GACdlqN,KAAKkyF,OAAO9hF,KAAK85M,EACpB,CAIDxa,cACI1vM,KAAKoR,QACLpR,KAAKwjd,kBAAkBxjd,KAAKif,OAC/B,CAIDwkc,mBAAmBzzc,GACf,IAAIhQ,KAAKoN,SAIT,IADApN,KAAKoR,SAAL,EACIsyc,OAAU1zc,EAAM6M,OAASnU,GAAYA,IAAY1I,KAAK2jd,YAAYx3c,eAAgB,CAClF,MAAM6D,EAAQ,IAAImmc,GAAsBn2c,KAAKkI,OAK7C,OAJAlI,KAAKkjd,iBAAiB9yc,KAAKJ,UACtBA,EAAMqmc,mBAAqBr2c,KAAKif,SACjCjf,KAAKwjd,kBAAkBxjd,KAAKif,QAGnC,CACDjf,KAAKwjd,kBAAkBxjd,KAAKif,OAA5B,CACH,CAID7N,QACIpR,KAAK0O,WAAY,EACjB1O,KAAKkE,KAAKiI,cAAciF,OAC3B,CAIDwyc,qBACQ5jd,KAAK0O,WAGT1O,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKoR,QACLpR,KAAKkP,QAAQkB,MAAb,EAEP,CAIDrC,OACI/N,KAAK0O,WAAY,EACjB1O,KAAKkE,KAAKiI,cAAc4B,OACxB/N,KAAKy8c,iBACR,CAIDoH,oBACQ7jd,KAAKif,QAGTjf,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKmP,OAAOiB,OACZpQ,KAAK0O,WAAY,GAExB,CAIDq5D,SACS9/D,GAAUjI,KAAKkI,SAGpBlI,KAAKkhG,YAASnsF,EACd/U,KAAK6+c,0BACL7+c,KAAKw8c,qBAAgBznc,GACxB,CAODmK,OAAOvF,GACC3Z,KAAKoN,UAAYpN,KAAKqpM,WAG1BrpM,KAAKob,IAAIwC,eACT5d,KAAKuqB,cACL5Q,EAAO1R,GAAU0R,GAAQA,GAAQ3Z,KAAKif,SAElCjf,KAAK8iB,YAEZ,CAIDy6L,kBAAkB9iL,GACd,MAAMi8a,EAAczgX,GAAWx7D,EAAOz6B,KAAKmvC,OAAQnvC,KAAKiid,iBAAiBt1b,SACrD+pb,IAAgB12c,KAAKkI,QAErClI,KAAKkI,MAAQwuc,EACb12c,KAAK+wL,YAAY3gL,KAAKsmc,GACtB12c,KAAK6+c,0BACL7+c,KAAKw8c,gBAAgB9F,GAE5B,CAIDoN,gBAAgB9zc,GACRhQ,KAAK+jd,iBAAiB/zc,KAG1BhQ,KAAK0O,WAAY,EACjB1O,KAAKmP,OAAOiB,OACZpQ,KAAKy8c,kBACLz8c,KAAKwjd,kBAAiB,GACzB,CAIDzuR,WAAW7sL,GACPlI,KAAKkI,MAAQA,CAChB,CAID8sL,iBAAiBxkK,GACbxwB,KAAKw8c,gBAAkBhsb,CAC1B,CAIDykK,kBAAkBzkK,GACdxwB,KAAKy8c,gBAAkBjsb,CAC1B,CAID0kK,iBAAiB/pL,GACbnL,KAAKob,IAAIwC,eACT5d,KAAKoN,SAAWjC,CACnB,CAID64c,qBAAqBh0c,IACbA,EAAME,UAAYC,iBAAkBH,EAAME,UAAYC,eACtDH,EAAM6D,iBACN7T,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKwjd,kBAAiB,EAAtB,GAGX,CAIDS,mBAAmBj0c,GAKf,GAJIA,EAAME,UAAYC,eAClBnQ,KAAKwjd,kBAAiB,GACtBxjd,KAAKkE,KAAKiI,cAAciF,SAExBpB,EAAME,UAAYC,UAAU,CAC5B,MAAM+zc,EAAiBl0c,EAAMkpF,SAAWl5F,KAAKmkd,sBAAsBh4c,cAAgBnM,KAAKksa,qBAAqB//Z,cACvGi4c,GAAcp0c,EAAMkpF,SAAWl5F,KAAKksa,qBAAqB//Z,cAAgBnM,KAAKmkd,sBAAsBh4c,cACtG6D,EAAM6M,SAAWqnc,IACjBl0c,EAAM6D,iBACNuwc,GAAYhzc,QAEnB,CACJ,CAKD01C,UACI,OAAO,CACV,CACD+3Z,0BACI,MAAM8D,EAAkB,GAAE3id,KAAKkI,MAAQlI,KAAKkI,MAAQlI,KAAKujB,oBAAoBxD,IAAI,wBACjF/f,KAAK2K,SAASiF,aAAa5P,KAAKkE,KAAKiI,cAAe,aAAcw2c,EACrE,CACDx0c,cAAcjG,EAAOwI,GACjB,MAAMuC,GAAOjT,KAAKkE,KAAKiI,cACjBQ,GAAUlD,GAAkB,SAAUiH,EAAO1Q,KAAK0Q,GAAQxI,GAC5DyE,GAAQ7C,UACR9J,KAAK2K,SAASqI,YAAYC,GAAMtG,GAAQ7C,UAExC6C,GAAQ5C,OACR/J,KAAK2K,SAASyH,SAASa,GAAMtG,GAAQ5C,MAE5C,CACDg6c,iBAAiB75P,GACb,MAAMm6P,EAAgCrkd,KAAKwgB,SAASM,aAAapD,SAASwsM,EAAGx0M,eAE7E,SADoBguc,OAAUx5P,EAAGx0M,cAAgBhN,IAAYA,KAAY1I,KAAKkE,KAAKiI,gBAC7Dk4c,CACzB,CACDb,iBAAiB7pc,GACb,MAAMuqO,EAAYlkP,KAAKif,SAAWtF,EAClC,GAAI3Z,KAAKoN,UAAYpN,KAAKqpM,UAAY66C,EAClC,OAEJ,IAAI9tO,GACAuD,GACAvD,GAAY,IAAI8/b,GAChBl2c,KAAK2Z,KAAKvJ,KAAKgG,MAGfA,GAAY,IAAI6/b,GAChBj2c,KAAK4Z,MAAMxJ,KAAKgG,KAEfA,GAAUtC,sBACX9T,KAAKkf,OAAOvF,GAEZA,GACA3Z,KAAKg9Z,mBAEZ,CACDA,oBACIh9Z,KAAK8K,OAAO88M,SAASniN,QAAKilB,MAAK,IAAIxe,UAAU,KACzC,GAAIlM,KAAKskd,gBAAiB,CACtB,MAAMp5a,EAAWlrC,KAAKskd,gBAAgBp5a,UACfA,EAAWA,EAASmya,mBACvCr9c,KAAKskd,gBAAgB/L,QAAQr0c,MAClBiI,cAAciF,OAChC,GAER,CACD0R,YACI,MAAMg/C,EAAqC,QAAnB9hE,KAAK8L,UAAsB,QAAU,OACvDo6O,EAAiB,CAAEjlO,WAAY6gD,EAAiB5gD,SAAU,UAC1DilO,GAAgB,CAAEllO,WAAY6gD,EAAiB5gD,SAAU,OAC/DlhB,KAAKwgB,SAAWxgB,KAAKue,aAAa5E,KAAK,CACnC6H,OAAQxhB,KAAK2jd,YACbloc,QAASzb,KAAKmf,cAAc1D,QAC5B4F,SAAUrhB,KAAKmf,cAAckC,SAC7BR,WAAYslO,GACZplO,YAAamlO,EACbxqO,WAAY,sBACZ+F,QAASzhB,KAAK0hB,cACdoG,aAAc,aAElB9nB,KAAKwgB,SAASmB,yBAAyBzV,UAAU,KAC7ClM,KAAKwjd,kBAAiB,GACjBxjd,KAAKif,QACNjf,KAAKkE,KAAKiI,cAAciF,MAAM,CAC1BwuN,eAAe,GADnB,EAKX,CACDr1M,cACSvqB,KAAKif,SAGVjf,KAAKwgB,SAAS5G,QACd5Z,KAAKwgB,SAAW,KACnB,CACG2jc,4BACA,IAAKnkd,KAAKskd,gBAAgBtmO,QAAWh+O,KAAKmrL,MAAM7qL,QAAU,IAAMN,KAAKskd,gBAAgBthO,YAAc,CAC/F,MAAM93M,EAAWlrC,KAAKskd,gBAAgBp5a,SACtC,OAAOA,EAAWA,EAASmya,mBAAqBr9c,KAAKskd,gBAAgB/L,QAAQr0c,IAChF,CACD,OAAOlE,KAAKmrL,MAAM7qL,OAAS,EAAIN,KAAKskd,gBAAgBtmO,OAAOumO,sBAAsBnvc,UAAU,GAAKpV,KAAKskd,gBAAgBtmO,OAAOwmO,kBAC/H,CACGt4C,2BACA,GAAIlsa,KAAK8hd,QACL,OAAO9hd,KAAKskd,gBAAgBr6M,OAAOw6M,WAEvC,GAAIzkd,KAAKskd,gBAAgB/L,QACrB,OAAOv4c,KAAKskd,gBAAgB/L,QAAQr0c,KAExC,MAAMgnC,EAAWlrC,KAAKskd,gBAAgBp5a,SAChCglM,EAAShlM,GAAYA,EAASglM,OACpC,OAAIhlM,GAAYglM,GAAgC,QAAtBA,EAAOirO,WACtBjrO,EAAOw0O,SAEX1kd,KAAKiid,iBAAiBt1b,QAAUujN,EAAOy0O,aAAaxpD,aAAejrL,EAAO00O,SACpF,CACDtB,gBAAgBhpc,EAAQub,GACpB,MAAMrK,GAAcxrB,KAAKkE,KAAKiI,cAC9B0pB,EAAOplB,QAAQy5M,IAAM1+L,GAAa,GAAElR,kBAAuB4vM,GAAIlqN,KAAKmjd,kBAAkB,GACzF,CACDn5P,gBACI,IAAKhqN,KAAKkE,KACN,OAEJ,IAAIsnB,EAAcxrB,KAAKkE,KAAKiI,cAC5BnM,KAAK8K,OAAO+E,kBAAkB,KAC1B7P,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,UAAW,KAChExrB,KAAK4jd,oBAAL,IAEJ5jd,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,WAAaxb,IAClE,MAAM60c,KAAe7kd,KAAKwgB,aACtBkjc,OAAU1zc,EAAM0F,cAAgBhN,IAAYA,KAAY1I,KAAKskd,gBAAgBpgd,KAAKiI,eAEhF24c,MAAiBpB,OAAU1zc,EAAM0F,cAAgBhN,IAAYA,KAAY1I,KAAKkE,KAAKiI,gBACpF04c,KAAiBC,IAClB9kd,KAAK6jd,mBAAL,IAGR7jd,KAAKsjd,gBAAgB,MAAOL,IAC5Bjjd,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,UAAYxb,IACjEhQ,KAAKgkd,qBAAqBh0c,EAA1B,IAEJhQ,KAAKknB,cAAclb,IAAIhM,KAAK2K,SAASmF,OAAO0b,EAAa,QAAUxb,IAC/DhQ,KAAK8K,OAAO4G,IAAI,KACZ1R,KAAKyjd,mBAAmBzzc,EAAxB,EADJ,GADJ,EAMP,CACDqzc,eACI,MAAM73b,EAAcxrB,KAAKkE,KAAKiI,cACxB44c,EAAav5b,EAAYhC,aAAa,MAC5C,GAAIu7b,EACA/kd,KAAKopM,YAAc27Q,MAElB,CACD,MAAM78b,GAAM,QAAItM,WAChB4P,EAAY5b,aAAa,KAAMsY,IAC/BloB,KAAKopM,YAAclhL,EACtB,CACJ,EAEL29S,GAAqB9iU,UAArB,0BAAkH8iU,IAzlWR7iU,MAylW8CA,OAzlW9CA,MAylWwEs5T,OAzlWxEt5T,MAylWsGA,OAzlWtGA,MAylWuIqQ,OAzlWvIrQ,MAylW0KA,OAzlW1KA,MAylWgMA,OAA1S,EACA6iU,GAAqBtvT,UA1lWqFvT,MA0lW1G,MAAsG6iU,GAAtGtyT,mEA1lW0GvQ,KA0lW1Ggid,KAiBkH7ic,OA3mWRnf,KA0lW1Giid,MA1lW0Gjid,KA0lW1Gkid,MA1lW0Glid,KA0lW1Gmid,mBA1lW0Gnid,MA0lW1GyT,GA1lW0GzT,WA0lW1GwQ,sBA1lW0GxQ,MA0lW1GyT,GA1lW0GzT,WA0lW1GwQ,wBA1lW0GxQ,MA0lW1GyT,GA1lW0GzT,WA0lW1GwQ,0BA1lW0GxQ,MA0lW1GyT,GA1lW0GzT,WA0lW1GwQ,2EA1lW0GxQ,MA0lW1G,gCA1lW0GA,CA0lW1G,+BA1lW0GA,CA0lW1G,+BA1lW0GA,CA0lW1G,0BA1lW0GA,CA0lW1G,kBA1lW0GA,CA0lW1G,eA1lW0GA,MA0lW1G,8BA1lW0GA,CA0lW1G,8BA1lW0GA,CA0lW1G,yBA1lW0GA,CA0lW1G,yBA1lW0GA,CA0lW1G,mpBA1lW0GA,MA0lWyoC,CAAC,CACxuCsD,OAAO,EACPH,QAASiqL,KACTlyK,eAAaC,OAAW,IAAM0nT,KAC/B,CACC1/T,QAASutK,MACTx1J,eAAaC,OAAW,IAAM0nT,KAElCkyI,GACA,CACI5xc,QAASsN,MACTyK,YAAa65b,IAEjB,CACI5xc,QAASuN,MACTlN,SAAU,uBAzmWoFxD,OA0lW1Guf,8FAoBgCH,0JApBhCira,EAsBoCjra,sKAtBpCkra,EAwBkClra,gKAxBlCmra,GA0BiCnra,6JA1BjCora,GA4BiCpra,qHA5BjCqra,GA8ByBrra,sFA9BzBsra,GAgC6Btra,2FAhC7Bura,GAkCiCvra,uGAlCjCwra,GAoC2Bxra,6GApC3Byra,GAsC0Bzra,iGAtC1B0ra,GAwC6B1ra,wGAxC7B2ra,GA0C0B3ra,mGA1C1B4ra,GA4CyB5ra,gGA5CzB6ra,GA8C0B7ra,+GA9C1B8ra,GAgDyB9ra,yFAhDzB+ra,GAkD0B/ra,4FAlD1B,+iCA1lW0Gpf,MA4mWlG,KA5mWkGA,MA8oWlG,aA9oWkGA,CA8oWlG,YA9oWkGA,MAkpW1F,mBAlpW0FA,MAmpW1F,YAnpW0FA,gBAspWlG,cAtpWkGA,MA0pW1F,YA1pW0FA,cA4pWlG,8BA5pWkGA,aAgrWlG,YAtFR,MA1lW0GA,MAipW1F,GAjpW0FA,MAipW1F,UAjpW0FA,MAipW1F,6BAjpW0FA,MAkpWnF,GAlpWmFA,MAkpWnF,4BAlpWmFA,MAmpWvD,GAnpWuDA,MAmpWvD,4BAzDnD,gBAuF4C6+c,GAAgX3F,GAAwNztR,MAA6EA,OAvFjsBh2K,kBAgSA,MAAM2sc,WAA2CnJ,GAC7Cn8c,YAAY8K,GACRqT,QACAje,KAAK4K,QAAUA,CAClB,CACG0X,eACA,OAAO,CACV,EAEL8ic,GAAmCrid,UAAnC,0BAAgIqid,IAn4WtBpid,MAm4W0EqQ,OAApL,EACA+xc,GAAmC7uc,UAp4WuEvT,MAo4W1G,MAAoHoid,GAApH7xc,yJAp4W0GvQ,MAo4W4L,CAC9R,CACImD,QAAS81c,GACT/9b,eAAaC,OAAW,IAAMinc,OAv4WgEpid,OAo4W1Guf,0DAyCA,MAAM0nT,IAENA,GAAkBlnU,UAAlB,0BAA+GknU,GAA/G,EACAA,GAAkBxjU,UAh7WwFzD,MAg7W1G,MAAgHinU,KAqBhHA,GAAkBvjU,UAr8WwF1D,MAq8W1G,UAA6I,CACjIgvc,GACA9nI,GACApzT,MACA2L,MACA8uJ,UA+BZ,MAAM8zS,GACFvld,YAAY6K,EAAU6gB,GAClBxrB,KAAK2K,SAAWA,EAChB3K,KAAKwrB,YAAcA,EACnBxrB,KAAKsld,YAAa,EAClBtld,KAAKsL,MAAQ,SACbtL,KAAKuL,SAAW,QACnB,CAWG0C,SAAKA,GACL,MAAMC,EAAUD,GA9BD,SA+BfjO,KAAKmO,cAAcD,EAAS,QAC5BlO,KAAKsL,MAAQ4C,CAChB,CACGD,WACA,OAAOjO,KAAKsL,KACf,CAWG8C,YAAQA,GACR,MAAMC,EAAaD,GA/CH,SAgDhBpO,KAAKmO,cAAcE,EAAY,WAC/BrO,KAAKuL,SAAW8C,CACnB,CACGD,cACA,OAAOpO,KAAKuL,QACf,CACDiF,kBAC0B,CAAC,OAAQ,WACjBC,QAAQC,IAClB1Q,KAAKmO,cAAcnO,KAAK0Q,GAAQA,EAAhC,EAEP,CACDvC,cAAcjG,EAAOwI,GACjB,MAAMuC,GAAOjT,KAAKwrB,YAAYrf,cACxBQ,GAAUlD,GAAkB,WAAYiH,EAAO1Q,KAAK0Q,GAAQxI,GAC9DyE,GAAQ7C,UACR9J,KAAK2K,SAASqI,YAAYC,GAAMtG,GAAQ7C,UAExC6C,GAAQ5C,OACR/J,KAAK2K,SAASyH,SAASa,GAAMtG,GAAQ5C,MAE5C,EAELs7c,GAAkBtid,UAAlB,0BAA+Gsid,IAtiXLrid,MAsiXwCA,OAtiXxCA,MAsiXiEA,OAA3K,EACAqid,GAAkB/xc,UAviXwFtQ,MAuiX1G,MAAmGqid,GAAnG9xc,oFAviX0GvQ,MAuiX1G,qEA8CA,MAAMk0O,IAENA,GAAen0O,UAAf,0BAA4Gm0O,GAA5G,EACAA,GAAezwO,UAxlX2FzD,MAwlX1G,MAA6Gk0O,KAC7GA,GAAexwO,UAzlX2F1D,MAylX1G,UAAuI,CAAC8T,UAoBxI,MAAMyuc,GACFzld,YAAY6K,EAAU6gB,GAClBxrB,KAAK2K,SAAWA,EAChB3K,KAAKwrB,YAAcA,EACnBxrB,KAAKsld,YAAa,EAClBtld,KAAKsL,MAAQ,YACbO,MAAgBrE,GACnB,CAUGyG,SAAKA,GACL,MAAMC,EAAUD,GA5BH,SA6BbjO,KAAKmO,cAAcD,EAAS,QAC5BlO,KAAKsL,MAAQ4C,CAChB,CACGD,WACA,OAAOjO,KAAKsL,KACf,CACDkF,kBAG0B,CAAC,QACTC,QAAQC,IAClB1Q,KAAKmO,cAAcnO,KAAK0Q,GAAQA,EAAhC,EAEP,CACDvC,cAAcjG,EAAOwI,GACjB,MAAMuC,GAAOjT,KAAKwrB,YAAYrf,cACxBQ,GAAUlD,GAAkB,QAASiH,EAAO1Q,KAAK0Q,GAAQxI,GAC3DyE,GAAQ7C,UACR9J,KAAK2K,SAASqI,YAAYC,GAAMtG,GAAQ7C,UAExC6C,GAAQ5C,OACR/J,KAAK2K,SAASyH,SAASa,GAAMtG,GAAQ5C,MAE5C,EAELw7c,GAAqBxid,UAArB,0BAAkHwid,IAzpXRvid,MAypX8CA,OAzpX9CA,MAypXuEA,OAAjL,EACAuid,GAAqBjyc,UA1pXqFtQ,MA0pX1G,MAAsGuid,GAAtGhyc,uFA1pX0GvQ,MA0pX1G,gDA4CA,MAAMwid,IAENA,GAAkBzid,UAAlB,0BAA+Gyid,GAA/G,EACAA,GAAkB/+c,UAzsXwFzD,MAysX1G,MAAgHwid,KAChHA,GAAkB9+c,UA1sXwF1D,MA0sX1G,UAA6I,CAAC8T,UAU9I,IAAI2uc,GAAW,EAKf,MAAMC,GACF5ld,cACIE,KAAK0jB,WAAY,EAQjB1jB,KAAKghB,MAAQ,QAIbhhB,KAAKkoB,GAAM,eAAcu9b,KACzBzld,KAAK2ld,cAAgB,OACxB,CACGC,iBACA,MAAsB,UAAf5ld,KAAKghB,KACf,CACG6kc,eACA,MAAsB,QAAf7ld,KAAKghB,KACf,CACG8kc,kBACA,OAAO9ld,KAAKkoB,EACf,EAELw9b,GAAe3id,UAAf,0BAA4G2id,GAA5G,EACAA,GAAenvc,UArvX2FvT,MAqvX1G,MAAgG0id,GAAhGnyc,4EArvX0GvQ,MAqvX1G,uBArvX0GA,CAqvX1G,oBArvX0GA,MAqvX1G,2BArvX0GA,CAqvX1G,4BArvX0GA,CAqvX1G,oHArvX0GA,cAsvXlG,GADR,oBA8BA,IAAIgxX,GAAS,EAIb,MAAM+xF,GACFjmd,cAQIE,KAAKghB,MAAQ,QAIbhhB,KAAKkoB,GAAM,cAAa8rW,KACxBh0X,KAAK0jB,WAAY,CACpB,CACGkic,iBACA,MAAsB,UAAf5ld,KAAKghB,KACf,CACG6kc,eACA,MAAsB,QAAf7ld,KAAKghB,KACf,CACG8kc,kBACA,OAAO9ld,KAAKkoB,EACf,EAEL69b,GAAchjd,UAAd,0BAA2Ggjd,GAA3G,EACAA,GAAcxvc,UAlzX4FvT,MAkzX1G,MAA+F+id,GAA/Fxyc,2EAlzX0GvQ,MAkzX1G,oBAlzX0GA,MAkzX1G,0BAlzX0GA,CAkzX1G,4BAlzX0GA,CAkzX1G,oHAlzX0GA,cAmzXlG,GADR,oBA+BA,MAAMgjd,GACFlmd,YAAY6K,EAAU4Y,EAAqBiI,IACvCxrB,KAAK2K,SAAWA,EAChB3K,KAAKujB,oBAAsBA,EAC3BvjB,KAAKwrB,YAAcA,GACnBxrB,KAAK0jB,WAAY,EAYjB1jB,KAAKimd,UAAY,UASjBjmd,KAAKk7F,YAAc,WAWnBl7F,KAAKkmd,WAAa,UAClBlmd,KAAKknB,cAAgB,IAAItb,KACzB5L,KAAK+L,KAAM,KACXF,MAAgBrE,IAChBxH,KAAKknB,cAAclb,IAAIhM,KAAKujB,oBAAoBtX,QAAQC,UAAU,EAAGH,WACjE/L,KAAK+L,IAAMA,GACX/L,KAAK8L,UAAY9L,KAAK+L,IAAM,MAAQ,QAE3C,CACGo6c,iBACA,QAAKnmd,KAAKk+K,UAGHl+K,KAAKk+K,QAAQu1N,UAAYzzY,KAAKk+K,QAAQD,SAAWj+K,KAAKk+K,QAAQt7D,OACxE,CACGtuG,oBAKA,SAJKtU,KAAKk+K,SAINl+K,KAAKomd,eAAepmd,KAAKk+K,YAGtBl+K,KAAKqmd,mBACRrmd,KAAKsmd,mBACLtmd,KAAKumd,qBACZ,CACGC,iBAAaA,GACbxmd,KAAKymd,oBAAoBD,GACzBxmd,KAAKk+K,QAAUsoS,EAAazwc,KAC/B,CAIGkL,iBACA,MAA4B,eAArBjhB,KAAKk7F,WACf,CAIGwrX,eACA,MAA0B,WAAnB1md,KAAKimd,WAAgCjmd,KAAK2md,kBACpD,CAIGxS,gBACA,MAA2B,WAApBn0c,KAAKkmd,YAAiClmd,KAAK2zc,mBACrD,CACDnjc,kBACIxQ,KAAK4md,gBACR,CACDj2c,qBACI3Q,KAAK6md,mBACR,CACDh2c,cACI7Q,KAAKknB,cAAcjW,aACtB,CACDs1c,qBACI,OAAOvmd,KAAK4ka,YAAc5ka,KAAK4ka,WAAWx3Z,QAC7C,CACDi5c,kBACI,OAAOrmd,KAAKk+K,QAAQ9wK,QACvB,CACDk5c,kBAEI,OADiBtmd,KAAK8md,mBAAmB1xc,UACzBorK,MAAM/7J,GAAKA,EAAEtY,cAAcuD,aAAa,YAC3D,CACD+2c,oBAAoBD,GAChB,MAAIlwc,UAAuC,IAAxBkwc,EAAalmd,SAAiBN,KAAK+md,eAAeP,GACjE,MAAM,IAAIjmd,MAAM,qNAIvB,CACDwmd,eAAeP,GACX,IAAKA,EAAalmd,OACd,OAAO,EAEX,MAAMmH,EAAO++c,EAAazwc,MAAMtO,KAChC,OAAO++c,EAAapxc,UAAUorK,MAAMj/K,IAAKA,GAAEkG,OAASA,GAASzH,KAAKomd,eAAe7kd,IACpF,CACD6kd,eAAeloS,GACX,OAAOA,EAAQ8oS,yBAAyBC,GAC3C,CACDJ,oBACI,MAAMxzT,EAAWrzJ,KAAKknd,uBACjB7zT,GAGLA,EAAS5iJ,QAASytK,IACd,GAAIl+K,KAAKmnd,cAAc7md,OAAS,GAAKN,KAAKond,aAAa9md,OAAS,EAAG,CAC/D,MAAM+md,GAAUrnd,KAAKsnd,uBAAuBppS,GAC5B,KAAZmpS,GACArnd,KAAK2K,SAASiF,aAAasuK,EAAS,mBAAoBmpS,IAGxDrnd,KAAK2K,SAAS2G,gBAAgB4sK,EAAS,mBAE9C,GAER,CACDgpS,sBACI,GAAKlnd,KAAK8md,mBAIV,OAAI9md,KAAK4ka,YAAc5ka,KAAK4ka,WAAWx7N,gBAAe/7L,SAC3C,CAACrN,KAAKwrB,YAAYrf,cAAc8e,cAAe,IAAGjrB,KAAK4ka,WAAWx7N,gBAEtEppM,KAAK8md,mBAAmBzld,IAAIyH,GAAMA,EAAGqD,cAC/C,CACDm7c,uBAAuBppS,GACnB,MAAMpkD,EAAM,IAAIx+F,IAChB,IAAIisb,GAAiB,GACrB,GAAIrpS,EAAQxuK,aAAa,oBAAqB,CAC1C,MAAM42I,GAAa43B,EAAQ10J,aAAa,oBAAoBznB,MAAM,KAClEwld,GAAiBjhU,GAAWhxI,OAAOo0E,IAAQA,GAAKplF,SAAS,iBAAiB,GAC1EgiJ,GAAW71I,QAASi5E,KACZA,GAAKplF,SAAS,gBAAkBolF,GAAKplF,SAAS,iBAGlDw1H,EAAI9tH,IAAI09E,GAAR,EAEP,CACD,YAAK09X,aAAa32c,QAASovG,KACvBia,EAAI9tH,IAAI6zG,GAAK33F,GAAb,GAEAloB,KAAKm0c,UACLn0c,KAAKmnd,cAAc12c,QAASkrB,KACxBm+F,EAAI9tH,IAAI2vB,GAAMzT,GAAd,GAIJ4xG,EAAI5+F,OAAOqsb,IAERpmd,MAAMqE,KAAKs0H,GAAKn4H,KAAK,IAC/B,CACDgld,mBACI,IAAK3md,KAAKk+K,QACN,OAAO,EAEX,MAAQgtH,QAAOs8K,YAAWC,aAAaznd,KAAKk+K,QAC5C,OAAOgtH,GAAUs8K,GAAaC,EACjC,CACD9T,oBACI,IAAK3zc,KAAKk+K,QACN,OAAO,EAEX,MAAQu1N,UAAS7wR,QAAOq7D,YAAYj+K,KAAKk+K,QACzC,OAAOu1N,IAAY7wR,GAASq7D,GAC/B,CACD2oS,iBACI5md,KAAK6md,oBACL7md,KAAKknB,cAAclb,IAAIhM,KAAKmnd,cAAcl7c,QAAQC,UAAU,IAAMlM,KAAK6md,sBACvE7md,KAAKknB,cAAclb,IAAIhM,KAAKond,aAAan7c,QAAQC,UAAU,IAAMlM,KAAK6md,qBACzE,EAELb,GAAmBjjd,UAAnB,0BAAgHijd,IAphYNhjd,MAohY0CA,OAphY1CA,MAohYmEqQ,OAphYnErQ,MAohYsGA,OAAhN,EACAgjd,GAAmBzvc,UArhYuFvT,MAqhY1G,MAAoGgjd,GAApGzyc,yEArhY0GvQ,MAqhY1GwT,GAMuEk9J,MANvE,GArhY0G1wK,MAqhY1GwT,GAMiKisL,KANjK,GArhY0Gz/L,MAqhY1GwT,GAMkPisL,KANlP,EAMsRzgL,OA3hY5Khf,MAqhY1GwT,GAMgVkvc,GANhV,GArhY0G1id,MAqhY1GwT,GAMgauvc,GANha,gBArhY0G/id,MAqhY1GyT,GArhY0GzT,WAqhY1GwQ,uBArhY0GxQ,MAqhY1GyT,GArhY0GzT,WAqhY1GwQ,mBArhY0GxQ,MAqhY1GyT,GArhY0GzT,WAqhY1GwQ,yBArhY0GxQ,MAqhY1GyT,GArhY0GzT,WAqhY1GwQ,oBArhY0GxQ,MAqhY1GyT,GArhY0GzT,WAqhY1GwQ,iEArhY0GxQ,MAqhY1G,mBArhY0GA,MAqhY1G,2BArhY0GA,CAqhY1G,kCArhY0GA,CAqhY1G,sIArhY0GA,MAqhYoV,CACtbyQ,MACA,CACItN,QAASuN,MACTlN,SAAU,sBAJtBkQ,iJArhY0G1T,MAqhY1G0kd,IArhY0G1kd,MA4hYlG,GA5hYkGA,MA6hYlG,SA7hYkGA,MA8hY9F,KA9hY8FA,MA+hY9F,yBA/hY8FA,MAgiY9F,yBAhiY8FA,SAqhY1G,MArhY0GA,MA6hY7F,GA7hY6FA,MA6hY7F,kCA7hY6FA,MA+hYzD,GA/hYyDA,MA+hYzD,mBA/hYyDA,MAgiYxD,GAhiYwDA,MAgiYxD,oBAXlD,gBAa4CyrL,OAb5Ch2K,kBAoGA,MAAMkvc,IAENA,GAAgB5kd,UAAhB,0BAA6G4kd,GAA7G,EACAA,GAAgBlhd,UA5nY0FzD,MA4nY1G,MAA8G2kd,KAC9GA,GAAgBjhd,UA7nY0F1D,MA6nY1G,UAAyI,CAAC8T,UA0C1I,MAAMghO,IAENA,GAAa/0O,UAAb,0BAA0G+0O,GAA1G,EACAA,GAAarxO,UA1qY6FzD,MA0qY1G,MAA2G80O,KAW3GA,GAAapxO,UArrY6F1D,MAqrY1G,UAAmI,CAAC8T,OAAeo+b,GAC3I9qI,GACA4nI,GACAE,GACAE,GACAloI,GACAmoI,GACApoI,GACA/yF,GACAsuO,GACAmC,KAVR,gGChuZe,SAASv3b,EAASloB,IAC7B,MAAwB,iBAAVA,EACjB,CCCD,MCDMuyM,GAAe,eAErB,MAAMwmL,GACFnhY,aAAc2H,QAAMoY,aAChB,IAAKpY,KAASoY,GACV,MAAM,IAAItf,MAAM,yDAGpBP,KAAKyH,KAAOA,GACZzH,KAAK6f,QAAUA,EAClB,CAEDqhX,iBAAiBpmW,IACb,MAAMqmW,GAAgBrjJ,GAAQhjN,IAExBsmW,GAAmBphY,KAAK6f,QAAQxf,QAAQo6M,GAAc,SAAS5nL,GAAOrmB,IACxE,OAAO20X,GAAcvqW,SAASpqB,GAAO,IACxC,GAED,MAAQ,GAAExM,KAAKyH,SAAS25X,IAC3B,CAEDzlW,SAASb,IACL,OAAO,IAAIv6B,MAAMP,KAAKkhY,cAAcpmW,IACvC,EAGL,MAAMgjN,GAAU,SAAS1jN,IACrB,OAAOA,GAAIzU,OAAO,CAACwX,GAAGpF,KAAMoF,GAAErX,OAAOiS,IAAI,GAC5C,EAWKspW,IATwBA,GD9Bf,CACXC,SAAY,gCACZC,WAAc,iFACdC,uBAA0B,wEAC1BC,iBAAoB,oCACpBC,kBAAqB,uJACrBC,UAAa,iFACbC,WAAc,oFACdC,WAAc,kJACdC,gBAAmB,0HACnBC,iBAAoB,yFC0Bb1iX,OAAOsa,KAAK0nW,IAAQ17W,OALT,SAASywK,GAAM3uL,IAC7B2uL,UAAK3uL,IAAQ,IAAIw5X,GAAU,CAAEx5X,QAAMoY,QAASwhX,GAAO55X,MAC5C2uL,EACV,EAE4C,KAN5B,IAASirM,GCLvB,MAAMW,GC5BO,CAChBC,GAAI,CACAx6X,KAAM,KACNy5W,SAAU,CACNr5W,QAAS,CACL+/c,QAAS,qBACTzlF,aAAc,MAElBptD,SAAU,MAEdqtD,UAAW,KACXC,QAAS,CACLz9L,QAAS,CACL09L,QAAS,IACTx1V,MAAO,IACP2yI,KAAM,IACN8iN,YAAa,IACbC,SAAU,IACVC,UAAW,IACXC,YAAa,IACbC,uBAAwB,OACxBC,SAAU,SACVC,SAAU,SACVC,IAAK,MACLC,cAAe,KAEnBT,QAAS,CACLrsQ,SAAU,CACN,KAEJ9oF,UAAW,CACP,IAGR81V,WAAY,CACRhtQ,SAAU,CACN,OAEJ9oF,UAAW,IAEfs6F,QAAS,CACLxR,SAAU,CACN,MAEJ9oF,UAAW,CACP,IAGR+1V,SAAU,CACNjtQ,SAAU,CACN,MAEJ9oF,UAAW,CACP,GAEJ,wBAAyB,MACzB,0BAA2B,OAE/Bg2V,WAAY,CACRC,IAAK,CACDC,YAAa,gBACb,wBAAyB,gBACzB,0BAA2B,iBAC3B/+O,OAAQ,OAEZg/O,IAAK,CACDD,YAAa,OACb,wBAAyB,OACzB,0BAA2B,QAC3B/+O,OAAQ,SACR,oBAAqB,UAEzBi/O,IAAK,CACDF,YAAa,YACb,wBAAyB,YACzB,0BAA2B,aAC3B/+O,OAAQ,IACR,oBAAqB,MAG7Bk/O,eAAgB,MAChBC,WAAY,CACRxtQ,SAAU,CACN,KACA,QAEJ9oF,UAAW,CACP,KAIZ20J,SAAU,CACN4hM,UAAW,SACXC,cAAe,MACf1tQ,SAAU,CACNzrF,EAAG,QACHypF,EAAG,kBACHmxE,EAAG,QACH1wE,EAAG,SACHpsG,EAAG,QACH8G,EAAG,SACH+kG,EAAG,4BACH1pF,EAAG,eACH2pF,EAAG,kBACHr2G,EAAG,SACHk3G,EAAG,YACHjyF,EAAG,gCACH+kR,EAAG,kCAEP67E,gBAAiB,CACbp6X,KAAM,eACNq6X,KAAM,eACNx6X,OAAQ,WACRy6X,MAAO,WACPC,iBAAkB,CACdC,GAAI,MACJC,IAAK,SACLC,KAAM,YACN15V,EAAG,IACH0pF,EAAG,MACHiwQ,KAAM,WACNC,MAAO,cACPC,GAAI,MACJC,IAAK,WACLC,IAAK,UACLC,KAAM,cACNC,KAAM,aACNC,GAAI,MACJE,MAAO,UACPC,OAAQ,aACRC,QAAS,gBACTp6V,EAAG,MACH2pF,EAAG,KACH0wQ,GAAI,SACJC,GAAI,QACJC,IAAK,YACLC,IAAK,WACLC,KAAM,cACNC,KAAM,aACNC,IAAK,WACLC,IAAK,UACL5wQ,EAAG,IACH6wQ,GAAI,MACJC,IAAK,SACLC,IAAK,MACLC,KAAM,QACNC,MAAO,WACPC,MAAO,SACP,kBAAmB,qBACnB,oBAAqB,qBACrB7R,GAAI,QACJzrW,EAAG,IACHu9W,GAAI,MACJC,IAAK,QACLC,KAAM,WACNC,KAAM,QACNC,MAAO,WACPC,OAAQ,cACRC,MAAO,SACPC,KAAM,QACNC,MAAO,SACP,eAAgB,kBAChB,iBAAkB,oBAG1BC,YAAa,CACT98X,KAAM,iBACNq6X,KAAM,cACNx6X,OAAQ,YACRy6X,MAAO,UAEX57U,YAAa,CACT1+C,KAAM,kBACNq6X,KAAM,YACNx6X,OAAQ,WACRy6X,MAAO,UAEXpnV,KAAM,CACFvN,OAAQ,CACJo3V,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJz9U,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJg7U,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ0C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJz9U,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJg7U,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ0C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,cAIZhqV,OAAQ,CACJrN,OAAQ,CACJo3V,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJz9U,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ09U,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJz9U,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ09U,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,cAIZC,SAAU,CACNt3V,OAAQ,CACJo3V,YAAa,CACT,KACA,KACA,KACA,MAEJz9U,OAAQ,CACJ,IACA,IACA,IACA,KAEJ09U,KAAM,CACF,cACA,cACA,cACA,gBAGR,cAAe,CACXD,YAAa,CACT,KACA,KACA,KACA,MAEJz9U,OAAQ,CACJ,IACA,IACA,IACA,KAEJ09U,KAAM,CACF,cACA,cACA,cACA,iBAIZlhM,WAAY,CACRn2J,OAAQ,CACJo3V,YAAa,CACTG,SAAU,WACVl+L,GAAI,KACJ,iBAAkB,KAClBm+L,KAAM,OACNj+L,GAAI,KACJ,iBAAkB,KAClBk+L,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,YAEZj+U,OAAQ,CACJ49U,SAAU,KACVl+L,GAAI,IACJ,iBAAkB,KAClBm+L,KAAM,IACNj+L,GAAI,IACJ,iBAAkB,KAClBk+L,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,YAEZP,KAAM,CACFE,SAAU,WACVl+L,GAAI,KACJ,iBAAkB,KAClBm+L,KAAM,OACNj+L,GAAI,KACJ,iBAAkB,KAClBk+L,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,aAGhB,cAAe,CACXR,YAAa,CACTG,SAAU,WACVl+L,GAAI,KACJ,iBAAkB,KAClBm+L,KAAM,OACNj+L,GAAI,KACJ,iBAAkB,KAClBk+L,SAAU,UACVC,WAAY,YACZC,SAAU,UACVC,OAAQ,SAEZj+U,OAAQ,CACJ49U,SAAU,WACVl+L,GAAI,KACJ,iBAAkB,KAClBm+L,KAAM,OACNj+L,GAAI,KACJ,iBAAkB,KAClBk+L,SAAU,UACVC,WAAY,YACZC,SAAU,UACVC,OAAQ,SAEZP,KAAM,CACFE,SAAU,WACVl+L,GAAI,KACJ,iBAAkB,KAClBm+L,KAAM,OACNj+L,GAAI,KACJ,iBAAkB,KAClBk+L,SAAU,UACVC,WAAY,YACZC,SAAU,UACVC,OAAQ,WAIpBC,KAAM,CACF73V,OAAQ,CACJq3V,KAAM,CACF,EAAK,gBACL,EAAK,cACL,gBAAiB,oBACjB,gBAAiB,cAErBD,YAAa,CACT,EAAK,KACL,EAAK,KACL,gBAAiB,MACjB,gBAAiB,MAErBz9U,OAAQ,CACJ,EAAK,IACL,EAAK,IACL,gBAAiB,MACjB,gBAAiB,QAI7Bm+U,WAAY,CACRC,IAAK,CACDV,KAAM,OAEV/uN,KAAM,CACF+uN,KAAM,OACN1C,MAAO,MACPh7U,OAAQ,OAEZq+U,QAAS,CACLX,KAAM,UACN1C,MAAO,OACPh7U,OAAQ,QAEZ4uH,MAAO,CACH8uN,KAAM,QACN1C,MAAO,MACPh7U,OAAQ,OAEZuhI,KAAM,CACFm8M,KAAM,OACN1C,MAAO,MACPh7U,OAAQ,OAEZhL,IAAK,CACD0oV,KAAM,MACN1C,MAAO,MACPh7U,OAAQ,OAEZw+U,QAAS,CACLd,KAAM,mBAEVgB,UAAW,CACPhB,KAAM,SAEVpvN,KAAM,CACFovN,KAAM,OACN1C,MAAO,MACPh7U,OAAQ,OAEZiqJ,OAAQ,CACJyzL,KAAM,SACN1C,MAAO,OACPh7U,OAAQ,QAEZy3H,OAAQ,CACJimN,KAAM,SACN1C,MAAO,OACPh7U,OAAQ,QAEZ8iJ,YAAa,CACT46L,KAAM,cACN1C,MAAO,KACPh7U,OAAQ,MAEZxqC,KAAM,CACFkoX,KAAM,gBAKtBiB,aAAc,CACVC,cAAe,CACXzF,GAAI,cAER0F,aAAc,CACVC,OAAQ,CACJC,GAAI,CACA,CACItE,IAAK,CACDpnH,MAAO,kBAM3B2rH,SAAU,CACNx2V,SAAU,CACNu2V,GAAI,OAERE,aAAc,CACV,MAAO,OAEXC,WAAY,CACR,MAAO,UD7hBhB,SAASC,GAAcj2V,IAC1B,IAAIia,GACJ,OACIA,GADA77B,EAAS4hB,IACFk2V,GAAWl2V,IAEXA,GAEJia,EACV,CAEM,SAASi8U,GAAWl2V,IACvB,GAAIgwV,GAAKhwV,IACL,OAAOgwV,GAAKhwV,IAIhB,GADsBgwV,GAAKyF,aAAaC,cACrB,CACf,MAAM5lY,GAAQkwC,GAAOjwC,MAAM,KACrBgzU,GAAWjzU,GAAM,GACjBqmY,GAAWrmY,GAAMJ,MAAM,GACvB0mY,GArCd,SAASC,GAAetzD,GAAUozD,IAC9B,MAAMT,GAAgB1F,GAAKyF,aAAaC,cAExC,QAAS5mY,GAAM,EAAGA,GAAMqnY,GAAS7nY,OAAQQ,KAAO,CAC5C,IAAI2G,GAAOigY,GAAc3yD,GAAW,IAAMozD,GAASrnY,KACnD,GAAI2G,GACA,OAAOA,EAEd,CAED,GAAIigY,GAAc3yD,IACd,OAAO2yD,GAAc3yD,GAE5B,CAwBwBszD,CAAetzD,GAAUozD,IACpCl8U,GAAOm8U,GA/CrB,SAASE,GAAoBF,GAAUD,IACnC,MAAMrmY,GAAQsmY,GAASrmY,MAAM,KACvBgzU,GAAWjzU,GAAM,GACjBmpQ,GAASnpQ,GAAM,GACfsgY,GAAYtgY,GAAM,GAExB,OAAOkgY,GAAKoG,MAA8C,IAAhCD,GAASlnY,QAAQmhY,KAAqBJ,GAAKjtD,GAAW,IAAMqtD,MAA6C,IAA7B+F,GAASlnY,QAAQgqQ,KAAkB+2H,GAAKjtD,GAAW,IAAM9pE,KAAY+2H,GAAKjtD,GACnL,CAwC+BuzD,CAAoBF,GAAUD,IAAY,KAClE,GAAIl8U,GACA,OAAOA,EAEd,CAED,MAAMo1U,kBAAsBrvV,GAC/B,CE1DM,MAAM02V,GAAU,UACVC,GAAW,WACXC,GAAa,aACbC,GAAU,UACVC,GAAa,aAIb++E,GAAqB,IAKrBC,GAAQ,IAGRC,GAAiB,KCbxBC,GAAuB,4BAGvBC,GAAgB,aAChBC,GAAqB,QAE3B,SAASC,GAAY72V,IACjB22V,UAAc9xc,UAAY,EAEnBm7G,GAAQjxH,QAAQ6nd,GDNS,KCMiC7nd,QAAQ4nd,GAAeJ,IAAoB9ld,MDFlF,ICG7B,CAED,SAAS+/N,GAAaxwG,IAClB22V,UAAc9xc,UAAY,EAEH8xc,GAAc7yZ,KAAKk8D,GAAQvvH,MDRxB,KCQ8C,IAAI,GAAGA,MAAM+ld,IACtD,GAEL/ld,MDVC,KCUsBL,MAAM,GAAGL,IAAI,SAASyrC,IACnE,OAAOA,GAAMxsC,MAChB,GAAE80C,SAGN,CAED,SAASgza,GAAyBz9E,GAAc09E,IAC5C,QAAS72b,MAAS62b,GACV72b,GAAMi3K,WAAW,iBACjBkiM,GAAan5W,IAAS62b,GAAgB72b,IAAOnxB,QAAQ,MAAOwnd,IAAoBxnd,QAAQ,MDzBhE,KC4BnC,CAEc,SAASiod,GAAgBt2a,GAAQia,IAC5C,MAAMi8U,GAAalG,GAAKhwV,IAClBqwV,GAAU6F,GAAW7F,QAAU6F,GAAW7F,SAAW,GAC3DA,GAAQz9L,QAAUy9L,GAAQz9L,SAAW,GACrC,QAASpzK,MAASy6B,GACd,GArCqB,8BAqCjBz6B,GACAnS,OAAOC,OAAO+iX,GAAQz9L,QAAS34I,GAAKz6B,UAApC,GACOA,GAAMltB,SAAS0jd,IAAuB,CAC7C,MAAMz8b,GAAQiG,GAAM4mG,OAAO,EAAG5mG,GAAMvwB,QAAQ+md,KACtC12V,GAAUrlE,GAAKz6B,IAAO+2b,SAC5BlmF,GAAQ92W,IAAS,CACb0qG,SAAUkyV,GAAY72V,KAEtB/lG,KAAUo9W,IACVtG,GAAQ92W,IAAO4hB,UAAY20L,IAAc71K,GAAKy8U,GAAUs/E,KAAyB/7Z,GAAKz6B,KAAQ+2b,UAC9FH,GAAyB/lF,GAAQ92W,IAAQ0gC,GAAKz6B,KAC9C6wW,GAAQuG,IAAc,CAClB3yQ,SAAUkyV,GAAYl8Z,GAAKz6B,IAAOo3W,KAClCz7V,UAAWk1V,GAAQ92W,IAAO4hB,YAG9Bk1V,GAAQ92W,IAAO4hB,UAAY20L,GAAaxwG,GAE/C,KAAoB,eAAV9/F,KACP6wW,GAAQc,WAAal3U,GAAKz6B,IAGrC,CC7DD,MAAMg3b,GAAyB,CAC3Bxlb,EAAG,gCACH+kR,EAAG,kCAGD0gK,GAAa,MACbC,GAAa,CAAE,CAAE,cAAe,UAEhCC,GAAe,CACjB10V,EAAG,CAAE,CAAE,cAAe,SACtBmxE,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,SAC9C1wE,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,UAC9CpsG,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,SAC9C8G,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,UAC9C+kG,EAAG,CAAE,CAAE,cAAe,QAAU,CAAE,cAAe,WACjD1pF,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,OAAS,CAAE,cAAe,UACxE2pF,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,OAAS,CAAE,cAAe,WACxEr2G,EAAG,CAAE,CAAE,cAAe,UACtBk3G,EAAG,CAAE,CAAE,cAAe,YAG1B,SAAS7/G,GAAQ2d,IACb,IAAInB,GAAS,GACTuB,GAAQ9T,OAAOk3X,oBAAoBxjX,IACvC,QAASjyB,GAAM,EAAGA,GAAMqyB,GAAM7yB,OAAQQ,KAAO,CACzC,IAAIoH,GAAQ6qB,GAAII,GAAMryB,KACtB8wB,GAAO5V,KAAK9T,GACf,CACD,OAAO0pB,EACV,CAED,SAASg3b,GAAiB38Z,GAAM48Z,IAC5B,MAAMj3b,GAAS,GACf,QAASo3W,MAAc/8U,GAAM,CACzB,IAAI94B,GAAQvB,GAAOo3W,IAAc,GACjC,QAAS75V,MAAU8c,GAAK+8U,IAAa,CACjC,IAAIpiH,GAAU36N,GAAK+8U,IAAY75V,IAC/Bhc,GAAMgc,IAAU05a,GAAQjiM,GAAUxxQ,GAAQwxQ,GAC7C,CACJ,CACD,OAAOh1P,EACV,CAmBD,SAASk3b,GAAkB92a,GAAQ8vJ,IAC/B,MAAMinR,GAAiB/mF,GAAKhwV,IAAQ8vJ,SACpCinR,GAAersa,KAAOksa,GAAiB9mR,GAASplJ,MAChDqsa,GAAevsa,OAASosa,GAAiB9mR,GAAStlJ,QAClDusa,GAAetiF,SAAWmiF,GAAiB9mR,GAAS2kM,UACpDsiF,GAAezjR,WAAasjR,GAAiB9mR,GAASwD,YAAY,GAElEyjR,GAAe/hF,KAxBnB,SAASgiF,GAAYhiF,IACjB,MAAMp1W,GAAS,GACTud,GAASvd,GAAOud,OAAS,GACzB85a,GAAa,CACfC,QAAS,cACTC,SAAU,OACVC,UAAW,UAGf,QAASC,MAAiBriF,GAEtB73V,GADiB85a,GAAWI,KACPriF,GAAKqiF,IAG9B,OAAOz3b,EACV,CASyBo3b,CAAYlnR,GAASklM,KAC9C,CAED,SAASsiF,GAAuBt3a,GAAQpf,IACpC,MAAMm2b,GAAiB/mF,GAAKhwV,IAAQ8vJ,SAC9BmlM,GAAa,GAEnB,QAASz1W,MAASoB,GAAQ,CACtB,MAAQ+hC,GAAWq0U,GAAa,QAAWx3W,GAAMzvB,MAAM,KACjDwnd,GAAYtiF,GAAWtyU,KAAc,GACrC0uU,GAAczwW,GAAOpB,IAAO6xW,aAE7BA,KAELkmF,GAAUvgF,IAAc3F,GACxB4D,GAAWtyU,IAAa40Z,GAC3B,CAEDR,GAAe9hF,WAAaA,EAC/B,CAED,SAASuiF,GAAoBlvY,GAAOwnH,IAChC,MAAMlwK,GAAS,GAEf,QAAS63b,GAAU,EAAGA,GAAUnvY,GAAMh6E,OAAQmpd,KAAW,CACrD,IAAI72b,GAAS0nD,GAAOmvY,IAChBn4V,GAAUwwE,GACd,QAAShhM,GAAM,EAAGA,GAAM8xB,GAAOtyB,OAAQQ,KACnCwwH,GAAUA,GAAQ1+F,GAAO9xB,KAE7B8wB,GAAO5V,KAAKs1G,GACf,CAED,OAAO1/F,GAAOjwB,KAAK,IACtB,CAED,SAAS+nd,GAAqB13a,GAAQ8vJ,IAClC,MAAM6nR,GAAe3nF,GAAKhwV,IAAQ8vJ,SAC5B7rE,GAAW0zV,GAAa1zV,SAAW,GAEzCA,GAASzrF,EAAIg/a,GAAoBd,GAAY5mR,IAAUzhM,QAAQood,GAAY,KAE3E,QAASn3V,MAAWq3V,GAChB1yV,GAAS3E,IAAWk4V,GAAoBb,GAAar3V,IAAUwwE,IAGnE,QAASxwE,MAAWk3V,GAChBvyV,GAAS3E,IAAWk3V,GAAuBl3V,IAG/C,MAAMsyQ,GAAkB9hM,GAAS8hM,gBACjC+lF,GAAa/lF,gBAAkB,CAC3Bp6X,KAAMo6X,GAAgBp6X,KACtBq6X,KAAMD,GAAgBC,KACtBx6X,OAAQu6X,GAAgBv6X,OACxBy6X,MAAOF,GAAgBE,MACvBC,iBAAkBH,GAAgBG,kBAEtC4lF,GAAarjF,YAAcxkM,GAASwkM,YACpCqjF,GAAazha,YAAc45I,GAAS55I,WACvC,CAGc,SAAS0ha,GAAiB53a,GAAQia,IAC7C,MAAM61I,GAAWkgM,GAAKhwV,IAAQ8vJ,SAAWkgM,GAAKhwV,IAAQ8vJ,UAAY,GAClE,QAAStwK,MAASy6B,GACA,kBAAVz6B,IACAswK,GAAS4hM,UAAYz3U,GAAKz6B,IAAOkyW,UACjC5hM,GAAS6hM,cAAgB13U,GAAKz6B,IAAOmyW,eACpB,cAAVnyW,IAAyBy6B,GAAKz6B,IAAOq4b,WAC5CH,GAAqB13a,GAAQia,GAAKz6B,IAAOq4b,WACzCf,GAAkB92a,GAAQia,GAAKz6B,IAAOq4b,YACrB,WAAVr4b,IACP83b,GAAuBt3a,GAAQia,GAAKr5B,OAG/C,CCpHc,SAAS21W,GAAgBt8U,IACpC,GAAIA,GAAKm2U,UACL,OAAOn2U,GAAKm2U,UAGhB,MAAM36X,GAAOwkD,GAAKxkD,KACZy5W,GAAWj1T,GAAKi1T,SACtB,IAAIkhB,GAEJ,OACIA,GADAlhB,IAAYA,GAASkhB,UACTlhB,GAASkhB,UArC7B,SAASoG,GAAkB/gY,GAAMy5W,IAC7B,MAAMwmB,GAAgB1F,8BACtB,IAAIlgY,GAAQ2F,GAAK1F,MAAM,KACvB,GAAI2lY,GAAe,CACf,MAAMe,GAAaf,GAAcjgY,KAASigY,GAAc5lY,GAAM,IAC1D2mY,KACA3mY,GAAQ2mY,GAAW1mY,MAAM,KAEhC,CAED,GAAIm/W,GACA,QAASpgX,GAAMgB,GAAMxB,OAAS,EAAGQ,IAAO,EAAGA,KAAO,CAC9C,MAAMglM,GAAOhkM,GAAMhB,KACfglM,KAASo7K,GAAS3b,SAAWz/J,KAASo7K,GAASj2G,SAC/CnpQ,GAAM+kD,OAAO/lD,GAAK,EAEzB,CAGL,MAAMR,GAASwB,GAAMxB,OAErB,GAAIA,GAAS,EAET,OADkBwB,GAAMxB,GAAS,GAChB0pH,aAExB,CAcmBw+Q,CAAkB/gY,GAAMy5W,IAGxCj1T,GAAKm2U,UAAYA,GAEVA,EACV,CC1CD,SAAS0nF,GAAW93a,GAAQia,IACxB,QAASz6B,MAASy6B,GACA,YAAVz6B,GACA82b,GAAgBt2a,GAAQia,GAAKz6B,KACZ,UAAVA,IACPo4b,GAAiB53a,GAAQia,GAAKz6B,IAGzC,CCWc,SAAS0zJ,GAAgBlzI,GAAQhsC,IAC5C,MAAQyY,QAAM0mK,YAAU4jN,cAAYh9T,UAAU/lE,GAExCgjY,GAAaD,GAAa,cAAgB,SAC1CE,IAAiBl9T,GAAQ,SLdd,IKckCo5G,GAC7C+jN,GAHOjB,GAAcj2V,IAGF8vJ,SAASrjL,IAAMuqX,IACxC,IAAIp3W,GAASs3W,GAAYD,IACzB,OAAKr3W,IAAUm6C,KACXn6C,GAASs3W,GAAYD,IAb7B,SAASE,GAAWp2W,IAEhB,OADa5xB,MAAMkuB,QAAQ0D,IAjB/B,SAASq2W,GAAWhvW,IAChB,MAAMxI,GAAS,GACf,QAAS9wB,GAAM,EAAGA,GAAMs5B,GAAI95B,OAAQQ,KAChC8wB,GAAO5V,KAAKoe,GAAIt5B,IAAKia,eAEzB,OAAO6W,EACV,CAWqCw3W,CAAWr2W,IATjD,SAASs2W,GAAYt2W,IACjB,MAAMnB,GAAS,GACf,QAASJ,MAASuB,GACdnB,GAAOJ,IAASuB,GAAIvB,IAAOzW,cAE/B,OAAO6W,EACV,CAGuDy3W,CAAYt2W,GAEnE,CAU6Co2W,CAAWD,GAAY/jN,MAE1DvzJ,EACV,CCnCc,SAAS03W,GAAephY,IACnC,MAAMpG,GAAQoG,GAAMnG,MAAM,KACpB01K,GAAO7gJ,SAAS90B,GAAM,GAAI,IAC1B41K,GAAQ9gJ,SAAS90B,GAAM,GAAI,IAAM,EACjCg8C,GAAMlnB,SAAS90B,GAAM,GAAI,IAE/B,OAAO,IAAIQ,KAAKm1K,GAAMC,GAAO55H,GAChC,CCAD,MACIyjV,cACAG,qBACAF,0BACAC,oBACAK,oBACAT,GAGEkI,GAAS,SAGTC,GAAoB,CACtB,MAAO,MACP,IAAO,OAIX,SAASC,GAAgBz3V,GAAQkxV,GAAUwG,IAEvC,MAAMvG,GADO8E,GAAcj2V,IACHqwV,QAAQc,WAChC,IAAKA,GAAY,CACb,GAAIuG,GACA,MAAMnI,GAAW5lW,QAGrB,MACH,CAED,MAAMguW,GAAsBxG,GAAWD,IAEvC,GAAKyG,GAQL,OAAOA,GAPH,GAAID,GACA,MAAMhI,GAAkB/lW,OAOnC,CAED,SAASoub,GAAe5sb,GAAGpF,IACvB,OAAOA,GAAEz3B,OAAS68B,GAAE78B,MACvB,CA2FM,SAASspY,GAAsBxH,GAAWsH,IAAiB,GAC9D,GAAIF,GAAkBpH,IAClB,OAAOoH,GAAkBpH,IAG7B,MAAMuF,GAAe3F,6BACrB,IAAK2F,GAAc,CACf,GAAI+B,GACA,MAAMlI,GAAuB7lW,QAGjC,MACH,CAED,MAAMkuW,GAAmBlC,GAAaC,OAAOxF,IAE7C,GAAKyH,GAUL,OAnHJ,SAASC,GAAeD,IACpB,IAAIE,GAAkBC,GAClBC,GAAkBC,GAEtB,QAASppY,GAAM,EAAGA,GAAM+oY,GAAiBvpY,OAAQQ,KAAO,CACpD,MAAMoiY,GAAW2G,GAAiB/oY,IAC5Bk1H,GAAO32G,OAAOsa,KAAKupW,IAAU,GAC7Bj3U,GAAOi3U,GAASltQ,IACtB,GA5CsB,QA4ClBA,IAAmD,UAAjB/pE,GAAKk+U,SAAuBl+U,GAAKkwN,MACnE,GAAKlwN,GAAKmwN,KAMH,IAAK6tH,GAAkB,CAC1B,MAAMG,GAAYd,GAAer9U,GAAKkwN,OAChCkuH,GAAUf,GAAer9U,GAAKmwN,OAC/B4tH,IAAyBA,GAAsBhzV,GAAKqzV,IAAWL,GAAsBxkY,KAAO4kY,MAC7FL,GAAmB/zQ,GACnBg0Q,GAAwB,CACpBxkY,KAAM4kY,GACNpzV,GAAIqzV,IAGf,MAhBc,CACX,MAAMC,GAAiBhB,GAAer9U,GAAKkwN,SACtC+tH,IAAwBA,GAAuBI,MAChDL,GAAmBj0Q,GACnBk0Q,GAAuBI,GAE9B,CAYR,CAED,OAAOL,IAAoBF,EAC9B,CAmFwBD,CAAeD,IAPhC,GAAIH,GACA,MAAMjI,GAAiB9lW,MAAMymW,GASxC,CAEM,SAASoB,GAAexxV,GAAQ03V,IACnC,MAAMz9U,GAAOg8U,GAAcj2V,IACrBqwV,GAAUp2U,GAAKo2U,QAErB,IAAKA,GAAQmB,eAAgB,CACzB,MAAMN,GAAW0G,GAAsBrB,GAAgBt8U,IAAOy9U,IAE9D,IAAKxG,IAAYwG,GACb,MAAM5H,GAAgBnmW,MAAMswB,GAAKxkD,MAGrC46X,GAAQmB,eAAiBN,EAC5B,CAED,OAAOb,GAAQmB,cAClB,CCzLM,MAAM+G,GAAe,CAAE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QCKhE3I,cAAYC,eAAeR,GAEpB,SAAS/vV,GAASU,IAC7B,MAAMia,GAAOg8U,GAAcj2V,IAE3B,IAAK7hB,MAAM87B,GAAK3a,UACZ,OAAO2a,GAAK3a,SAGhB,MAAMw2V,GAAW9F,yBACjB,IAAK8F,GACD,MAAMlG,GAAWjmW,QAGrB,MAAM2V,GAAWw2V,GAASx2V,SAASi3V,GAAgBt8U,MAAU67U,GAASx2V,SDjBzC,OCmB7B,IAAKA,GACD,MAAMuwV,GAAWlmW,QAGrBswB,UAAK3a,SAAWi5V,WAAqBj5V,IAE9B2a,GAAK3a,QACf,CCvBD,MAAQswV,WAAUA,IAAKP,GCNR,SAASmJ,GAAetiY,IACnC,OAAQ,EAAIA,KAAU,GACzB,CCAc,SAASuiY,GAAqBx+U,GAAMjmD,GAAU,IACzD,OAAKA,GAAQk9X,WACTl9X,GAAQk9X,SAAWM,GAAev3U,IAAM,ILmGzC,SAASy+U,GAAgB14V,GAAQhsC,IACpC,MAAQkC,SAAOg7X,YAAUwH,mBAAkBnB,IAAWvjY,GAEtD,GAAwB,SAApB0kY,GACA,OAAOxH,GAGX,MAAMyH,GAAelB,GAAgBz3V,GAAQkxV,IAAU,GACvD,IAAItxW,GAEJ,OACIA,GADA84W,KAAoBnB,GACXoB,GAAa,sBAAwBA,GAAapB,SAEtCx0X,WAAV7M,IAAiC,IAAVA,GACrByiY,GAAa,2BAEbA,GAAa,yBAIvB/4W,EACV,CKrHmB84W,CAAgBz+U,GAAMjmD,GAGzC,CCVc,SAAS4kY,GAAa5P,GAAQrgX,GAAOG,GAAK9U,GAASimD,IAC9D,MAAM24I,GAAU34I,GAAKo2U,QAAQz9L,QACvBimM,GAAe7P,GAAO/5X,QAAQ2jM,GAAQ09L,SACtCwI,GAAa9kY,GAAQmnC,UAAUzrC,QACrC,IAAIyrC,GAAY29V,GAAWllV,QAEvBmlV,IAA8B,IAAjBF,GAAsBA,GAAe/vX,GAAM,EAExDkwX,GAAUhQ,GAAO9oV,UAAUv3B,GAAOowX,IAClCn5W,GAASopW,GACb,MAAMiQ,GAAgBD,GAAQ1qY,OAE9B,GAAI2qY,IAAiB99V,GAAW,CAC5B,IAAIrsC,GAAMmqY,GACNnpY,GAAQ,GAEZ,KAAOhB,IAAM,GAAI,CACb,IAAIoH,GAAQ8iY,GAAQ94V,UAAUpxC,GAAMqsC,GAAWrsC,IAC3CoH,IACApG,GAAMka,KAAK9T,IAEfpH,IAAOqsC,GACP,IAAI+9V,GAAeJ,GAAWllV,QAG9B,GAFAzY,QAA6Bp4B,IAAjBm2X,GAA6BA,GAAe/9V,GAEtC,IAAdA,GAAiB,CACjBjlC,GAAQ8iY,GAAQ94V,UAAU,EAAGpxC,IACzBoH,IACApG,GAAMka,KAAK9T,IAEf,KACH,CACJ,CAED8iY,GAAUlpY,GAAMszC,UAAUzzC,KAAKijM,GAAQ93J,OACvClb,GAASopW,GAAO9oV,UAAU,EAAGv3B,IAASqwX,GAAUhQ,GAAO9oV,UAAU64V,GACpE,CAED,OAAOn5W,EACV,CCrCc,SAASu5W,GAAgB5/W,IACpC,OAAOA,KAAUo9W,IAAYp9W,KAAUq9W,EAC1C,CCJc,SAAS/pW,GAAIm8V,GAAQj/P,GAAS,EAAG5pG,IAAQ,GACpD,MAAMqiB,GAAQunF,GAASr7H,OAAOs6X,IAAQ16X,OACtC,IAAIsxB,GAASopW,GAEb,GAAIxmV,GAAQ,EAAG,CACX,MAAM42V,GAAY,IAAIjqY,MAAMqzC,GAAQ,GAAG7yC,KAAK,KAC5CiwB,GAASO,GAAQ6oW,GAASoQ,GAAYA,GAAYpQ,EACrD,CAED,OAAOppW,EACV,CCRc,SAAS/B,GAAM3nB,GAAOolI,IACjC,IAAI17G,GAAS1pB,GACTmjY,GAAW/9P,IAAa,EAE5B17G,UAASA,GAAOnwB,WAAWM,MAAM,KACjC6vB,GAAS8C,KAAK7E,MAAMtB,OAAOqD,GAAO,GAAK,KAAOA,GAAO,GAAMrD,OAAOqD,GAAO,IAAMy5W,GAAYA,MAE3Fz5W,GAASA,GAAOnwB,WAAWM,MAAM,KACjC6vB,GAASrD,OAAOqD,GAAO,GAAK,KAAOA,GAAO,GAAMrD,OAAOqD,GAAO,IAAMy5W,IAAaA,KAE1Ez5W,GAAO8jG,QAAQhhG,KAAK9Z,IAAIywX,GAZb,IAarB,CCJD,MAGMC,GAAoB,MAE1B,SAASC,GAAgBvlY,IACrB,IAAMwlY,yBAAuBC,yBAAuBlgX,UAAUvlB,GAC9D,MAAM0lY,GAAaP,GAAgB5/W,IACnC,IAAIogX,GACJ,OAAID,KACAC,GV2GD,SAASC,GAAwB51Q,IACpC,IAAIw1Q,GAhH2B,EAiH3BC,GAjH2B,EAmH/B,MAAMI,KAAc7J,8BAAkC,IAAI6J,WAAa,IAAI71Q,IAE3E,OAAI61Q,IAAaA,GAAUC,UACvBL,GAAwBD,GAAwB50W,SAASi1W,GAAUC,QAAS,KAGzE,CACHN,sBAAuBA,GACvBC,sBAAuBA,GAE9B,CUzH2BG,CAAwB5lY,GAAQk9X,gBAG1BnuX,IAA1By2X,KACAA,GAAwBE,GAAaC,GAAkBH,sBAAwB,QAGrDz2X,IAA1B02X,KAEIA,GADAlgX,KAAUs9W,GACcn0W,KAAK7Z,IAAI2wX,GAlBZ,GAmBdE,GACiBh3W,KAAK7Z,IAAI2wX,GAAuBG,GAAkBF,uBAElD/2W,KAAK7Z,IAAI2wX,GAvBZ,IA2BtB,CACHA,sBAAuBA,GACvBC,sBAAuBA,GAE9B,CA6Bc,SAASgD,GAAqBzT,GAAQh1X,GAASimD,IAC1D,MAAM24I,GAAU34I,GAAKo2U,QAAQz9L,SACrBr5K,UAAUvlB,GACZ0lY,GAAaP,GAAgB5/W,IAGnC,GAAIA,KAAUu9W,GAEV,YADoD/zX,IAAlC/O,GAAQwlY,sBAAsCxQ,GAAO0T,cAAc1oY,GAAQwlY,uBAAyBxQ,GAAO0T,iBAC1GruY,QAAQynd,GAAOljR,GAAQ09L,SAG9C,IACIh+O,GADAp8I,GAAQ8yX,GAGR0Q,KACA1lY,GAAQkC,MAAQA,GAChBo8I,GAASmmP,GAAqBx+U,GAAMjmD,KAGpCulB,KAAUs9W,KACV3gY,IAAS,IACTo8I,GAASsgD,GAAQ29L,aAGrB,MAAQiJ,yBAAuBC,0BAA0BF,GAAgBvlY,IAEzEkC,GAAQ2nB,GAAM3nB,GAAOujY,IAErB,MAAM1tU,GAAW71D,GAAQ,EACnB4kY,GAAetC,GAAexP,IAE9Bl5X,GAAQoG,GAAMnG,MAAM+ld,IAE1B,IAAI98E,GAAUlpY,GAAM,GAChB2qY,GAAW5tW,GAAI/8B,GAAM,GAAKA,GAAM,GAAGzB,QAAQirY,GjBzF9B,OiByFiEE,IAAuB,GAGrGztU,KACAitU,GAAUA,GAAQ94V,UAAU,IAG5BlsC,GAAQ2oY,uBACR3D,GAAUnsW,GAAImsW,GAAShlY,GAAQ2oY,uBAGnC,IAMIr9Q,GANAvgD,IAAyC,IAAxB/qE,GAAQ4oY,YAAwBhE,GAAaI,GAAS,EAAGA,GAAQ1qY,OAAQ0F,GAASimD,IAAQ++U,GAQ/G,GANIyB,KACA17T,IAAkB6zH,GAAQ09L,QAAUmK,IAKpCf,IAA0C,SAA5B1lY,GAAQ0kY,gBACtBp5Q,GAjER,SAASu9Q,GAAoB5iV,GAAM/jD,IAC/B,MAAMyiY,GAAe1+U,GAAKo2U,QAAQa,SAClC,IAAI5xQ,GAAoB,IAAVppH,GAAcyiY,GAAa,2BAA6BA,GAAa,yBACnF,OAAIziY,GAAQ,IACRopH,GAAUA,GAAQjxH,QAAQwnd,GAAqB,OAG5Cv2V,EACV,CAyDiBu9Q,CAAoB5iV,GAAM+uU,QACjC,CACH,MAAM/kQ,GAAWjwH,GAAQiwH,SACzB3E,GAAWvzD,IAAY+uU,GAAgB72Q,GAAS,IAAO,IAAMA,GAAS,GAAMA,GAAS,EACxF,CAED,OAAI3E,KAAYu2V,IAAuB9pZ,GAvF3C,SAAS+wU,GAAa5mY,GAAOopH,GAASgzB,IAClC,IAAI1yH,GjB7Ba,GiB8BjB,QAAS9wB,GAAM,EAAGR,GAASgxH,GAAQhxH,OAAQQ,GAAMR,GAAQQ,KAAO,CAC5D,IAAI43U,GAAKpnN,GAAQvwH,OAAOD,IAGpB8wB,IADA8mT,KAAOmvI,GACG3/c,GjB1Cc,MiB2CjBwwU,IjB1CgB,MiB0CeA,GAC5Bp0L,GAEAo0L,EAEjB,CACD,OAAO9mT,EACV,CA6EkBk9W,CAAa/9T,GAAgBugD,GAASgzB,IAH1CvzE,EAMd,CCrID,MAAMg7T,GAAgB,uCAGf,SAASmC,GAAgB9B,GAAengV,IAC3C,MAAM9c,GAASi9V,GAAcj9V,QAGe,IAAxCA,GAAOluC,QlBHoB,OkBI3BmrY,GAAc7gX,MAAQs9W,GACtBuD,GAAc9nP,OAASr4F,GAAKo2U,QAAQz9L,QAAQ29L,YAC5C6J,GAAcpR,QAAU,MAGiB,IAAzC7rV,GAAOluC,QlBVqB,OkBW5BmrY,GAAc7gX,MAAQo9W,GACtByD,GAAc9nP,OAASmmP,GAAqBx+U,IAEnD,CAEM,SAAS8hV,GAAkB3B,IAC9B,IAAIj9V,GAASi9V,GAAcj9V,OAC3B,GAAIA,GAAOluC,QAAQ,MAAO,GAAMkuC,GAAOluC,QAAQ,MAAQ,GAAMkuC,GAAOluC,QAAQ,OAAQ,EAAI,CACpF,MAAMwsY,GAAWrB,GAAcqB,SAAW,GAC1CrB,GAAcj9V,OAASA,GAAO9uC,QAAQ0rY,GAAe,SAASl5W,IAC1D,MAAMm7W,GAAYn7W,GAAM9xB,OAAO,GAAGV,QAAQ,KlBbjC,IkBcH4tY,GAAUp7W,GAAMnxB,MAAM,GAAGrB,QAAQ2tY,GlBd9B,IkBgBTP,UAASzxX,KAAKiyX,IA1BN,QA6BX,EACJ,CACJ,CC7BD,MAGMjC,GAAsB,2BACtBC,GAAsB,MACtBC,GAAc,MAcpB,SAASC,GAAYC,IACjB,IAAMpR,UAAQ7rV,WAAWi9V,GACrBvB,GAAe17V,GAAOluC,QAAQ6md,IAElC,IAAqB,IAAjBj9E,GAAqB,CACrB,MAAMwB,GAAYl9V,GAAOupL,YAvBpB,KAuBwCmyK,GACvCyB,GAAan9V,GAAOupL,YAzBpB,KAyByCmyK,GACzC0B,GAAUF,IAAY,EACtBG,GAAWF,IAAa,EAC9B,IAAIG,GAAWzR,GAAOv5X,WAAWM,MAAM,KAGnC0qY,GADAA,GAAS,GACE58W,GAAMmrW,GAAQtmW,KAAKsH,IAAIywW,GAAS,KAEhCA,GAAS,GAExBA,GAAWA,GAAS1qY,MAAM+ld,IAAO,InB3BpB,GmB6Bb,IAAIx6U,GAAYm/P,GAASnsY,OACrBosY,IAAgB,EAEfH,IAAYC,GAIND,IAAWF,GAAYC,GAC9Bh/P,GAAY++P,GACLC,GAAaD,KAChBG,IAAYl/P,GAAYg/P,GACxBh/P,GAAYg/P,GACLC,IAAWj/P,GAAY++P,KAC9B/+P,GAAY++P,IAGhBK,GAAgBH,GAAUF,GAAY,IAZtCD,GAAcj9V,OAASA,GAAO+C,UAAU,EAAG24V,IAAgB17V,GAAO+C,UAAU24V,GAAe,GAC3FA,IAAe,EACfv9P,GAAY,GAaZA,IAAY,IACZ0tP,GAASnrW,GAAMmrW,GAAQ1tP,IACnBo/P,IAAgB,IAChB1R,GApDhB,SAAS2R,GAAkBzkY,GAAO0kY,IAC9B,IAAIC,GAEJ,OACIA,GADa,IAAbD,GACYZ,GAEA,IAAIvnY,OAAQ,aAAamoY,gBAAwB,KAG1D1kY,GAAM7H,QAAQwsY,GAAW,MAAMxsY,QAAQ4rY,GnBR7B,GmBSpB,CA0CwBU,CAAkB3R,GAAQ0R,KAG9C,MACG1R,GAASnrW,GAAMmrW,IAGfoR,GAAcruU,WAAsB,EAATi9T,IAAgB,IAAMoR,GAAcU,eAC/DV,GAAcruU,UAAW,GAG7BquU,GAAcpR,OAASA,GACvBoR,GAAcvB,aAAeA,EAChC,CAgCD,SAASkC,GAAiBC,GAAQC,GAAQtyX,IACtC,IAAInO,GACJ,OACIA,IADW,IAAXwgY,KAA4B,IAAXC,GACTA,IACU,IAAXD,KAA4B,IAAXC,GAChBD,GAEAryX,GAAQ+Z,KAAK9Z,IAAIoyX,GAAQC,IAAUv4W,KAAK7Z,IAAImyX,GAAQC,IAEzDzgY,EACV,CAgGD,SAAS0gY,GAAkBd,GAAengV,IACtC,IAAI+uU,GAASoR,GAAcpR,OAC3B,OAA4B,IAAxBoR,GAAczxX,QACdqgX,GAhER,SAASmS,GAAoBf,GAAengV,IACxC,MAAQtxC,SAAOG,OAAKijD,YAAU+uU,gBAAc39V,UAAQ07V,gBAAcuC,iBAAeC,qBAAmBC,aAAalB,GACjH,IAAIpR,GAASoR,GAAcpR,OAC3B,MAAM9yX,GAAQ8yX,GAAOv5X,WAAWM,MAAM+ld,IAChCxnd,GAAS6uC,GAAO7uC,OAChB0qY,GAAU9iY,GAAM,GAChBukY,GAAWvkY,GAAM,InBnJN,GmBoJX+iY,GAAgBD,GAAQ1qY,OAC9B,IAAIkjQ,GnBrJa,GmBuJjBw3H,GAAS7rV,GAAO+C,UAAU,EAAGv3B,KAExBojD,IAAY+uU,MAAkBO,KAC/BrS,IAAU,KAGd,QAASl6X,GAAM6Z,GAAO7Z,GAAMR,GAAQQ,KAAO,CACvC,IAAI43U,GAAKvpS,GAAOpuC,OAAOD,IAEvB,IAAqB,IAAjB+pY,IACA,GAAI/vX,GAAMha,GAAMmqY,GAAe,CAE3BjQ,IAAUgQ,GACV,KACH,WAEqB,IAAlBoC,IAAwBA,GAAgBtsY,KACxC0iQ,GnBxKK,ImB2KJqnI,GAAe/pY,IAAQmqY,IAAiBJ,GAAe/pY,IAAM,IAC9Dk6X,IAAUgQ,GACVlqY,GAAM+pY,IAGNA,KAAiB/pY,GAAK,CACtBk6X,KAAWyR,GAAWxgV,GAAKo2U,QAAQz9L,QAAQ09L,QnBjLtC,ImBiLyDmK,GAC9D3rY,IAAOga,GAAM+vX,GAAe,EAC5B,QACH,CA3LA,MA8LDnyD,IACAsiD,IAAUtiD,GACVl1E,GAAck1E,IAjMZ,MAkMKA,KACPsiD,IAAUx3H,GAEjB,CAED,OAAI8pI,KACAtS,GAAS4P,GAAa5P,GAAQrgX,IAASojD,KAAasvU,GAAoB,EAAI,GAAI34W,KAAK7Z,IAAIC,GAAMmwX,GAAgBtwX,IAASsxC,GAAKo2U,QAAQC,QAASr2U,KAG9InxC,IAAOH,KACPqgX,IAAU7rV,GAAO+C,UAAUp3B,GAAM,IAG9BkgX,EACV,CAKgBmS,CAAoBf,GAAengV,IAC5C+uU,GA7ER,SAASuS,GAAoBvS,GAAQzvW,GAAO+4H,IACxC,IAAI1yH,GAASopW,GACb,GAAIzvW,KAAUo9W,IAAYp9W,KAAUs9W,GAAS,CACzCj3W,GnBpIa,GmBqIb,QAAS9wB,GAAM,EAAGR,GAAS06X,GAAO16X,OAAQQ,GAAMR,GAAQQ,KAAO,CAC3D,IAAI43U,GAAKsiD,GAAOj6X,OAAOD,IACvB8wB,InB/IwB,MmB+Ib8mT,InB9IY,MmB8ImBA,GAA8Bp0L,GAASo0L,EACpF,CACJ,CACD,OAAO9mT,EACV,CAmEgB27W,CAAoBvS,GAAQoR,GAAc7gX,MAAO6gX,GAAc9nP,QACxE02O,GDxLD,SAASwS,GAAgBxS,GAAQyS,IACpC,IAAI77W,GAASopW,GACb,GAAIyS,GAAU,CACV,MAAMntY,GAASmtY,GAASntY,OACxB,QAASQ,GAAM,EAAGA,GAAMR,GAAQQ,KAC5B8wB,GAASA,GAAOvxB,QAtCR,SAsC6BotY,GAAS3sY,IAErD,CACD,OAAO8wB,EACV,CC+KgB47W,CAAgBxS,GAAQoR,GAAcqB,WAG5CzS,EACV,CAEc,SAAS0S,GAAmB1S,GAAQ7rV,GAAQ8c,IACvD,MAAMmgV,GAAgB,CAClBruU,SAAUi9T,GAAS,EACnBA,OAAQtmW,KAAKsH,IAAIg/V,IACjB8R,aAActC,GAAexP,IAC7B7rV,OAAQA,IAKZ,OAzJJ,SAASw+V,GAAuBvB,IAC5B,IAAMpR,UAAQ7rV,WAAWi9V,GAEzB,GADAj9V,GAASA,GAAOptC,MnB5EU,MmB6ErBqqY,GAAcruU,UAAYquU,GAAcU,eAAiB39V,GAAO,GACjEA,GAASA,GAAO,GAChBi9V,GAAciB,mBAAoB,UAChB,IAAXrS,GAAc,CACrB,MAAM4S,GAAaz+V,GAAO,GAC1BA,GAASy+V,IAAcz+V,GAAO,GAC1By+V,IAbZ,SAASC,GAAiB1+V,IACtB,OAAiC,IAA1BA,GAAOluC,QA3EJ,OA2EsD,IAAzBkuC,GAAOluC,QA1ErC,IA2EZ,CAWyB4sY,CAAiBD,MAC/BxB,GAAc0B,SAAWF,GAEhC,MACGz+V,GAASA,GAAO,GAGpBi9V,GAAcj9V,OAASA,EAC1B,CAsIGw+V,CAAuBvB,IAEnBA,GAAc0B,SACP1B,GAAc0B,UAGzBC,GAAkB3B,IAClB8B,GAAgB9B,GAAengV,IA3InC,SAASkiV,GAAgB/B,IACrBA,GAAckB,SAAWlB,GAAcj9V,OAAOluC,QnB7FnB,MmB6F8C,EACrEmrY,GAAckB,WACdlB,GAAcj9V,OAASi9V,GAAcj9V,OAAO9uC,QAAQ6rY,GnB5FvC,ImB8FpB,CAuIGiC,CAAgB/B,IAChBD,GAAYC,IA1HhB,SAASgC,GAAsBhC,IAC3B,MAAMj9V,GAASi9V,GAAcj9V,OAC7B,IAAIm9V,GAAan9V,GAAOluC,QAtHd,KAuHNorY,GAAYl9V,GAAOluC,QAtHd,KAwHL0Z,GAAQoyX,GAAiBT,GAAYD,IAAW,GAEpDC,GAAan9V,GAAOupL,YA3HV,KA4HV2zK,GAAYl9V,GAAOupL,YA3HV,KA6HT,IAAI59M,GAAMiyX,GAAiBT,GAAYD,IAEnC1xX,KAAUw0B,GAAO7uC,SACjBwa,GAAMH,IAGVyxX,GAAczxX,MAAQA,GACtByxX,GAActxX,IAAMA,GACpBsxX,GAAcgB,cAAgBf,EACjC,CAwGG+B,CAAsBhC,IAEfc,GAAkBd,GAAengV,IAC3C,CCrPD,MAAMoiV,GAAuB,sBA8Bd,SAASjC,GAAcj9V,IAClC,IAAInpC,GACJ,OACIA,GADAoqB,EAAS+e,IA9BjB,SAASm/V,GAAsBn/V,IAC3B,MAAMo/V,GAAqBF,GAAqBj5U,KAAKjmB,IAErD,GAAIo/V,GAAoB,CACpB,MAAMvoY,GAAU,CACZulB,MAAOm9W,IAGX,IAAIn9W,GAAQgjX,GAAmB,GAAGxzX,cAElC,MAAc,MAAVwQ,GACAvlB,GAAQulB,MAAQo9W,GACC,MAAVp9W,GACPvlB,GAAQulB,MAAQq9W,GACC,MAAVr9W,GACPvlB,GAAQulB,MAAQs9W,GACC,MAAVt9W,KACPvlB,GAAQulB,MAAQu9W,IAGhByF,GAAmB,KACnBvoY,GAAQwlY,sBAAwBxlY,GAAQylY,sBAAwB70W,SAAS23W,GAAmB,GAAI,KAG7FvoY,EACV,CACJ,CAKiBsoY,CAAsBn/V,IAEtBA,GAGPnpC,EACV,CCpCc,SAASwoY,GAAaxT,GAAQ7rV,GAAS04a,GAAoB71a,GAAS+1a,IAC/E,GAAuC,MAAX/sF,GACxB,MrBMa,GqBHjB,IAAK1qW,SAAS0qW,IACV,OAAOt6X,OAAOs6X,IAGlB,MAAM/uU,GAAOi8U,GAAWl2V,IAClBhsC,GAAUomY,GAAcj9V,IAE9B,IAAIvd,GACJ,GAAI5rB,GAAS,CACT,MAAMulB,GAAQvlB,GAAQulB,OAASm9W,GAC/B92W,GAAS68W,GAAqBzT,GAAQ37W,OAAOC,OAAO,GAAI2sC,GAAKo2U,QAAQ92W,IAAQvlB,IAAUimD,GAC1F,MACGr6B,GAAS87W,GAAmB1S,GAAQ7rV,GAAQ8c,IAGhD,OAAOr6B,EACV,CC3Bc,SAAS1B,GAAShoB,IAC7B,MAAwB,iBAAVA,EACjB,CCMD,MAAM8hd,GAAiB,mBACjBC,GAAyB,UAE/B,SAASC,GAAqBlvF,GAAQ/kQ,IAClC,GAAIA,GAAS31H,OAAS,EAAG,CACrB,MAAMwB,IAASm0H,GAAS,IvBCX,IuBDwB51H,QvBPT,IAQf,IuBD6D0B,MAAM8ld,IAChF,GAAI7sF,GAAO/5X,QAAQa,GAAM,KAAM,GAAMk5X,GAAO/5X,QAAQa,GAAM,KAAM,EAC5D,OAAOk5X,GAAO36X,QAAQyB,GAAM,GvBDnB,IuBC8BzB,QAAQyB,GAAM,GvBD5C,GuBGhB,CACJ,CAED,SAASqod,GAAoBjid,GAAO+jD,GAAM9c,IACtC,MAAMnpC,GAAUomY,GAAcj9V,KAAW,GACzC,IAEI4uB,GAFA2tU,GAAaP,GAAgBnlY,GAAQulB,OACrCyvW,GAAS9yX,GAGb,MAAMg7X,GAAWl9X,GAAQk9X,UAAYM,GAAev3U,GAAMy/U,IAE1D,GAAIxI,GAAU,CACV,MAAMknF,GhBwDP,SAASC,GAAiBr4a,GAAQkxV,GAAUwG,IAAiB,GAChE,MAAMiB,GAAelB,GAAgBz3V,GAAQkxV,GAAUwG,IACvD,GAAKiB,GAIL,KAAKA,GAAay/E,SAAU,CACxB,MAAMA,GAAW,CAAElnF,IACnB,QAAS1xW,MAASm5W,GACdy/E,GAASpuc,KAAK2uX,GAAan5W,KAE/B44b,GAASxob,KAAKmob,IACdp/E,GAAay/E,SAAWA,EAC3B,CAED,OAAOz/E,GAAay/E,SACvB,CgBxEwBC,CAAiBp+Z,GAAMi3U,GAAUwI,IAClD,GAAI0+E,GACA,QAAStpd,GAAM,EAAGA,GAAMspd,GAAS9pd,OAAQQ,KAAO,CAC5C,IAAIg9G,GAAUssW,GAAStpd,IACvB,GAAIk6X,GAAO12X,SAASw5G,IAAU,CAC1Bk9Q,GAASA,GAAO36X,QAAQy9G,GvBpBvB,IuBqBD4tR,IAAa,EACb,KACH,CACJ,CAGL,GAAIA,GAAY,CACZ,MAAM4+E,GAAcJ,GAAqBlvF,GAAQ/uU,GAAKo2U,QAAQa,SAASjtQ,WACnEi0V,GAAqBlvF,GAAQ/uU,GAAKo2U,QAAQoB,WAAWxtQ,UAErDq0V,KACAvsZ,IAAW,EACXi9T,GAASsvF,GAGhB,CACJ,CAED,MAAO,CACHtvF,OAAQA,GACRj9T,SAAUA,GAEjB,CCzDD,MAAM08I,GAAe,YAEN,SAAS3oK,GAAa3C,IACjC,MAAMrU,GAAS3J,UAEf,OAAOge,GAAO9uC,QAAQo6M,GAAc,CAAC5nL,GAAOrmB,KAC1BsuB,GAAOlE,SAASpqB,GAAO,IAAM,GAIlD,CCND,MAEMuiY,GAAe,CAAE,EAAG,EAAG,EAAG,EAAG,GAM7BC,GAAY,CACd,GAN4B,GAMHvtY,YAAa,EACtC,GAN6B,GAMHA,YAAa,EACvC,CAL4B,GAKHA,YAAa,EACtC,CAP6B,GAOHA,YAAa,GAGrCwtY,GAAsB,CACxB5sQ,QAAS,EACT,UAAW,EACXyhQ,MAAO,EACPD,KAAM,EACN/6U,OAAQ,GAGNomV,GAAwB,kBAM9B,MAAMC,GAAmB,CAAE,CACvBv1W,IAAK,MACLw1W,UAAW,KACZ,CACCx1W,IAAK,OACLw1W,UAAW,KACZ,CACCx1W,IAAK,QACLw1W,UAAW,KACZ,CACCx1W,IAAK,MACLw1W,UAAW,KACZ,CACCx1W,IAAK,UACLw1W,UAAW,KACZ,CACCx1W,IAAK,OACLy1W,aArBJ,SAASC,GAAiBtpY,IACtB,OAAOA,GAAQupY,OAAS,IAAM,GACjC,GAoBE,CACC31W,IAAK,SACLw1W,UAAW,KACZ,CACCx1W,IAAK,SACLw1W,UAAW,KACZ,CACCx1W,IAAK,eACLw1W,UAAW,MAGTI,GAAyB,CAC3B/qX,EAAG,IACHyvG,EAAG,IACHQ,EAAG,IACHI,EAAG,KAGD26Q,GAAkB,GAClBC,GAAkB,GAExB,SAASC,GAAkBP,IACvB,OAAKK,GAAgBL,MACjBK,GAAgBL,IAAa,IAAI3qY,OAAO2qY,GAAY,MAEjDK,GAAgBL,GAC1B,CAED,SAASQ,GAAmB13O,IACxB,MAAMtmI,GAAS,GACf,IAAIvc,GAAU6iJ,GAASn3J,OAAO,GAC1BquY,GAAY/5X,GAChB,QAASvU,GAAM,EAAGA,GAAMo3J,GAAS53J,OAAQQ,KAAO,CAC5C,IAAI0wH,GAAY0mC,GAASn3J,OAAOD,IAC5B0wH,KAAc49Q,GACd/5X,IAAWm8G,IAEX5/F,GAAO5V,KAAK3G,IACZA,GAAU+5X,GAAY59Q,GAE7B,CAED5/F,UAAO5V,KAAK3G,IAELuc,EACV,CAED,SAASi+W,GAAcC,GAAY/L,IAC/B,MAAMgM,GAAmBD,GAAWxvY,OACpC,IACI0vY,GAAap+W,GADbq+W,IAAY1hX,OAAOD,UAEvB,QAAS6gB,MAAU40V,GAAkB,CACjC,MAAMn7X,GAAU,GAChB,IAAIuhM,GAAgBh7J,GAAO9uC,QAAQ,IAAK,KACpC6vY,GAAQ,EACZ,QAASpvY,GAAM,EAAGA,GAAMivY,GAAkBjvY,KAAO,CAC7C,MAAMsuY,GAAYU,GAAWhvY,IAE7B,IAAI+xB,IADiB88W,GAAkBP,GAAU,IACrBh6U,KAAK+0I,KAAkB,IAAI,GAEvD,GAAKt3K,IACQs9W,GAEThmM,GAAgBA,GAAc9pM,QAAQwyB,GzBpGjC,IyBqGDA,GAAMvyB,SAAW8uY,GAAU9uY,OAAQ,CACnC,IAAIi0B,GAAQG,KAAK7Z,IAAI6Z,KAAK9Z,IAAIm0X,GAAal8W,GAAMvyB,QAAUyuY,GAAaK,GAAU9uY,QAAS,IAAI,GAC/F4vY,IAASlB,GAAUz6W,GACtB,OAND27W,IA5GQ,IAuHZ,GAFAtnY,GAAQoT,KAAK6W,IAETq9W,GAAQD,GACR,KAEP,CAEG9lM,GAAc7pM,SACd4vY,IA5Ha,GA4HJN,GAAmBzlM,IAAe7pM,QAG3C4vY,GAAQD,KACRA,GAAWC,GACXF,GAAcpnY,GACdgpB,GAASmyW,GAAiB50V,IAEjC,CAEDvd,GAASA,GAAOvxB,QAAQ,IAAK,KAE7B,QAASS,GAAM,EAAGA,GAAMivY,GAAkBjvY,KAAO,CAC7C,MAAMsvY,GAAYJ,GAAYlvY,IAC9B,GAAIsvY,IAAaA,KAAcN,GAAWhvY,IAAM,CAC5C,MAAMuvY,GAAiBL,GAAYlvY,IAAK,GACxC8wB,GAASA,GAAOvxB,QAAQsvY,GAAkBU,IAAiBP,GAAWhvY,KAClE0uY,GAAuBa,MACvBz+W,GAASA,GAAOvxB,QAAQsvY,GAAkBH,GAAuBa,KAAkBP,GAAWhvY,KAErG,CACJ,CAED,OAAO8wB,EACV,CAUD,SAAS0+W,GAAep4O,GAAUjsG,IAC9B,MAAM83U,GAAmB93U,GAAK61I,SAAS8hM,gBAAgBG,iBACvD,GAAIA,GAAiB7rO,IACjB,OAAO6rO,GAAiB7rO,IAE5B,GAAIw3O,GAAgBzjV,GAAKxkD,OAASioY,GAAgBzjV,GAAKxkD,MAAMywJ,IACzD,OAAOw3O,GAAgBzjV,GAAKxkD,MAAMywJ,IAEtC,MAAMq4O,GAAiBr4O,GAAS+sF,OAAOiqJ,IACvC,IAAIt9W,GACJ,GAAI2+W,GAAiB,EAAG,CACpB,MAAMC,GAAet4O,GAAS9/B,OAAO,EAAGm4Q,IAClCE,GAAev4O,GAAS9/B,OAAOm4Q,IAErC3+W,GAASkgB,GAAama,GAAK61I,SAAS8hM,gBAAgBE,MAChDC,GAAiB0M,KAAiBZ,GAAcD,GAAmBa,IAAe1M,IAClFA,GAAiByM,KAAiBX,GAAcD,GAAmBY,IAAezM,IACzF,MACGnyW,GAASi+W,GAAcD,GAAmB13O,IAAW6rO,IAGzD2M,OA7BJ,SAASA,GAAYx4O,GAAU/oH,GAAQ6C,IAC9B09V,GAAgB19V,MACjB09V,GAAgB19V,IAAU,IAE9B09V,GAAgB19V,IAAQkmH,IAAY/oH,EACvC,CAwBGuhW,CAAYx4O,GAAUtmI,GAAQq6B,GAAKxkD,MAC5BmqB,EACV,CAiBc,SAAS++W,GAAYxhW,GAAQ8c,IACxC,MAAM61I,GAAW71I,GAAK61I,SACtB,IAAIlwK,GACJ,GAAIxB,EAAS+e,IAELvd,GADAkwK,GAAS7rE,SAAS9mF,IACT2yJ,GAAS7rE,SAAS9mF,IAElBA,WAENA,GAAQ,CACf,GAAIA,GAAOmiF,QACP,OAAOniF,GAAOmiF,QAGlB,IAAI4mC,GAAW/oH,GAAO+oH,SACjBA,KACG/oH,GAAOyhW,SACPh/W,GAASkgB,GAAagwJ,GAAS8hM,gBAAgBz0V,GAAOyhW,UAAW9uM,GAASwkM,YAAYn3V,GAAOyhW,UAAW9uM,GAAS55I,YAAY/Y,GAAOyhW,WAC7HzhW,GAAO9sC,KACduvB,GAASkwK,GAAS55I,YAAY/Y,GAAO9sC,MAC9B8sC,GAAOpM,KACdnR,GAASkwK,GAASwkM,YAAYn3V,GAAOpM,MAErCm1H,GAtChB,SAAS24O,GAAoB7qY,IACzB,IAAI4rB,GAAS,GACb,QAAS9wB,GAAM,EAAGA,GAAMquY,GAAiB7uY,OAAQQ,KAAO,CACpD,IAAI+nB,GAASsmX,GAAiBruY,IAE1BoH,GAAQlC,GADA6iB,GAAO+Q,KAEnB,GAAI1xB,GAAO,CACP,IAAI4oY,GAAWjoX,GAAOumX,WAAavmX,GAAOwmX,aAAarpY,IACvD4rB,GAAO5V,KAAK80X,GAAS90M,OAAOizM,GAAoB/mY,KACnD,CACJ,CAED,OAAO0pB,GAAOjwB,KzB1LG,GyB2LpB,CAyB0BkvY,CAAoB1hW,KAInC+oH,KACAtmI,GAAS0+W,GAAep4O,GAAUjsG,IAEzC,CAED,OAAKr6B,KACDA,GAASkwK,GAAS7rE,SAASzrF,GAGxB5Y,EACV,CChPc,SAASm/W,GAAaC,IACjC,IAAI7rN,GACJ,OAAI6rN,IAAgB,EAChB7rN,GAAW,cACa,IAAjB6rN,GACP7rN,GAAW,OACa,IAAjB6rN,GACP7rN,GAAW,SACa,IAAjB6rN,KACP7rN,GAAW,SAGRA,EACV,CCVc,SAAS+jN,GAAYl3V,GAAQvzB,GAAMuyX,GAAcjI,GAAYh9T,IACxE,OAAOm5G,GAAgBlzI,GAAQ,CAC3BvzB,KAAMA,GACN0mK,SAAU4rN,GAAaC,IACvBjI,WAAYA,GACZh9T,MAAOA,IAEd,CCVD,SAASx7C,GAAW0gX,IAChB,MAAuB,mBAATA,EACjB,CAEc,SAASj+C,GAAO9qV,IAC3B,OAAOmqC,QAAQnqC,KAAUqoB,GAAWroB,GAAM8oB,UAAYT,GAAWroB,GAAMy1C,SAC1E,CCND,MACM4sa,GAAO,OACPC,GAAO,OACPC,GAAU,UACVC,GAAU,UAEVC,GAAiB,CACnBv2V,EAAK,MACL9rG,EAAK,OACL01H,EAAK0sU,GACL51V,EAAK41V,GACLh2V,EAXU,QAYVD,EAZU,QAaVjqF,EAAK,MACL0pF,EAAKu2V,GACLlpd,EAAKkpd,GACLhmc,EAAKgmc,GACL//a,EAAK6/a,GACLl2V,EAAKk2V,GACL7wQ,EAAK6wQ,GACL/1V,EAAK+1V,GACLnlR,EAAK,SACLpiK,EAAK,SACLgyF,EAAK,cACL73F,EAAK,YACL9U,EAAKmic,GACLr7b,EAAKq7b,GACL1sU,EAAK0sU,GACLp1V,EAAKo1V,IAGHt5E,GAAmB,kLCVzB,SAASI,GAAY55N,GAAOs5N,GAAc/kV,GAAM88U,IAC5C,OAAIiI,IAAgB,EACTnyW,GAAI64I,GAAQ,EAAGs5N,IAEnB9H,GAAYj9U,GAAM,SAAU+kV,GAAcjI,IAAYrxN,GAChE,CAED,SAAS65N,GAAclvY,GAAM2uY,GAAc/kV,GAAM88U,IAC7C,MAAM5B,GAAUzyW,KAAKI,MAAMzyB,GAAKs7C,WAAa,GAC7C,OAAIqzV,GAAe,EACR7J,GAAU,EAGd+B,GAAYj9U,GAAM,WAAY+kV,GAAcjI,IAAY5B,GAClE,CAGD,SAASqK,GAAenvY,GAAM4pD,GAAMjmD,IAChC,MAAQyrY,cAAYC,mBAAiBx6P,aAAWy6P,iBAAeC,gBAAgB5rY,GACzE2iB,GAAStmB,GAAK26C,oBAAsB,GAC1C,GAAe,IAAXr0B,IAAgBipX,GAChB,MAAO,IAEX,MAAMpgV,GAAO7oC,IAAU,EAAI,IAAM,IAC3BkpX,GAAen9W,KAAKsH,IAAIrT,IAAQlnB,WAAWM,MAAM,KACjD66C,GAAUi1V,GAAa,IAAM,EACnC,IAAIjgX,GAAS4/B,IAAQigV,GAAaI,GAAa,GAAKhzW,GAAIgzW,GAAa,GAAI,IAKzE,IAJIj1V,KAAY80V,MACZ9/W,KAAWslH,GAAY,I9BnCV,I8BmCyBr4G,GAAI+d,GAAS,IAGnD+0V,GAAe,CAEf//W,GAASkgB,GAD0B,IAAXnpB,GAAesjC,GAAK61I,SAAS6hM,cAAgB13U,GAAK61I,SAAS4hM,UAC5C9xW,GAC1C,CAED,OAAOA,EACV,CAED,SAASkgX,GAAgBzvY,GAAM2uY,GAAc/kV,GAAM88U,IAC/C,IAAIn3W,GACJ,OACIA,GADAo/W,GAAe,EArDvB,SAASG,GAAqBrzV,GAAKkzV,GAAc9I,IAC7C,MAAMkJ,GAAgB9/V,GAAS42V,IAC/B,IAAImJ,GACJ,OACIA,GADAvzV,GAAMszV,GACK,EAAIA,GAAgBtzV,GAEpBA,GAAMszV,GAGdC,GAAW,CACrB,CA4CgBF,CAAqB9uY,GAAK07C,SAAUizV,EAAc/kV,IAElDi9U,GAAYj9U,GAAM,OAAQ+kV,GAAcjI,IAAY1mY,GAAK07C,UAE/DnsB,EACV,CAED,MAAMmgX,GAAa,GAmHJ,SAASltN,GAAWxiL,GAAM8sC,GAAQ6C,GAAS+1a,IACtD,IAAK/0H,GAAO3wV,IACR,OAA0BA,I9B7Kb,G8BmLjB,MAAM4pD,GAAOi8U,GAAWl2V,IAGxB,OAFgB2+V,GAAYxhW,GAAQ8c,IAErB5rD,QAAQ6wY,GAAkB,SAASr+W,IAC9C,IACIjB,GADAo/W,GAAen+W,GAAMvyB,OAGzB,OACIsxB,GADAiB,GAAMvuB,SAAS,MAAQuuB,GAAMvuB,SAAS,KAC7BuuB,GAAMnxB,MAAM,EAAGsvY,GAAe,GAE9Be,GAAWl/W,GAAM,IAAIxwB,GAAM2uY,GAAc/kV,IAG/Cr6B,EACV,EACJ,CChNM,SAASg5b,GAAgBvod,GAAMu2R,GAAYC,IAC9C,MAAMgyL,GAAkBxod,GAAK26C,oBAEvB8ta,GAAa,IAAIxod,KAAKD,GAAK2uB,UAAsC,KAAzB4nQ,GAAaC,KAErDkyL,GAAgBD,GAAW9ta,oBAEjC,OAAO,IAAI16C,KAAKwod,GAAW95b,UAAgD,KAAnC+5b,GAAgBF,IAC3D,CDgED94E,GAAWvnW,EAAI,SAASnoC,GAAM2uY,IAC1B,OAAOnyW,GAAIx8B,GAAK27C,UAAWgzV,GAC9B,EAEDe,GAAW79Q,EAAI,SAAS7xH,GAAM2uY,GAAc/kV,IACxC,OAAOi9U,GAAYj9U,GAAM,OAAQ+kV,IAAc3uY,GAAK07C,SACvD,EAEDg0V,GAAWr9Q,EAAI,SAASryH,GAAM2uY,GAAc/kV,IACxC,OAAOqlV,GAAYjvY,GAAKs7C,WAAYqzV,GAAc/kV,IAAM,EAC3D,EAED8lV,GAAWt9Q,EAAI,SAASpyH,GAAM2uY,GAAc/kV,IACxC,OAAOqlV,GAAYjvY,GAAKs7C,WAAYqzV,GAAc/kV,IAAM,EAC3D,EAED8lV,GAAWzpX,EAAI,SAASjmB,GAAM2uY,IAC1B,IAAIv5N,GAAOp1K,GAAKq7C,cAChB,OAAqB,IAAjBszV,KACAv5N,IAAc,KAEX54I,GAAI44I,GAAMu5N,GACpB,EAEDe,GAAWrnW,EAAI,SAASroC,GAAM2uY,IAE1B,OAAOnyW,GADOx8B,GAAKg7C,WAAa,IAAM,GACpB2zV,GACrB,EAEDe,GAAW19Q,EAAI,SAAShyH,GAAM2uY,IAC1B,OAAOnyW,GAAIx8B,GAAKg7C,WAAY2zV,GAC/B,EAEDe,GAAWr4L,EAAI,SAASr3M,GAAM2uY,IAC1B,OAAOnyW,GAAIx8B,GAAKg7C,YAAc,GAAI2zV,GACrC,EAEDe,GAAWv9Q,EAAI,SAASnyH,GAAM2uY,IAC1B,OAAOnyW,GAAIx8B,GAAKg7C,WAAa,GAAI2zV,GACpC,EAEDe,GAAW3sM,EAAI,SAAS/iM,GAAM2uY,IAC1B,OAAOnyW,GAAIx8B,GAAK21K,aAAcg5N,GACjC,EAEDe,GAAW/uW,EAAI,SAAS3gC,GAAM2uY,IAC1B,OAAOnyW,GAAIx8B,GAAKg8C,aAAc2yV,GACjC,EAEDe,GAAW/8Q,EAAI,SAAS3yH,GAAM2uY,IAC1B,MAAMl0V,GAAez6C,GAAKk8C,kBAC1B,IAAI3sB,GACJ,OACIA,GADiB,IAAjBkrB,GACSje,GAAIn+B,OAAOo8C,GAAe,KAAM/6C,MAAM,KAAK,GAAGq2H,OAAO,EAAG44Q,IAAeA,IAAc,GAErFnyW,G9BjHI,G8BiHOmyW,IAEjBp/W,EACV,EAEDmgX,GAAW50W,EAAI,SAAS96B,GAAM2uY,GAAc/kV,IACxC,OAAOi9U,GAAYj9U,GAAM,aAAc+kV,IAAc3uY,GAAKg7C,WAAa,GAAK,KAAO,KACtF,EAED00V,GAAWj0P,EAAI,SAASz7I,GAAM2uY,GAAc/kV,IACxC,OAAOulV,GAAenvY,GAAM4pD,GAAM,CAC9BwlV,WAAYT,GAAe,EAC3BU,gBAAiBV,GAAe,EAChC95P,WAAW,EACXy6P,eAAe,GAEtB,EAEDI,GAAW38Q,EAAI,SAAS/yH,GAAM2uY,GAAc/kV,IACxC,OAAOulV,GAAenvY,GAAM4pD,GAAM,CAC9BirF,UAAW85P,GAAe,EAC1BW,cAAgC,IAAjBX,GACfY,YAA8B,IAAjBZ,IAEpB,EAEDe,GAAW1pX,EAAI,SAAShmB,GAAM2uY,GAAc/kV,IACxC,OAAOulV,GAAenvY,GAAM4pD,GAAM,CAC9BylV,gBAAkC,IAAjBV,GACjB95P,UAA4B,IAAjB85P,IAAuC,IAAjBA,IAExC,EAEDe,GAAW5iX,EAAI,SAAS9sB,GAAM2uY,GAAc/kV,IACxC,OAAOulV,GAAenvY,GAAM4pD,GAAM,CAC9BylV,gBAAkC,IAAjBV,GACjB95P,UAA4B,IAAjB85P,IAAuC,IAAjBA,GACjCY,aAAa,GAEpB,EAEDG,GAAW39Q,EAAI,SAAS/xH,GAAM2uY,GAAc/kV,IACxC,IAAIi7U,GAAM7kY,GAAKq7C,eAAiB,EAAI,EAAI,EACxC,OAAOwrV,GAAYj9U,GAAM,OAAQ+kV,IAAc9J,GAClD,EAED6K,GAAWttX,EAAIqtX,GAEfC,GAAWxwY,EAAI,SAASc,GAAM2uY,GAAc/kV,IACxC,OAAO6lV,GAAgBzvY,GAAM2uY,GAAc/kV,IAAM,EACpD,EAED8lV,GAAW/zP,EAAI,SAAS37I,GAAM2uY,GAAc/kV,IACxC,OAAOslV,GAAclvY,GAAM2uY,GAAc/kV,IAAM,EAClD,EAED8lV,GAAWj9Q,EAAIy8Q,GE9Kf,MAAMS,GAAuB,8BACvBg5E,GAAa,sBACbC,GAAe,UACfh5E,GAAe,CACjB,EAAG,WACH,EAAG,WACH,EAAG,UAED76Q,GAAc,MAGd8zV,GAAqB,MACrBC,GAAsB,MAEtBC,GAAsB,CACxB,sBACA,mBACA,aACA,yBACA,iCACA,6BACA,4BACA,yBACA,8BACA,0BACA,sBACA,oBACA,sBACA,mBACA,sBACA,mBACA,aACA,WACA,SAEEC,GAAmB,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAGlF,SAASn5E,GAAWhqY,GAAOyS,GAAOG,IAC9B,QAAS5S,IAASyS,IAASzS,IAAS4S,GACvC,CAED,SAASq3X,GAAUt/W,GAAO2G,IACtB,IAAM2V,UAAQruC,QAAQ04B,GAClBhkB,GAAI,EACR,KAAO25B,GAAOruC,MAAS+xB,IACnBrd,KACA1U,KAEJ,OAAI0U,GAAI,IACJ1U,IAAO,GAEX04B,GAAM14B,IAAMA,GACL0U,EACV,CAED,SAAS48X,GAAUnkY,GAAMurB,IACrB,IAAI06G,GAAQjmI,GAAQgkY,GAAahkY,KAAS,IAAIxJ,OAAO,UAAYwJ,GAAO,KAAQmpH,GAC5EvkG,GAAQ2G,GAAMtxB,MAAMkwH,OAAO5+F,GAAM64W,SAAUpkY,IAAM4kB,MAAMqhH,IAE3D,OAAIrhH,IACAA,GAAQA,GAAM,GACd2G,GAAM64W,UAAYx/W,GAAMvyB,OACjBs2B,SAAS/D,GAAO,KAEpB,IACV,CAED,SAASy/W,GAAen/W,GAAOqG,GAAOuyC,IAClC,IAEItkE,GAAM8qY,GAGNC,GALAh9X,GAAI,EACJlV,GAAS6yB,GAAM7yB,OAEfmyY,GAAc,EACdC,GAAW,EAGf,KAAOl9X,GAAIlV,GAAQkV,KACf/N,GAAO0rB,GAAM3d,IACb+8X,GAAa9qY,GAAKnH,OAClBkyY,GAAWh5W,GAAMtxB,MAAMkwH,OAAO5+F,GAAM64W,SAAUE,IAE1CxmU,KACAymU,GAAWA,GAASz3X,eAGpBy3X,KAAa/qY,IAAQ8qY,GAAaE,KAClCA,GAAcF,GACdG,GAAWl9X,IAInB,OAAIi9X,IACAj5W,GAAM64W,UAAYI,GACXC,GAAW,GAGf,IACV,CAED,SAAS44E,GAAa9xb,IAClB,IAAI5H,IAAS,EACb,OAAI4H,GAAMtxB,MAAMnH,OAAOy4B,GAAM64W,YAAc74W,GAAM2V,OAAO3V,GAAM14B,OAC1D04B,GAAM64W,WACNzgX,IAAS,GAENA,EACV,CAWD,SAAS+gX,GAAoBn5W,GAAOyyB,GAAMjmD,IACtC,MAAQyrY,cAAYmB,eAAalB,mBAAiBC,iBAAekB,aAAa7sY,GAG9E,GAFAwzB,GAAMyzV,KAAM,EAER4lB,IAAmD,MAAvCr5W,GAAMtxB,MAAMnH,OAAOy4B,GAAM64W,UACrC74W,UAAM64W,YACC,EAGX,GAAIV,KAAkBW,GAlB1B,SAASQ,GAAmBhxM,IACxB,MAAQ4hM,aAAWC,kBAAkB7hM,GACrC,IAAK4hM,GACD,MAAMrC,qBAGV,MAAO,CAAEqC,GAAUrjY,QAzGH,MhCJC,IgC6G8B0a,cAAe4oX,GAActjY,QAzG5D,MhCJC,IgC6GuF0a,cAC3G,CAWwC+3X,CAAmB7mV,GAAK61I,UAAWtoK,IAAO,GAC3E,OAAO,EAGX,MAAM5wB,GAAUopY,GAAqB58U,KAAK57B,GAAMtxB,MAAMkwH,OAAO5+F,GAAM64W,SAAU,IAC7E,IAAKzpY,GACD,OAAQ+oY,GAGZ,MAAMoB,GAAanqY,GAAQ,GACrBoqY,GAAepqY,GAAQ,GACvBqqY,GAAcr8W,SAASm8W,GAAY,IACnC77P,GAAYtuI,GAAQ,GAC1B,IAAIsqY,GAAgBt8W,SAASo8W,GAAc,IAU3C,GARI7iX,MAAM8iX,MAAkBxB,IAAoC,IAAtBsB,GAAWzyY,SAAmBoxY,IAAmBvhX,MAAM+iX,KAAoBN,IAAe17P,KAIhI/mH,MAAM+iX,MACNA,GAAgB,MAGhBhB,GAAWe,IAAa,GAAK,KAAQC,IAAiBhB,GAAWgB,GAAe,EAAG,KACnF,OAAO,EAGX15W,GAAM64W,UAAYzpY,GAAQ,GAAGtI,OAC7Bk5B,GAAMy5W,YAAcA,GACpBz5W,GAAM05W,cAAgBA,EACzB,CAED,SAASC,GAAWz6D,GAAIl/S,GAAOyyB,IAC3B,MAAMzX,GAAQ29V,GAAUz5D,GAAIl/S,IACtBrG,GAAQ+1W,GAAYj9U,GAAM,SAAUzX,GAAc,MAAPkkS,IAAY,GAEvDhhK,GAAQljI,GAAQ,EAAI49V,GAAU,EAAG54W,IAAS84W,GAAen/W,GAAOqG,IAAO,GAE7E,GAAc,OAAVk+I,IAAkBw6N,GAAWx6N,GAAO,EAAG,IACvC,OAAO,EAEXl+I,GAAMk+I,MAAQA,GAAQ,CACzB,CAED,SAAS07N,GAAe16D,GAAIl/S,GAAOyyB,IAC/B,MAAMzX,GAAQ29V,GAAUz5D,GAAIl/S,IACtBrG,GAAQ+1W,GAAYj9U,GAAM,OAAQzX,GAAc,MAAPkkS,IAAY,GAC3D,IAAIp/J,GAAY9kI,GAAQ,EAAI49V,GAAU,EAAG54W,IAAS84W,GAAen/W,GAAOqG,IAAO,GAC/E,IAAM8/I,IAA2B,IAAdA,IAAoB44N,GAAW54N,GAAW,EAAG,GAC5D,OAAO,CAEd,CAED,MAAM+5N,GAAU,GAiRhB,SAASk4E,GAAgBrjd,GAAOinC,IAI5B,MAAQ,GAHc+7a,GAAmB91Z,KAAKjmB,IAAQ,KAGzBjnC,KAFNijd,GAAoB/1Z,KAAKjmB,IAAQ,IAG3D,CAED,SAASq8a,GAAWtjd,GAAOinC,GAAQ8c,IAC/B,IAAIqlE,GAAUq/Q,GAAYxhW,GAAQ8c,IAAMlqD,MhCvcvB,IgCycjB,MAAMy3B,GAAQ,CACV2V,OAAQmiF,GACRxwH,IAAK,EACLoH,MAAOqjd,GAAgBrjd,GAAOinC,IAC9BkjW,SAAU,EACV56N,KAAM,KACNC,MAAO,KACP55H,IAAK,KACLnB,MAAO,KACPC,QAAS,KACTC,QAAS,KACTC,aAAc,MAEZx8C,GAASgxH,GAAQhxH,OACvB,IAAI2tY,IAAU,EAEd,KAAOz0W,GAAM14B,IAAMR,GAAQk5B,GAAM14B,MAAO,CACpC,IAAI43U,GAAKpnN,GAAQ93F,GAAM14B,KAEvB,GAAImtY,GACW,MAAPv1D,KACAu1D,IAAU,GAGdq9E,GAAa9xb,SAAD,GAER65W,GAAQ36D,KAER,GADc26D,GAAQ36D,IAAIl/S,GAAOyyB,IAE7B,OAAO,aAEG,MAAPysR,GACPu1D,IAAU,EACVq9E,GAAa9xb,SAAD,IACJ8xb,GAAa9xb,IACrB,OAAO,IAGlB,CAED,OAAIA,GAAM64W,SAAWnqY,GAAM5H,OAChB,KArGf,SAASk3K,GAAWh+I,IAChB,IAAMi+I,QAAMC,SAAO55H,OAAKnB,SAAOC,WAASC,WAASC,gBAAcy2V,UAAQtmB,OAAKgmB,eAAaC,kBAAkB15W,GAC3G,MAAMiyb,GAAoB,OAAV9ua,IAA8B,OAAZC,IAAoBC,IAAW,KAC3Dx6C,GAAO,IAAIC,KACjB,IAAIsvB,GAuCJ,OArCa,OAAT6lJ,IAA2B,OAAVC,IAA0B,OAAR55H,IAAgB2ta,IACnDh0S,GAAOp1K,GAAKq7C,cACZg6H,GAAQr1K,GAAKs7C,WACbG,GAAMz7C,GAAK27C,YAEE,OAATy5H,KACAA,GAAOp1K,GAAKq7C,eAGJ,OAARI,KACAA,GAAM,IAIVy1V,IAAU52V,GAAQ,KAClBA,IAAS,IAGTswU,IACIgmB,KACAt2V,KAAUs2V,IAGVC,KACAt2V,KAAYs2V,IAAiBD,GAAc,GAAI,EAAK,IAGxDrhX,GAAS,IAAItvB,KAAKA,KAAK2qX,IAAIx1M,GAAMC,GAAO55H,GAAKnB,GAAOC,GAASC,GAASC,OAEtElrB,GAAS,IAAItvB,KAAKm1K,GAAMC,GAAO55H,GAAKnB,GAAOC,GAASC,GAASC,IDpb9D,SAASM,GAAU/6C,GAAMs6C,KACvBA,IAA6B,KAApBt6C,GAAKg7C,YACfh7C,GAAKi7C,SAASj7C,GAAKg7C,WAAa,EAEvC,CCibOD,CAAUxrB,GAAQ+qB,KAGlB86H,GAAO,KACP7lJ,GAAO+lJ,YAAYF,IAGnB7lJ,GAAOosB,YAAcF,SAAe/oC,IAARk4W,GACrB,KAGJr7V,EACV,CAwDU4lJ,CAAWh+I,KAAU,IAC/B,CAWD,SAASkyb,GAAyBxjd,IAC9B,GAAIA,IAAiC,IAAxBA,GAAMjH,QAAQ,MAAa,CACpC,IAAIoB,GAAO2od,GAAW51Z,KAAKltD,IAC3B,GAAI7F,GAAM,CACNA,GAAOA,GAAK,GACZ,IAAIspd,GAAWV,GAAa71Z,KAAK/yD,GAAK6vC,UAAU,IAEhD7vC,UAAO,IAAIC,KAAKs0B,SAASv0B,GAAM,KAE3Bspd,KACAA,GAnBhB,SAASC,GAAyBjjc,IAC9B,MAAM6oC,GAA+B,MAAxB7oC,GAAOyvG,OAAO,EAAG,IAAa,EAAK,EAEhD,IAAIxmG,GAASjJ,GAAOupB,UAAU,GAC9BtgB,UAA8C,GAApCgF,SAAShF,GAAOwmG,OAAO,EAAG,GAAI,IAAYxhG,SAAShF,GAAOsgB,UAAU,GAAI,IAE3Esf,GAAO5/B,EACjB,CAY0Bg6b,CAAyBD,GAAS,IAC7Ctpd,GAAOuod,GAAgBvod,GAAMA,GAAK26C,oBAAqB,GACvD36C,GAAOuod,GAAgBvod,GAAM,GAAG,EAAKspd,KAGlCtpd,EACV,CACJ,CACJ,CAnWDgxY,GAAQ7oW,EAAI,SAAShR,IACjB24W,GAAU,IAAK34W,IACf,MAAMskB,GAAMs0V,GAAU,EAAG54W,IAEzB,GAAY,OAARskB,IAAgBo0V,GAAWp0V,GAAK,EAAG,IACnC,OAAO,EAGO,OAAdtkB,GAAMskB,MACNtkB,GAAMskB,IAAMA,GAEnB,EAEDu1V,GAAQn/Q,EAAI,SAAS16F,GAAOyyB,IAIxB,GAAkB,OADFqmV,GAAepJ,GAAYj9U,GAAM,OAFnCkmV,GAAU,IAAK34W,KAEmC,GAAO,GAAOA,IAAO,GAEjF,OAAO,CAEd,EAED65W,GAAQ3+Q,EAAI,SAASl7F,GAAOyyB,IACxB,OAAOknV,GAAW,IAAK35W,GAAOyyB,GACjC,EAEDonV,GAAQ5+Q,EAAI,SAASj7F,GAAOyyB,IACxB,OAAOknV,GAAW,IAAK35W,GAAOyyB,GACjC,EAEDonV,GAAQ/qX,EAAI,SAASkR,IACjB,MAAMgb,GAAQ29V,GAAU,IAAK34W,IAC7B,IAAIi+I,GAAO26N,GAAoB,IAAV59V,QAAcz/B,EAAYy/B,GAAOhb,IAEtD,GAAa,OAATi+I,GACA,OAAO,EAGX,GAAc,IAAVjjI,GAAa,CACb,MAAMixI,IAAc,IAAInjL,MAAOo7C,cAC/B+5H,GAAQgO,GAAcA,GAAc,IAAOhO,GACvCA,GA1Le,OA2LfA,IAAQ,IAEf,CAEDj+I,GAAMi+I,KAAOA,EAChB,EAED47N,GAAQ3oW,EAAI,SAASlR,IACjB24W,GAAU,IAAK34W,IAEf,IAAImjB,GAAQy1V,GAAU,EAAG54W,IAKzB,GAJc,KAAVmjB,KACAA,GAAQ,GAGE,OAAVA,IAAkBu1V,GAAWv1V,GAAO,EAAG,IACvC,OAAO,EAGXnjB,GAAMmjB,MAAQA,EACjB,EAED02V,GAAQ7+Q,EAAI,SAASh7F,IACjB24W,GAAU,IAAK34W,IAEf,IAAImjB,GAAQy1V,GAAU,EAAG54W,IAEzB,GAAc,OAAVmjB,IAAkBu1V,GAAWv1V,GAAO,EAAG,IACvC,OAAO,EAGXnjB,GAAMmjB,MAAQA,EACjB,EAED02V,GAAQl2W,EAAI,SAAS3D,GAAOyyB,IAExB,IAAIqnV,GAAgBpK,GAAYj9U,GAAM,aADxBkmV,GAAU,IAAK34W,KAC8B,GAAO,GAElE,MAAM+5W,GAASjB,GAAe,CAAEgB,GAAc5qM,IAAMlvK,IAAO,GAC3D,IAAK+5W,KAAWjB,GAAe,CAAEgB,GAAc9qM,IAAMhvK,IAAO,GACxD,OAAO,EAGXA,GAAM+5W,OAASA,EAClB,EAEDF,GAAQh/Q,EAAI,SAAS76F,IACjB24W,GAAU,IAAK34W,IACf,MAAMmjB,GAAQy1V,GAAU,EAAG54W,IAC3B,GAAc,OAAVmjB,IAAkBu1V,GAAWv1V,GAAO,EAAG,IACvC,OAAO,EAEXnjB,GAAMmjB,MAAQA,EACjB,EAED02V,GAAQ35L,EAAI,SAASlgL,IACjB24W,GAAU,IAAK34W,IAEf,IAAImjB,GAAQy1V,GAAU,EAAG54W,IAEzB,GAAc,OAAVmjB,IAAkBu1V,GAAWv1V,GAAO,EAAG,IACvC,OAAO,EAGXnjB,GAAMmjB,MAAkB,KAAVA,GAAe,EAAIA,EACpC,EAED02V,GAAQjuM,EAAI,SAAS5rK,IACjB24W,GAAU,IAAK34W,IACf,MAAMojB,GAAUw1V,GAAU,EAAG54W,IAE7B,GAAgB,OAAZojB,IAAoBs1V,GAAWt1V,GAAS,EAAG,IAC3C,OAAO,EAGXpjB,GAAMojB,QAAUA,EACnB,EAEDy2V,GAAQrwW,EAAI,SAASxJ,IACjB24W,GAAU,IAAK34W,IACf,MAAMqjB,GAAUu1V,GAAU,EAAG54W,IAC7B,GAAgB,OAAZqjB,IAAoBq1V,GAAWr1V,GAAS,EAAG,IAC3C,OAAO,EAEXrjB,GAAMqjB,QAAUA,EACnB,EAEDw2V,GAAQr+Q,EAAI,SAASx7F,IACjB,MAAMgb,GAAQ29V,GAAU,IAAK34W,IACvB3G,GAAQ2G,GAAMtxB,MAAMkwH,OAAO5+F,GAAM64W,SAAU79V,IACjD,IAAIsI,GAAe,KASnB,GAPK3sB,MAAMyG,SAAS/D,GAAO,OACvBiqB,GAAe/qB,WAAW,KAAOc,GAAO,IACxCiqB,GAAejtB,GAAMitB,GAAc,GACnCA,IAAgB,IAChBtjB,GAAM64W,UAAY79V,IAGD,OAAjBsI,IAAyBo1V,GAAWp1V,GAAc,EAAG,KACrD,OAAO,EAGXtjB,GAAMsjB,aAAeA,EACxB,EAEDu2V,GAAQv1P,EAAI,SAAStkH,GAAOyyB,IAGxB,MAAMunV,GAFQrB,GAAU,IAAK34W,IAED,EAEtBi6W,GAAUd,GAAoBn5W,GAAOyyB,GAAM,CAC7CwlV,WAAY+B,GACZ9B,gBAAiB8B,GACjB7B,eAAe,IAGnB,GAAI8B,GACA,OAAOA,EAEd,EAEDJ,GAAQj+Q,EAAI,SAAS57F,GAAOyyB,IACxB,MAAMzX,GAAQ29V,GAAU,IAAK34W,IAEvBi6W,GAAUd,GAAoBn5W,GAAOyyB,GAAM,CAC7C2mV,YAAap+V,GAAQ,EACrBq+V,SAAoB,IAAVr+V,GACVm9V,cAAyB,IAAVn9V,KAGnB,GAAIi/V,GACA,OAAOA,EAEd,EAEDJ,GAAQhrX,EAAI,SAASmR,GAAOyyB,IACxB,MAAMzX,GAAQ29V,GAAU,IAAK34W,IAEvBi6W,GAAUd,GAAoBn5W,GAAOyyB,GAAM,CAC7C2mV,YAAuB,IAAVp+V,IAAyB,IAAVA,GAC5Bk9V,gBAA2B,IAAVl9V,KAErB,GAAIi/V,GACA,OAAOA,EAEd,EAEDJ,GAAQlkX,EAAI,SAASqK,GAAOyyB,IACxB,MAAMzX,GAAQ29V,GAAU,IAAK34W,IAEvBi6W,GAAUd,GAAoBn5W,GAAOyyB,GAAM,CAC7C2mV,YAAuB,IAAVp+V,IAAyB,IAAVA,GAC5Bk9V,gBAA2B,IAAVl9V,GACjBq+V,UAAU,IAEd,GAAIY,GACA,OAAOA,EAEd,EAEDJ,GAAQj/Q,EAAI,SAAS56F,GAAOyyB,IACxB,MACM+6U,GAAOkC,GAAYj9U,GAAM,OADjBkmV,GAAU,IAAK34W,KACiB,GAAO,GAGrD,GAAY,OAFA84W,GAAe,CAAEtL,GAAK,GAAIA,GAAK,IAAMxtW,IAAO,GAGpD,OAAO,CAEd,EAED65W,GAAQ5uX,EAAI,SAAS+U,GAAOyyB,IACxB,OAAOmnV,GAAe,IAAK55W,GAAOyyB,GACrC,EAEDonV,GAAQ9xY,EAAI,SAASi4B,GAAOyyB,IACxB,OAAOmnV,GAAe,IAAK55W,GAAOyyB,GACrC,EClZD,MAAM4/Z,GAAa,CACfn0S,MAAO,CACHj5J,KAAM,SACNqtc,UAAW,EACX/iF,WAAY,KAGhB5B,QAAS,CACL1oX,KAAM,WACNqtc,UAAW,EACX/iF,WAAY,KAGhBzB,QAAS,CACL7oX,KAAM,OACNqtc,UAAW,CACP53V,EAAG,EACH3yH,EAAG,EACHkjB,EAAG,GAEPskX,WAAY,KAGhBvB,UAAW,CACP/oX,KAAM,aACNqtc,UAAW,GAGf5kF,IAAK,CACDzoX,KAAM,OACNqtc,UAAW,IAIbC,GAAU,UAEhB,SAASC,GAAWlqd,GAAOoG,IACvB,MAAM+jd,GAAWnqd,GAAMA,GAAMxB,OAAS,GAClC2rd,IAAYA,GAASxtc,OAASstc,GAC9BE,GAAS36V,SAAWppH,GAEpBpG,GAAMka,KAAK,CACPyC,KAAMstc,GACNz6V,QAASppH,IAGpB,CAED,SAASgkd,GAAS56V,IACd,MAAmB,MAAZA,IAA+B,MAAZA,EAC7B,CCnDD,MAAMmpF,GAAe,uBAEd,SAASh5M,GAASyG,GAAOinC,GAAQ6C,IACpC,GAAI7C,GAAQ,CACR,GAAI6jT,GAAO9qV,IACP,OAAO28K,GAAW38K,GAAOinC,GAAQ6C,IAC9B,GAAI9hB,GAAShoB,IAChB,OAAOsmY,GAAatmY,GAAOinC,GAAQ6C,GAE1C,CAED,OAA8B9pC,IlCHb,EkCIpB,CCND,MAAMV,GAAkB,CACpBC,KAAM,+BACNC,YAAa,uBACbC,aAAc,CAAC,iBAAkB,mBACjCC,YAAa,WACbC,QAAS,GACTC,iBAAkB,+JAGhBqkd,GAAW,2FAIXC,GAAiB,CACnB7qF,WAAe,aAAY4qF,qBAC3BzqF,kBAAsB,aAAYyqF,6BAClC1qF,iBAAqB,aAAY0qF,4BACjCpqF,iBAAqB,aAAYoqF,6BACjCtqF,WAAe,aAAYsqF,sBAC3BxqF,UAAc,aAAYwqF,qBAC1B7qF,SAAa,aAAY6qF,mBACzBrqF,gBAAoB,aAAYqqF,2BAChCvqF,WAAe,aAAYuqF,uBAG/B,SAASjrF,GAAcvlW,IACnB,MAAM9b,GAAU8b,GAAM9b,QAChBwsc,GAAgBD,GAAe/sc,OAAOsa,KAAKyyb,IAAgB92c,OAAOskB,IAAgC,IAAzB/Z,GAAQ5e,QAAQ24B,KAAY,IAC3G,OAAOyyb,GAAiB,GAAExsc,MAAWwsc,KAAkBxsc,EAC1D,CACD,SAASysc,GAAW97b,IAChB,OAAO,YAAasK,IAChB,IACI,OAAOtK,GAAG2D,MAAM,KAAM2G,GAKzB,CAJA,MACMa,IACHA,SAAM9b,QAAUqhX,GAAcvlW,IACxBA,EACT,CACJ,CACJ,CAID,MAAMupJ,GAAkBonS,GAAWz6a,IAI7Bq3J,GAAgBojR,GCxDP,SAASpjR,GAAcljM,GAASgsC,GAAS+1a,IAEpD,MAAM9gF,GADOiB,GAAWl2V,IACA8vJ,SAASmlM,WACjC,IAAKA,GACD,MAAM5F,4BAGV,MAAMkrF,GAAgBtlF,GAAWjhY,GAAQyY,OAAS,GAElD,OAAO8tc,GAAcvmd,GAAQm/K,WAAaonS,GAAc/lF,IAC3D,GDkDKl1V,GAAWg7a,GAAWz6a,IAItB1C,GAASm9a,GDhDR,SAASn9a,GAAOA,GAAQrU,GAAQkX,IACnC,OAAO7C,GAAO9uC,QAAQo6M,GAAc,SAAS5nL,GAAOrmB,GAAOylC,IAGvD,OAAOxwC,GAFKq5B,GAAOlE,SAASpqB,GAAO,KAEZylC,GAAoBA,GAAkBC,UAAU,GlCV1D,GkCUsEF,GACtF,EACJ,GC8CK6yI,GAAaynS,GAAWz6a,IAIxB28V,GAAe89E,GAAWz6a,IAQ1B84Z,IAJO2hB,G/BjEE,SAASvyb,KACpB,MAAMz5B,GAAS6wB,UAAU7wB,OACzB,QAASQ,GAAM,EAAGA,GAAMR,GAAQQ,KAAO,CACnC,IAAI29F,GAAQttE,UAAUrwB,IACtB,GAAI29F,GAAM2hK,KAAM,CACZ,IAAIpuN,GAAS3yB,OAAOsa,KAAK8kE,GAAM2hK,MAAM,GACjCn0M,GAAOwyC,GAAM2hK,KAAKpuN,IAClBk2V,GAAalG,GAAKhwV,IAAUgwV,GAAKhwV,KAAW,GAEhDk2V,GAAWzgY,KAAOygY,GAAWzgY,MAAQuqC,GACrCk2V,GAAWhnB,SAAWgnB,GAAWhnB,UAAYj1T,GAAKi1T,SAElDqnB,GAAgBL,IAChB4hF,GAAW93a,GAAQia,GACtB,SAAUwyC,GAAMgpS,aACb,GAAIhpS,GAAMgpS,aAAaK,SACnB9F,yBAA6B,CACzB1wV,SAAUmtD,GAAMgpS,aAAaK,SAASx2V,SACtCy2V,aAActpS,GAAMgpS,aAAaK,SAASC,aAC1CC,WAAYvpS,GAAMgpS,aAAaK,SAASE,iBAHf,GAKtBvpS,GAAMgpS,aAAaC,cAC1B1F,8BAAkC3iX,OAAOC,OAAO0iX,8BAAiCvjS,GAAMgpS,aAAaC,oBAAlE,GAC3BjpS,GAAMgpS,aAAaE,aAAc,CACxC,MAAMA,GAAe3F,6BACrB2F,GAAaC,OAASvoX,OAAOC,OAAOqoX,GAAaC,QAAU,GAAInpS,GAAMgpS,aAAaE,aAAaC,QAC/FD,GAAakE,UAAYxsX,OAAOC,OAAOqoX,GAAakE,WAAa,GAAIptS,GAAMgpS,aAAaE,aAAakE,UACxG,CAER,CACJ,G+BuCqBygF,GElFP,SAAS3hB,GAAc34Z,IAGlC,OAFai2V,GAAcj2V,IAEfqwV,QAAQz9L,OACvB,IFkFKvzJ,GAAYi7a,GHudH,SAASj7a,GAAUnpC,GAAO0+Q,GAAS50O,GAAS+1a,IACvD,IAAK7/c,GACD,OAAO,KAGX,GAAI8qV,GAAO9qV,IACP,OAAOA,GAGX,IAAIskd,GAAa9rd,OAAOwH,IAAO4J,OAC3BzP,GAAOqpd,GAAyBc,IACpC,GAAInqd,GACA,OAAOA,GAGX,MAAM4pD,GAAOi8U,GAAWl2V,IACxB,IAAIy6a,GAAe7lM,IA5BvB,SAASq0G,GAAen5L,IACpB,MAAM8kF,GAAU,GACV3wJ,GAAW6rE,GAAS7rE,SACpB31H,GAAS+qd,GAAiB/qd,OAEhC,QAASQ,GAAM,EAAGA,GAAMR,GAAQQ,KAC5B8lR,GAAQ5qQ,KAAKi6G,GAASo1V,GAAiBvqd,MAG3C,OAAO8lR,GAAQ9gQ,OAAOslc,GACzB,CAkBiCnwF,CAAehvU,GAAK61I,UAClD2qR,GAAetrd,MAAMkuB,QAAQo9b,IAAgBA,GAAe,CAAEA,IAE9D,MAAMnsd,GAASmsd,GAAansd,OAE5B,QAASQ,GAAM,EAAGA,GAAMR,GAAQQ,KAE5B,GADAuB,GAAOmpd,GAAWgB,GAAYC,GAAa3rd,IAAMmrD,IAC7C5pD,GACA,OAAOA,GAIf,OAAOA,EACV,GGhfK44O,GAAcqxO,GZpBL,SAASrxO,EAAY/yO,GAAO8pC,GAAS+1a,GAAgB54a,GAAS,IACzE,IAAKjnC,IAAmB,IAAVA,GACV,OAAO,KAGX,GAAIgoB,GAAShoB,IACT,OAAOA,GAGX,MAAM+jD,GAAOi8U,GAAWl2V,IAClB4yJ,GAAU34I,GAAKo2U,QAAQz9L,QAE7B,IAEI8nR,GAFA1xF,GAAS9yX,GAAMzG,WACf2qY,GAAgBj9V,IAAU,GAgB9B,GAbI/e,EAAS+e,MACTi9V,GAAgB,CAAEj9V,OAAQA,IAC1B4+V,GAAkB3B,IAClBpR,GAhCR,SAAS2xF,GAAc3xF,GAAQoR,IAC3B,MAAMqB,GAAWrB,GAAcqB,SAC/B,IAAI77W,GAASopW,GAEb,GAAIyS,GACA,QAAS3sY,GAAM,EAAGA,GAAM2sY,GAASntY,OAAQQ,KACrC8wB,GAASA,GAAOvxB,QAAQotY,GAAS3sY,IvBnDxB,IuBuDjB,OAAO8wB,EACV,CAqBgB+6b,CAAc3xF,GAAQoR,IAE/B8B,GAAgB9B,GAAengV,MAG/BmgV,GAAc7gX,QAAUs9W,IAAW7N,GAAO/5X,QAAQ2jM,GAAQ29L,cAAe,KACzEvH,GAASA,GAAO36X,QAAQukM,GAAQ29L,YvBnFnB,IuBoFbmqF,IAAY,GAGZ1C,GAAetld,KAAKs2X,IACpBA,UAASjpW,WAAWipW,GAAO36X,QAAQukM,GAAQ09L,QAASwlF,KAC7C33b,MAAM6qW,IAAU,KAAOA,GAGlC,MAAQj9T,SAAU6uZ,GAAkB5xF,OAAQ6xF,IAAmB1C,GAAoBnvF,GAAQ/uU,GAAMmgV,IACjGpR,GAASt6X,OAAOmsd,IAAgB/6c,OAEhC,MAAMg7c,GAAoB9xF,GAAO/5X,QAAQ,KACzC,GAAI6rd,GAAoB,EACpB,OAAO,KAGX,IAAIC,GAAaD,IAAoB,EAErCC,eAAkCh4c,IAArB63c,GAAiCA,GAAmBG,GAEjE/xF,GAASA,GAAO36X,QAAQ,IvBxGP,IuByGVA,QAAQ4pd,GAAwB,KAChClod,MAAM6iM,GAAQ93J,MAAMzsC,QAAQ4pd,GAAwB,MAAMtod,KvB1GhD,IuB2GVtB,QAAQukM,GAAQ09L,QAASwlF,IAEhC9sF,GAASjpW,WAAWipW,IAEhB7qW,MAAM6qW,IACNA,GAAS,KACF+xF,KACP/xF,KAAU,GAGVA,IAAU0xF,KACV1xF,IAAU,KAGPA,EACV,GYxCKr1L,GAAkB2mR,GFrCT,SAAS3mR,GAAgBx2J,GAAQ6C,GAAS+1a,IACrD,MACMz2V,GAAUq/Q,GAAYxhW,GADf+4V,GAAWl2V,KAElBlwC,GAAQ,GACd,IAAIqU,GAAY+6X,aAA6B,EACzCr+W,GAAQq+W,QAAsB5/Q,IAElC,KAAOz+F,IAAO,CACV,IAAI3qB,GAAQ2qB,GAAM,GAMlB,GAJI1c,GAAY0c,GAAMrmB,OAClBw/c,GAAWlqd,GAAOwvH,GAAQp/E,UAAU/7B,GAAW0c,GAAMrmB,QAGrDtE,GAAMugM,WAAW,MAAQvgM,GAAMugM,WAAW,KAC1CujR,GAAWlqd,GAAOoG,QACf,CACH,MAAMknY,GAAYlnY,GAAM,GAClBuW,GAAOksc,GAAev7E,IACtBtpM,GAAO,CACTrnL,KAAMA,GACN6yG,QAASppH,IAGA,SAATuW,KACAqnL,GAAKypM,OAAS28E,GAAShkd,KAG3B,MAAMirB,GAAQ04b,GAAWptc,IAEzB,GAAI0U,GAAO,CACP,MAAM24b,GAAY57b,GAASiD,GAAM24b,WAAa34b,GAAM24b,UAAY34b,GAAM24b,UAAU18E,IAC1EznM,GAAgBz/L,GAAM5H,OAExBqnM,IAAiBmkR,KACjBhmR,GAAK3yK,MAAQ,CACT1U,KAAM0U,GAAM1U,KACZ0mK,SAAU4rN,GAAappM,IACvBohM,WAAY51W,GAAM41W,aAAeqG,IAG5C,CAEDttY,GAAMka,KAAK8pL,GACd,CAED3vL,GAAY+6X,aACZr+W,GAAQq+W,QAAsB5/Q,GACjC,CAED,OAAIn7G,GAAYm7G,GAAQhxH,QACpB0rd,GAAWlqd,GAAOwvH,GAAQp/E,UAAU/7B,KAGjCrU,EACV,GEdKL,GAAW6qd,GAAWz6a,IAItBozI,GAAeqnS,GzBhGN,SAASrnS,GAAajzI,IACjC,MAAMia,GAAOg8U,GAAcj2V,IAE3B,GAAIia,GAAKg5H,aACL,OAAOh5H,GAAKg5H,aAGhB,MAAM6iN,GAAW9F,yBACjB,IAAK8F,GACD,MAAMlG,GAAWjmW,QAGrB,MAAMymW,GAAYmG,GAAgBt8U,IAC5BtxC,GAAQmtX,GAASC,aAAa3F,KAAc0F,GAASC,aFlB9B,OEmBvBjtX,GAAMgtX,GAASE,WAAW5F,KAAc0F,GAASE,WFnB1B,OEqB7B/7U,UAAKg5H,aAAe,CAChBtqK,MAAO4vX,WAAqB5vX,IAC5BG,IAAKyvX,WAAqBzvX,KAGvBmxC,GAAKg5H,YACf,GyBgFKmkH,GAAW7pR,IG5GF,SAAS6pR,GAAQ7pR,IAC5B,MAAMyyB,GAASzyB,GAAK9X,KACdwkD,GAAO+1U,GAAKhwV,IAAUgwV,GAAKhwV,KAAW,GACtCy1V,GAAezF,gBAAoBA,iBAAqB,GAE1DziX,GAAKmoX,gBACLD,GAAaC,cAAgBroX,OAAOC,OAAOmoX,GAAaC,eAAiB,GAAInoX,GAAKmoX,gBAGlFnoX,GAAKooX,eACLF,GAAaE,aAAeF,GAAaE,cAAgB,GACzDF,GAAaE,aAAakE,UAAYxsX,OAAOC,OAAOmoX,GAAaE,aAAakE,WAAa,GAAItsX,GAAKooX,eAGxG,MAAMtF,GAAUp2U,GAAKo2U,QAErBhjX,OAAOC,OAAO2sC,GAAM1sC,IAEhB8iX,IAAW9iX,GAAK8iX,UAChBp2U,GAAKo2U,QAAUhjX,OAAOC,OAAO,GAAI+iX,GAAS9iX,GAAK8iX,SAEtD,CHuFyBxwV,CAAatyB,IAiBjCytc,GAAe,KAYrB,MAAMz7a,GAIFzxC,cAIIE,KAAKiM,QAAU,IAAIf,OAAJ,EACfW,KAAgBrE,GACnB,CAID8qC,SACItyC,KAAKiM,QAAQmE,MAChB,EAELmhC,GAAYxuC,UAAZ,4BAAyGwuC,GAAzG,EACAA,GAAYtuC,WADmFD,MAC/F,OAA6GuuC,GAA7GruC,qDA3BA,SAAS+pd,GAAmBvmT,IACxB,OAAO,IAAIwmT,GAAgBxmT,GAC9B,CAyByJumT,CAD3Djqd,MAC+F2jK,QAA9Lp8H,eAAsI,SAatI,MAAM2ib,WAAwB37a,GAS1BzxC,YAAY4mK,IACRzoJ,QACAje,KAAK0mK,SAAWA,EACnB,CAIGA,eACA,OAAO1mK,KAAKgyC,MACf,CACG00H,aAASx+J,IAIT,MAAM8pC,GAAS9pC,GAAM7H,QAAQ2sd,GAAc,KACvCh7a,KAAWhyC,KAAKgyC,SAChBhyC,KAAKgyC,OAASA,GACdhyC,KAAKsyC,SAEZ,CASDnD,OAAOg+a,MAAaryb,IAChB,OAAOqU,GAAOg+a,GAAUryb,GAAQ96B,KAAK0mK,SACxC,CASDjlK,SAASyG,GAAOinC,GAAQu3H,IACpB,OAAOjlK,GAASyG,GAAOinC,GAAQu3H,IAAY1mK,KAAK0mK,SACnD,CAUDme,WAAW38K,GAAOinC,GAAQu3H,IACtB,OAAOme,GAAW38K,GAAOinC,GAAQu3H,IAAY1mK,KAAK0mK,SACrD,CASDr1H,UAAUnpC,GAAOinC,GAAQu3H,IACrB,OAAOr1H,GAAUnpC,GAAOinC,GAAQu3H,IAAY1mK,KAAK0mK,SACpD,CASDu0E,YAAY/yO,GAAOinC,GAAQu3H,IACvB,OAAOu0E,GAAY/yO,GAAOw+J,IAAY1mK,KAAK0mK,SAAUv3H,GACxD,CASDq/V,aAAatmY,GAAOinC,GAAQu3H,IACxB,OAAO8nO,GAAatmY,GAAOinC,GAAQu3H,IAAY1mK,KAAK0mK,SACvD,CAmCDwiC,cAAcljM,GAAS0gK,IACnB,OAAOwiC,GAAcljM,GAAS0gK,IAAY1mK,KAAK0mK,SAClD,CAeDwe,gBAAgBl/K,GAAS0gK,IACrB,OAAOwe,GAAgBxe,IAAY1mK,KAAK0mK,SAAU1gK,GACrD,CAQD2/L,gBAAgBx2J,GAAQu3H,IACpB,OAAOi/B,GAAgBx2J,GAAQu3H,IAAY1mK,KAAK0mK,SACnD,CAODikS,cAAcjkS,IACV,OAAOikS,GAAcjkS,IAAY1mK,KAAK0mK,SACzC,CAODp1H,SAASo1H,IACL,OAAOp1H,GAASo1H,IAAY1mK,KAAK0mK,SACpC,CAODue,aAAave,IACT,OAAOue,GAAave,IAAY1mK,KAAK0mK,SACxC,EAELwmT,GAAgBnqd,UAAhB,4BAA6Gmqd,IA1Mdlqd,MA0M+C2jK,OAA9I,EACAumT,GAAgBjqd,WA3M+ED,MA2M/F,OAAiHkqd,GAAjHhqd,QAAiHgqd,GAAjH,YAsBA,MAAME,GAIFttd,YAAY6xC,IACR3xC,KAAK2xC,YAAcA,EACtB,CAUD/kB,UAAU1kB,GAAOinC,GAAS,GAAIu3H,IAE1B,OADAx+J,GAAQlI,KAAKo4K,UAAUlwK,MAEZlI,KAAK2xC,YAAYkzI,WAAW38K,GAAOinC,GAAQu3H,GAGzD,CACD0R,UAAUlwK,IACN,OAAIA,IAA0B,iBAAVA,GAChBA,GAAQlI,KAAK2xC,YAAYN,UAAUnpC,IAE9BA,IAzCEA,MAAWioB,MAAMjoB,GAAQ6pB,WAAW7pB,KAyC7Bmld,CAAUnld,MACxBA,GAAQ,IAAI5F,KAAKyvB,WAAW7pB,MAEzBA,EACV,EAELkld,GAASrqd,UAAT,4BAAsGqqd,IAlQPpqd,MAkQiCuuC,GAAhI,MACA67a,GAAS92C,WAnQsFtza,MAmQ/F,uBAAoGoqd,GAApG72C,UAqBA,MAAM+2C,GAIFxtd,YAAY6xC,IACR3xC,KAAK2xC,YAAcA,EACtB,CAWD/kB,UAAU1kB,GAAOinC,GAAQu3H,IAIrB,MAHqB,iBAAVx+J,KACPA,GAAQlI,KAAK2xC,YAAYspM,YAAY/yO,KAE3B,MAAVA,GACOlI,KAAK2xC,YAAY68V,aAAatmY,GAAOinC,GAAQu3H,IAEjDx+J,EACV,EAELold,GAAWvqd,UAAX,4BAAwGuqd,IAnTTtqd,MAmTqCuuC,GAApI,MACA+7a,GAAWh3C,WApToFtza,MAoT/F,yBAAsGsqd,GAAtG/2C,UAgBA,MAAMnyN,IAENA,GAAWrhN,UAAX,4BAAwGqhN,GAAxG,EACAA,GAAW39M,UAvUoFzD,MAuU/F,MAAyGohN,KAGzGA,GAAW19M,UA1UoF1D,MA0U/F,uBIleAomS,EADcmkL,YACN,CACJ9ld,KAAM,KACNy5W,SAAU,CACNnsC,SAAU,MAEdqtD,UAAW,KACXC,QAAS,CACLz9L,QAAS,CACL09L,QAAS,IACTx1V,MAAO,OACP2yI,KAAM,IACN8iN,YAAa,IACbC,SAAU,IACVC,UAAW,IACXC,YAAa,IACbC,uBAAwB,OACxBC,SAAU,SACVC,SAAU,SACVC,IAAK,iDACLC,cAAe,KAEnBT,QAAS,CACLrsQ,SAAU,CACN,KAEJ9oF,UAAW,CACP,IAGR81V,WAAY,CACRhtQ,SAAU,CACN,OAEJ9oF,UAAW,IAEfs6F,QAAS,CACLxR,SAAU,CACN,UAEJ9oF,UAAW,CACP,IAGR+1V,SAAU,CACNjtQ,SAAU,CACN,UAEJ9oF,UAAW,CACP,GAEJ,wBAAyB,MACzB,wBAAyB,MACzB,yBAA0B,MAC1B,0BAA2B,OAE/Bs2V,WAAY,CACRxtQ,SAAU,CACN,UAEJ9oF,UAAW,CACP,IAGRg2V,WAAY,CACRqqF,IAAK,CACDnqF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,OAEZmpU,IAAK,CACDpqF,YAAa,0DACb,wBAAyB,0DACzB,wBAAyB,gEACzB,yBAA0B,sEAC1B,0BAA2B,gEAC3B/+O,OAAQ,OAEZopU,IAAK,CACDrqF,YAAa,wDACb/+O,OAAQ,OAEZqpU,IAAK,CACDtqF,YAAa,uCACb,wBAAyB,uCACzB,wBAAyB,uCACzB,yBAA0B,uCAC1B,0BAA2B,uCAC3B/+O,OAAQ,OAEZspU,IAAK,CACDvqF,YAAa,MACb/+O,OAAQ,OAEZupU,IAAK,CACDxqF,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,kFACzB,yBAA0B,wFAC1B,0BAA2B,wFAC3B/+O,OAAQ,OAEZwpU,IAAK,CACDzqF,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,OAEZypU,IAAK,CACD1qF,YAAa,yLACb,wBAAyB,yLACzB,wBAAyB,+LACzB,yBAA0B,qMAC1B,0BAA2B,2MAC3B/+O,OAAQ,OAEZ0pU,IAAK,CACD3qF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,8FAC1B,0BAA2B,oGAC3B/+O,OAAQ,MACR,oBAAqB,MAEzB2pU,IAAK,CACD5qF,YAAa,qHACb,wBAAyB,+GACzB,wBAAyB,qHACzB,yBAA0B,+GAC1B,0BAA2B,+GAC3B/+O,OAAQ,OAEZ4pU,IAAK,CACD7qF,YAAa,oJACb/+O,OAAQ,OAEZ6pU,IAAK,CACD9qF,YAAa,sKACb,wBAAyB,gKACzB,wBAAyB,sKACzB,yBAA0B,gKAC1B,0BAA2B,gKAC3B/+O,OAAQ,OAEZ8pU,IAAK,CACD/qF,YAAa,sHACb/+O,OAAQ,OAEZ+pU,IAAK,CACDhrF,YAAa,MACb/+O,OAAQ,OAEZgqU,IAAK,CACDjrF,YAAa,MACb/+O,OAAQ,OAEZiqU,IAAK,CACDlrF,YAAa,qHACb/+O,OAAQ,OAEZkqU,IAAK,CACDnrF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,oGAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBmqU,IAAK,CACDprF,YAAa,gHACb/+O,OAAQ,OAEZoqU,IAAK,CACDrrF,YAAa,sHACb,wBAAyB,sHACzB,wBAAyB,4HACzB,yBAA0B,kIAC1B,0BAA2B,kIAC3B/+O,OAAQ,KACR,oBAAqB,KAEzBqqU,IAAK,CACDtrF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,0GACzB,yBAA0B,gHAC1B,0BAA2B,gHAC3B/+O,OAAQ,OAEZsqU,IAAK,CACDvrF,YAAa,iKACb/+O,OAAQ,OAEZuqU,IAAK,CACDxrF,YAAa,4HACb,wBAAyB,4HACzB,wBAAyB,kIACzB,yBAA0B,wIAC1B,0BAA2B,wIAC3B/+O,OAAQ,OAEZwqU,IAAK,CACDzrF,YAAa,gJACb/+O,OAAQ,OAEZyqU,IAAK,CACD1rF,YAAa,qOACb,wBAAyB,qOACzB,wBAAyB,qOACzB,yBAA0B,qOAC1B,0BAA2B,qOAC3B/+O,OAAQ,MACR,oBAAqB,MAEzB0qU,IAAK,CACD3rF,YAAa,MACb/+O,OAAQ,OAEZ2qU,IAAK,CACD5rF,YAAa,gHACb,wBAAyB,gHACzB,wBAAyB,sHACzB,yBAA0B,4HAC1B,0BAA2B,4HAC3B/+O,OAAQ,MACR,oBAAqB,KAEzB4qU,IAAK,CACD7rF,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,0GACzB,yBAA0B,oGAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,UAEzB6qU,IAAK,CACD9rF,YAAa,2LACb/+O,OAAQ,OAEZ8qU,IAAK,CACD/rF,YAAa,oGACb/+O,OAAQ,OAEZ+qU,IAAK,CACDhsF,YAAa,mKACb/+O,OAAQ,OAEZgrU,IAAK,CACDjsF,YAAa,qBACb/+O,OAAQ,OAEZirU,IAAK,CACDlsF,YAAa,MACb/+O,OAAQ,OAEZ8+O,IAAK,CACDC,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,OAEZkrU,IAAK,CACDnsF,YAAa,MACb/+O,OAAQ,OAEZmrU,IAAK,CACDpsF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,0GACzB,yBAA0B,gHAC1B,0BAA2B,gHAC3B/+O,OAAQ,OAEZorU,IAAK,CACDrsF,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,gHACzB,yBAA0B,sHAC1B,0BAA2B,sHAC3B/+O,OAAQ,OAEZqrU,IAAK,CACDtsF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,0GACzB,yBAA0B,gHAC1B,0BAA2B,gHAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBsrU,IAAK,CACDvsF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,0GACzB,yBAA0B,gHAC1B,0BAA2B,gHAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBurU,IAAK,CACDxsF,YAAa,4HACb,wBAAyB,4HACzB,wBAAyB,4HACzB,yBAA0B,4HAC1B,0BAA2B,kIAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBwrU,IAAK,CACDzsF,YAAa,MACb/+O,OAAQ,OAEZyrU,IAAK,CACD1sF,YAAa,8FACb/+O,OAAQ,OAEZ0rU,IAAK,CACD3sF,YAAa,oGACb/+O,OAAQ,OAEZ2rU,IAAK,CACD5sF,YAAa,sKACb/+O,OAAQ,OAEZ4rU,IAAK,CACD7sF,YAAa,gHACb/+O,OAAQ,OAEZ6rU,IAAK,CACD9sF,YAAa,uIACb/+O,OAAQ,OAEZ8rU,IAAK,CACD/sF,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,oGACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,KACR,oBAAqB,MAEzB+rU,IAAK,CACDhtF,YAAa,+IACb/+O,OAAQ,OAEZgsU,IAAK,CACDjtF,YAAa,sHACb/+O,OAAQ,OAEZisU,IAAK,CACDltF,YAAa,MACb/+O,OAAQ,OAEZksU,IAAK,CACDntF,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,oGACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBmsU,IAAK,CACDptF,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,gHACzB,yBAA0B,sHAC1B,0BAA2B,sHAC3B/+O,OAAQ,OAEZosU,IAAK,CACDrtF,YAAa,qBACb/+O,OAAQ,OAEZqsU,IAAK,CACDttF,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,8FACzB,yBAA0B,wFAC1B,0BAA2B,8FAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBssU,IAAK,CACDvtF,YAAa,qHACb/+O,OAAQ,OAEZusU,IAAK,CACDxtF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,WAEzBwsU,IAAK,CACDztF,YAAa,qHACb,wBAAyB,qHACzB,wBAAyB,qHACzB,yBAA0B,2HAC1B,0BAA2B,2HAC3B/+O,OAAQ,OAEZysU,IAAK,CACD1tF,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,oGACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,KAEzB0sU,IAAK,CACD3tF,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,oGACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,KAEzB2sU,IAAK,CACD5tF,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,gHACzB,yBAA0B,sHAC1B,0BAA2B,sHAC3B/+O,OAAQ,OAEZ4sU,IAAK,CACD7tF,YAAa,+BACb/+O,OAAQ,OAEZ6sU,IAAK,CACD9tF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,0GACzB,yBAA0B,gHAC1B,0BAA2B,gHAC3B/+O,OAAQ,OAEZ8sU,IAAK,CACD/tF,YAAa,qCACb/+O,OAAQ,OAEZ+sU,IAAK,CACDhuF,YAAa,MACb/+O,OAAQ,OAEZgtU,IAAK,CACDjuF,YAAa,8KACb/+O,OAAQ,OAEZitU,IAAK,CACDluF,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,kFACzB,yBAA0B,kFAC1B,0BAA2B,wFAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBktU,IAAK,CACDnuF,YAAa,mIACb,wBAAyB,mIACzB,wBAAyB,mIACzB,yBAA0B,yIAC1B,0BAA2B,+IAC3B/+O,OAAQ,OAEZmtU,IAAK,CACDpuF,YAAa,MACb/+O,OAAQ,OAEZotU,IAAK,CACDruF,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,kFACzB,yBAA0B,wFAC1B,0BAA2B,wFAC3B/+O,OAAQ,SACR,oBAAqB,QAEzBqtU,IAAK,CACDtuF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,oGAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBstU,IAAK,CACDvuF,YAAa,sMACb/+O,OAAQ,OAEZutU,IAAK,CACDxuF,YAAa,sHACb,wBAAyB,sHACzB,wBAAyB,4HACzB,yBAA0B,kIAC1B,0BAA2B,kIAC3B/+O,OAAQ,MACR,oBAAqB,UAEzBwtU,IAAK,CACDzuF,YAAa,uHACb/+O,OAAQ,OAEZytU,IAAK,CACD1uF,YAAa,2JACb/+O,OAAQ,OAEZ0tU,IAAK,CACD3uF,YAAa,uKACb,wBAAyB,uKACzB,wBAAyB,uKACzB,yBAA0B,uKAC1B,0BAA2B,mLAC3B/+O,OAAQ,MACR,oBAAqB,KAEzB2tU,IAAK,CACD5uF,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,kFACzB,yBAA0B,kFAC1B,0BAA2B,wFAC3B/+O,OAAQ,MACR,oBAAqB,KAEzB4tU,IAAK,CACD7uF,YAAa,+FACb,wBAAyB,+FACzB,wBAAyB,+FACzB,yBAA0B,+FAC1B,0BAA2B,+FAC3B/+O,OAAQ,OAEZ6tU,IAAK,CACD9uF,YAAa,4EACb/+O,OAAQ,OAEZ8tU,IAAK,CACD/uF,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,4EACzB,yBAA0B,sEAC1B,0BAA2B,4EAC3B/+O,OAAQ,MACR,oBAAqB,WAEzB+tU,IAAK,CACDhvF,YAAa,8IACb/+O,OAAQ,OAEZguU,IAAK,CACDjvF,YAAa,kFACb/+O,OAAQ,OAEZiuU,IAAK,CACDlvF,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,kFACzB,yBAA0B,wFAC1B,0BAA2B,kFAC3B/+O,OAAQ,OAEZkuU,IAAK,CACDnvF,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,4EACzB,yBAA0B,sEAC1B,0BAA2B,4EAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBmuU,IAAK,CACDpvF,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,0GACzB,yBAA0B,0GAC1B,0BAA2B,gHAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBouU,IAAK,CACDrvF,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,8FACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,OAEZquU,IAAK,CACDtvF,YAAa,oGACb/+O,OAAQ,OAEZsuU,IAAK,CACDvvF,YAAa,kNACb/+O,OAAQ,OAEZuuU,IAAK,CACDxvF,YAAa,wFACb/+O,OAAQ,OAEZwuU,IAAK,CACDzvF,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,8FACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,MACR,oBAAqB,SAEzByuU,IAAK,CACD1vF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,8FAC1B,0BAA2B,oGAC3B/+O,OAAQ,OAEZ0uU,IAAK,CACD3vF,YAAa,uGACb/+O,OAAQ,OAEZ2uU,IAAK,CACD5vF,YAAa,qLACb/+O,OAAQ,OAEZ4uU,IAAK,CACD7vF,YAAa,8FACb/+O,OAAQ,MACR,oBAAqB,UAEzB6uU,IAAK,CACD9vF,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,kFACzB,yBAA0B,wFAC1B,0BAA2B,wFAC3B/+O,OAAQ,OAEZg/O,IAAK,CACDD,YAAa,2BACb,wBAAyB,2BACzB,wBAAyB,2BACzB,yBAA0B,2BAC1B,0BAA2B,2BAC3B/+O,OAAQ,SACR,oBAAqB,UAEzB8uU,IAAK,CACD/vF,YAAa,4EACb/+O,OAAQ,OAEZ+uU,IAAK,CACDhwF,YAAa,sEACb,wBAAyB,sEACzB,wBAAyB,4EACzB,yBAA0B,kFAC1B,0BAA2B,4EAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBgvU,IAAK,CACDjwF,YAAa,qJACb,wBAAyB,qJACzB,wBAAyB,2JACzB,yBAA0B,iKAC1B,0BAA2B,2JAC3B/+O,OAAQ,MACR,oBAAqB,QAEzBivU,IAAK,CACDlwF,YAAa,oGACb/+O,OAAQ,OAEZkvU,IAAK,CACDnwF,YAAa,qJACb,wBAAyB,qJACzB,wBAAyB,2JACzB,yBAA0B,iKAC1B,0BAA2B,iKAC3B/+O,OAAQ,OACR,oBAAqB,QAEzBmvU,IAAK,CACDpwF,YAAa,8FACb/+O,OAAQ,OAEZovU,IAAK,CACDrwF,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,wFACzB,yBAA0B,wFAC1B,0BAA2B,8FAC3B/+O,OAAQ,MACR,oBAAqB,SACrB,qBAAsB,UAE1BqvU,IAAK,CACDtwF,YAAa,uFACb/+O,OAAQ,OAEZsvU,IAAK,CACDvwF,YAAa,sEACb,wBAAyB,sEACzB,wBAAyB,sEACzB,yBAA0B,sEAC1B,0BAA2B,4EAC3B/+O,OAAQ,OAEZuvU,IAAK,CACDxwF,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,gHACzB,yBAA0B,sHAC1B,0BAA2B,sHAC3B/+O,OAAQ,MACR,oBAAqB,QAEzBwvU,IAAK,CACDzwF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,oGAC1B,0BAA2B,0GAC3B/+O,OAAQ,OAEZyvU,IAAK,CACD1wF,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,oGACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,MAEzB0vU,IAAK,CACD3wF,YAAa,wFACb/+O,OAAQ,OAEZ2vU,IAAK,CACD5wF,YAAa,iKACb/+O,OAAQ,OAEZ4vU,IAAK,CACD7wF,YAAa,8FACb/+O,OAAQ,OAEZ6vU,IAAK,CACD9wF,YAAa,4HACb,wBAAyB,4HACzB,wBAAyB,4HACzB,yBAA0B,kIAC1B,0BAA2B,kIAC3B/+O,OAAQ,MACR,oBAAqB,KAEzB8vU,IAAK,CACD/wF,YAAa,2JACb/+O,OAAQ,OAEZ+vU,IAAK,CACDhxF,YAAa,+FACb/+O,OAAQ,OAEZgwU,IAAK,CACDjxF,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,oGACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBiwU,IAAK,CACDlxF,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,gHACzB,yBAA0B,sHAC1B,0BAA2B,sHAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBkwU,IAAK,CACDnxF,YAAa,sHACb,wBAAyB,sHACzB,wBAAyB,sHACzB,yBAA0B,gHAC1B,0BAA2B,sHAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBmwU,IAAK,CACDpxF,YAAa,8FACb/+O,OAAQ,OAEZowU,IAAK,CACDrxF,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,wFACzB,yBAA0B,kFAC1B,0BAA2B,wFAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBqwU,IAAK,CACDtxF,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,8FACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,OAEZswU,IAAK,CACDvxF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,0GACzB,yBAA0B,gHAC1B,0BAA2B,gHAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBuwU,IAAK,CACDxxF,YAAa,gHACb,wBAAyB,gHACzB,wBAAyB,gHACzB,yBAA0B,gHAC1B,0BAA2B,gHAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBwwU,IAAK,CACDzxF,YAAa,wFACb/+O,OAAQ,OAEZywU,IAAK,CACD1xF,YAAa,8FACb/+O,OAAQ,OAEZ0wU,IAAK,CACD3xF,YAAa,MACb/+O,OAAQ,OAEZ2wU,IAAK,CACD5xF,YAAa,yIACb,wBAAyB,yIACzB,wBAAyB,yIACzB,yBAA0B,+IAC1B,0BAA2B,qJAC3B/+O,OAAQ,SACR,oBAAqB,UAEzB4wU,IAAK,CACD7xF,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,wFACzB,yBAA0B,wFAC1B,0BAA2B,wFAC3B/+O,OAAQ,SACR,oBAAqB,UAEzB6wU,IAAK,CACD9xF,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,OAEZ8wU,IAAK,CACD/xF,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,kFACzB,yBAA0B,wFAC1B,0BAA2B,wFAC3B/+O,OAAQ,OAEZ+wU,IAAK,CACDhyF,YAAa,MACb/+O,OAAQ,OAEZgxU,IAAK,CACDjyF,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,8FACzB,yBAA0B,wFAC1B,0BAA2B,8FAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBixU,IAAK,CACDlyF,YAAa,8FACb/+O,OAAQ,OAEZkxU,IAAK,CACDnyF,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,8FACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBmxU,IAAK,CACDpyF,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,oGACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,OAEZoxU,IAAK,CACDryF,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,4EACzB,yBAA0B,sEAC1B,0BAA2B,4EAC3B/+O,OAAQ,OACR,oBAAqB,QAEzBqxU,IAAK,CACDtyF,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,0GACzB,yBAA0B,gHAC1B,0BAA2B,gHAC3B/+O,OAAQ,OAEZsxU,IAAK,CACDvyF,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,OAEZuxU,IAAK,CACDxyF,YAAa,gHACb,wBAAyB,gHACzB,wBAAyB,gHACzB,yBAA0B,sHAC1B,0BAA2B,sHAC3B/+O,OAAQ,MACR,oBAAqB,UAEzBwxU,IAAK,CACDzyF,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,8FACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,MACR,oBAAqB,MAEzByxU,IAAK,CACD1yF,YAAa,sHACb,wBAAyB,sHACzB,wBAAyB,sHACzB,yBAA0B,gHAC1B,0BAA2B,sHAC3B/+O,OAAQ,MACR,oBAAqB,UAEzB0xU,IAAK,CACD3yF,YAAa,MACb/+O,OAAQ,OAEZ2xU,IAAK,CACD5yF,YAAa,MACb/+O,OAAQ,OAEZ4xU,IAAK,CACD7yF,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,0GACzB,yBAA0B,oGAC1B,0BAA2B,0GAC3B/+O,OAAQ,SACR,oBAAqB,UAEzB6xU,IAAK,CACD9yF,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,oGACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,OAEZ8xU,IAAK,CACD/yF,YAAa,6HACb,wBAAyB,6HACzB,wBAAyB,mIACzB,yBAA0B,yIAC1B,0BAA2B,mIAC3B/+O,OAAQ,MACR,oBAAqB,KAEzB+xU,IAAK,CACDhzF,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,wFACzB,yBAA0B,wFAC1B,0BAA2B,8FAC3B/+O,OAAQ,MACR,oBAAqB,UAEzBgyU,IAAK,CACDjzF,YAAa,sEACb,wBAAyB,sEACzB,wBAAyB,4EACzB,yBAA0B,kFAC1B,0BAA2B,kFAC3B/+O,OAAQ,MACR,oBAAqB,UAEzBiyU,IAAK,CACDlzF,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,MACR,oBAAqB,SAEzBkyU,IAAK,CACDnzF,YAAa,iHACb,wBAAyB,iHACzB,wBAAyB,iHACzB,yBAA0B,iHAC1B,0BAA2B,iHAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBmyU,IAAK,CACDpzF,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,gHACzB,yBAA0B,sHAC1B,0BAA2B,sHAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBoyU,IAAK,CACDrzF,YAAa,2BACb/+O,OAAQ,OAEZqyU,IAAK,CACDtzF,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,kFACzB,yBAA0B,wFAC1B,0BAA2B,wFAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBsyU,IAAK,CACDvzF,YAAa,wFACb/+O,OAAQ,OAEZuyU,IAAK,CACDxzF,YAAa,yLACb/+O,OAAQ,OAEZwyU,IAAK,CACDzzF,YAAa,sHACb/+O,OAAQ,OAEZyyU,IAAK,CACD1zF,YAAa,iKACb/+O,OAAQ,OAEZ0yU,IAAK,CACD3zF,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,MACR,oBAAqB,MAEzB2yU,IAAK,CACD5zF,YAAa,8FACb/+O,OAAQ,OAEZ4yU,IAAK,CACD7zF,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,8FACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,OAEZ6yU,IAAK,CACD9zF,YAAa,gHACb,wBAAyB,gHACzB,wBAAyB,sHACzB,yBAA0B,4HAC1B,0BAA2B,4HAC3B/+O,OAAQ,OAEZ8yU,IAAK,CACD/zF,YAAa,0GACb/+O,OAAQ,OAEZ+yU,IAAK,CACDh0F,YAAa,MACb/+O,OAAQ,OAEZgzU,IAAK,CACDj0F,YAAa,MACb/+O,OAAQ,OAEZizU,IAAK,CACDl0F,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,kFACzB,yBAA0B,wFAC1B,0BAA2B,wFAC3B/+O,OAAQ,OAEZkzU,IAAK,CACDn0F,YAAa,sHACb,wBAAyB,sHACzB,wBAAyB,sHACzB,yBAA0B,sHAC1B,0BAA2B,4HAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBmzU,IAAK,CACDp0F,YAAa,gHACb/+O,OAAQ,OAEZozU,IAAK,CACDr0F,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,0GACzB,yBAA0B,gHAC1B,0BAA2B,gHAC3B/+O,OAAQ,OAEZqzU,IAAK,CACDt0F,YAAa,MACb/+O,OAAQ,OAEZszU,IAAK,CACDv0F,YAAa,wFACb/+O,OAAQ,OAEZuzU,IAAK,CACDx0F,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,oGACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBwzU,IAAK,CACDz0F,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,gHACzB,yBAA0B,sHAC1B,0BAA2B,sHAC3B/+O,OAAQ,MACR,oBAAqB,UAEzByzU,IAAK,CACD10F,YAAa,sEACb,wBAAyB,sEACzB,wBAAyB,sEACzB,yBAA0B,gEAC1B,0BAA2B,sEAC3B/+O,OAAQ,OAEZ0zU,IAAK,CACD30F,YAAa,qHACb,wBAAyB,qHACzB,wBAAyB,qHACzB,yBAA0B,qHAC1B,0BAA2B,qHAC3B/+O,OAAQ,OAEZ2zU,IAAK,CACD50F,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,OAEZ4zU,IAAK,CACD70F,YAAa,8FACb/+O,OAAQ,OAEZ6zU,IAAK,CACD90F,YAAa,8FACb/+O,OAAQ,OAEZ8zU,IAAK,CACD/0F,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,0GACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,MAEzB+zU,IAAK,CACDh1F,YAAa,MACb/+O,OAAQ,OAEZg0U,IAAK,CACDj1F,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,OAEZi0U,IAAK,CACDl1F,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,8FAC1B,0BAA2B,oGAC3B/+O,OAAQ,OAEZk0U,IAAK,CACDn1F,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,oGAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBm0U,IAAK,CACDp1F,YAAa,kLACb/+O,OAAQ,OAEZo0U,IAAK,CACDr1F,YAAa,+LACb/+O,OAAQ,OAEZq0U,IAAK,CACDt1F,YAAa,sHACb,wBAAyB,sHACzB,wBAAyB,4HACzB,yBAA0B,kIAC1B,0BAA2B,kIAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBs0U,IAAK,CACDv1F,YAAa,gHACb/+O,OAAQ,OAEZu0U,IAAK,CACDx1F,YAAa,2JACb/+O,OAAQ,OAEZw0U,IAAK,CACDz1F,YAAa,sHACb,wBAAyB,sHACzB,wBAAyB,4HACzB,yBAA0B,kIAC1B,0BAA2B,kIAC3B/+O,OAAQ,OAEZy0U,IAAK,CACD11F,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,wFAC3B/+O,OAAQ,MACR,oBAAqB,KAEzB00U,IAAK,CACD31F,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,8FAC1B,0BAA2B,oGAC3B/+O,OAAQ,MACR,oBAAqB,UAEzB20U,IAAK,CACD51F,YAAa,mJACb/+O,OAAQ,OAEZ40U,IAAK,CACD71F,YAAa,kIACb,wBAAyB,kIACzB,wBAAyB,kIACzB,yBAA0B,4HAC1B,0BAA2B,kIAC3B/+O,OAAQ,MACR,oBAAqB,MAEzB60U,IAAK,CACD91F,YAAa,4HACb/+O,OAAQ,OAEZ80U,IAAK,CACD/1F,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,8FACzB,yBAA0B,wFAC1B,0BAA2B,8FAC3B/+O,OAAQ,MACR,oBAAqB,MAEzB+0U,IAAK,CACDh2F,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,8FACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBg1U,IAAK,CACDj2F,YAAa,4HACb,wBAAyB,4HACzB,wBAAyB,kIACzB,yBAA0B,wIAC1B,0BAA2B,wIAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBi1U,IAAK,CACDl2F,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,kFACzB,yBAA0B,wFAC1B,0BAA2B,wFAC3B/+O,OAAQ,OAEZk1U,IAAK,CACDn2F,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,oGAC1B,0BAA2B,0GAC3B/+O,OAAQ,OAEZm1U,IAAK,CACDp2F,YAAa,wFACb/+O,OAAQ,OAEZo1U,IAAK,CACDr2F,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,OAEZq1U,IAAK,CACDt2F,YAAa,yGACb,wBAAyB,yGACzB,wBAAyB,yGACzB,yBAA0B,+GAC1B,0BAA2B,+GAC3B/+O,OAAQ,OAEZs1U,IAAK,CACDv2F,YAAa,qIACb,wBAAyB,qIACzB,wBAAyB,qIACzB,yBAA0B,+HAC1B,0BAA2B,qIAC3B/+O,OAAQ,OAEZu1U,IAAK,CACDx2F,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,oGAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,UAEzBw1U,IAAK,CACDz2F,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,0GACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBy1U,IAAK,CACD12F,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,wFACzB,yBAA0B,wFAC1B,0BAA2B,oGAC3B/+O,OAAQ,MACR,oBAAqB,WAEzB01U,IAAK,CACD32F,YAAa,uCACb/+O,OAAQ,OAEZ21U,IAAK,CACD52F,YAAa,sHACb/+O,OAAQ,OAEZ41U,IAAK,CACD72F,YAAa,sHACb,wBAAyB,sHACzB,wBAAyB,sHACzB,yBAA0B,sHAC1B,0BAA2B,4HAC3B/+O,OAAQ,MACR,oBAAqB,UAEzB61U,IAAK,CACD92F,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,OAEZ81U,IAAK,CACD/2F,YAAa,0GACb/+O,OAAQ,OAEZ+1U,IAAK,CACDh3F,YAAa,iHACb/+O,OAAQ,OAEZg2U,IAAK,CACDj3F,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,4EACzB,yBAA0B,kFAC1B,0BAA2B,kFAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBi2U,IAAK,CACDl3F,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,OAEZk2U,IAAK,CACDn3F,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,8FACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,SACR,oBAAqB,UAEzBm2U,IAAK,CACDp3F,YAAa,+GACb/+O,OAAQ,UACR,oBAAqB,WAEzBo2U,IAAK,CACDr3F,YAAa,sEACb,wBAAyB,sEACzB,wBAAyB,4EACzB,yBAA0B,kFAC1B,0BAA2B,4EAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBq2U,IAAK,CACDt3F,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,8FACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,OAEZs2U,IAAK,CACDv3F,YAAa,2JACb,wBAAyB,2JACzB,wBAAyB,iKACzB,yBAA0B,uKAC1B,0BAA2B,iKAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBu2U,IAAK,CACDx3F,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,OAEZw2U,IAAK,CACDz3F,YAAa,wFACb/+O,OAAQ,OAEZy2U,IAAK,CACD13F,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,OAEZ02U,IAAK,CACD33F,YAAa,uHACb/+O,OAAQ,OAEZ22U,IAAK,CACD53F,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,kFACzB,yBAA0B,4EAC1B,0BAA2B,kFAC3B/+O,OAAQ,MACR,oBAAqB,MAEzB42U,IAAK,CACD73F,YAAa,gHACb,wBAAyB,gHACzB,wBAAyB,sHACzB,yBAA0B,4HAC1B,0BAA2B,4HAC3B/+O,OAAQ,MACR,oBAAqB,KAEzB62U,IAAK,CACD93F,YAAa,0IACb,wBAAyB,0IACzB,wBAAyB,gJACzB,yBAA0B,sJAC1B,0BAA2B,gJAC3B/+O,OAAQ,MACR,oBAAqB,QAEzB82U,IAAK,CACD/3F,YAAa,8FACb/+O,OAAQ,OAEZ+2U,IAAK,CACDh4F,YAAa,wFACb/+O,OAAQ,OAEZg3U,IAAK,CACDj4F,YAAa,iCACb,wBAAyB,iCACzB,wBAAyB,iCACzB,yBAA0B,iCAC1B,0BAA2B,iCAC3B/+O,OAAQ,OAEZi3U,IAAK,CACDl4F,YAAa,gHACb,wBAAyB,gHACzB,wBAAyB,sHACzB,yBAA0B,4HAC1B,0BAA2B,4HAC3B/+O,OAAQ,OAEZk3U,IAAK,CACDn4F,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,gHACzB,yBAA0B,sHAC1B,0BAA2B,sHAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBm3U,IAAK,CACDp4F,YAAa,gHACb/+O,OAAQ,OAEZo3U,IAAK,CACDr4F,YAAa,0GACb,wBAAyB,0GACzB,wBAAyB,gHACzB,yBAA0B,sHAC1B,0BAA2B,sHAC3B/+O,OAAQ,MACR,oBAAqB,QAEzBq3U,IAAK,CACDt4F,YAAa,sJACb,wBAAyB,sJACzB,wBAAyB,sJACzB,yBAA0B,gJAC1B,0BAA2B,sJAC3B/+O,OAAQ,OAEZs3U,IAAK,CACDv4F,YAAa,qIACb,wBAAyB,qIACzB,wBAAyB,qIACzB,yBAA0B,+HAC1B,0BAA2B,qIAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBu3U,IAAK,CACDx4F,YAAa,0DACb/+O,OAAQ,OAEZw3U,IAAK,CACDz4F,YAAa,gHACb/+O,OAAQ,OAEZy3U,IAAK,CACD14F,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,MACR,oBAAqB,QAEzB03U,IAAK,CACD34F,YAAa,wIACb,wBAAyB,wIACzB,wBAAyB,wIACzB,yBAA0B,wIAC1B,0BAA2B,8IAC3B/+O,OAAQ,OAEZ23U,IAAK,CACD54F,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,8FACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,SACR,oBAAqB,UAEzB43U,IAAK,CACD74F,YAAa,8FACb/+O,OAAQ,OAEZ63U,IAAK,CACD94F,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,oGAC1B,0BAA2B,0GAC3B/+O,OAAQ,OAEZ83U,IAAK,CACD/4F,YAAa,oGACb/+O,OAAQ,OAEZ+3U,IAAK,CACDh5F,YAAa,mIACb,wBAAyB,mIACzB,wBAAyB,yIACzB,yBAA0B,+IAC1B,0BAA2B,qJAC3B/+O,OAAQ,sBAEZg4U,IAAK,CACDj5F,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,8FACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,OAEZv1H,IAAK,CACDs0W,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,8FAC1B,0BAA2B,oGAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBi4U,IAAK,CACDl5F,YAAa,8FACb/+O,OAAQ,OAEZk4U,IAAK,CACDn5F,YAAa,6FACb,wBAAyB,6FACzB,wBAAyB,6FACzB,yBAA0B,uFAC1B,0BAA2B,6FAC3B/+O,OAAQ,OAEZm4U,IAAK,CACDp5F,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,4EACzB,yBAA0B,sEAC1B,0BAA2B,4EAC3B/+O,OAAQ,MACR,oBAAqB,SACrB,qBAAsB,MAE1Bo4U,IAAK,CACDr5F,YAAa,0IACb,wBAAyB,0IACzB,wBAAyB,gJACzB,yBAA0B,sJAC1B,0BAA2B,gJAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBq4U,IAAK,CACDt5F,YAAa,yIACb,wBAAyB,yIACzB,wBAAyB,+IACzB,yBAA0B,qJAC1B,0BAA2B,2JAC3B/+O,OAAQ,MACR,oBAAqB,OAEzBs4U,IAAK,CACDv5F,YAAa,sHACb,wBAAyB,sHACzB,wBAAyB,4HACzB,yBAA0B,kIAC1B,0BAA2B,kIAC3B/+O,OAAQ,OAEZu4U,IAAK,CACDx5F,YAAa,oGACb,wBAAyB,oGACzB,wBAAyB,oGACzB,yBAA0B,oGAC1B,0BAA2B,oGAC3B/+O,OAAQ,SACR,oBAAqB,SACrB,qBAAsB,uBAE1Bw4U,IAAK,CACDz5F,YAAa,8HACb/+O,OAAQ,OAEZy4U,IAAK,CACD15F,YAAa,qJACb/+O,OAAQ,OAEZ04U,IAAK,CACD35F,YAAa,gHACb,wBAAyB,gHACzB,wBAAyB,sHACzB,yBAA0B,4HAC1B,0BAA2B,4HAC3B/+O,OAAQ,OAEZi/O,IAAK,CACDF,YAAa,0DACb,wBAAyB,0DACzB,wBAAyB,gEACzB,yBAA0B,sEAC1B,0BAA2B,gEAC3B/+O,OAAQ,IACR,oBAAqB,KAEzB24U,IAAK,CACD55F,YAAa,0IACb/+O,OAAQ,OAEZ44U,IAAK,CACD75F,YAAa,8HACb/+O,OAAQ,OAEZ64U,IAAK,CACD95F,YAAa,sLACb/+O,OAAQ,OAEZ84U,IAAK,CACD/5F,YAAa,oJACb/+O,OAAQ,OAEZ+4U,IAAK,CACDh6F,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,8FACzB,yBAA0B,8FAC1B,0BAA2B,oGAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBg5U,IAAK,CACDj6F,YAAa,MACb/+O,OAAQ,OAEZi5U,IAAK,CACDl6F,YAAa,4EACb,wBAAyB,4EACzB,wBAAyB,kFACzB,yBAA0B,wFAC1B,0BAA2B,wFAC3B/+O,OAAQ,OAEZk5U,IAAK,CACDn6F,YAAa,6IACb/+O,OAAQ,OAEZm5U,IAAK,CACDp6F,YAAa,6IACb,wBAAyB,6IACzB,wBAAyB,mJACzB,yBAA0B,yJAC1B,0BAA2B,yJAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBo5U,IAAK,CACDr6F,YAAa,4HACb,wBAAyB,4HACzB,wBAAyB,kIACzB,yBAA0B,wIAC1B,0BAA2B,wIAC3B/+O,OAAQ,OAEZq5U,IAAK,CACDt6F,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,oGACzB,yBAA0B,0GAC1B,0BAA2B,0GAC3B/+O,OAAQ,SACR,oBAAqB,UAEzBs5U,IAAK,CACDv6F,YAAa,MACb/+O,OAAQ,OAEZu5U,IAAK,CACDx6F,YAAa,sEACb,wBAAyB,sEACzB,wBAAyB,sEACzB,yBAA0B,sEAC1B,0BAA2B,sEAC3B/+O,OAAQ,OAEZw5U,IAAK,CACDz6F,YAAa,wFACb,wBAAyB,wFACzB,wBAAyB,wFACzB,yBAA0B,kFAC1B,0BAA2B,wFAC3B/+O,OAAQ,OAEZy5U,IAAK,CACD16F,YAAa,yDACb,wBAAyB,6EACzB,wBAAyB,mFACzB,yBAA0B,yFAC1B,0BAA2B,mFAC3B/+O,OAAQ,QAEZ05U,IAAK,CACD36F,YAAa,6CACb/+O,OAAQ,OAEZ25U,IAAK,CACD56F,YAAa,uCACb/+O,OAAQ,OAEZ45U,IAAK,CACD76F,YAAa,uKACb/+O,OAAQ,OAEZ65U,IAAK,CACD96F,YAAa,iKACb/+O,OAAQ,OAEZ85U,IAAK,CACD/6F,YAAa,uSACb/+O,OAAQ,OAEZ+5U,IAAK,CACDh7F,YAAa,uSACb/+O,OAAQ,OAEZg6U,IAAK,CACDj7F,YAAa,+IACb,wBAAyB,+IACzB,wBAAyB,qJACzB,yBAA0B,2JAC1B,0BAA2B,2JAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBi6U,IAAK,CACDl7F,YAAa,wMACb/+O,OAAQ,OAEZk6U,IAAK,CACDn7F,YAAa,0KACb/+O,OAAQ,OAEZm6U,IAAK,CACDp7F,YAAa,+IACb/+O,OAAQ,OAEZo6U,IAAK,CACDr7F,YAAa,wGACb/+O,OAAQ,OAEZq6U,IAAK,CACDt7F,YAAa,mFACb,wBAAyB,mFACzB,wBAAyB,yFACzB,yBAA0B,+FAC1B,0BAA2B,yFAC3B/+O,OAAQ,OAEZs6U,IAAK,CACDv7F,YAAa,mDACb/+O,OAAQ,OAEZu6U,IAAK,CACDx7F,YAAa,mLACb,wBAAyB,mLACzB,wBAAyB,yLACzB,yBAA0B,+LAC1B,0BAA2B,qMAC3B/+O,OAAQ,QAEZw6U,IAAK,CACDz7F,YAAa,6CACb/+O,OAAQ,OAEZy6U,IAAK,CACD17F,YAAa,wFACb/+O,OAAQ,OAEZ06U,IAAK,CACD37F,YAAa,MACb/+O,OAAQ,OAEZ26U,IAAK,CACD57F,YAAa,uHACb/+O,OAAQ,OAEZ46U,IAAK,CACD77F,YAAa,MACb/+O,OAAQ,OAEZ66U,IAAK,CACD97F,YAAa,0GACb,wBAAyB,qJACzB,wBAAyB,qJACzB,yBAA0B,+IAC1B,0BAA2B,qJAC3B/+O,OAAQ,QAEZ86U,IAAK,CACD/7F,YAAa,wFACb/+O,OAAQ,OAEZ+6U,IAAK,CACDh8F,YAAa,kFACb,wBAAyB,kFACzB,wBAAyB,wFACzB,yBAA0B,8FAC1B,0BAA2B,8FAC3B/+O,OAAQ,OAEZg7U,IAAK,CACDj8F,YAAa,+IACb/+O,OAAQ,OAEZi7U,IAAK,CACDl8F,YAAa,mIACb/+O,OAAQ,OAEZk7U,IAAK,CACDn8F,YAAa,oGACb/+O,OAAQ,OAEZm7U,IAAK,CACDp8F,YAAa,MACb/+O,OAAQ,OAEZo7U,IAAK,CACDr8F,YAAa,qLACb/+O,OAAQ,OAEZq7U,IAAK,CACDt8F,YAAa,sHACb,wBAAyB,sHACzB,wBAAyB,4HACzB,yBAA0B,kIAC1B,0BAA2B,kIAC3B/+O,OAAQ,MACR,oBAAqB,KAEzBs7U,IAAK,CACDv8F,YAAa,iHACb,wBAAyB,+GACzB,wBAAyB,+GACzB,yBAA0B,yGAC1B,0BAA2B,+GAC3B/+O,OAAQ,OAEZu7U,IAAK,CACDx8F,YAAa,8FACb,wBAAyB,8FACzB,wBAAyB,8FACzB,yBAA0B,wFAC1B,0BAA2B,8FAC3B/+O,OAAQ,MACR,oBAAqB,MAEzBw7U,IAAK,CACDz8F,YAAa,0DACb/+O,OAAQ,OAEZy7U,IAAK,CACD18F,YAAa,2BACb/+O,OAAQ,OAEZ07U,IAAK,CACD38F,YAAa,wFACb/+O,OAAQ,OAEZ27U,IAAK,CACD58F,YAAa,+FACb/+O,OAAQ,OAEZ47U,IAAK,CACD78F,YAAa,MACb/+O,OAAQ,QAGhBk/O,eAAgB,OAEpB1hM,SAAU,CACN7rE,SAAU,CACNzrF,EAAG,UACHypF,EAAG,2BACHmxE,EAAG,QACH1wE,EAAG,SACHpsG,EAAG,kBACH8G,EAAG,mBACH+kG,EAAG,oCACH1pF,EAAG,gBACH2pF,EAAG,mBACHr2G,EAAG,QACHk3G,EAAG,WACHjyF,EAAG,gCACH+kR,EAAG,kCAEP67E,gBAAiB,CACbp6X,KAAM,WACNq6X,KAAM,WACNx6X,OAAQ,WACRy6X,MAAO,WACPC,iBAAkB,CACdC,GAAI,MACJC,IAAK,SACLC,KAAM,YACN15V,EAAG,IACH0pF,EAAG,MACHiwQ,KAAM,cACNC,MAAO,iBACPC,GAAI,SACJC,IAAK,WACLC,IAAK,UACLC,KAAM,cACNC,KAAM,aACNC,GAAI,gBACJE,MAAO,UACPC,OAAQ,sBACRC,QAAS,yBACTp6V,EAAG,MACH2pF,EAAG,KACH0wQ,GAAI,SACJC,GAAI,QACJC,IAAK,YACLC,IAAK,WACLC,KAAM,cACNC,KAAM,aACNC,IAAK,WACLC,IAAK,UACL5wQ,EAAG,IACH6wQ,GAAI,QACJC,IAAK,WACL26F,KAAM,QACN16F,IAAK,MACLC,KAAM,QACNC,MAAO,aACPC,MAAO,SACP,kBAAmB,yDACnB,kBAAmB,yDACnB,mBAAoB,yDACpB,oBAAqB,yDACrB7R,GAAI,QACJzrW,EAAG,IACHu9W,GAAI,OACJC,IAAK,UACLC,KAAM,yBACNq6F,IAAK,OACLp6F,KAAM,kBACNC,MAAO,oBACPC,OAAQ,uBACRC,MAAO,mBACPC,KAAM,kBACNC,MAAO,mBACP,eAAgB,gEAChB,eAAgB,gEAChB,gBAAiB,gEACjB,iBAAkB,kEAG1BC,YAAa,CACT98X,KAAM,gBACNq6X,KAAM,aACNx6X,OAAQ,WACRy6X,MAAO,SAEX57U,YAAa,CACT1+C,KAAM,2BACNq6X,KAAM,qBACNx6X,OAAQ,oBACRy6X,MAAO,WAEXpnV,KAAM,CACFvN,OAAQ,CACJo3V,YAAa,CACT,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJz9U,OAAQ,CACJ,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJg7U,MAAO,CACH,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJ0C,KAAM,CACF,qEACA,qEACA,6CACA,iCACA,6CACA,6CACA,+CAGR,cAAe,CACXD,YAAa,CACT,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJz9U,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,UAEJg7U,MAAO,CACH,eACA,eACA,eACA,eACA,eACA,eACA,gBAEJ0C,KAAM,CACF,qEACA,qEACA,6CACA,iCACA,6CACA,6CACA,gDAIZhqV,OAAQ,CACJrN,OAAQ,CACJo3V,YAAa,CACT,sBACA,4BACA,sBACA,sBACA,qBACA,sBACA,sBACA,sBACA,4BACA,sBACA,4BACA,uBAEJz9U,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAEJ09U,KAAM,CACF,uCACA,6CACA,iCACA,uCACA,qBACA,2BACA,2BACA,6CACA,mDACA,6CACA,uCACA,+CAGR,cAAe,CACXD,YAAa,CACT,sBACA,4BACA,2BACA,sBACA,qBACA,2BACA,2BACA,sBACA,4BACA,sBACA,4BACA,uBAEJz9U,OAAQ,CACJ,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAEJ09U,KAA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uU,GAAQsuU,IACnD,IAAIpykB,GAAS,GACb,GAAImykB,GACA,OAAQruU,QACC,IACD9jQ,GAAS,0DACT,UACC,KACDA,GAAS,oCACT,UACC,IACDA,GAAS,8CACT,UACC,KACDA,GAAS,0CACT,UACC,IACDA,GAAS,kCACT,UACC,KACDA,GAAS,wBACT,UACC,IACDA,GAAS,wCACT,UACC,KACDA,GAAS,8BACT,UACC,IACDA,GAAS,8CACT,UACC,KACDA,GAAS,oCACT,UACC,IACDA,GAAS,wCACT,UACC,KACDA,GAAS,yCAIjB,OAAQ8jQ,QACC,IACD9jQ,GAAS,sEACT,UACC,KACDA,GAAS,gDACT,UACC,IACDA,GAAS,0DACT,UACC,KACDA,GAAS,gDACT,UACC,IACDA,GAAS,8CACT,UACC,KACDA,GAAS,oCACT,UACC,IACDA,GAAS,oDACT,UACC,KACDA,GAAS,0CACT,UACC,IACDA,GAAS,gEACT,UACC,KACDA,GAAS,sDACT,UACC,IACDA,GAAS,oDACT,UACC,KACDA,GAAS,0CAIrB,OAAOA,GAAOC,QAAQ,MAAO26X,EAChC,CAEQs1M,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,0cAAwFz6C,MAC5F,KAEJyukB,YACI,8VAAgFzukB,MAC5E,KAERyxkB,kBAAkB,EAClB/C,SAAU,6RAAuD1ukB,MAAM,KACvE2ukB,cAAe,+JAAkC3ukB,MAAM,KACvD4ukB,YAAa,iFAAqB5ukB,MAAM,KACxCgvkB,eAAgB,CACZC,GAAI,wCACJC,IAAK,2CACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,qDACLC,KAAM,4DAEVtvY,SAAU,CACNuvY,QAAS,oBACTC,QAAS,sCACTC,SAAU,WACVC,QAAS,0BACTC,SAAU,4CACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,mCACRC,KAAM,yCACN7uiB,EAAG4ziB,EACHxvO,GAAIwvO,EACJxxY,EAAGwxY,EACHr8O,GAAIq8O,EACJlsiB,EAAGksiB,EACH71iB,GAAI61iB,EACJpsiB,EAAGosiB,EACHhtU,GAAIgtU,EACJlid,EAAGkid,EACH9E,GAAI8E,EACJtujB,EAAGsujB,EACH7E,GAAI6E,GAERhE,SAAU,SAAU1uU,GAChB,OAAOA,EAAO7jQ,QAAQ,kEAAiB,SAAUwyB,IAC7C,OAAOggjB,EAAUhgjB,GACpB,EACJ,EACD6/iB,WAAY,SAAUxuU,GAClB,OAAOA,EAAO7jQ,QAAQ,MAAO,SAAUwyB,IACnC,OAAO8/iB,EAAU9/iB,GACpB,EACJ,EACD+9iB,cAAe,2LACf0C,aAAc,SAAUl8Z,EAAMy5Z,IAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,mCAAby5Z,IAAqC,mCAAbA,GACjBz5Z,EAEM,yCAAby5Z,IACa,qDAAbA,IACa,yCAAbA,GAEOz5Z,GAAQ,GAAKA,EAAOA,EAAO,QAL/B,CAOV,EACDy5Z,SAAU,SAAUz5Z,EAAM27B,GAAQ+9X,IAC9B,OAAI15Z,GAAQ,GAAKA,EAAO,EACb,iCACAA,EAAO,GACP,iCACAA,EAAO,GACP,uCACAA,EAAO,GACP,mDAEA,sCAEd,EACDiT,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA9MyCjvkB,CAAQqqd,EAAQ;;;;;CCGjD,SAAU+iH,GAAU;kCAIdA;EAAOC,aAAa,QAAS,CACpC/zhB,OAAQ,oFAAoFz6C,MACxF,KAEJyukB,YAAa,kDAAkDzukB,MAAM,KACrE0ukB,SAAU,6CAA6C1ukB,MAAM,KAC7D2ukB,cAAe,8BAA8B3ukB,MAAM,KACnD4ukB,YAAa,uBAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVR,cAAe,8BACf0C,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,SAAby5Z,EACOz5Z,EACa,cAAby5Z,EACAz5Z,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAby5Z,GAAsC,UAAbA,EACzBz5Z,EAAO,QADX,CAGV,EACDy5Z,SAAU,SAAUl0hB,EAAOC,EAASk0hB,GAChC,OAAIn0hB,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,OAEd,EACDmlJ,SAAU,CACNuvY,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN7uiB,EAAG,gBACHokU,GAAI,UACJhiK,EAAG,UACHm1J,GAAI,WACJ7vT,EAAG,QACH3J,GAAI,SACJyJ,EAAG,SACHo/N,GAAI,UACJl1I,EAAG,UACHo9c,GAAI,WACJxpjB,EAAG,UACHypjB,GAAI,YAER1nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA/EyCjvkB,CAAQqqd,EAAQ;;;;CCEjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,oFAAoFz6C,MACxF,KAEJyukB,YAAa,kDAAkDzukB,MAAM,KACrE0ukB,SAAU,6CAA6C1ukB,MAAM,KAC7D2ukB,cAAe,8BAA8B3ukB,MAAM,KACnD4ukB,YAAa,uBAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVR,cAAe,8BACf0C,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,SAAby5Z,EACOz5Z,EACa,cAAby5Z,EACAz5Z,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAby5Z,GAAsC,UAAbA,EACzBz5Z,EAAO,QADX,CAGV,EACDy5Z,SAAU,SAAUl0hB,EAAOC,EAASk0hB,GAChC,OAAIn0hB,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,OAEd,EACDmlJ,SAAU,CACNuvY,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN7uiB,EAAG,gBACHokU,GAAI,UACJhiK,EAAG,UACHm1J,GAAI,WACJ7vT,EAAG,QACH3J,GAAI,SACJyJ,EAAG,SACHo/N,GAAI,UACJl1I,EAAG,UACHo9c,GAAI,WACJxpjB,EAAG,UACHypjB,GAAI,YAER1nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA/EyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,kGAAwFz6C,MAC5F,KAEJyukB,YAAa,4DAAkDzukB,MAAM,KACrE0ukB,SACI,0FAAiE1ukB,MAC7D,KAER2ukB,cAAe,6CAA8B3ukB,MAAM,KACnD4ukB,YAAa,sCAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,iBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,0BACTC,SAAU,iCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,SACN7uiB,EAAG,eACHokU,GAAI,aACJhiK,EAAG,SACHm1J,GAAI,YACJ7vT,EAAG,cACH3J,GAAI,kBACJyJ,EAAG,eACHo/N,GAAI,iBACJl1I,EAAG,QACHo9c,GAAI,UACJxpjB,EAAG,OACHypjB,GAAI,UAERC,uBAAwB,cACxBC,QAAS,SACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA5DyCjvkB,CAAQqqd,EAAQ;;;;;;CCKjD,SAAU+iH,GAAU;kCAIzB;IAAIqC,EAAY,CACR,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEPE,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJvC,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,4dAA2Fz6C,MAC/F,KAEJyukB,YAAa,4OAAmDzukB,MAAM,KACtE0ukB,SAAU,mSAAwD1ukB,MAC9D,KAEJ2ukB,cAAe,qHAA2B3ukB,MAAM,KAChD4ukB,YAAa,qHAA2B5ukB,MAAM,KAE9CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVtvY,SAAU,CACNuvY,QAAS,gDACTC,QAAS,6EACTC,SAAU,+BACVC,QAAS,sDACTC,SAAU,8FACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,6DACRC,KAAM,yEACN7uiB,EAAG,wFACHokU,GAAI,gDACJhiK,EAAG,mDACHm1J,GAAI,oCACJ7vT,EAAG,6CACH3J,GAAI,8BACJyJ,EAAG,uCACHo/N,GAAI,wBACJl1I,EAAG,2BACHo9c,GAAI,YACJxpjB,EAAG,6CACHypjB,GAAI,+BAERa,SAAU,SAAU1uU,GAChB,OAAOA,EAAO7jQ,QAAQ,kEAAiB,SAAUwyB,GAC7C,OAAOggjB,EAAUhgjB,EACpB,EACJ,EACD6/iB,WAAY,SAAUxuU,GAClB,OAAOA,EAAO7jQ,QAAQ,MAAO,SAAUwyB,GACnC,OAAO8/iB,EAAU9/iB,EACpB,EACJ,EACDw3J,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA7FyCjvkB,CAAQqqd,EAAQ;;;;;;CCGjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,qFAAqFz6C,MACzF,KAEJyukB,YACI,6DAA6DzukB,MAAM,KACvEyxkB,kBAAkB,EAClB/C,SAAU,2DAAqD1ukB,MAAM,KACrE2ukB,cAAe,oCAA8B3ukB,MAAM,KACnD4ukB,YAAa,6BAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAEVtvY,SAAU,CACNuvY,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7uiB,EAAG,gBACHokU,GAAI,cACJhiK,EAAG,aACHm1J,GAAI,cACJ7vT,EAAG,UACH3J,GAAI,WACJyJ,EAAG,SACHo/N,GAAI,WACJh2I,EAAG,SACHu/c,GAAI,UACJz+c,EAAG,cACHo9c,GAAI,gBACJxpjB,EAAG,YACHypjB,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA9DyCjvkB,CAAQqqd,EAAQ;;;;CCCjD,SAAU+iH,GAAU;kCAIzB;IAAIqC,EAAY,CACR,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEPE,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJvC,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,ocAAuFz6C,MAC3F,KAEJyukB,YACI,uTAAuEzukB,MACnE,KAERyxkB,kBAAkB,EAClB/C,SAAU,mSAAwD1ukB,MAC9D,KAEJ2ukB,cAAe,4KAA0C3ukB,MAAM,KAC/D4ukB,YAAa,wFAA4B5ukB,MAAM,KAC/C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,wCACJC,IAAK,2CACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,qDACLC,KAAM,4DAEVwB,SAAU,SAAU1uU,GAChB,OAAOA,EAAO7jQ,QAAQ,kEAAiB,SAAUwyB,GAC7C,OAAOggjB,EAAUhgjB,EACpB,EACJ,EACD6/iB,WAAY,SAAUxuU,GAClB,OAAOA,EAAO7jQ,QAAQ,MAAO,SAAUwyB,GACnC,OAAO8/iB,EAAU9/iB,EACpB,EACJ,EACD+9iB,cAAe,wHACf0C,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,6BAAby5Z,EACOz5Z,EAAO,EAAIA,EAAOA,EAAO,GACZ,mCAAby5Z,EACAz5Z,EACa,yCAAby5Z,EACAz5Z,GAAQ,GAAKA,EAAOA,EAAO,GACd,6BAAby5Z,EACAz5Z,EAAO,QADX,CAGV,EACDy5Z,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,IAC9B,OAAI15Z,EAAO,EACA,2BACAA,EAAO,GACP,iCACAA,EAAO,GACP,uCACAA,EAAO,GACP,2BAEA,0BAEd,EACD0qB,SAAU,CACNuvY,QAAS,oBACTC,QAAS,gCACTC,SAAU,8CACVC,QAAS,gCACTC,SAAU,wCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,oCACN7uiB,EAAG,oDACHokU,GAAI,gDACJhiK,EAAG,8CACHm1J,GAAI,oCACJ7vT,EAAG,8CACH3J,GAAI,oCACJyJ,EAAG,kCACHo/N,GAAI,wBACJl1I,EAAG,8CACHo9c,GAAI,oCACJxpjB,EAAG,wCACHypjB,GAAI,+BAER1nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA7HyCjvkB,CAAQqqd,EAAQ;;;;;CCIjD,SAAU+iH,GAAU;kCAIzB;IAAIkF,EACI,6DAA6DzzkB,MAAM,KACvE0zkB,EACI,kDAAkD1zkB,MAAM,KAC5D+xkB,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EACI,qKAEGzD,EAAOC,aAAa,QAAS,CACpC/zhB,OAAQ,0FAA0Fz6C,MAC9F,KAEJyukB,YAAa,SAAUprY,GAAGj2J,IACtB,OAAKi2J,GAEM,QAAQ1gM,KAAKyqC,IACbsmiB,EAAuBrwY,GAAE1tB,SAEzB89Z,EAAoBpwY,GAAE1tB,SAJtB89Z,CAMd,EAEDzB,YAAaA,EACbR,iBAAkBQ,EAClBC,kBACI,4FACJC,uBACI,mFAEJH,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBrD,SACI,6DAA6D1ukB,MAAM,KACvE2ukB,cAAe,8BAA8B3ukB,MAAM,KACnD4ukB,YAAa,uBAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVtvY,SAAU,CACNuvY,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN7uiB,EAAG,oBACHokU,GAAI,cACJhiK,EAAG,mBACHm1J,GAAI,aACJ7vT,EAAG,gBACH3J,GAAI,SACJyJ,EAAG,gBACHo/N,GAAI,WACJl1I,EAAG,kBACHo9c,GAAI,aACJxpjB,EAAG,iBACHypjB,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUj3M,IACf,OACIA,IACY,IAAXA,IAA2B,IAAXA,IAAgBA,IAAU,GAAK,MAAQ,KAE/D,EACD3wM,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAzGyCjvkB,CAAQqqd,EAAQ;;;;;CCGjD,SAAU+iH,GAAU;kCAIzB;IAAIkF,EACI,6DAA6DzzkB,MAAM,KACvE0zkB,EACI,kDAAkD1zkB,MAAM,KAC5D+xkB,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EACI,qKAECzD,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,0FAA0Fz6C,MAC9F,KAEJyukB,YAAa,SAAUprY,GAAGj2J,IACtB,OAAKi2J,GAEM,QAAQ1gM,KAAKyqC,IACbsmiB,EAAuBrwY,GAAE1tB,SAEzB89Z,EAAoBpwY,GAAE1tB,SAJtB89Z,CAMd,EAEDzB,YAAaA,EACbR,iBAAkBQ,EAClBC,kBACI,4FACJC,uBACI,mFAEJH,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBrD,SACI,6DAA6D1ukB,MAAM,KACvE2ukB,cAAe,8BAA8B3ukB,MAAM,KACnD4ukB,YAAa,uBAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVtvY,SAAU,CACNuvY,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN7uiB,EAAG,oBACHokU,GAAI,cACJhiK,EAAG,mBACHm1J,GAAI,aACJ7vT,EAAG,gBACH3J,GAAI,SACJyJ,EAAG,gBACHo/N,GAAI,WACJh2I,EAAG,iBACHu/c,GAAI,WACJz+c,EAAG,kBACHo9c,GAAI,aACJxpjB,EAAG,iBACHypjB,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUj3M,IACf,OACIA,IACY,IAAXA,IAA2B,IAAXA,IAAgBA,IAAU,GAAK,MAAQ,KAE/D,EACD3wM,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA3GyCjvkB,CAAQqqd,EAAQ;;;;;CCGjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,qFAAqFz6C,MACzF,KAEJyukB,YACI,6DAA6DzukB,MAAM,KACvEyxkB,kBAAkB,EAClB/C,SAAU,wDAAqD1ukB,MAAM,KACrE2ukB,cAAe,kCAA+B3ukB,MAAM,KACpD4ukB,YAAa,0BAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVtvY,SAAU,CACNuvY,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,uBACTC,SAAU,sCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7uiB,EAAG,eACHokU,GAAI,YACJhiK,EAAG,aACHm1J,GAAI,YACJ7vT,EAAG,WACH3J,GAAI,WACJyJ,EAAG,UACHo/N,GAAI,WACJh2I,EAAG,UACHu/c,GAAI,WACJz+c,EAAG,eACHo9c,GAAI,gBACJxpjB,EAAG,YACHypjB,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA9DyCjvkB,CAAQqqd,EAAQ;;;;CCEjD,SAAU+iH,GAAU;kCAIbA;EAAOC,aAAa,SAAU,CACtC/zhB,OAAQ,CACJowX,WACI,iGAAqF7qa,MACjF,KAERotC,OAAQ,kIAAsHptC,MAC1H,KAEJkxkB,SAAU,mBAEdzC,YACI,kEAA+DzukB,MAC3D,KAERyxkB,kBAAkB,EAClB/C,SAAU,iEAA2D1ukB,MACjE,KAEJ2ukB,cAAe,8BAA8B3ukB,MAAM,KACnD4ukB,YAAa,uBAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLx8c,EAAG,aACHy8c,GAAI,mBACJ3tO,GAAI,aACJ4tO,IAAK,4BACLqD,IAAK,mBACLpD,KAAM,iCACNqD,KAAM,wBAEV3yY,SAAU,CACNuvY,QAAS,gBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,eACRC,KAAM,QACN7uiB,EAAG,gBACHokU,GAAI,cACJhiK,EAAG,aACHm1J,GAAI,aACJ7vT,EAAG,UACH3J,GAAI,UACJyJ,EAAG,UACHo/N,GAAI,WACJl1I,EAAG,SACHo9c,GAAI,WACJxpjB,EAAG,QACHypjB,GAAI,UAERC,uBAAwB,wBACxBC,QAAS,SAAUj3M,EAAQk4M,GACvB,IAAI9ykB,EACW,IAAX46X,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,OACV,OAAe,MAAXk4M,GAA6B,MAAXA,KAClB9ykB,EAAS,KAEN46X,EAAS56X,CACnB,EACDiqL,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAzFyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIzB;IAAIqC,EAAY,CACR,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEPE,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGFvC,EAAOC,aAAa,QAAS,CAEpC/zhB,OAAQ,8VAAsEz6C,MAC1E,KAEJyukB,YACI,8VAAsEzukB,MAClE,KAER0ukB,SAAU,ySAAyD1ukB,MAC/D,KAEJ2ukB,cAAe,yJAAiC3ukB,MAAM,KACtD4ukB,YAAa,yJAAiC5ukB,MAAM,KACpDgvkB,eAAgB,CACZC,GAAI,4BACJC,IAAK,+BACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAEVtvY,SAAU,CACNuvY,QAAS,oBACTC,QAAS,oBACTC,SAAU,sCACVC,QAAS,oBACTC,SAAU,4CACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,8BACRC,KAAM,oCACN7uiB,EAAG,oDACHokU,GAAI,oCACJhiK,EAAG,wCACHm1J,GAAI,8BACJ7vT,EAAG,8CACH3J,GAAI,8BACJyJ,EAAG,wCACHo/N,GAAI,wBACJl1I,EAAG,oDACHo9c,GAAI,oCACJxpjB,EAAG,wCACHypjB,GAAI,yBAERa,SAAU,SAAU1uU,GAChB,OAAOA,EAAO7jQ,QAAQ,kEAAiB,SAAUwyB,GAC7C,OAAOggjB,EAAUhgjB,EACpB,EACJ,EACD6/iB,WAAY,SAAUxuU,GAClB,OAAOA,EAAO7jQ,QAAQ,MAAO,SAAUwyB,GACnC,OAAO8/iB,EAAU9/iB,EACpB,EACJ,EAGD+9iB,cAAe,4GACf0C,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,uBAAby5Z,EACOz5Z,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAby5Z,EACAz5Z,EACa,yCAAby5Z,EACAz5Z,GAAQ,GAAKA,EAAOA,EAAO,GACd,6BAAby5Z,EACAz5Z,EAAO,QADX,CAGV,EACDy5Z,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,IAC9B,OAAI15Z,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,uCACAA,EAAO,GACP,2BAEA,oBAEd,EACDiT,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA9HyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIzB;IAAIuG,EACI,iIAAmG90kB,MAC/F,KAER+0kB,EACI,+GAAqG/0kB,MACjG,KAER+xkB,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,aACA,QACA,SAER,SAAShB,EAAOh4W,IACZ,OAAOA,GAAI,GAAK,GAAKA,GAAI,GAAK,MAAQA,GAAI,IAAM,IAAO,CAC1D,CACD,SAAShrM,EAAUkrW,GAAQu3M,GAAe34iB,IACtC,IAAIhI,GAASopW,GAAS,IACtB,OAAQphW,QACC,KACD,OAAOhI,IAAUkhjB,EAAO93M,IAAU,UAAY,cAC7C,IACD,OAAOu3M,GAAgB,SAAW,kBACjC,KACD,OAAO3gjB,IAAUkhjB,EAAO93M,IAAU,SAAW,aAC5C,IACD,OAAOu3M,GAAgB,UAAY,mBAClC,KACD,OAAO3gjB,IAAUkhjB,EAAO93M,IAAU,UAAY,cAC7C,KACD,OAAOppW,IAAUkhjB,EAAO93M,IAAU,WAAa,eAC9C,KACD,OAAOppW,IAAUkhjB,EAAO93M,IAAU,gBAAa,qBAC9C,KACD,OAAOppW,IAAUkhjB,EAAO93M,IAAU,OAAS,OAEtD,CAEQs1M,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,SAAUq4hB,GAAgB1liB,IAC9B,OAAK0liB,GAEM,SAASnwkB,KAAKyqC,IACd2niB,EAAiBjC,GAAen9Z,SAEhCm/Z,EAAiBhC,GAAen9Z,SAJhCm/Z,CAMd,EACDrG,YAAa,uDAAkDzukB,MAAM,KACrE+xkB,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBrD,SACI,4EAA6D1ukB,MAAM,KACvE2ukB,cAAe,gCAA2B3ukB,MAAM,KAChD4ukB,YAAa,4BAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,mBACTC,QAAS,eACTC,SAAU,WACN,OAAQvxkB,KAAK89C,OAAL,KACC,EACD,MAAO,+BAEN,EACD,MAAO,wBAEN,EACD,MAAO,gCAEN,EACD,MAAO,+BAGP,MAAO,kBAElB,EACD0zhB,QAAS,iBACTC,SAAU,WACN,OAAQzxkB,KAAK89C,OAAL,KACC,EACD,MAAO,gDACN,EACD,MAAO,iDACN,EACD,MAAO,gDAEP,MAAO,8BAElB,EACD4zhB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7uiB,EAAG,eACHokU,GAAIt3U,EACJs1K,EAAGt1K,EACHyqU,GAAIzqU,EACJ4a,EAAG5a,EACHiR,GAAIjR,EACJ0a,EAAG,eACHo/N,GAAI,SACJh2I,EAAG,eACHu/c,GAAIrjjB,EACJ4kG,EAAG,eACHo9c,GAAIhijB,EACJxH,EAAG,MACHypjB,GAAIjijB,GAERkijB,uBAAwB,YACxBC,QAAS,MACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAhJyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIdA;EAAOC,aAAa,QAAS,CACpC/zhB,OAAQ,8FAA2Fz6C,MAC/F,KAEJyukB,YAAa,kDAAkDzukB,MAAM,KACrE0ukB,SACI,uFAAiF1ukB,MAC7E,KAER2ukB,cAAe,iCAA8B3ukB,MAAM,KACnD4ukB,YAAa,yCAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,wBACJC,IAAK,sCACLC,KAAM,6CAEVtvY,SAAU,CACNuvY,QAAS,kBACTC,QAAS,uBACTC,SAAU,kBACVC,QAAS,mBACTC,SAAU,WACN,OAAsB,IAAfzxkB,KAAK89C,OAA8B,IAAf99C,KAAK89C,MAC1B,8BACA,6BACT,EACD4zhB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7uiB,EAAG,kBACHokU,GAAI,cACJhiK,EAAG,YACHm1J,GAAI,aACJ7vT,EAAG,WACH3J,GAAI,WACJyJ,EAAG,SACHo/N,GAAI,UACJl1I,EAAG,YACHo9c,GAAI,WACJxpjB,EAAG,SACHypjB,GAAI,WAERC,uBAAwB,cACxBC,QAAS,SACTmD,YAAa,oBAKpB,CA9DyClykB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,8FAA2Fz6C,MAC/F,KAEJyukB,YAAa,kDAAkDzukB,MAAM,KACrE0ukB,SACI,uFAAiF1ukB,MAC7E,KAER2ukB,cAAe,iCAA8B3ukB,MAAM,KACnD4ukB,YAAa,yCAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEVtvY,SAAU,CACNuvY,QAAS,kBACTC,QAAS,uBACTC,SAAU,kBACVC,QAAS,mBACTC,SAAU,WACN,OAAsB,IAAfzxkB,KAAK89C,OAA8B,IAAf99C,KAAK89C,MAC1B,8BACA,6BACT,EACD4zhB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7uiB,EAAG,WACHokU,GAAI,cACJhiK,EAAG,YACHm1J,GAAI,aACJ7vT,EAAG,WACH3J,GAAI,WACJyJ,EAAG,SACHo/N,GAAI,UACJh2I,EAAG,aACHu/c,GAAI,aACJz+c,EAAG,YACHo9c,GAAI,WACJxpjB,EAAG,SACHypjB,GAAI,WAERC,uBAAwB,cACxBC,QAAS,SACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAnEyCjvkB,CAAQqqd,EAAQ;;;;;;CCKjD,SAAU+iH,GAAU;kCAIzB;SAAS0C,EAAuBh4M,EAAQu3M,EAAe34iB,GACnD,IASIs9G,GAAY,IAChB,OAAI8jP,EAAS,KAAO,IAAOA,GAAU,KAAOA,EAAS,KAAQ,KACzD9jP,GAAY,QAET8jP,EAAS9jP,GAbH,CACLkwN,GAAI,UACJ7M,GAAI,SACJx5T,GAAI,MACJ6oO,GAAI,OACJupU,GAAI,yBACJrB,GAAI,OACJC,GAAI,OAMuBn4iB,EACtC,CAEQ02iB,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,oGAAoGz6C,MACxG,KAEJyukB,YACI,+DAA+DzukB,MAC3D,KAERyxkB,kBAAkB,EAClB/C,SAAU,yEAAkD1ukB,MAAM,KAClE2ukB,cAAe,iCAA8B3ukB,MAAM,KACnD4ukB,YAAa,0BAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVtvY,SAAU,CACNuvY,QAAS,cACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,qBACN7uiB,EAAG,oBACHokU,GAAI4rO,EACJ5tY,EAAG,WACHm1J,GAAIy4O,EACJtoiB,EAAG,aACH3J,GAAIiyiB,EACJxoiB,EAAG,OACHo/N,GAAIopU,EACJp/c,EAAG,gCACHu/c,GAAIH,EACJt+c,EAAG,cACHo9c,GAAIkB,EACJ1qjB,EAAG,QACHypjB,GAAIiB,GAER3oZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA9EyCjvkB,CAAQqqd,EAAQ;;;;;;CCGjD,SAAU+iH,GAAU;kCAIzB;SAASwC,EAAOj4V,EAAMx3E,IAClB,IAAI0va,GAAQl4V,EAAK94O,MAAM,KACvB,OAAOshK,GAAM,IAAO,GAAKA,GAAM,KAAQ,GACjC0va,GAAM,GACN1va,GAAM,IAAM,GAAKA,GAAM,IAAM,IAAMA,GAAM,IAAM,IAAMA,GAAM,KAAO,IAClE0va,GAAM,GACNA,GAAM,EACf,CACD,SAASC,EAAuBh4M,EAAQu3M,GAAe34iB,IAUnD,MAAY,MAARA,GACO24iB,GAAgB,uCAAW,uCAE3Bv3M,EAAS,IAAM83M,EAZb,CACT1rO,GAAImrO,GAAgB,6HAA2B,6HAC/Ch4O,GAAIg4O,GAAgB,2GAAwB,2GAC5CxxiB,GAAI,6EACJ6oO,GAAI,uEACJupU,GAAI,iHACJrB,GAAI,iHACJC,GAAI,kEAKgCn4iB,KAAOohW,EAElD,CACD,IAAI84M,EAAc,CACd,uBACA,uBACA,uBACA,uBACA,+BACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,wBAMKxD,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,CACJrN,OAAQ,kbAAoFptC,MACxF,KAEJ6qa,WACI,saAAkF7qa,MAC9E,MAGZyukB,YAAa,CAETrhiB,OAAQ,6QAAgEptC,MACpE,KAEJ6qa,WACI,kRAAgE7qa,MAC5D,MAGZ0ukB,SAAU,CACN7jK,WACI,mVAAgE7qa,MAC5D,KAERotC,OAAQ,mVAAgEptC,MACpE,KAEJkxkB,SAAU,0JAEdvC,cAAe,6FAAuB3ukB,MAAM,KAC5C4ukB,YAAa,6FAAuB5ukB,MAAM,KAC1C+xkB,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAGlBC,YACI,+wBAGJR,iBACI,+wBAGJS,kBACI,wgBAGJC,uBACI,8TACJlD,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLx8c,EAAG,aACHy8c,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEVtvY,SAAU,CACNuvY,QAAS,0DACTC,QAAS,oDACTE,QAAS,8CACTD,SAAU,SAAU/7iB,GAChB,GAAIA,EAAI60J,SAAWrqL,KAAKqqL,OAcpB,OAAmB,IAAfrqL,KAAK89C,MACE,mCAEA,6BAhBX,OAAQ99C,KAAK89C,OAAL,KACC,EACD,MAAO,yFACN,OACA,OACA,EACD,MAAO,yFACN,OACA,OACA,EACD,MAAO,oFAStB,EACD2zhB,SAAU,SAAUj8iB,GAChB,GAAIA,EAAI60J,SAAWrqL,KAAKqqL,OAcpB,OAAmB,IAAfrqL,KAAK89C,MACE,mCAEA,6BAhBX,OAAQ99C,KAAK89C,OAAL,KACC,EACD,MAAO,6EACN,OACA,OACA,EACD,MAAO,6EACN,OACA,OACA,EACD,MAAO,wEAStB,EACD4zhB,SAAU,KAEdC,aAAc,CACVC,OAAQ,oCACRC,KAAM,oCACN7uiB,EAAG,8FACHokU,GAAI4rO,EACJ5tY,EAAG4tY,EACHz4O,GAAIy4O,EACJtoiB,EAAG,qBACH3J,GAAIiyiB,EACJxoiB,EAAG,2BACHo/N,GAAIopU,EACJp/c,EAAG,uCACHu/c,GAAIH,EACJt+c,EAAG,iCACHo9c,GAAIkB,EACJ1qjB,EAAG,qBACHypjB,GAAIiB,GAERpC,cAAe,6GACfj8X,KAAM,SAAUjkM,GACZ,MAAO,8DAAiBhM,KAAKgM,EAChC,EACDmgkB,SAAU,SAAUz5Z,EAAM27B,GAAQ+9X,IAC9B,OAAI15Z,EAAO,EACA,2BACAA,EAAO,GACP,2BACAA,EAAO,GACP,qBAEA,sCAEd,EACD46Z,uBAAwB,uCACxBC,QAAS,SAAUj3M,EAAQk4M,IACvB,OAAQA,QACC,QACA,QACA,MACD,OAAOl4M,EAAS,cACf,IACD,OAAOA,EAAS,oBACf,QACA,IACD,OAAOA,EAAS,kBAEhB,OAAOA,EAElB,EACD3wM,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAvNyCjvkB,CAAQqqd,EAAQ;;;;CCCjD,SAAU+iH,GAAU;kCAIzB;IAAI9zhB,EAAS,CACL,iCACA,6CACA,2BACA,iCACA,qBACA,qBACA,uCACA,2BACA,6CACA,uCACA,iCACA,kCAEJE,EAAO,CAAC,qBAAO,2BAAQ,iCAAS,2BAAQ,2BAAQ,qBAAO,4BAElD4zhB,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQA,EACRg0hB,YAAah0hB,EACbi0hB,SAAU/zhB,EACVg0hB,cAAeh0hB,EACfi0hB,YAAaj0hB,EACbq0hB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,gCAEVR,cAAe,wCACfj8X,KAAM,SAAUjkM,GACZ,MAAO,uBAAUA,CACpB,EACDmgkB,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,IAC9B,OAAI15Z,EAAO,GACA,qBAEJ,oBACV,EACD0qB,SAAU,CACNuvY,QAAS,oBACTC,QAAS,sCACTC,SAAU,2EACVC,QAAS,sCACTC,SAAU,mFACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,kBACN7uiB,EAAG,oDACHokU,GAAI,oCACJhiK,EAAG,kCACHm1J,GAAI,wBACJ7vT,EAAG,wCACH3J,GAAI,8BACJyJ,EAAG,8CACHo/N,GAAI,oCACJl1I,EAAG,8CACHo9c,GAAI,oCACJxpjB,EAAG,kCACHypjB,GAAI,yBAERa,SAAU,SAAU1uU,GAChB,OAAOA,EAAO7jQ,QAAQ,UAAM,IAC/B,EACDqykB,WAAY,SAAUxuU,GAClB,OAAOA,EAAO7jQ,QAAQ,KAAM,SAC/B,EACDgqL,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CArFyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,wNAAmJz6C,MACvJ,KAEJyukB,YACI,oFAA6DzukB,MAAM,KACvE0ukB,SACI,gGAA6E1ukB,MACzE,KAER2ukB,cAAe,2CAAmC3ukB,MAAM,KACxD4ukB,YAAa,gBAAgB5ukB,MAAM,KACnCgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAEVtvY,SAAU,CACNuvY,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,gBACN7uiB,EAAG,mBACHokU,GAAI,eACJhiK,EAAG,eACHm1J,GAAI,cACJ7vT,EAAG,cACH3J,GAAI,aACJyJ,EAAG,cACHo/N,GAAI,cACJl1I,EAAG,gBACHo9c,GAAI,cACJxpjB,EAAG,aACHypjB,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA7DyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAKhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,sgBAAkGz6C,MACtG,KAEJyukB,YAAa,0QAAwDzukB,MACjE,KAEJ0ukB,SACI,mVAAgE1ukB,MAC5D,KAER2ukB,cAAe,mJAAgC3ukB,MAAM,KACrD4ukB,YAAa,iFAAqB5ukB,MAAM,KACxC0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,sBACLC,KAAM,0DAEVtvY,SAAU,CACNuvY,QAAS,4BACTC,QAAS,kCACTC,SAAU,kBACVC,QAAS,kCACTC,SAAU,yDACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,6BACRC,KAAM,oCACN7uiB,EAAG,sEACHokU,GAAI,oCACJhiK,EAAG,yDACHm1J,GAAI,sDACJ7vT,EAAG,qBACH3J,GAAI,wBACJyJ,EAAG,2BACHo/N,GAAI,wBACJl1I,EAAG,2BACHo9c,GAAI,wBACJxpjB,EAAG,qBACHypjB,GAAI,yBAERC,uBAAwB,mCACxBC,QAAS,SAAUj3M,GACf,OAAOA,EAAS,2BACnB,EACD41M,cAAe,iHACfj8X,KAAM,SAAUjkM,GACZ,MAAiB,mBAAVA,GAA8B,0CAAVA,CAC9B,EACDmgkB,SAAU,SAAUl0hB,EAAOC,EAASk0hB,GAChC,OAAIn0hB,EAAQ,GACDm0hB,EAAU,iBAAS,wCAEnBA,EAAU,uBAAU,uCAElC,GAKR,CAzEyC5tkB,CAAQqqd,EAAQ;;;;;CCIjD,SAAU+iH,GAAU;kCAIzB;IAAI9zhB,EACI,yGAAoFz6C,MAChF,KAERyukB,EAAc,2DAAkDzukB,MAAM,KAC1E,SAAS+wkB,EAAOh4W,IACZ,OAAOA,GAAI,GAAKA,GAAI,CACvB,CACD,SAAShrM,EAAUkrW,GAAQu3M,GAAe34iB,GAAK44iB,IAC3C,IAAI5gjB,GAASopW,GAAS,IACtB,OAAQphW,QACC,IACD,OAAO24iB,IAAiBC,GAAW,mBAAe,uBACjD,KACD,OAAID,IAAiBC,GACV5gjB,IAAUkhjB,EAAO93M,IAAU,UAAY,aAEvCppW,GAAS,gBAEnB,IACD,OAAO2gjB,GAAgB,YAAWC,GAAW,YAAW,iBACvD,KACD,OAAID,IAAiBC,GACV5gjB,IAAUkhjB,EAAO93M,IAAU,YAAW,YAEtCppW,GAAS,kBAEnB,IACD,OAAO2gjB,GAAgB,SAAWC,GAAW,SAAW,cACvD,KACD,OAAID,IAAiBC,GACV5gjB,IAAUkhjB,EAAO93M,IAAU,SAAW,YAEtCppW,GAAS,eAEnB,IACD,OAAO2gjB,IAAiBC,GAAW,WAAQ,gBAC1C,KACD,OAAID,IAAiBC,GACV5gjB,IAAUkhjB,EAAO93M,IAAU,MAAQ,UAEnCppW,GAAS,iBAEnB,IACD,OAAO2gjB,IAAiBC,GAAW,SAAW,eAC7C,KACD,OAAID,IAAiBC,GACV5gjB,IAAUkhjB,EAAO93M,IAAU,UAAY,YAEvCppW,GAAS,eAEnB,IACD,OAAO2gjB,IAAiBC,GAAW,MAAQ,YAC1C,KACD,OAAID,IAAiBC,GACV5gjB,IAAUkhjB,EAAO93M,IAAU,OAAS,SAEpCppW,GAAS,QAG/B,CAEQ0+iB,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQA,EACRg0hB,YAAaA,EACbC,SAAU,gEAAsD1ukB,MAAM,KACtE2ukB,cAAe,4BAAuB3ukB,MAAM,KAC5C4ukB,YAAa,4BAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLx8c,EAAG,aACHy8c,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAEVtvY,SAAU,CACNuvY,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQvxkB,KAAK89C,OAAL,KACC,EACD,MAAO,4BACN,OACA,EACD,MAAO,uBACN,EACD,MAAO,uBACN,EACD,MAAO,8BACN,EACD,MAAO,uBACN,EACD,MAAO,kBAElB,EACD0zhB,QAAS,oBACTC,SAAU,WACN,OAAQzxkB,KAAK89C,OAAL,KACC,EACD,MAAO,oCACN,OACA,EAGM,KACN,OACA,EACD,MAAO,0BALA,KACN,EACD,MAAO,0BAGA,KACN,EACD,MAAO,0BAElB,EACD4zhB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7uiB,EAAGlT,EACHs3U,GAAIt3U,EACJs1K,EAAGt1K,EACHyqU,GAAIzqU,EACJ4a,EAAG5a,EACHiR,GAAIjR,EACJ0a,EAAG1a,EACH85O,GAAI95O,EACJ4kG,EAAG5kG,EACHgijB,GAAIhijB,EACJxH,EAAGwH,EACHiijB,GAAIjijB,GAERkijB,uBAAwB,YACxBC,QAAS,MACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CApJyCjvkB,CAAQqqd,EAAQ;;;;CCEjD,SAAU+iH,GAAU;kCAIzB;SAASoE,EAAoB15M,EAAQu3M,EAAe34iB,EAAK44iB,IACrD,IAAI5gjB,GAASopW,EAAS,IACtB,OAAQphW,OACC,IACD,OAAO24iB,GAAiBC,GAClB,eACA,sBACL,KACD,OACI5gjB,IADW,IAAXopW,EACUu3M,EAAgB,UAAY,UACpB,IAAXv3M,EACGu3M,GAAiBC,GAAW,UAAY,WAC3Cx3M,EAAS,EACNu3M,GAAiBC,GAAW,UAAY,WAExC,SAEP5gjB,IACN,IACD,OAAO2gjB,EAAgB,aAAe,iBACrC,KACD,OACI3gjB,IADW,IAAXopW,EACUu3M,EAAgB,SAAW,SACnB,IAAXv3M,EACGu3M,GAAiBC,GAAW,SAAW,WAC1Cx3M,EAAS,EACNu3M,GAAiBC,GAAW,SAAW,WAEvCD,GAAiBC,GAAW,QAAU,WAE7C5gjB,IACN,IACD,OAAO2gjB,EAAgB,UAAY,cAClC,KACD,OACI3gjB,IADW,IAAXopW,EACUu3M,EAAgB,MAAQ,MAChB,IAAXv3M,EACGu3M,GAAiBC,GAAW,MAAQ,QACvCx3M,EAAS,EACNu3M,GAAiBC,GAAW,MAAQ,QAEpCD,GAAiBC,GAAW,KAAO,QAE1C5gjB,IACN,IACD,OAAO2gjB,GAAiBC,GAAW,SAAW,gBAC7C,KACD,OACI5gjB,IADW,IAAXopW,EACUu3M,GAAiBC,GAAW,MAAQ,OAC5B,IAAXx3M,EACGu3M,GAAiBC,GAAW,MAAQ,UAEpCD,GAAiBC,GAAW,MAAQ,QAE3C5gjB,IACN,IACD,OAAO2gjB,GAAiBC,GAAW,WAAa,mBAC/C,KACD,OACI5gjB,IADW,IAAXopW,EACUu3M,GAAiBC,GAAW,QAAU,UAC9B,IAAXx3M,EACGu3M,GAAiBC,GAAW,SAAW,WAC1Cx3M,EAAS,EACNu3M,GAAiBC,GAAW,SAAW,SAEvCD,GAAiBC,GAAW,UAAY,SAE/C5gjB,IACN,IACD,OAAO2gjB,GAAiBC,GAAW,WAAa,iBAC/C,KACD,OACI5gjB,IADW,IAAXopW,EACUu3M,GAAiBC,GAAW,OAAS,QAC7B,IAAXx3M,EACGu3M,GAAiBC,GAAW,OAAS,SACxCx3M,EAAS,EACNu3M,GAAiBC,GAAW,OAAS,OAErCD,GAAiBC,GAAW,MAAQ,OAI7D,CAEQlC,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,wFAAwFz6C,MAC5F,KAEJyukB,YACI,8DAA8DzukB,MAC1D,KAERyxkB,kBAAkB,EAClB/C,SAAU,2DAAsD1ukB,MAAM,KACtE2ukB,cAAe,0CAAqC3ukB,MAAM,KAC1D4ukB,YAAa,4BAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLx8c,EAAG,eACHy8c,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQvxkB,KAAK89C,OAAL,KACC,EACD,MAAO,6BACN,EACD,MAAO,2BACN,EACD,MAAO,4BACN,OACA,OACA,OACA,EACD,MAAO,mBAElB,EACD0zhB,QAAS,sBACTC,SAAU,WACN,OAAQzxkB,KAAK89C,OAAL,KACC,EACD,MAAO,yCACN,EACD,MAAO,uCACN,EACD,MAAO,wCACN,OACA,OACA,OACA,EACD,MAAO,+BAElB,EACD4zhB,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,UACN7uiB,EAAG0xiB,EACHttO,GAAIstO,EACJtvY,EAAGsvY,EACHn6O,GAAIm6O,EACJhqiB,EAAGgqiB,EACH3ziB,GAAI2ziB,EACJlqiB,EAAGkqiB,EACH9qU,GAAI8qU,EACJhgd,EAAGggd,EACH5C,GAAI4C,EACJpsjB,EAAGosjB,EACH3C,GAAI2C,GAER1C,uBAAwB,YACxBC,QAAS,MACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA/KyCjvkB,CAAQqqd,EAAQ;;;;;;CCKjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,mFAAgFz6C,MACpF,KAEJyukB,YAAa,qDAAkDzukB,MAAM,KACrE0ukB,SAAU,8EAA4D1ukB,MAClE,KAEJ2ukB,cAAe,oCAA8B3ukB,MAAM,KACnD4ukB,YAAa,sBAAmB5ukB,MAAM,KACtC0wkB,oBAAoB,EACpB7B,cAAe,QACfj8X,KAAM,SAAUjkM,GACZ,MAA2B,MAApBA,EAAM3P,OAAO,EACvB,EACD8vkB,SAAU,SAAUl0hB,EAAOC,EAASk0hB,GAChC,OAAOn0hB,EAAQ,GAAK,KAAO,IAC9B,EACDo0hB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,iBACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,mBACN7uiB,EAAG,eACHokU,GAAI,aACJhiK,EAAG,mBACHm1J,GAAI,YACJ7vT,EAAG,gBACH3J,GAAI,YACJyJ,EAAG,iBACHo/N,GAAI,aACJl1I,EAAG,cACHo9c,GAAI,UACJxpjB,EAAG,aACHypjB,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAnEyCjvkB,CAAQqqd,EAAQ;;;;;CCEjD,SAAU+iH,GAAU;kCAIzB;IAAImG,EAAa,CACb5a,MAAO,CAEHz0N,GAAI,CAAC,6CAAW,6CAAW,8CAC3BhiK,EAAG,CAAC,gEAAe,6EACnBm1J,GAAI,CAAC,iCAAS,uCAAU,wCACxB7vT,EAAG,CAAC,oDAAa,iEACjB3J,GAAI,CAAC,qBAAO,2BAAQ,4BACpByJ,EAAG,CAAC,oDAAa,iEACjBo/N,GAAI,CAAC,qBAAO,2BAAQ,4BACpBl1I,EAAG,CAAC,gEAAe,6EACnBo9c,GAAI,CAAC,iCAAS,uCAAU,wCACxBxpjB,EAAG,CAAC,sEAAgB,uEACpBypjB,GAAI,CAAC,uCAAU,uCAAU,yCAE7B2E,uBAAwB,SAAU17M,EAAQ27M,GACtC,OACI37M,EAAS,IAAM,GACfA,EAAS,IAAM,IACdA,EAAS,IAAM,IAAMA,EAAS,KAAO,IAE/BA,EAAS,IAAO,EAAI27M,EAAQ,GAAKA,EAAQ,GAE7CA,EAAQ,EAClB,EACD7mjB,UAAW,SAAUkrW,EAAQu3M,EAAe34iB,EAAK44iB,IAC7C,IACI33V,GADA87V,GAAUF,EAAW5a,MAAMjiiB,GAG/B,OAAmB,IAAfA,EAAIt5B,OAEQ,MAARs5B,GAAe24iB,EAAsB,sEAClCC,IAAYD,EAAgBoE,GAAQ,GAAKA,GAAQ,IAG5D97V,GAAO47V,EAAWC,uBAAuB17M,EAAQ27M,IAErC,OAAR/8iB,GAAgB24iB,GAA0B,yCAAT13V,GAC1BmgJ,EAAS,wCAGbA,EAAS,IAAMngJ,GACzB,GAGQy1V,EAAOC,aAAa,UAAW,CACxC/zhB,OAAQ,4aAAmFz6C,MACvF,KAEJyukB,YACI,+OAA2DzukB,MAAM,KACrEyxkB,kBAAkB,EAClB/C,SAAU,uRAAsD1ukB,MAAM,KACtE2ukB,cAAe,8IAAqC3ukB,MAAM,KAC1D4ukB,YAAa,6FAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLx8c,EAAG,cACHy8c,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVtvY,SAAU,CACNuvY,QAAS,6CACTC,QAAS,6CACTC,SAAU,WACN,OAAQvxkB,KAAK89C,OAAL,KACC,EACD,MAAO,mEACN,EACD,MAAO,6DACN,EACD,MAAO,mEACN,OACA,OACA,OACA,EACD,MAAO,4BAElB,EACD0zhB,QAAS,uCACTC,SAAU,WAUN,MATmB,CACf,4FACA,oHACA,kGACA,sFACA,8GACA,4FACA,6FAEgBzxkB,KAAK89C,MAC5B,EACD4zhB,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACN7uiB,EAAG,8FACHokU,GAAIqvO,EAAW3mjB,UACfs1K,EAAGqxY,EAAW3mjB,UACdyqU,GAAIk8O,EAAW3mjB,UACf4a,EAAG+riB,EAAW3mjB,UACdiR,GAAI01iB,EAAW3mjB,UACf0a,EAAGisiB,EAAW3mjB,UACd85O,GAAI6sU,EAAW3mjB,UACf4kG,EAAG+hd,EAAW3mjB,UACdgijB,GAAI2E,EAAW3mjB,UACfxH,EAAGmujB,EAAW3mjB,UACdiijB,GAAI0E,EAAW3mjB,WAEnBkijB,uBAAwB,YACxBC,QAAS,MACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAlIyCjvkB,CAAQqqd,EAAQ;;;;;CCGjD,SAAU+iH,GAAU;kCAIzB;IAAImG,EAAa,CACb5a,MAAO,CAEHz0N,GAAI,CAAC,UAAW,UAAW,WAC3BhiK,EAAG,CAAC,cAAe,iBACnBm1J,GAAI,CAAC,QAAS,SAAU,UACxB7vT,EAAG,CAAC,YAAa,eACjB3J,GAAI,CAAC,MAAO,OAAQ,QACpByJ,EAAG,CAAC,YAAa,eACjBo/N,GAAI,CAAC,MAAO,OAAQ,QACpBl1I,EAAG,CAAC,cAAe,iBACnBo9c,GAAI,CAAC,QAAS,SAAU,UACxBxpjB,EAAG,CAAC,eAAgB,gBACpBypjB,GAAI,CAAC,SAAU,SAAU,WAE7B2E,uBAAwB,SAAU17M,EAAQ27M,GACtC,OACI37M,EAAS,IAAM,GACfA,EAAS,IAAM,IACdA,EAAS,IAAM,IAAMA,EAAS,KAAO,IAE/BA,EAAS,IAAO,EAAI27M,EAAQ,GAAKA,EAAQ,GAE7CA,EAAQ,EAClB,EACD7mjB,UAAW,SAAUkrW,EAAQu3M,EAAe34iB,EAAK44iB,IAC7C,IACI33V,GADA87V,GAAUF,EAAW5a,MAAMjiiB,GAG/B,OAAmB,IAAfA,EAAIt5B,OAEQ,MAARs5B,GAAe24iB,EAAsB,eAClCC,IAAYD,EAAgBoE,GAAQ,GAAKA,GAAQ,IAG5D97V,GAAO47V,EAAWC,uBAAuB17M,EAAQ27M,IAErC,OAAR/8iB,GAAgB24iB,GAA0B,WAAT13V,GAC1BmgJ,EAAS,UAGbA,EAAS,IAAMngJ,GACzB,GAGIy1V,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,mFAAmFz6C,MACvF,KAEJyukB,YACI,2DAA2DzukB,MAAM,KACrEyxkB,kBAAkB,EAClB/C,SAAU,6DAAwD1ukB,MAC9D,KAEJ2ukB,cAAe,0CAAqC3ukB,MAAM,KAC1D4ukB,YAAa,4BAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLx8c,EAAG,cACHy8c,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVtvY,SAAU,CACNuvY,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQvxkB,KAAK89C,OAAL,KACC,EACD,MAAO,4BACN,EACD,MAAO,0BACN,EACD,MAAO,2BACN,OACA,OACA,OACA,EACD,MAAO,kBAElB,EACD0zhB,QAAS,mBACTC,SAAU,WAUN,MATmB,CACf,iCACA,qCACA,iCACA,+BACA,wCACA,gCACA,iCAEgBzxkB,KAAK89C,MAC5B,EACD4zhB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7uiB,EAAG,mBACHokU,GAAIqvO,EAAW3mjB,UACfs1K,EAAGqxY,EAAW3mjB,UACdyqU,GAAIk8O,EAAW3mjB,UACf4a,EAAG+riB,EAAW3mjB,UACdiR,GAAI01iB,EAAW3mjB,UACf0a,EAAGisiB,EAAW3mjB,UACd85O,GAAI6sU,EAAW3mjB,UACf4kG,EAAG+hd,EAAW3mjB,UACdgijB,GAAI2E,EAAW3mjB,UACfxH,EAAGmujB,EAAW3mjB,UACdiijB,GAAI0E,EAAW3mjB,WAEnBkijB,uBAAwB,YACxBC,QAAS,MACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CApIyCjvkB,CAAQqqd,EAAQ;;;;CCEjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,mHAAmHz6C,MACvH,KAEJyukB,YAAa,kDAAkDzukB,MAAM,KACrE0ukB,SACI,sEAAsE1ukB,MAClE,KAER2ukB,cAAe,8BAA8B3ukB,MAAM,KACnD4ukB,YAAa,uBAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVtvY,SAAU,CACNuvY,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACN7uiB,EAAG,qBACHokU,GAAI,cACJhiK,EAAG,SACHm1J,GAAI,aACJ7vT,EAAG,SACH3J,GAAI,aACJyJ,EAAG,UACHo/N,GAAI,cACJl1I,EAAG,UACHo9c,GAAI,cACJxpjB,EAAG,UACHypjB,GAAI,eAERnB,cAAe,mCACfC,SAAU,SAAUl0hB,EAAOC,EAASk0hB,GAChC,OAAIn0hB,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,SAEd,EACD22hB,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,YAAby5Z,EACOz5Z,EACa,UAAby5Z,EACAz5Z,GAAQ,GAAKA,EAAOA,EAAO,GACd,eAAby5Z,GAA0C,YAAbA,EACvB,IAATz5Z,EACO,EAEJA,EAAO,QAJX,CAMV,EACD46Z,uBAAwB,UACxBC,QAAS,KACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAxFyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,wFAAwFz6C,MAC5F,KAEJyukB,YAAa,kDAAkDzukB,MAAM,KACrE0ukB,SAAU,6DAAoD1ukB,MAAM,KACpE2ukB,cAAe,uCAA8B3ukB,MAAM,KACnD4ukB,YAAa,gCAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNoD,IAAK,mBACLC,KAAM,wBAEV3yY,SAAU,CACNuvY,QAAS,YACTC,QAAS,eACTE,QAAS,eACTD,SAAU,kBACVE,SAAU,iBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,kBACN7uiB,EAAG,oBACHokU,GAAI,cACJhiK,EAAG,WACHm1J,GAAI,aACJ7vT,EAAG,WACH3J,GAAI,YACJyJ,EAAG,SACHo/N,GAAI,WACJl1I,EAAG,cACHo9c,GAAI,gBACJxpjB,EAAG,YACHypjB,GAAI,YAERC,uBAAwB,mBACxBC,QAAS,SAAUj3M,GACf,IAAIjjW,EAAIijW,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANjjW,GAEM,IAANA,EADA,KAIA,KAGjB,EACDsyJ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAxEyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,sFAAsFz6C,MAC1F,KAEJyukB,YAAa,kDAAkDzukB,MAAM,KACrE0ukB,SACI,8DAA8D1ukB,MAC1D,KAER2ukB,cAAe,kCAAkC3ukB,MAAM,KACvD4ukB,YAAa,uBAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,UACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACN7uiB,EAAG,aACHokU,GAAI,aACJhiK,EAAG,cACHm1J,GAAI,YACJ7vT,EAAG,aACH3J,GAAI,WACJyJ,EAAG,YACHo/N,GAAI,UACJl1I,EAAG,cACHo9c,GAAI,WACJxpjB,EAAG,cACHypjB,GAAI,YAER1nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA3DyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIzB;IAAIqC,EAAY,CACR,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEPE,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJvC,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,sdAA0Fz6C,MAC9F,KAEJyukB,YACI,sdAA0FzukB,MACtF,KAER0ukB,SACI,ugBAA8F1ukB,MAC1F,KAER2ukB,cAAe,qQAAmD3ukB,MAC9D,KAEJ4ukB,YAAa,uFAAsB5ukB,MAAM,KACzCgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVtvY,SAAU,CACNuvY,QAAS,sCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,2EACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,8BACN7uiB,EAAG,+FACHokU,GAAI,4DACJhiK,EAAG,gEACHm1J,GAAI,kEACJ7vT,EAAG,uEACH3J,GAAI,uDACJyJ,EAAG,8CACHo/N,GAAI,gDACJl1I,EAAG,oDACHo9c,GAAI,sDACJxpjB,EAAG,0DACHypjB,GAAI,uDAERC,uBAAwB,4BACxBC,QAAS,SAAUj3M,GACf,OAAOA,EAAS,oBACnB,EACD43M,SAAU,SAAU1uU,GAChB,OAAOA,EAAO7jQ,QAAQ,kEAAiB,SAAUwyB,GAC7C,OAAOggjB,EAAUhgjB,EACpB,EACJ,EACD6/iB,WAAY,SAAUxuU,GAClB,OAAOA,EAAO7jQ,QAAQ,MAAO,SAAUwyB,GACnC,OAAO8/iB,EAAU9/iB,EACpB,EACJ,EAED+9iB,cAAe,wMACfC,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,IAC9B,OAAI15Z,EAAO,EACA,kCACAA,EAAO,EACP,kCACAA,EAAO,GACP,4BACAA,EAAO,GACP,8CACAA,EAAO,GACP,8CACAA,EAAO,GACP,4BAEA,iCAEd,EACDk8Z,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,mCAAby5Z,EACOz5Z,EAAO,EAAIA,EAAOA,EAAO,GACZ,mCAAby5Z,GAAqC,6BAAbA,GAEX,+CAAbA,GACAz5Z,GAAQ,GAFRA,EAIAA,EAAO,EAErB,EACDiT,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAvIyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,0cAAwFz6C,MAC5F,KAEJyukB,YACI,oSAAmEzukB,MAC/D,KAERyxkB,kBAAkB,EAClB/C,SACI,uUAA8D1ukB,MAC1D,KAER2ukB,cAAe,+JAAkC3ukB,MAAM,KACvD4ukB,YAAa,iFAAqB5ukB,MAAM,KACxCgvkB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVtvY,SAAU,CACNuvY,QAAS,gCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,0CACN7uiB,EAAG,kFACHokU,GAAI,gDACJhiK,EAAG,oDACHm1J,GAAI,sDACJ7vT,EAAG,kCACH3J,GAAI,oCACJyJ,EAAG,wCACHo/N,GAAI,0CACJl1I,EAAG,kCACHo9c,GAAI,oCACJxpjB,EAAG,gEACHypjB,GAAI,mEAERC,uBAAwB,gBACxBC,QAAS,WACTrB,cAAe,wKACf0C,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,yCAAby5Z,EACOz5Z,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAby5Z,EACAz5Z,EACa,2DAAby5Z,EACAz5Z,GAAQ,GAAKA,EAAOA,EAAO,GACd,qDAAby5Z,EACAz5Z,EAAO,QADX,CAGV,EACDy5Z,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,GAC9B,OAAI15Z,EAAO,EACA,uCACAA,EAAO,GACP,2BACAA,EAAO,GACP,yDACAA,EAAO,GACP,mDAEA,sCAEd,EACDiT,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA5FyCjvkB,CAAQqqd,EAAQ;;;;;;CCKjD,SAAU+iH,GAAU;kCAIfA;EAAOC,aAAa,MAAO,CACjC/zhB,OAAQ,6FAA0Fz6C,MAC9F,KAEJyukB,YAAa,kDAAkDzukB,MAAM,KACrE0ukB,SAAU,kDAAkD1ukB,MAAM,KAClE2ukB,cAAe,iCAAiC3ukB,MAAM,KACtD4ukB,YAAa,yBAAyB5ukB,MAAM,KAC5CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN7uiB,EAAG,gBACHokU,GAAI,aACJhiK,EAAG,aACHm1J,GAAI,YACJ7vT,EAAG,WACH3J,GAAI,UACJyJ,EAAG,YACHo/N,GAAI,WACJl1I,EAAG,YACHo9c,GAAI,WACJxpjB,EAAG,YACHypjB,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUj3M,GACf,IAAIjjW,EAAIijW,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANjjW,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAEjB,EACDsyJ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAtEyCjvkB,CAAQqqd,EAAQ;;;;CCCjD,SAAU+iH,GAAU;kCAIzB;IAAInoM,EAAW,CACX,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,IAAK,iBAGAmoM,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,CACJrN,OAAQ,wbAAqFptC,MACzF,KAEJ6qa,WACI,gXAAyE7qa,MACrE,MAGZyukB,YAAa,sOAAkDzukB,MAAM,KACrE0ukB,SAAU,ySAAyD1ukB,MAC/D,KAEJ2ukB,cAAe,uIAA8B3ukB,MAAM,KACnD4ukB,YAAa,6FAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,qEACTC,QAAS,qEACTE,QAAS,qEACTD,SAAU,uHACVE,SAAU,mIACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,oCACRC,KAAM,wBACN7uiB,EAAG,sEACHoiK,EAAG,oDACHm1J,GAAI,0CACJ7vT,EAAG,wCACH3J,GAAI,8BACJyJ,EAAG,kCACHo/N,GAAI,wBACJl1I,EAAG,kCACHo9c,GAAI,wBACJxpjB,EAAG,kCACHypjB,GAAI,yBAERnB,cAAe,gGACf0C,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,uBAAby5Z,EACOz5Z,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAby5Z,EACAz5Z,EACa,uBAAby5Z,EACAz5Z,GAAQ,GAAKA,EAAOA,EAAO,GACd,mCAAby5Z,EACAz5Z,EAAO,QADX,CAGV,EACDy5Z,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,GAC9B,OAAI15Z,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,qBACAA,EAAO,GACP,iCAEA,oBAEd,EACD46Z,uBAAwB,sCACxBC,QAAS,SAAUj3M,GACf,IAAI79V,EAAI69V,EAAS,GACbjjW,EAAIijW,GAAU,IAAM,IAAM,KAC9B,OAAOA,GAAUmN,EAASnN,IAAWmN,EAAShrW,IAAMgrW,EAASpwW,GAChE,EACDsyJ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAzHyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,khBAAoGz6C,MACxG,KAEJyukB,YACI,wMAAiEzukB,MAC7D,KAERyxkB,kBAAkB,EAClB/C,SAAU,yPAAiD1ukB,MAAM,KACjE2ukB,cAAe,uOAA8C3ukB,MAAM,KACnE4ukB,YAAa,sEAAyB5ukB,MAAM,KAC5C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,4CACLC,KAAM,sFAEVR,cAAe,4HACfj8X,KAAM,SAAUjkM,GACZ,MAAiB,iEAAVA,CACV,EACDmgkB,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,GAC9B,OAAI15Z,EAAO,GACA,+DAEA,8DAEd,EACD0qB,SAAU,CACNuvY,QAAS,qEACTC,QAAS,iFACTC,SAAU,6DACVC,QAAS,mGACTC,SAAU,mGACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,+CACN7uiB,EAAG,2EACHokU,GAAI,0CACJhiK,EAAG,6BACHm1J,GAAI,8BACJ7vT,EAAG,+CACH3J,GAAI,gDACJyJ,EAAG,uBACHo/N,GAAI,wBACJh2I,EAAG,+CACHu/c,GAAI,gDACJz+c,EAAG,mCACHo9c,GAAI,oCACJxpjB,EAAG,iBACHypjB,GAAI,oBAMf,CArEyC7ukB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIzB;IAAInoM,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,WACH,EAAG,WACH,IAAK,WACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCmoM,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,oGAA+Ez6C,MACnF,KAEJyukB,YAAa,iEAAkDzukB,MAAM,KACrE0ukB,SAAU,4FAAwD1ukB,MAC9D,KAEJ2ukB,cAAe,mDAA8B3ukB,MAAM,KACnD4ukB,YAAa,4CAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,sBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,kBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,gBACN7uiB,EAAG,uBACHoiK,EAAG,YACHm1J,GAAI,WACJ7vT,EAAG,YACH3J,GAAI,WACJyJ,EAAG,aACHo/N,GAAI,YACJl1I,EAAG,YACHo9c,GAAI,WACJxpjB,EAAG,aACHypjB,GAAI,aAERE,QAAS,SAAUj3M,EAAQk4M,GACvB,OAAQA,OACC,QACA,QACA,SACA,KACD,OAAOl4M,UAEP,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI79V,EAAI69V,EAAS,GACbjjW,GAAKijW,EAAS,IAAO79V,EACrB57B,GAAIy5X,GAAU,IAAM,IAAM,KAC9B,OAAOA,GAAUmN,EAAShrW,IAAMgrW,EAASpwW,KAAMowW,EAAS5mY,KAEnE,EACD8oL,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA/FyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIdA;EAAOC,aAAa,QAAS,CACpC/zhB,OAAQ,0FAA0Fz6C,MAC9F,KAEJyukB,YAAa,kDAAkDzukB,MAAM,KACrE0ukB,SAAU,yDAAyD1ukB,MAC/D,KAEJ2ukB,cAAe,8BAA8B3ukB,MAAM,KACnD4ukB,YAAa,wBAAwB5ukB,MAAM,KAC3CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,YACHy8c,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVtvY,SAAU,CACNuvY,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACN7uiB,EAAG,gBACHokU,GAAI,aACJhiK,EAAG,eACHm1J,GAAI,YACJ7vT,EAAG,aACH3J,GAAI,UACJyJ,EAAG,aACHo/N,GAAI,UACJl1I,EAAG,cACHo9c,GAAI,WACJxpjB,EAAG,aACHypjB,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUj3M,GACf,OAAOA,CACV,EACD3wM,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA7DyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIzB;IAAIyG,EAAe,2DAAiDh1kB,MAAM,KAE1E,SAASi1kB,EAAgB52kB,IACrB,IAAI2iC,GAAO3iC,GACX2iC,WAC8B,IAA1B3iC,GAAOa,QAAQ,OACT8hC,GAAKrhC,MAAM,GAAG,GAAM,OACM,IAA1BtB,GAAOa,QAAQ,OACf8hC,GAAKrhC,MAAM,GAAG,GAAM,OACM,IAA1BtB,GAAOa,QAAQ,OACf8hC,GAAKrhC,MAAM,GAAG,GAAM,MACpBqhC,GAAO,MAEpB,CAED,SAASk0iB,EAAc72kB,IACnB,IAAI2iC,GAAO3iC,GACX2iC,WAC8B,IAA1B3iC,GAAOa,QAAQ,OACT8hC,GAAKrhC,MAAM,GAAG,GAAM,YACM,IAA1BtB,GAAOa,QAAQ,OACf8hC,GAAKrhC,MAAM,GAAG,GAAM,OACM,IAA1BtB,GAAOa,QAAQ,OACf8hC,GAAKrhC,MAAM,GAAG,GAAM,MACpBqhC,GAAO,MAEpB,CAED,SAASjT,EAAUkrW,GAAQu3M,GAAeruU,GAAQsuU,IAC9C,IAAI0E,GAAaC,EAAan8M,IAC9B,OAAQ92H,QACC,KACD,OAAOgzU,GAAa,WACnB,KACD,OAAOA,GAAa,WACnB,KACD,OAAOA,GAAa,WACnB,KACD,OAAOA,GAAa,WACnB,KACD,OAAOA,GAAa,WACnB,KACD,OAAOA,GAAa,OAE/B,CAED,SAASC,EAAan8M,IAClB,IAAIo8M,GAAU1ijB,KAAKI,MAAOkmW,GAAS,IAAQ,KACvCq8M,GAAM3ijB,KAAKI,MAAOkmW,GAAS,IAAO,IAClCp2S,GAAMo2S,GAAS,GACfngJ,GAAO,GACX,OAAIu8V,GAAU,IACVv8V,IAAQk8V,EAAaK,IAAW,SAEhCC,GAAM,IACNx8V,KAAkB,KAATA,GAAc,IAAM,IAAMk8V,EAAaM,IAAO,OAEvDzyf,GAAM,IACNi2J,KAAkB,KAATA,GAAc,IAAM,IAAMk8V,EAAanyf,KAEpC,KAATi2J,GAAc,OAASA,EACjC,CAESy1V,EAAOC,aAAa,MAAO,CACjC/zhB,OAAQ,iSAAkMz6C,MACtM,KAEJyukB,YACI,6JAA0HzukB,MACtH,KAERyxkB,kBAAkB,EAClB/C,SAAU,2DAA2D1ukB,MACjE,KAEJ2ukB,cACI,2DAA2D3ukB,MAAM,KACrE4ukB,YACI,2DAA2D5ukB,MAAM,KACrEgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,cACTC,QAAS,mBACTC,SAAU,MACVC,QAAS,wBACTC,SAAU,MACVC,SAAU,KAEdC,aAAc,CACVC,OAAQoF,EACRnF,KAAMoF,EACNj0iB,EAAG,UACHokU,GAAIt3U,EACJs1K,EAAG,eACHm1J,GAAIzqU,EACJ4a,EAAG,eACH3J,GAAIjR,EACJ0a,EAAG,eACHo/N,GAAI95O,EACJ4kG,EAAG,eACHo9c,GAAIhijB,EACJxH,EAAG,eACHypjB,GAAIjijB,GAERkijB,uBAAwB,YACxBC,QAAS,MACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAhIyCjvkB,CAAQqqd,EAAQ;;;;;CCIjD,SAAU+iH,GAAU;kCAIzB;IAAInoM,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,cACH,EAAG,cACH,IAAK,cACL,EAAG,YACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,kBACJ,GAAI,mBAGCmoM,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,yGAA6Ez6C,MACjF,KAEJyukB,YAAa,4DAAkDzukB,MAAM,KACrE0ukB,SAAU,0EAAwD1ukB,MAC9D,KAEJ2ukB,cAAe,iCAA8B3ukB,MAAM,KACnD4ukB,YAAa,0BAAuB5ukB,MAAM,KAC1C8ukB,SAAU,SAAUl0hB,EAAOC,EAASk0hB,GAChC,OAAIn0hB,EAAQ,GACDm0hB,EAAU,WAAO,WAEjBA,EAAU,QAAO,OAE/B,EACDF,cAAe,gCACfj8X,KAAM,SAAUjkM,GACZ,MAAiB,UAAVA,GAA4B,UAAVA,CAC5B,EACDqgkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,qBACTC,QAAS,uBACTC,SAAU,2BACVC,QAAS,cACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,aACN7uiB,EAAG,mBACHokU,GAAI,YACJhiK,EAAG,aACHm1J,GAAI,YACJ7vT,EAAG,WACH3J,GAAI,UACJyJ,EAAG,aACHo/N,GAAI,YACJh2I,EAAG,YACHu/c,GAAI,WACJz+c,EAAG,SACHo9c,GAAI,QACJxpjB,EAAG,eACHypjB,GAAI,eAERE,QAAS,SAAUj3M,EAAQk4M,GACvB,OAAQA,OACC,QACA,QACA,SACA,KACD,OAAOl4M,UAEP,GAAe,IAAXA,EAEA,OAAOA,EAAS,kBAEpB,IAAI79V,EAAI69V,EAAS,GACbjjW,GAAKijW,EAAS,IAAO79V,EACrB57B,GAAIy5X,GAAU,IAAM,IAAM,KAC9B,OAAOA,GAAUmN,EAAShrW,IAAMgrW,EAASpwW,KAAMowW,EAAS5mY,KAEnE,EACD8oL,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA7GyCjvkB,CAAQqqd,EAAQ;;;;;CCGjD,SAAU+iH,GAAU;kCAiEzB;SAASoE,EAAoB15M,EAAQu3M,EAAe34iB,EAAK44iB,IACrD,IAAIrjiB,GAAS,CACTnM,EAAG,CAAC,kBAAmB,mBACvBokU,GAAI,CAAC4zB,EAAS,WAAiBA,EAAS,YACxC51L,EAAG,CAAC,aAAW,iBACfm1J,GAAI,CAACygC,EAAS,YAAeA,EAAS,aACtCtwV,EAAG,CAAC,aAAW,kBACf3J,GAAI,CAACi6V,EAAS,YAAeA,EAAS,aACtCxwV,EAAG,CAAC,UAAW,eACfo/N,GAAI,CAACoxH,EAAS,SAAeA,EAAS,UACtCtmQ,EAAG,CAAC,SAAU,aACdo9c,GAAI,CAAC92M,EAAS,SAAeA,EAAS,UACtC1yW,EAAG,CAAC,QAAS,YACbypjB,GAAI,CAAC/2M,EAAS,OAAaA,EAAS,SAExC,OAAOw3M,IAEDD,EADApjiB,GAAOvV,GAAK,GAGZuV,GAAOvV,GAAK,EACrB,CA/ES02iB,EAAOC,aAAa,MAAO,CACjC/zhB,OAAQ,kGAAsFz6C,MAC1F,KAEJyukB,YAAa,qDAAkDzukB,MAAM,KACrE0ukB,SAAU,8EAAsD1ukB,MAAM,KACtE2ukB,cAAe,gDAA8B3ukB,MAAM,KACnD4ukB,YAAa,mCAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVR,cAAe,aACfj8X,KAAM,SAAUjkM,GACZ,MAAO,QAAUA,EAAMqK,aAC1B,EACD81jB,SAAU,SAAUl0hB,EAAOC,EAASk0hB,GAChC,OAAIn0hB,EAAQ,GACDm0hB,EAAU,MAAQ,MAElBA,EAAU,MAAQ,KAEhC,EACDhvY,SAAU,CACNuvY,QAAS,iBACTC,QAAS,oBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,OACN7uiB,EAAG0xiB,EACHttO,GAAIstO,EACJtvY,EAAGsvY,EACHn6O,GAAIm6O,EACJhqiB,EAAGgqiB,EACH3ziB,GAAI2ziB,EACJlqiB,EAAGkqiB,EACH9qU,GAAI8qU,EACJhgd,EAAGggd,EACH5C,GAAI4C,EACJpsjB,EAAGosjB,EACH3C,GAAI2C,GAER1C,uBAAwB,YACxBC,QAAS,MACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IA4BhB,CA5FyCjvkB,CAAQqqd,EAAQ;;;;CCEjD,SAAU+iH,GAAU;kCAIXA;EAAOC,aAAa,WAAY,CAC1C/zhB,OAAQ,qIAAwFz6C,MAC5F,KAEJyukB,YACI,qIAAwFzukB,MACpF,KAER0ukB,SAAU,uDAAkD1ukB,MAAM,KAClE2ukB,cAAe,uDAAkD3ukB,MAAM,KACvE4ukB,YAAa,uDAAkD5ukB,MAAM,KACrEgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVtvY,SAAU,CACNuvY,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACN7uiB,EAAG,OACHokU,GAAI,UACJhiK,EAAG,aACHm1J,GAAI,gBACJ7vT,EAAG,YACH3J,GAAI,mBACJyJ,EAAG,MACHo/N,GAAI,WACJl1I,EAAG,QACHo9c,GAAI,YACJxpjB,EAAG,QACHypjB,GAAI,aAER1nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,KAMhB,CA1DyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIfA;EAAOC,aAAa,MAAO,CACjC/zhB,OAAQ,saAAkFz6C,MACtF,KAEJyukB,YACI,saAAkFzukB,MAC9E,KAER0ukB,SAAU,+PAAkD1ukB,MAAM,KAClE2ukB,cAAe,+PAAkD3ukB,MAAM,KACvE4ukB,YAAa,+PAAkD5ukB,MAAM,KACrEgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVtvY,SAAU,CACNuvY,QAAS,uCACTC,QAAS,uCACTC,SAAU,mBACVC,QAAS,6CACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wDACRC,KAAM,wBACN7uiB,EAAG,2BACHokU,GAAI,8BACJhiK,EAAG,iCACHm1J,GAAI,oCACJ7vT,EAAG,2BACH3J,GAAI,sDACJyJ,EAAG,qBACHo/N,GAAI,+BACJl1I,EAAG,4BACHo9c,GAAI,0CACJxpjB,EAAG,iCACHypjB,GAAI,2CAER1nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,KAMhB,CA1DyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIdA;EAAOC,aAAa,QAAS,CACpC/zhB,OAAQ,8bAAsFz6C,MAC1F,KAEJyukB,YACI,8bAAsFzukB,MAClF,KAER0ukB,SAAU,ySAAyD1ukB,MAC/D,KAEJ2ukB,cAAe,6FAAuB3ukB,MAAM,KAC5C4ukB,YAAa,6FAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,gGACJC,IAAK,4GACLC,KAAM,wHAEVR,cAAe,uQACf0C,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAGM,4DAAby5Z,GACa,mCAAbA,GACa,wEAAbA,EAEOz5Z,EACa,wEAAby5Z,GAA4C,uBAAbA,EAC/Bz5Z,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,EAEzC,EACDy5Z,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,GAC9B,IAAI/rM,EAAY,IAAP3tN,EAAa27B,EACtB,OAAIgyL,EAAK,IACE,0DACAA,EAAK,IACL,iCACAA,EAAK,KACL,sEACAA,EAAK,KACL,qBACAA,EAAK,KACL,sEAEA,oBAEd,EACDjjM,SAAU,CACNuvY,QAAS,qEACTC,QAAS,+DACTC,SAAU,wFACVC,QAAS,kDACTC,SAAU,8FACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,oCACRC,KAAM,oCACN7uiB,EAAG,sEACHokU,GAAI,0CACJhiK,EAAG,oDACHm1J,GAAI,oCACJ7vT,EAAG,oDACH3J,GAAI,oCACJyJ,EAAG,wCACHo/N,GAAI,wBACJl1I,EAAG,wCACHo9c,GAAI,wBACJxpjB,EAAG,wCACHypjB,GAAI,yBAGRC,uBAAwB,yFACxBC,QAAS,SAAUj3M,EAAQk4M,GACvB,OAAQA,OACC,QACA,QACA,MACD,OAAOl4M,EAAS,gCACf,QACA,IACD,OAAOA,EAAS,0CAEhB,OAAOA,EAElB,EACD43M,SAAU,SAAU1uU,GAChB,OAAOA,EAAO7jQ,QAAQ,UAAM,IAC/B,EACDqykB,WAAY,SAAUxuU,GAClB,OAAOA,EAAO7jQ,QAAQ,KAAM,SAC/B,EACDgqL,KAAM,CAEF6nZ,IAAK,EACLC,IAAK,IAMhB,CAnHyCjvkB,CAAQqqd,EAAQ;;;;;CCIjD,SAAU+iH,GAAU;kCAIzB;SAASwC,EAAOj4V,GAAMx3E,IAClB,IAAI0va,GAAQl4V,GAAK94O,MAAM,KACvB,OAAOshK,GAAM,IAAO,GAAKA,GAAM,KAAQ,GACjC0va,GAAM,GACN1va,GAAM,IAAM,GAAKA,GAAM,IAAM,IAAMA,GAAM,IAAM,IAAMA,GAAM,KAAO,IAClE0va,GAAM,GACNA,GAAM,EACf,CACD,SAASC,EAAuBh4M,GAAQu3M,GAAe34iB,IASnD,MAAY,MAARA,GACO24iB,GAAgB,6CAAY,6CACpB,MAAR34iB,GACA24iB,GAAgB,uCAAW,uCAE3Bv3M,GAAS,IAAM83M,EAbb,CACT1rO,GAAImrO,GAAgB,6HAA2B,6HAC/Ch4O,GAAIg4O,GAAgB,6HAA2B,6HAC/CxxiB,GAAIwxiB,GAAgB,2GAAwB,2GAC5C3oU,GAAI,uEACJkoU,GAAI,uHACJC,GAAI,8EAOgCn4iB,KAAOohW,GAElD,CACD,SAASs8M,EAAoBlyY,GAAGj2J,IAC5B,IAAIshiB,GAAW,CACP8G,WACI,+SAA0Dx1kB,MACtD,KAERy1kB,WACI,+SAA0Dz1kB,MACtD,KAER01kB,SACI,2TAA4D11kB,MACxD,MAKhB,OAAU,IAANqjM,GACOqrY,GAAS8G,WACX71kB,MAAM,EAAG,GACTokB,OAAO2qjB,GAAS8G,WAAc71kB,MAAM,EAAG,IAE3C0jM,GASEqrY,GALI,yCAAqB/rkB,KAAKyqC,IAC/B,aACA,sHAAsCzqC,KAAKyqC,IAC3C,WACA,cACoBi2J,GAAEtnJ,OARjB2yhB,GAAS8G,UASvB,CACD,SAASG,EAAqBv3kB,IAC1B,OAAO,WACH,OAAOA,GAAM,UAAwB,KAAjBH,KAAK28C,QAAiB,SAAM,IAAM,MACzD,CACJ,CAEQ2zhB,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,CACJrN,OAAQ,gdAAyFptC,MAC7F,KAEJ6qa,WACI,ggBAAiG7qa,MAC7F,MAGZyukB,YAAa,gRAAyDzukB,MAClE,KAEJ0ukB,SAAU6G,EACV5G,cAAe,6FAAuB3ukB,MAAM,KAC5C4ukB,YAAa,6FAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,sBACJC,IAAK,6BACLC,KAAM,oCAEVtvY,SAAU,CACNuvY,QAASqG,EAAqB,sDAC9BpG,QAASoG,EAAqB,0CAC9BlG,QAASkG,EAAqB,oCAC9BnG,SAAUmG,EAAqB,mBAC/BjG,SAAU,WACN,OAAQzxkB,KAAK89C,OAAL,KACC,OACA,OACA,OACA,EACD,OAAO45hB,EAAqB,uDAAoBp2kB,KAAKtB,MAA9C,KACN,OACA,OACA,EACD,OAAO03kB,EAAqB,6DAAqBp2kB,KAAKtB,MAEjE,EACD0xkB,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,8BACN7uiB,EAAG,wFACHokU,GAAI4rO,EACJ5tY,EAAG4tY,EACHz4O,GAAIy4O,EACJtoiB,EAAG,uCACH3J,GAAIiyiB,EACJxoiB,EAAG,2BACHo/N,GAAIopU,EACJt+c,EAAG,uCACHo9c,GAAIkB,EACJ1qjB,EAAG,qBACHypjB,GAAIiB,GAGRpC,cAAe,kHACfj8X,KAAM,SAAUjkM,IACZ,MAAO,8DAAiBhM,KAAKgM,GAChC,EACDmgkB,SAAU,SAAUz5Z,GAAM27B,GAAQ+9X,IAC9B,OAAI15Z,GAAO,EACA,2BACAA,GAAO,GACP,iCACAA,GAAO,GACP,qBAEA,sCAEd,EACD46Z,uBAAwB,gCACxBC,QAAS,SAAUj3M,GAAQk4M,IACvB,OAAQA,QACC,QACA,QACA,UACA,QACA,IACD,OAAOl4M,GAAS,cACf,IACD,OAAOA,GAAS,wBAEhB,OAAOA,GAElB,EACD3wM,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA1KyCjvkB,CAAQqqd,EAAQ;;;;;CCGjD,SAAU+iH,GAAU;kCAIzB;IAAI9zhB,EAAS,CACL,iCACA,iCACA,2BACA,iCACA,qBACA,qBACA,uCACA,2BACA,iCACA,uCACA,iCACA,kCAEJE,EAAO,CAAC,iCAAS,qBAAO,2BAAQ,qBAAO,uCAAU,2BAAQ,4BAEpD4zhB,EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQA,EACRg0hB,YAAah0hB,EACbi0hB,SAAU/zhB,EACVg0hB,cAAeh0hB,EACfi0hB,YAAaj0hB,EACbq0hB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,gCAEVR,cAAe,wCACfj8X,KAAM,SAAUjkM,GACZ,MAAO,uBAAUA,CACpB,EACDmgkB,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,IAC9B,OAAI15Z,EAAO,GACA,qBAEJ,oBACV,EACD0qB,SAAU,CACNuvY,QAAS,6CACTC,QAAS,6CACTC,SAAU,qCACVC,QAAS,kFACTC,SAAU,sEACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACN7uiB,EAAG,oDACHokU,GAAI,oCACJhiK,EAAG,wCACHm1J,GAAI,wBACJ7vT,EAAG,oDACH3J,GAAI,oCACJyJ,EAAG,kCACHo/N,GAAI,kBACJl1I,EAAG,wCACHo9c,GAAI,wBACJxpjB,EAAG,wCACHypjB,GAAI,yBAERa,SAAU,SAAU1uU,GAChB,OAAOA,EAAO7jQ,QAAQ,UAAM,IAC/B,EACDqykB,WAAY,SAAUxuU,GAClB,OAAOA,EAAO7jQ,QAAQ,KAAM,SAC/B,EACDgqL,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CArFyCjvkB,CAAQqqd,EAAQ;;;;CCEjD,SAAU+iH,GAAU;kCAIZA;EAAOC,aAAa,UAAW,CACxC/zhB,OAAQ,6EAA6Ez6C,MACjF,KAEJyukB,YAAa,oDAAoDzukB,MAAM,KACvE0ukB,SACI,+DAA+D1ukB,MAC3D,KAER2ukB,cAAe,kCAAkC3ukB,MAAM,KACvD4ukB,YAAa,yBAAyB5ukB,MAAM,KAC5CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACN7uiB,EAAG,SACHokU,GAAI,YACJhiK,EAAG,aACHm1J,GAAI,YACJ7vT,EAAG,WACH3J,GAAI,UACJyJ,EAAG,UACHo/N,GAAI,SACJl1I,EAAG,SACHo9c,GAAI,QACJxpjB,EAAG,UACHypjB,GAAI,UAER1nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA1DyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,gXAAyEz6C,MAC7E,KAEJyukB,YAAa,sOAAkDzukB,MAAM,KACrE0ukB,SAAU,6RAAuD1ukB,MAAM,KACvE2ukB,cAAe,uIAA8B3ukB,MAAM,KACnD4ukB,YAAa,6FAAuB5ukB,MAAM,KAC1CgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,8EACTC,QAAS,2DACTC,SAAU,6EACVC,QAAS,wEACTC,SAAU,8GACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,6DACRC,KAAM,gFACN7uiB,EAAG,uCACHokU,GAAI,0CACJhiK,EAAG,0DACHm1J,GAAI,0CACJ7vT,EAAG,8CACH3J,GAAI,8BACJyJ,EAAG,wCACHo/N,GAAI,wBACJl1I,EAAG,kCACHo9c,GAAI,kBACJxpjB,EAAG,wCACHypjB,GAAI,yBAER1nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAvDyCjvkB,CAAQqqd,EAAQ;;;;;CCIjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,yIAAqGz6C,MACzG,KAEJyukB,YACI,sFAAsFzukB,MAClF,KAERyxkB,kBAAkB,EAClB/C,SAAU,mHAAyD1ukB,MAC/D,KAEJ2ukB,cAAe,uBAAuB3ukB,MAAM,KAC5C4ukB,YAAa,uBAAuB5ukB,MAAM,KAC1C0wkB,oBAAoB,EACpB7B,cAAe,SACfj8X,KAAM,SAAUjkM,GACZ,MAAO,QAAQhM,KAAKgM,EACvB,EACDmgkB,SAAU,SAAUl0hB,EAAOC,EAASk0hB,GAChC,OAAIn0hB,EAAQ,GACDm0hB,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAE/B,EACDC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,yBACJC,IAAK,+BACLC,KAAM,qCACN7ie,EAAG,YACHg1P,GAAI,aACJixO,IAAK,mBACLC,KAAM,yBAEV3yY,SAAU,CACNuvY,QAAS,yBACTC,QAAS,0BACTC,SAAU,sCACVC,QAAS,yBACTC,SAAU,6CACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,qBACN7uiB,EAAG,iBACHokU,GAAI,aACJhiK,EAAG,mBACHm1J,GAAI,aACJ7vT,EAAG,oBACH3J,GAAI,cACJyJ,EAAG,mBACHo/N,GAAI,aACJh2I,EAAG,qBACHu/c,GAAI,eACJz+c,EAAG,oBACHo9c,GAAI,cACJxpjB,EAAG,oBACHypjB,GAAI,eAERC,uBAAwB,UACxBC,QAAS,SAAUj3M,GACf,OAAOA,CACV,EACD3wM,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAnFyCjvkB,CAAQqqd,EAAQ;;;;CCEjD,SAAU+iH,GAAU;kCAIXA;EAAOC,aAAa,WAAY,CAC1C/zhB,OAAQ,sNAA6Gz6C,MACjH,KAEJyukB,YACI,iHAA8DzukB,MAC1D,KAERyxkB,kBAAkB,EAClB/C,SACI,0JAAyE1ukB,MACrE,KAER2ukB,cAAe,mEAAqC3ukB,MAAM,KAC1D4ukB,YAAa,2CAA4B5ukB,MAAM,KAC/C0wkB,oBAAoB,EACpB1B,eAAgB,CACZC,GAAI,QACJv8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVtvY,SAAU,CACNuvY,QAAS,8BACTC,QAAS,kCACTC,SAAU,kBACVC,QAAS,yCACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,eACRC,KAAM,gBACN7uiB,EAAG,kCACHokU,GAAI,wBACJhiK,EAAG,4BACHm1J,GAAI,2BACJ7vT,EAAG,wBACH3J,GAAI,kBACJyJ,EAAG,kBACHo/N,GAAI,iBACJl1I,EAAG,qBACHo9c,GAAI,oBACJxpjB,EAAG,sBACHypjB,GAAI,sBAERC,uBAAwB,uBACxBC,QAAS,SAAUj3M,GACf,IAAIjjW,EAAIijW,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANjjW,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAEjB,EACDsyJ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CA7EyCjvkB,CAAQqqd,EAAQ;;;;CCGjD,SAAU+iH,GAAU;kCAIhBA;EAAOC,aAAa,KAAM,CAC/B/zhB,OAAQ,gPAA0Fz6C,MAC9F,KAEJyukB,YAAa,oKAAgEzukB,MAAM,KACnF0ukB,SAAU,gKAAuD1ukB,MAAM,KACvE2ukB,cAAe,kGAAsC3ukB,MAAM,KAC3D4ukB,YAAa,8DAA2B5ukB,MAAM,KAC9CgvkB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLx8c,EAAG,aACHy8c,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVtvY,SAAU,CACNuvY,QAAS,0BACTC,QAAS,yBACTC,SAAU,uDACVC,QAAS,oBACTC,SAAU,2DACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,qBACN7uiB,EAAG,wCACHokU,GAAI,gBACJhiK,EAAG,6BACHm1J,GAAI,4BACJ7vT,EAAG,mBACH3J,GAAI,kBACJyJ,EAAG,0BACHo/N,GAAI,yBACJl1I,EAAG,gBACHo9c,GAAI,eACJxpjB,EAAG,sBACHypjB,GAAI,sBAERC,uBAAwB,+BACxBC,QAAS,yBACT5nZ,KAAM,CACF6nZ,IAAK,EACLC,IAAK,IAMhB,CAzDyCjvkB,CAAQqqd,EAAQ;;;;;;CCKjD,SAAU+iH,GAAU;kCAIdA;EAAOC,aAAa,QAAS,CACpC/zhB,OAAQ,0KAAwCz6C,MAC5C,KAEJyukB,YAAa,qGAAyCzukB,MAClD,KAEJ0ukB,SAAU,uIAA8B1ukB,MAAM,KAC9C2ukB,cAAe,6FAAuB3ukB,MAAM,KAC5C4ukB,YAAa,mDAAgB5ukB,MAAM,KACnCgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,2BACJC,IAAK,2CACLC,KAAM,+CACN7ie,EAAG,WACHg1P,GAAI,2BACJixO,IAAK,iCACLC,KAAM,sCAEV7D,cAAe,gFACf0C,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,iBAAby5Z,GAAkC,iBAAbA,GAAkC,iBAAbA,EACnCz5Z,EACa,iBAAby5Z,GAAkC,iBAAbA,EACrBz5Z,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,EAEzC,EACDy5Z,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,GAC9B,IAAI/rM,EAAY,IAAP3tN,EAAa27B,EACtB,OAAIgyL,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eAEA,cAEd,EACDjjM,SAAU,CACNuvY,QAAS,mBACTC,QAAS,mBACTC,SAAU,SAAU/7iB,GAChB,OAAIA,EAAI60J,SAAWrqL,KAAKqqL,OACb,gBAEA,eAEd,EACDmnZ,QAAS,mBACTC,SAAU,SAAUj8iB,GAChB,OAAIx1B,KAAKqqL,SAAW70J,EAAI60J,OACb,gBAEA,eAEd,EACDqnZ,SAAU,KAEdM,uBAAwB,gCACxBC,QAAS,SAAUj3M,EAAQk4M,GACvB,OAAQA,OACC,QACA,QACA,MACD,OAAOl4M,EAAS,aACf,IACD,OAAOA,EAAS,aACf,QACA,IACD,OAAOA,EAAS,iBAEhB,OAAOA,EAElB,EACD22M,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN7uiB,EAAG,eACHokU,GAAI,YACJhiK,EAAG,iBACHm1J,GAAI,kBACJ7vT,EAAG,iBACH3J,GAAI,kBACJyJ,EAAG,WACHo/N,GAAI,YACJh2I,EAAG,WACHu/c,GAAI,YACJz+c,EAAG,iBACHo9c,GAAI,kBACJxpjB,EAAG,WACHypjB,GAAI,aAER1nZ,KAAM,CAEF6nZ,IAAK,EACLC,IAAK,IAMhB,CA1HyCjvkB,CAAQqqd,EAAQ;;;;;;;CCIjD,SAAU+iH,GAAU;kCAIdA;EAAOC,aAAa,QAAS,CACpC/zhB,OAAQ,0KAAwCz6C,MAC5C,KAEJyukB,YAAa,qGAAyCzukB,MAClD,KAEJ0ukB,SAAU,uIAA8B1ukB,MAAM,KAC9C2ukB,cAAe,6FAAuB3ukB,MAAM,KAC5C4ukB,YAAa,mDAAgB5ukB,MAAM,KACnCgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN7ie,EAAG,WACHg1P,GAAI,2BACJixO,IAAK,iCACLC,KAAM,sCAEV7D,cAAe,gFACf0C,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,iBAAby5Z,GAAkC,iBAAbA,GAAkC,iBAAbA,EACnCz5Z,EACa,iBAAby5Z,EACAz5Z,GAAQ,GAAKA,EAAOA,EAAO,GACd,iBAAby5Z,GAAkC,iBAAbA,EACrBz5Z,EAAO,QADX,CAGV,EACDy5Z,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,GAC9B,IAAI/rM,EAAY,IAAP3tN,EAAa27B,EACtB,OAAIgyL,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACO,OAAPA,EACA,eACAA,EAAK,KACL,eAEA,cAEd,EACDjjM,SAAU,CACNuvY,QAAS,mBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,mBACTC,SAAU,iBACVC,SAAU,KAEdM,uBAAwB,gCACxBC,QAAS,SAAUj3M,EAAQk4M,GACvB,OAAQA,OACC,QACA,QACA,MACD,OAAOl4M,EAAS,aACf,IACD,OAAOA,EAAS,aACf,QACA,IACD,OAAOA,EAAS,iBAEhB,OAAOA,EAElB,EACD22M,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN7uiB,EAAG,eACHokU,GAAI,YACJhiK,EAAG,iBACHm1J,GAAI,kBACJ7vT,EAAG,iBACH3J,GAAI,kBACJyJ,EAAG,WACHo/N,GAAI,YACJl1I,EAAG,iBACHo9c,GAAI,kBACJxpjB,EAAG,WACHypjB,GAAI,cAMf,CAtGyC7ukB,CAAQqqd,EAAQ;;;;;;CCEjD,SAAU+iH,GAAU;kCAIdA;EAAOC,aAAa,QAAS,CACpC/zhB,OAAQ,0KAAwCz6C,MAC5C,KAEJyukB,YAAa,qGAAyCzukB,MAClD,KAEJ0ukB,SAAU,uIAA8B1ukB,MAAM,KAC9C2ukB,cAAe,6FAAuB3ukB,MAAM,KAC5C4ukB,YAAa,mDAAgB5ukB,MAAM,KACnCgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN7ie,EAAG,WACHg1P,GAAI,2BACJixO,IAAK,iCACLC,KAAM,sCAEV7D,cAAe,gFACf0C,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,iBAAby5Z,GAAkC,iBAAbA,GAAkC,iBAAbA,EACnCz5Z,EACa,iBAAby5Z,EACAz5Z,GAAQ,GAAKA,EAAOA,EAAO,GACd,iBAAby5Z,GAAkC,iBAAbA,EACrBz5Z,EAAO,QADX,CAGV,EACDy5Z,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,GAC9B,IAAI/rM,EAAY,IAAP3tN,EAAa27B,EACtB,OAAIgyL,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eAEA,cAEd,EACDjjM,SAAU,CACNuvY,QAAS,oBACTC,QAAS,oBACTC,SAAU,kBACVC,QAAS,oBACTC,SAAU,kBACVC,SAAU,KAEdM,uBAAwB,gCACxBC,QAAS,SAAUj3M,EAAQk4M,GACvB,OAAQA,OACC,QACA,QACA,MACD,OAAOl4M,EAAS,aACf,IACD,OAAOA,EAAS,aACf,QACA,IACD,OAAOA,EAAS,iBAEhB,OAAOA,EAElB,EACD22M,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN7uiB,EAAG,eACHokU,GAAI,YACJhiK,EAAG,iBACHm1J,GAAI,kBACJ7vT,EAAG,iBACH3J,GAAI,kBACJyJ,EAAG,WACHo/N,GAAI,YACJl1I,EAAG,iBACHo9c,GAAI,kBACJxpjB,EAAG,WACHypjB,GAAI,cAMf,CAtGyC7ukB,CAAQqqd,EAAQ;;;;;CCEjD,SAAU+iH,GAAU;kCAIdA;EAAOC,aAAa,QAAS,CACpC/zhB,OAAQ,0KAAwCz6C,MAC5C,KAEJyukB,YAAa,qGAAyCzukB,MAClD,KAEJ0ukB,SAAU,uIAA8B1ukB,MAAM,KAC9C2ukB,cAAe,6FAAuB3ukB,MAAM,KAC5C4ukB,YAAa,mDAAgB5ukB,MAAM,KACnCgvkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLx8c,EAAG,aACHy8c,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN7ie,EAAG,WACHg1P,GAAI,2BACJixO,IAAK,iCACLC,KAAM,sCAEV7D,cAAe,gFACf0C,aAAc,SAAUl8Z,EAAMy5Z,GAI1B,OAHa,KAATz5Z,IACAA,EAAO,GAEM,iBAAby5Z,GAAkC,iBAAbA,GAAkC,iBAAbA,EACnCz5Z,EACa,iBAAby5Z,EACAz5Z,GAAQ,GAAKA,EAAOA,EAAO,GACd,iBAAby5Z,GAAkC,iBAAbA,EACrBz5Z,EAAO,QADX,CAGV,EACDy5Z,SAAU,SAAUz5Z,EAAM27B,EAAQ+9X,GAC9B,IAAI/rM,EAAY,IAAP3tN,EAAa27B,EACtB,OAAIgyL,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eAEA,cAEd,EACDjjM,SAAU,CACNuvY,QAAS,oBACTC,QAAS,oBACTC,SAAU,kBACVC,QAAS,oBACTC,SAAU,kBACVC,SAAU,KAEdM,uBAAwB,gCACxBC,QAAS,SAAUj3M,EAAQk4M,GACvB,OAAQA,OACC,QACA,QACA,MACD,OAAOl4M,EAAS,aACf,IACD,OAAOA,EAAS,aACf,QACA,IACD,OAAOA,EAAS,iBAEhB,OAAOA,EAElB,EACD22M,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN7uiB,EAAG,eACHokU,GAAI,YACJhiK,EAAG,iBACHm1J,GAAI,kBACJ7vT,EAAG,iBACH3J,GAAI,kBACJyJ,EAAG,WACHo/N,GAAI,YACJl1I,EAAG,iBACHo9c,GAAI,kBACJxpjB,EAAG,WACHypjB,GAAI,cAMf,CAtGyC7ukB,CAAQqqd,EAAQ,8CCAgBz6B,QAGjE,WAAc,aAEnB,IAAI6kJ,EA6HAn8f,GA3HJ,SAASo8f,IACL,OAAOD,EAAaxjjB,MAAM,KAAMhD,UACnC,CAID,SAAS0mjB,EAAgBplkB,GACrBklkB,EAAellkB,CAClB,CAED,SAAS4c,EAAQ3e,GACb,OACIA,aAAiBvP,OACyB,mBAA1Cke,OAAOje,UAAUK,SAASH,KAAKoP,EAEtC,CAED,SAAS0gB,EAAS1gB,GAGd,OACa,MAATA,GAC0C,oBAA1C2O,OAAOje,UAAUK,SAASH,KAAKoP,EAEtC,CAED,SAASonkB,EAAW36iB,EAAGpF,GACnB,OAAO1Y,OAAOje,UAAUgB,eAAed,KAAK67B,EAAGpF,EAClD,CAED,SAASggjB,GAAchljB,GACnB,GAAI1T,OAAOk3X,oBACP,OAAkD,IAA3Cl3X,OAAOk3X,oBAAoBxjX,GAAKzyB,OAEvC,IAAIo5M,EACJ,IAAKA,KAAK3mL,EACN,GAAI+kjB,EAAW/kjB,EAAK2mL,GAChB,OAAO,EAGf,OAAO,CAEd,CAED,SAASsyX,GAAYt7jB,GACjB,YAAiB,IAAVA,CACV,CAED,SAASwf,GAASxf,GACd,MACqB,iBAAVA,GACmC,oBAA1C2O,OAAOje,UAAUK,SAASH,KAAKoP,EAEtC,CAED,SAASsiV,GAAOtiV,GACZ,OACIA,aAAiBpO,MACyB,kBAA1C+c,OAAOje,UAAUK,SAASH,KAAKoP,EAEtC,CAED,SAASrP,GAAI+4B,EAAK5J,GACd,IACIhb,EADA8wU,EAAM,GAEN0xP,GAAS59iB,EAAI95B,OACjB,IAAKkV,EAAI,EAAGA,EAAIwikB,KAAUxikB,EACtB8wU,EAAItqU,KAAKwU,EAAG4J,EAAI5kB,GAAIA,IAExB,OAAO8wU,CACV,CAED,SAAS50N,GAAOv0F,EAAGpF,GACf,QAASviB,KAAKuiB,EACN+/iB,EAAW//iB,EAAGviB,KACd2nB,EAAE3nB,GAAKuiB,EAAEviB,IAIjB,OAAIsikB,EAAW//iB,EAAG,cACdoF,EAAE17B,SAAWs2B,EAAEt2B,UAGfq2kB,EAAW//iB,EAAG,aACdoF,EAAEx6B,QAAUo1B,EAAEp1B,SAGXw6B,CACV,CAED,SAAS86iB,GAAUvnkB,EAAOy+B,EAAQ6C,EAAQkmiB,GACtC,OAAOC,GAAiBznkB,EAAOy+B,EAAQ6C,EAAQkmiB,GAAQ,GAAME,KAChE,CAED,SAASC,KAEL,MAAO,CACHjmgB,OAAO,EACPkmgB,aAAc,GACdC,YAAa,GACbjtd,UAAU,EACVktd,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjB7xM,IAAK,KACL2pM,SAAU,KACVmI,SAAS,EACTC,iBAAiB,EAExB,CAED,SAASC,GAAgB9zY,GACrB,OAAa,MAATA,EAAE+zY,MACF/zY,EAAE+zY,IAAMd,MAELjzY,EAAE+zY,GACZ,CAqBD,SAAS7tW,GAAQlmC,GACb,GAAkB,MAAdA,EAAEg0Y,SAAkB,CACpB,IAAItqQ,EAAQoqQ,GAAgB9zY,GACxBi0Y,EAAc79f,GAAKl6E,KAAKwtU,EAAMiqQ,gBAAiB,SAAUvjkB,IACrD,OAAY,MAALA,EACV,GACD8jkB,GACKnpjB,MAAMi1K,EAAEm0Y,GAAGvojB,YACZ89S,EAAMxjN,SAAW,IAChBwjN,EAAM18P,QACN08P,EAAM4pQ,aACN5pQ,EAAM6pQ,eACN7pQ,EAAM0qQ,iBACN1qQ,EAAMmqQ,kBACNnqQ,EAAM2pQ,YACN3pQ,EAAM8pQ,gBACN9pQ,EAAM+pQ,mBACL/pQ,EAAM+hQ,UAAa/hQ,EAAM+hQ,UAAYwI,GAU/C,GARIj0Y,EAAEq0Y,UACFH,EACIA,GACwB,IAAxBxqQ,EAAM0pQ,eACwB,IAA9B1pQ,EAAMwpQ,aAAah4kB,aACDyU,IAAlB+5T,EAAM4qQ,SAGS,MAAnBr6jB,OAAOs6jB,UAAqBt6jB,OAAOs6jB,SAASv0Y,GAG5C,OAAOk0Y,EAFPl0Y,EAAEg0Y,SAAWE,CAIpB,CACD,OAAOl0Y,EAAEg0Y,QACZ,CAED,SAASQ,GAAc9qQ,GACnB,IAAI1pI,EAAI6yY,GAAUthX,KAClB,OAAa,MAATm4G,EACAp9M,GAAOwnd,GAAgB9zY,GAAI0pI,GAE3BoqQ,GAAgB9zY,GAAGyzY,iBAAkB,EAGlCzzY,CACV,CA9DG5pH,GADAr6E,MAAMC,UAAUo6E,KACTr6E,MAAMC,UAAUo6E,KAEhB,SAAUy1T,GACb,IAEIz7X,EAFAuI,EAAIsB,OAAOrf,MACXq0R,EAAMt2Q,EAAEzd,SAAW,EAGvB,IAAKkV,EAAI,EAAGA,EAAI6+Q,EAAK7+Q,IACjB,GAAIA,KAAKuI,GAAKkzX,EAAI3vY,KAAKtB,KAAM+d,EAAEvI,GAAIA,EAAGuI,GAClC,OAAO,EAIf,OAAO,CACV,EAoDL,IAAI87jB,GAAoBjC,EAAMiC,iBAAmB,GAC7CC,IAAmB,EAEvB,SAASC,GAAW/iiB,EAAIxxC,GACpB,IAAIgQ,EACAi9J,EACAsoC,GACAi/X,GAAsBH,GAAiBv5kB,OAiC3C,GA/BK0rkB,GAAYxmkB,EAAKy0kB,oBAClBjjiB,EAAGijiB,iBAAmBz0kB,EAAKy0kB,kBAE1BjO,GAAYxmkB,EAAK00kB,MAClBljiB,EAAGkjiB,GAAK10kB,EAAK00kB,IAEZlO,GAAYxmkB,EAAK20kB,MAClBnjiB,EAAGmjiB,GAAK30kB,EAAK20kB,IAEZnO,GAAYxmkB,EAAK40kB,MAClBpjiB,EAAGojiB,GAAK50kB,EAAK40kB,IAEZpO,GAAYxmkB,EAAKi0kB,WAClBziiB,EAAGyiiB,QAAUj0kB,EAAKi0kB,SAEjBzN,GAAYxmkB,EAAK60kB,QAClBrjiB,EAAGqjiB,KAAO70kB,EAAK60kB,MAEdrO,GAAYxmkB,EAAK80kB,UAClBtjiB,EAAGsjiB,OAAS90kB,EAAK80kB,QAEhBtO,GAAYxmkB,EAAK4iB,WAClB4uB,EAAG5uB,QAAU5iB,EAAK4iB,SAEjB4jjB,GAAYxmkB,EAAK2zkB,OAClBniiB,EAAGmiiB,IAAMD,GAAgB1zkB,IAExBwmkB,GAAYxmkB,EAAK+0kB,WAClBvjiB,EAAGujiB,QAAU/0kB,EAAK+0kB,SAGlBP,GAAsB,EACtB,IAAKxkkB,EAAI,EAAGA,EAAIwkkB,GAAqBxkkB,IAG5Bw2jB,GADLjxX,GAAMv1M,EADNitK,EAAOona,GAAiBrkkB,OAGpBwhC,EAAGy7H,GAAQsoC,IAKvB,OAAO/jK,CACV,CAGD,SAASwjiB,GAAOz6kB,GACZg6kB,GAAW/5kB,KAAMD,GACjBC,KAAKu5kB,GAAK,IAAIj3kB,KAAkB,MAAbvC,EAAOw5kB,GAAax5kB,EAAOw5kB,GAAGvojB,UAAY2lM,KACxD32N,KAAKsrO,YACNtrO,KAAKu5kB,GAAK,IAAIj3kB,KAAKq0N,OAIE,IAArBmjX,KACAA,IAAmB,EACnBlC,EAAM6C,aAAaz6kB,MACnB85kB,IAAmB,EAE1B,CAED,SAASY,GAAS3njB,GACd,OACIA,aAAeynjB,IAAkB,MAAPznjB,GAAuC,MAAxBA,EAAIknjB,gBAEpD,CAED,SAASltX,GAAKoxH,IAEgC,IAAtCy5P,EAAM+C,oCACC1ijB,QAAY,KACnBA,QAAQ80L,MAER90L,QAAQ80L,KAAK,wBAA0BoxH,EAE9C,CAED,SAAS2uN,GAAU3uN,EAAK3tT,GACpB,IAAIoqjB,GAAY,EAEhB,OAAOlpd,GAAO,WAIV,GAHgC,MAA5Bkmd,EAAMiD,oBACNjD,EAAMiD,mBAAmB,KAAM18P,GAE/By8P,EAAW,CACX,IACIl1b,GACAlwI,GACAokB,GAHAxf,EAAO,GAIP0gkB,GAAS3pjB,UAAU7wB,OACvB,IAAKkV,GAAI,EAAGA,GAAIslkB,GAAQtlkB,KAAK,CAEzB,GADAkwI,GAAM,GACsB,iBAAjBv0H,UAAU3b,IAAiB,CAElC,IAAKokB,MADL8rH,IAAO,MAAQlwI,GAAI,KACP2b,UAAU,GACd2mjB,EAAW3mjB,UAAU,GAAIyI,MACzB8rH,IAAO9rH,GAAM,KAAOzI,UAAU,GAAGyI,IAAO,MAGhD8rH,GAAMA,GAAIhkJ,MAAM,GAAG,EACtB,MACGgkJ,GAAMv0H,UAAU3b,IAEpB4E,EAAK4B,KAAK0pI,GACb,CACDqnE,GACIoxH,EACI,gBACAh9U,MAAMC,UAAUM,MAAMJ,KAAK8Y,GAAMzY,KAAK,IACtC,MACA,IAAIpB,OAAQs8D,OAEpB+9gB,GAAY,CACf,CACD,OAAOpqjB,EAAG2D,MAAMn0B,KAAMmxB,UACzB,EAAEX,EACN,CAED,IAgFImJ,GAhFAohjB,GAAe,GAEnB,SAASC,GAAgBvzkB,EAAM02U,GACK,MAA5By5P,EAAMiD,oBACNjD,EAAMiD,mBAAmBpzkB,EAAM02U,GAE9B48P,GAAatzkB,KACdslN,GAAKoxH,GACL48P,GAAatzkB,IAAQ,EAE5B,CAKD,SAAS8oB,GAAW7f,GAChB,cACYwuQ,SAAa,KAAexuQ,aAAiBwuQ,UACX,sBAA1C7/P,OAAOje,UAAUK,SAASH,KAAKoP,EAEtC,CAED,SAAS6iB,GAAIxzB,GACT,IAAI0yK,EAAMj9J,EACV,IAAKA,KAAKzV,EACF+3kB,EAAW/3kB,EAAQyV,KAEf+a,GADJkiJ,EAAO1yK,EAAOyV,IAEVxV,KAAKwV,GAAKi9J,EAEVzyK,KAAK,IAAMwV,GAAKi9J,GAI5BzyK,KAAKi7kB,QAAUl7kB,EAIfC,KAAKk7kB,+BAAiC,IAAIz2kB,QACrCzE,KAAKm7kB,wBAAwBxqjB,QAAU3wB,KAAKo7kB,cAAczqjB,QACvD,IACA,UAAUA,OAErB,CAED,SAAS0qjB,GAAaC,EAAcC,GAChC,IACI9oa,EADA6zK,EAAM50N,GAAO,GAAI4pd,GAErB,IAAK7oa,KAAQ8oa,EACLzD,EAAWyD,EAAa9oa,KACpBrhJ,EAASkqjB,EAAa7oa,KAAUrhJ,EAASmqjB,EAAY9oa,KACrD6zK,EAAI7zK,GAAQ,GACZ/gD,GAAO40N,EAAI7zK,GAAO6oa,EAAa7oa,IAC/B/gD,GAAO40N,EAAI7zK,GAAO8oa,EAAY9oa,KACF,MAArB8oa,EAAY9oa,GACnB6zK,EAAI7zK,GAAQ8oa,EAAY9oa,UAEjB6zK,EAAI7zK,IAIvB,IAAKA,KAAQ6oa,EAELxD,EAAWwD,EAAc7oa,KACxBqla,EAAWyD,EAAa9oa,IACzBrhJ,EAASkqjB,EAAa7oa,MAGtB6zK,EAAI7zK,GAAQ/gD,GAAO,GAAI40N,EAAI7zK,KAGnC,OAAO6zK,CACV,CAED,SAASk1P,GAAOz7kB,GACE,MAAVA,GACAC,KAAKuzB,IAAIxzB,EAEhB,CAlED63kB,EAAM+C,6BAA8B,EACpC/C,EAAMiD,mBAAqB,KAsEvBlhjB,GADAta,OAAOsa,KACAta,OAAOsa,KAEP,SAAU5G,GACb,IAAIvd,EACA8wU,EAAM,GACV,IAAK9wU,KAAKud,EACF+kjB,EAAW/kjB,EAAKvd,IAChB8wU,EAAItqU,KAAKxG,GAGjB,OAAO8wU,CACV,EAGL,IAAIm1P,GAAkB,CAClBpK,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAGd,SAAS5vY,GAASloK,EAAKq7iB,EAAKz/iB,GACxB,IAAIp1B,EAASJ,KAAKmiN,UAAUvoL,IAAQ55B,KAAKmiN,UAAUuvX,SACnD,OAAOnhjB,GAAWnwB,GAAUA,EAAOkB,KAAK2zkB,EAAKz/iB,GAAOp1B,CACvD,CAED,SAASs7kB,GAAS1gN,EAAQ2gN,EAAcC,GACpC,IAAIC,EAAY,GAAKnnjB,KAAKsH,IAAIg/V,GAC1B8gN,GAAcH,EAAeE,EAAUv7kB,OAE3C,OADW06X,GAAU,EAER4gN,EAAY,IAAM,GAAM,KACjClnjB,KAAKwH,IAAI,GAAIxH,KAAK7Z,IAAI,EAAGihkB,KAAcr6kB,WAAW22H,OAAO,GACzDyjd,CAEP,CAED,IAAIE,GACI,yMACJC,GAAwB,6CACxBC,GAAkB,GAClBC,GAAuB,GAM3B,SAASC,GAAet6kB,EAAOu6kB,EAAQnK,EAASx/jB,GAC5C,IAAI+7U,GAAO/7U,EACa,iBAAbA,IACP+7U,GAAO,WACH,OAAOxuV,KAAKyS,IACf,GAED5Q,IACAq6kB,GAAqBr6kB,GAAS2sV,IAE9B4tP,IACAF,GAAqBE,EAAO,IAAM,WAC9B,OAAOV,GAASltP,GAAKr6T,MAAMn0B,KAAMmxB,WAAYirjB,EAAO,GAAIA,EAAO,GAClE,GAEDnK,IACAiK,GAAqBjK,GAAW,WAC5B,OAAOjykB,KAAKq8kB,aAAapK,QACrBzjP,GAAKr6T,MAAMn0B,KAAMmxB,WACjBtvB,EAEP,EAER,CAED,SAASy6kB,GAAuB5rkB,GAC5B,OAAIA,EAAMmiB,MAAM,YACLniB,EAAMrQ,QAAQ,WAAY,IAE9BqQ,EAAMrQ,QAAQ,MAAO,GAC/B,CAED,SAASk8kB,GAAmBptiB,GACxB,IACI35B,EACAlV,EAFA2yB,EAAQkc,EAAOtc,MAAMkpjB,IAIzB,IAAKvmkB,EAAI,EAAGlV,EAAS2yB,EAAM3yB,OAAQkV,EAAIlV,EAAQkV,IACvC0mkB,GAAqBjpjB,EAAMzd,IAC3Byd,EAAMzd,GAAK0mkB,GAAqBjpjB,EAAMzd,IAEtCyd,EAAMzd,GAAK8mkB,GAAuBrpjB,EAAMzd,IAIhD,OAAO,SAAUy/jB,IACb,IACIz/jB,GADApV,GAAS,GAEb,IAAKoV,GAAI,EAAGA,GAAIlV,EAAQkV,KACpBpV,IAAUmwB,GAAW0C,EAAMzd,KACrByd,EAAMzd,IAAGlU,KAAK2zkB,GAAK9liB,GACnBlc,EAAMzd,IAEhB,OAAOpV,EACV,CACJ,CAGD,SAASo8kB,GAAap3Y,EAAGj2J,GACrB,OAAKi2J,EAAEkmC,WAIPn8L,EAASstiB,GAAattiB,EAAQi2J,EAAEi3Y,cAChCJ,GAAgB9siB,GACZ8siB,GAAgB9siB,IAAWotiB,GAAmBptiB,GAE3C8siB,GAAgB9siB,GAAQi2J,IAPpBA,EAAEi3Y,aAAajH,aAQ7B,CAED,SAASqH,GAAattiB,EAAQ6C,GAC1B,IAAIx8B,EAAI,EAER,SAASknkB,EAA4BhskB,IACjC,OAAOshC,EAAO++hB,eAAergkB,KAAUA,EAC1C,CAGD,IADAsrkB,GAAsB7lkB,UAAY,EAC3BX,GAAK,GAAKwmkB,GAAsBt3kB,KAAKyqC,IACxCA,EAASA,EAAO9uC,QACZ27kB,GACAU,GAEJV,GAAsB7lkB,UAAY,EAClCX,GAAK,EAGT,OAAO25B,CACV,CAED,IAAIwtiB,GAAwB,CACxB1L,IAAK,YACLD,GAAI,SACJv8c,EAAG,aACHy8c,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAGV,SAASL,GAAen3iB,GACpB,IAAIuV,EAASnvC,KAAK48kB,gBAAgBhjjB,GAC9BijjB,EAAc78kB,KAAK48kB,gBAAgBhjjB,EAAIowF,eAE3C,OAAI76E,IAAW0tiB,EACJ1tiB,GAGXnvC,KAAK48kB,gBAAgBhjjB,GAAOijjB,EACvBhqjB,MAAMkpjB,IACN16kB,IAAI,SAAU4kQ,GACX,MACY,SAARA,GACQ,OAARA,GACQ,OAARA,GACQ,SAARA,EAEOA,EAAIvkQ,MAAM,GAEdukQ,CACV,GACAtkQ,KAAK,IAEH3B,KAAK48kB,gBAAgBhjjB,GAC/B,CAED,IAAIkjjB,GAAqB,eAEzB,SAAS1H,KACL,OAAOp1kB,KAAK+8kB,YACf,CAED,IAAIC,GAAiB,KACjBC,GAAgC,UAEpC,SAAShL,GAAQj3M,GACb,OAAOh7X,KAAKk9kB,SAAS78kB,QAAQ,KAAM26X,EACtC,CAED,IAAImiN,GAAsB,CACtBvL,OAAQ,QACRC,KAAM,SACN7uiB,EAAG,gBACHokU,GAAI,aACJhiK,EAAG,WACHm1J,GAAI,aACJ7vT,EAAG,UACH3J,GAAI,WACJyJ,EAAG,QACHo/N,GAAI,UACJh2I,EAAG,SACHu/c,GAAI,WACJz+c,EAAG,UACHo9c,GAAI,YACJxpjB,EAAG,SACHypjB,GAAI,YAGR,SAASJ,GAAa32M,EAAQu3M,EAAeruU,EAAQsuU,GACjD,IAAIpykB,GAASJ,KAAKo9kB,cAAcl5U,GAChC,OAAO3zO,GAAWnwB,IACZA,GAAO46X,EAAQu3M,EAAeruU,EAAQsuU,GACtCpykB,GAAOC,QAAQ,MAAO26X,EAC/B,CAED,SAASqiN,GAAWvhjB,EAAM17B,GACtB,IAAI+uC,EAASnvC,KAAKo9kB,cAActhjB,EAAO,EAAI,SAAW,QACtD,OAAOvL,GAAW4e,GAAUA,EAAO/uC,GAAU+uC,EAAO9uC,QAAQ,MAAOD,EACtE,CAED,IAAIixG,GAAU,GAEd,SAASise,GAAa/ijB,EAAMgjjB,GACxB,IAAIlX,EAAY9riB,EAAKxf,cACrBs2F,GAAQg1d,GAAah1d,GAAQg1d,EAAY,KAAOh1d,GAAQkse,GAAahjjB,CACxE,CAED,SAASijjB,GAAe93hB,GACpB,MAAwB,iBAAVA,EACR2rD,GAAQ3rD,IAAU2rD,GAAQ3rD,EAAM3qC,oBAChChG,CACT,CAED,SAAS0okB,GAAqBC,GAC1B,IACIC,EACAlra,EAFAmra,EAAkB,GAItB,IAAKnra,KAAQira,EACL5F,EAAW4F,EAAajra,KACxBkra,EAAiBH,GAAe/qa,MAE5Bmra,EAAgBD,GAAkBD,EAAYjra,IAK1D,OAAOmra,CACV,CAED,IAAIC,GAAa,GAEjB,SAASC,GAAgBvjjB,EAAM4uO,GAC3B00U,GAAWtjjB,GAAQ4uO,CACtB,CAED,SAAS40U,GAAoBC,GACzB,IACIj2R,EADAriQ,EAAQ,GAEZ,IAAKqiQ,KAAKi2R,EACFlG,EAAWkG,EAAUj2R,IACrBriQ,EAAM1pC,KAAK,CAAEue,KAAMwtR,EAAG5+C,SAAU00U,GAAW91R,KAGnDriQ,SAAM9jB,KAAK,SAAUzE,EAAGpF,IACpB,OAAOoF,EAAEgsO,SAAWpxO,GAAEoxO,QACzB,GACMzjN,CACV,CAED,SAASu4hB,GAAWxma,GAChB,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,CACjE,CAED,SAASyma,GAASljN,GACd,OAAIA,EAAS,EAEFtmW,KAAKG,KAAKmmW,IAAW,EAErBtmW,KAAKI,MAAMkmW,EAEzB,CAED,SAASmjN,GAAMC,GACX,IAAIC,GAAiBD,EACjBl2kB,EAAQ,EAEZ,OAAsB,IAAlBm2kB,GAAuB/tjB,SAAS+tjB,KAChCn2kB,EAAQg2kB,GAASG,IAGdn2kB,CACV,CAED,SAASo2kB,GAAW/jjB,EAAMgkjB,GACtB,OAAO,SAAUr2kB,GACb,OAAa,MAATA,GACAs2kB,GAAMx+kB,KAAMu6B,EAAMryB,GAClB0vkB,EAAM6C,aAAaz6kB,KAAMu+kB,GAClBv+kB,MAEA+f,GAAI/f,KAAMu6B,EAExB,CACJ,CAED,SAASxa,GAAIk1jB,EAAK16iB,GACd,OAAO06iB,EAAI3pW,UACL2pW,EAAIsE,GAAG,OAAStE,EAAIqF,OAAS,MAAQ,IAAM//iB,KAC3Co8L,GACT,CAED,SAAS6nX,GAAMvJ,EAAK16iB,EAAMryB,GAClB+skB,EAAI3pW,YAAcn7M,MAAMjoB,KAEX,aAATqyB,GACA0jjB,GAAWhJ,EAAIx9Z,SACC,IAAhBw9Z,EAAIv9Z,SACW,KAAfu9Z,EAAI5ykB,QAEJ6F,EAAQi2kB,GAAMj2kB,GACd+skB,EAAIsE,GAAG,OAAStE,EAAIqF,OAAS,MAAQ,IAAM//iB,GACvCryB,EACA+skB,EAAIv9Z,QACJ+ma,GAAYv2kB,EAAO+skB,EAAIv9Z,WAG3Bu9Z,EAAIsE,GAAG,OAAStE,EAAIqF,OAAS,MAAQ,IAAM//iB,GAAMryB,GAG5D,CAID,SAASw2kB,GAAUh5hB,GAEf,OAAIn1B,GAAWvwB,KADf0lD,EAAQ83hB,GAAe93hB,KAEZ1lD,KAAK0lD,KAET1lD,IACV,CAED,SAAS2+kB,GAAUj5hB,EAAOx9C,GACtB,GAAqB,iBAAVw9C,EAAoB,CAE3B,IACIlwC,EADAopkB,EAAcb,GADlBr4hB,EAAQ+3hB,GAAqB/3hB,IAGzBm5hB,GAAiBD,EAAYt+kB,OACjC,IAAKkV,EAAI,EAAGA,EAAIqpkB,GAAgBrpkB,IAC5BxV,KAAK4+kB,EAAYppkB,GAAG+kB,MAAMmrB,EAAMk5hB,EAAYppkB,GAAG+kB,MAEtD,SAEOhK,GAAWvwB,KADf0lD,EAAQ83hB,GAAe93hB,KAEnB,OAAO1lD,KAAK0lD,GAAOx9C,GAG3B,OAAOlI,IACV,CAED,IAoBIg0I,GApBA8qc,GAAS,KACTC,GAAS,OACTC,GAAS,QACTC,GAAS,QACTC,GAAS,aACTC,GAAY,QACZC,GAAY,YACZC,GAAY,gBACZC,GAAY,UACZC,GAAY,UACZC,GAAY,eACZC,GAAgB,MAChBC,GAAc,WACdC,GAAc,qBACdC,GAAmB,0BACnBC,GAAiB,uBAGjBC,GACI,wJAKR,SAASC,GAAcl+kB,EAAOqyI,EAAO8rc,GACjChsc,GAAQnyI,GAAS0uB,GAAW2jH,GACtBA,EACA,SAAUm9a,EAAUgrB,IAChB,OAAOhrB,GAAY2uB,EAAcA,EAAc9rc,CAClD,CACV,CAED,SAAS+rc,GAAsBp+kB,EAAO9B,GAClC,OAAK+3kB,EAAW9jc,GAASnyI,GAIlBmyI,GAAQnyI,GAAO9B,EAAO05kB,QAAS15kB,EAAOw6kB,SAHlC,IAAI91kB,OAAOy7kB,GAAer+kB,GAIxC,CAGD,SAASq+kB,GAAel9iB,GACpB,OAAOm9iB,GACHn9iB,EACK3iC,QAAQ,KAAM,IACdA,QACG,sCACA,SAAUumC,EAAS4a,EAAIC,EAAIoQ,GAAIw4D,IAC3B,OAAO7oE,GAAMC,GAAMoQ,IAAMw4D,EAC5B,GAGhB,CAED,SAAS81d,GAAYn9iB,GACjB,OAAOA,EAAE3iC,QAAQ,yBAA0B,OAC9C,CAlCD2zI,GAAU,GAoCV,IAAI+xH,GAAS,GAEb,SAASq6U,GAAcv+kB,EAAO4Q,GAC1B,IAAI+C,EAEA6qkB,GADA7xP,EAAO/7U,EAWX,IATqB,iBAAV5Q,IACPA,EAAQ,CAACA,IAETquB,GAASzd,KACT+7U,EAAO,SAAU99U,GAAOuiB,IACpBA,GAAMxgB,GAAY0rkB,GAAMztkB,GAC3B,GAEL2vkB,GAAWx+kB,EAAMvB,OACZkV,EAAI,EAAGA,EAAI6qkB,GAAU7qkB,IACtBuwP,GAAOlkQ,EAAM2T,IAAMg5U,CAE1B,CAED,SAAS8xP,GAAkBz+kB,EAAO4Q,GAC9B2tkB,GAAcv+kB,EAAO,SAAU6O,EAAOuiB,EAAOlzB,GAAQ8B,IACjD9B,GAAOwglB,GAAKxglB,GAAOwglB,IAAM,GACzB9tkB,EAAS/B,EAAO3Q,GAAOwglB,GAAIxglB,GAAQ8B,GACtC,EACJ,CAED,SAAS2+kB,GAAwB3+kB,EAAO6O,EAAO3Q,GAC9B,MAAT2Q,GAAiBonkB,EAAW/xU,GAAQlkQ,IACpCkkQ,GAAOlkQ,GAAO6O,EAAO3Q,EAAOwnR,GAAIxnR,EAAQ8B,EAE/C,CAED,IAcIZ,GAdAw/kB,GAAO,EACPC,GAAQ,EACR1yjB,GAAO,EACPu8b,GAAO,EACPo2H,GAAS,EACTC,GAAS,EACTC,GAAc,EACdC,GAAO,EACPr2H,GAAU,EAEd,SAAS9jV,GAAIm0F,EAAGzyM,GACZ,OAASyyM,EAAIzyM,EAAKA,GAAKA,CAC1B,CAmBD,SAASo2jB,GAAYhna,EAAMC,GACvB,GAAIvnJ,MAAMsnJ,IAAStnJ,MAAMunJ,GACrB,OAAOi/C,IAEX,IAAIoqX,EAAWp6c,GAAI+wC,EAAO,IAC1BD,WAASC,EAAQqpa,GAAY,GACT,IAAbA,EACD9C,GAAWxma,GACP,GACA,GACJ,GAAOspa,EAAW,EAAK,CAChC,CAzBG9/kB,GADAE,MAAMC,UAAUH,QACNE,MAAMC,UAAUH,QAEhB,SAAU2uN,GAEhB,IAAIp6M,EACJ,IAAKA,EAAI,EAAGA,EAAIxV,KAAKM,SAAUkV,EAC3B,GAAIxV,KAAKwV,KAAOo6M,EACZ,OAAOp6M,EAGf,OAAO,CACV,EAkBL2mkB,GAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WACjC,OAAOn8kB,KAAK03K,QAAU,CACzB,GAEDyka,GAAe,MAAO,EAAG,EAAG,SAAUhtiB,GAClC,OAAOnvC,KAAKq8kB,aAAa7L,YAAYxwkB,KAAMmvC,EAC9C,GAEDgtiB,GAAe,OAAQ,EAAG,EAAG,SAAUhtiB,GACnC,OAAOnvC,KAAKq8kB,aAAa7/hB,OAAOx8C,KAAMmvC,EACzC,GAIDmuiB,GAAa,QAAS,KAItBQ,GAAgB,QAAS,GAIzBiC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,MAAO,SAAU1uB,EAAUr/gB,GACrC,OAAOA,EAAOuhiB,iBAAiBliB,EAClC,GACD0uB,GAAc,OAAQ,SAAU1uB,EAAUr/gB,GACtC,OAAOA,EAAO+hiB,YAAY1iB,EAC7B,GAED+uB,GAAc,CAAC,IAAK,MAAO,SAAU1vkB,EAAOuiB,GACxCA,EAAMytjB,IAASvC,GAAMztkB,GAAS,CACjC,GAED0vkB,GAAc,CAAC,MAAO,QAAS,SAAU1vkB,EAAOuiB,EAAOlzB,EAAQ8B,GAC3D,IAAI61K,GAAQ33K,EAAOw6kB,QAAQzG,YAAYpjkB,EAAO7O,EAAO9B,EAAO05kB,SAE/C,MAAT/ha,GACAzkJ,EAAMytjB,IAAShpa,GAEfwha,GAAgBn5kB,GAAQ44kB,aAAejokB,CAE9C,GAID,IAAIswkB,GACI,wFAAwFj/kB,MACpF,KAERk/kB,GACI,kDAAkDl/kB,MAAM,KAC5Dm/kB,GAAmB,gCACnBC,GAA0BrB,GAC1BsB,GAAqBtB,GAEzB,SAASuB,GAAaj8Y,EAAGj2J,GACrB,OAAKi2J,EAKE/1K,EAAQrvB,KAAKshlB,SACdthlB,KAAKshlB,QAAQl8Y,EAAE1tB,SACf13K,KAAKshlB,SACAthlB,KAAKshlB,QAAQrO,UAAYiO,IAAkBx8kB,KAAKyqC,GAC3C,SACA,cACRi2J,EAAE1tB,SAVCroJ,EAAQrvB,KAAKshlB,SACdthlB,KAAKshlB,QACLthlB,KAAKshlB,QAAQ10K,UAS1B,CAED,SAAS20K,GAAkBn8Y,EAAGj2J,GAC1B,OAAKi2J,EAKE/1K,EAAQrvB,KAAKwhlB,cACdxhlB,KAAKwhlB,aAAap8Y,EAAE1tB,SACpB13K,KAAKwhlB,aACDN,GAAiBx8kB,KAAKyqC,GAAU,SAAW,cAC7Ci2J,EAAE1tB,SARCroJ,EAAQrvB,KAAKwhlB,cACdxhlB,KAAKwhlB,aACLxhlB,KAAKwhlB,aAAa50K,UAO/B,CAED,SAAS60K,GAAkBC,EAAWvyiB,EAAQ+oiB,GAC1C,IAAI1ikB,EACAmskB,GACA1M,GACA2M,GAAMF,EAAUG,oBACpB,IAAK7hlB,KAAK8hlB,aAKN,IAHA9hlB,KAAK8hlB,aAAe,GACpB9hlB,KAAK+hlB,iBAAmB,GACxB/hlB,KAAKgilB,kBAAoB,GACpBxskB,EAAI,EAAGA,EAAI,KAAMA,EAClBy/jB,GAAMgD,GAAU,CAAC,IAAMzikB,IACvBxV,KAAKgilB,kBAAkBxskB,GAAKxV,KAAKwwkB,YAC7ByE,GACA,IACF4M,oBACF7hlB,KAAK+hlB,iBAAiBvskB,GAAKxV,KAAKw8C,OAAOy4hB,GAAK,IAAI4M,oBAIxD,OAAI3J,EACe,QAAX/oiB,GAEc,KADdwyiB,GAAK1glB,GAAQK,KAAKtB,KAAKgilB,kBAAmBJ,KACvBD,GAAK,MAGV,KADdA,GAAK1glB,GAAQK,KAAKtB,KAAK+hlB,iBAAkBH,KACtBD,GAAK,KAGb,QAAXxyiB,GAEW,KADXwyiB,GAAK1glB,GAAQK,KAAKtB,KAAKgilB,kBAAmBJ,OAK5B,KADdD,GAAK1glB,GAAQK,KAAKtB,KAAK+hlB,iBAAkBH,KAF9BD,GAGa,MAGb,KADXA,GAAK1glB,GAAQK,KAAKtB,KAAK+hlB,iBAAkBH,OAK3B,KADdD,GAAK1glB,GAAQK,KAAKtB,KAAKgilB,kBAAmBJ,KAF/BD,GAGa,IAGnC,CAED,SAASM,GAAkBP,EAAWvyiB,EAAQ+oiB,GAC1C,IAAI1ikB,EAAGy/jB,GAAK/gc,GAEZ,GAAIl0I,KAAKkilB,kBACL,OAAOT,GAAkBnglB,KAAKtB,KAAM0hlB,EAAWvyiB,EAAQ+oiB,GAY3D,IATKl4kB,KAAK8hlB,eACN9hlB,KAAK8hlB,aAAe,GACpB9hlB,KAAK+hlB,iBAAmB,GACxB/hlB,KAAKgilB,kBAAoB,IAMxBxskB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAmBrB,GAjBAy/jB,GAAMgD,GAAU,CAAC,IAAMzikB,IACnB0ikB,IAAWl4kB,KAAK+hlB,iBAAiBvskB,KACjCxV,KAAK+hlB,iBAAiBvskB,GAAK,IAAI/Q,OAC3B,IAAMzE,KAAKw8C,OAAOy4hB,GAAK,IAAI50kB,QAAQ,IAAK,IAAM,IAC9C,KAEJL,KAAKgilB,kBAAkBxskB,GAAK,IAAI/Q,OAC5B,IAAMzE,KAAKwwkB,YAAYyE,GAAK,IAAI50kB,QAAQ,IAAK,IAAM,IACnD,OAGH63kB,IAAWl4kB,KAAK8hlB,aAAatskB,KAC9B0+H,GACI,IAAMl0I,KAAKw8C,OAAOy4hB,GAAK,IAAM,KAAOj1kB,KAAKwwkB,YAAYyE,GAAK,IAC9Dj1kB,KAAK8hlB,aAAatskB,GAAK,IAAI/Q,OAAOyvI,GAAM7zI,QAAQ,IAAK,IAAK,MAI1D63kB,GACW,SAAX/oiB,GACAnvC,KAAK+hlB,iBAAiBvskB,GAAG9Q,KAAKg9kB,GAE9B,OAAOlskB,EACJ,GACH0ikB,GACW,QAAX/oiB,GACAnvC,KAAKgilB,kBAAkBxskB,GAAG9Q,KAAKg9kB,GAE/B,OAAOlskB,EACJ,IAAK0ikB,GAAUl4kB,KAAK8hlB,aAAatskB,GAAG9Q,KAAKg9kB,GAC5C,OAAOlskB,CAEd,CACJ,CAID,SAAS2iK,GAAS88Z,EAAK/skB,GACnB,IAAIi6kB,EAEJ,IAAKlN,EAAI3pW,UAEL,OAAO2pW,EAGX,GAAqB,iBAAV/skB,EACP,GAAI,QAAQxD,KAAKwD,GACbA,EAAQi2kB,GAAMj2kB,QAAD,IAIRgoB,GAFLhoB,EAAQ+skB,EAAIoH,aAAavI,YAAY5rkB,IAGjC,OAAO+skB,EAKnBkN,SAAaztjB,KAAK9Z,IAAIq6jB,EAAI5ykB,OAAQo8kB,GAAYxJ,EAAIx9Z,OAAQvvK,IAC1D+skB,EAAIsE,GAAG,OAAStE,EAAIqF,OAAS,MAAQ,IAAM,SAASpykB,EAAOi6kB,GACpDlN,CACV,CAED,SAASmN,GAAYl6kB,GACjB,OAAa,MAATA,GACAiwK,GAASn4K,KAAMkI,GACf0vkB,EAAM6C,aAAaz6kB,MAAM,GAClBA,MAEA+f,GAAI/f,KAAM,QAExB,CAED,SAASqilB,KACL,OAAO5D,GAAYz+kB,KAAKy3K,OAAQz3K,KAAK03K,QACxC,CAED,SAAS67Z,GAAiBliB,GACtB,OAAIrxjB,KAAKkilB,mBACApK,EAAW93kB,KAAM,iBAClBsilB,GAAmBhhlB,KAAKtB,MAExBqxjB,EACOrxjB,KAAKuilB,wBAELvilB,KAAKwilB,oBAGX1K,EAAW93kB,KAAM,uBAClBA,KAAKwilB,kBAAoBrB,IAEtBnhlB,KAAKuilB,yBAA2BlxB,EACjCrxjB,KAAKuilB,wBACLvilB,KAAKwilB,kBAElB,CAED,SAASzO,GAAY1iB,GACjB,OAAIrxjB,KAAKkilB,mBACApK,EAAW93kB,KAAM,iBAClBsilB,GAAmBhhlB,KAAKtB,MAExBqxjB,EACOrxjB,KAAKyilB,mBAELzilB,KAAK0ilB,eAGX5K,EAAW93kB,KAAM,kBAClBA,KAAK0ilB,aAAetB,IAEjBphlB,KAAKyilB,oBAAsBpxB,EAC5BrxjB,KAAKyilB,mBACLzilB,KAAK0ilB,aAElB,CAED,SAASJ,KACL,SAASK,EAAUxljB,GAAGpF,IAClB,OAAOA,GAAEz3B,OAAS68B,GAAE78B,MACvB,CAED,IAGIkV,GACAy/jB,GAJA2N,EAAc,GACdC,EAAa,GACbC,EAAc,GAGlB,IAAKttkB,GAAI,EAAGA,GAAI,GAAIA,KAEhBy/jB,GAAMgD,GAAU,CAAC,IAAMzikB,KACvBotkB,EAAY5mkB,KAAKhc,KAAKwwkB,YAAYyE,GAAK,KACvC4N,EAAW7mkB,KAAKhc,KAAKw8C,OAAOy4hB,GAAK,KACjC6N,EAAY9mkB,KAAKhc,KAAKw8C,OAAOy4hB,GAAK,KAClC6N,EAAY9mkB,KAAKhc,KAAKwwkB,YAAYyE,GAAK,KAO3C,IAHA2N,EAAYhhjB,KAAK+gjB,GACjBE,EAAWjhjB,KAAK+gjB,GAChBG,EAAYlhjB,KAAK+gjB,GACZntkB,GAAI,EAAGA,GAAI,GAAIA,KAChBotkB,EAAYptkB,IAAK2qkB,GAAYyC,EAAYptkB,KACzCqtkB,EAAWrtkB,IAAK2qkB,GAAY0C,EAAWrtkB,KAE3C,IAAKA,GAAI,EAAGA,GAAI,GAAIA,KAChBstkB,EAAYttkB,IAAK2qkB,GAAY2C,EAAYttkB,KAG7CxV,KAAK0ilB,aAAe,IAAIj+kB,OAAO,KAAOq+kB,EAAYnhlB,KAAK,KAAO,IAAK,KACnE3B,KAAKwilB,kBAAoBxilB,KAAK0ilB,aAC9B1ilB,KAAKyilB,mBAAqB,IAAIh+kB,OAC1B,KAAOo+kB,EAAWlhlB,KAAK,KAAO,IAC9B,KAEJ3B,KAAKuilB,wBAA0B,IAAI99kB,OAC/B,KAAOm+kB,EAAYjhlB,KAAK,KAAO,IAC/B,IAEP,CA+CD,SAASohlB,GAAWtra,GAChB,OAAOwma,GAAWxma,GAAQ,IAAM,GACnC,CA7CD0ka,GAAe,IAAK,EAAG,EAAG,WACtB,IAAI7zjB,EAAItoB,KAAKy3K,OACb,OAAOnvJ,GAAK,KAAOozjB,GAASpzjB,EAAG,GAAK,IAAMA,CAC7C,GAED6zjB,GAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOn8kB,KAAKy3K,OAAS,GACxB,GAED0ka,GAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,GAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,GAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1CmB,GAAa,OAAQ,KAIrBQ,GAAgB,OAAQ,GAIxBiC,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,SAAUP,GAAWN,IAEnCkB,GAAc,CAAC,QAAS,UAAWK,IACnCL,GAAc,OAAQ,SAAU1vkB,EAAOuiB,GACnCA,EAAMwtjB,IACe,IAAjB/vkB,EAAMpQ,OAAes3kB,EAAMoL,kBAAkBtykB,GAASytkB,GAAMztkB,EACnE,GACD0vkB,GAAc,KAAM,SAAU1vkB,EAAOuiB,GACjCA,EAAMwtjB,IAAQ7I,EAAMoL,kBAAkBtykB,EACzC,GACD0vkB,GAAc,IAAK,SAAU1vkB,EAAOuiB,GAChCA,EAAMwtjB,IAAQ7pjB,SAASlmB,EAAO,GACjC,GAUDknkB,EAAMoL,kBAAoB,SAAUtykB,GAChC,OAAOytkB,GAAMztkB,IAAUytkB,GAAMztkB,GAAS,GAAK,KAAO,IACrD,EAID,IAAIuykB,GAAa3E,GAAW,YAAY,GAExC,SAAS4E,KACL,OAAOjF,GAAWj+kB,KAAKy3K,OAC1B,CAED,SAASD,GAAWlvJ,EAAG88K,EAAG56J,EAAGE,EAAGgqF,GAAG1xF,GAAG+wV,IAGlC,IAAI1xX,GAEJ,OAAIimB,EAAI,KAAOA,GAAK,GAEhBjmB,GAAO,IAAIC,KAAKgmB,EAAI,IAAK88K,EAAG56J,EAAGE,EAAGgqF,GAAG1xF,GAAG+wV,IACpCzjW,SAASjuB,GAAKq7C,gBACdr7C,GAAKs1K,YAAYrvJ,IAGrBjmB,GAAO,IAAIC,KAAKgmB,EAAG88K,EAAG56J,EAAGE,EAAGgqF,GAAG1xF,GAAG+wV,IAG/B1xX,EACV,CAED,SAAS8glB,GAAc76jB,GACnB,IAAIjmB,EAAM+X,EAEV,OAAIkO,EAAI,KAAOA,GAAK,IAChBlO,EAAOjZ,MAAMC,UAAUM,MAAMJ,KAAK6vB,YAE7B,GAAK7I,EAAI,IACdjmB,EAAO,IAAIC,KAAKA,KAAK2qX,IAAI94V,MAAM,KAAM/Z,IACjCkW,SAASjuB,EAAK23V,mBACd33V,EAAK+glB,eAAe96jB,IAGxBjmB,EAAO,IAAIC,KAAKA,KAAK2qX,IAAI94V,MAAM,KAAMhD,YAGlC9uB,CACV,CAGD,SAASghlB,GAAgB5ra,EAAMy6Z,EAAKC,GAChC,IACI3uL,EAAM,EAAI0uL,EAAMC,EAIpB,QAFa,EAAIgR,GAAc1ra,EAAM,EAAG+rO,GAAK8/L,YAAcpR,GAAO,EAElD1uL,EAAM,CACzB,CAGD,SAAS+/L,GAAmB9ra,EAAM4S,EAAMi9M,EAAS4qM,EAAKC,IAClD,IAGIqR,GACAC,GAFAp8M,GAAY,EAAI,GAAKh9M,EAAO,IAFZ,EAAIi9M,EAAU4qM,GAAO,EACxBmR,GAAgB5ra,EAAMy6Z,EAAKC,IAK5C,OAAI9qM,IAAa,EAEbo8M,GAAeV,GADfS,GAAU/ra,EAAO,GACoB4vN,GAC9BA,GAAY07M,GAAWtra,IAC9B+ra,GAAU/ra,EAAO,EACjBgsa,GAAep8M,GAAY07M,GAAWtra,KAEtC+ra,GAAU/ra,EACVgsa,GAAep8M,IAGZ,CACH5vN,KAAM+ra,GACNn8M,UAAWo8M,GAElB,CAED,SAASC,GAAWzO,EAAK/C,EAAKC,GAC1B,IAEIwR,GACAH,GAHAI,EAAaP,GAAgBpO,EAAIx9Z,OAAQy6Z,EAAKC,GAC9C9nZ,GAAO31J,KAAKI,OAAOmgjB,EAAI5tM,YAAcu8M,EAAa,GAAK,GAAK,EAIhE,OAAIv5Z,GAAO,EAEPs5Z,GAAUt5Z,GAAOw5Z,EADjBL,GAAUvO,EAAIx9Z,OAAS,EACey6Z,EAAKC,GACpC9nZ,GAAOw5Z,EAAY5O,EAAIx9Z,OAAQy6Z,EAAKC,IAC3CwR,GAAUt5Z,GAAOw5Z,EAAY5O,EAAIx9Z,OAAQy6Z,EAAKC,GAC9CqR,GAAUvO,EAAIx9Z,OAAS,IAEvB+ra,GAAUvO,EAAIx9Z,OACdksa,GAAUt5Z,IAGP,CACHA,KAAMs5Z,GACNlsa,KAAM+ra,GAEb,CAED,SAASK,EAAYpsa,EAAMy6Z,EAAKC,GAC5B,IAAIyR,EAAaP,GAAgB5ra,EAAMy6Z,EAAKC,GACxC2R,GAAiBT,GAAgB5ra,EAAO,EAAGy6Z,EAAKC,GACpD,OAAQ4Q,GAAWtra,GAAQmsa,EAAaE,IAAkB,CAC7D,CAmCD,SAASC,GAAW9O,GAChB,OAAOyO,GAAWzO,EAAKj1kB,KAAKgklB,MAAM9R,IAAKlykB,KAAKgklB,MAAM7R,KAAK9nZ,IAC1D,CAjCD8xZ,GAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,GAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrCmB,GAAa,OAAQ,KACrBA,GAAa,UAAW,KAIxBQ,GAAgB,OAAQ,GACxBA,GAAgB,UAAW,GAI3BiC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAE/BuB,GACI,CAAC,IAAK,KAAM,IAAK,MACjB,SAAU5vkB,EAAO25K,EAAMtqL,EAAQ8B,GAC3BwoL,EAAKxoL,EAAMu2H,OAAO,EAAG,IAAM+ld,GAAMztkB,EACpC,GAWL,IAAIuzkB,GAAoB,CACpB/R,IAAK,EACLC,IAAK,GAGT,SAAS+R,KACL,OAAOlklB,KAAKgklB,MAAM9R,GACrB,CAED,SAASiS,KACL,OAAOnklB,KAAKgklB,MAAM7R,GACrB,CAID,SAASiS,GAAW1zkB,GAChB,IAAI25K,EAAOrqL,KAAKq8kB,aAAahyZ,KAAKrqL,MAClC,OAAgB,MAAT0Q,EAAgB25K,EAAOrqL,KAAKgM,IAAqB,GAAhB0E,EAAQ25K,GAAW,IAC9D,CAED,SAASg6Z,GAAc3zkB,GACnB,IAAI25K,EAAOq5Z,GAAW1jlB,KAAM,EAAG,GAAGqqL,KAClC,OAAgB,MAAT35K,EAAgB25K,EAAOrqL,KAAKgM,IAAqB,GAAhB0E,EAAQ25K,GAAW,IAC9D,CA+DD,SAASi6Z,GAAa5zkB,EAAOshC,GACzB,MAAqB,iBAAVthC,EACAA,EAGNyf,MAAMzf,GAKU,iBADrBA,EAAQshC,EAAOqiiB,cAAc3jkB,IAElBA,EAGJ,KARIkmB,SAASlmB,EAAO,GAS9B,CAED,SAAS6zkB,GAAgB7zkB,EAAOshC,GAC5B,MAAqB,iBAAVthC,EACAshC,EAAOqiiB,cAAc3jkB,GAAS,GAAK,EAEvCyf,MAAMzf,GAAS,KAAOA,CAChC,CAGD,SAAS8zkB,GAAcC,EAAI3pX,GACvB,OAAO2pX,EAAG/ilB,MAAMo5N,EAAG,GAAGh1M,OAAO2+jB,EAAG/ilB,MAAM,EAAGo5N,GAC5C,CAtFDqhX,GAAe,IAAK,EAAG,KAAM,OAE7BA,GAAe,KAAM,EAAG,EAAG,SAAUhtiB,GACjC,OAAOnvC,KAAKq8kB,aAAa1L,YAAY3wkB,KAAMmvC,EAC9C,GAEDgtiB,GAAe,MAAO,EAAG,EAAG,SAAUhtiB,GAClC,OAAOnvC,KAAKq8kB,aAAa3L,cAAc1wkB,KAAMmvC,EAChD,GAEDgtiB,GAAe,OAAQ,EAAG,EAAG,SAAUhtiB,GACnC,OAAOnvC,KAAKq8kB,aAAa5L,SAASzwkB,KAAMmvC,EAC3C,GAEDgtiB,GAAe,IAAK,EAAG,EAAG,WAC1BA,GAAe,IAAK,EAAG,EAAG,cAI1BmB,GAAa,MAAO,KACpBA,GAAa,UAAW,KACxBA,GAAa,aAAc,KAG3BQ,GAAgB,MAAO,IACvBA,GAAgB,UAAW,IAC3BA,GAAgB,aAAc,IAI9BiC,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,KAAM,SAAU1uB,EAAUr/gB,GACpC,OAAOA,EAAO0yiB,iBAAiBrzB,EAClC,GACD0uB,GAAc,MAAO,SAAU1uB,EAAUr/gB,GACrC,OAAOA,EAAO2yiB,mBAAmBtzB,EACpC,GACD0uB,GAAc,OAAQ,SAAU1uB,EAAUr/gB,GACtC,OAAOA,EAAO4yiB,cAAcvzB,EAC/B,GAEDivB,GAAkB,CAAC,KAAM,MAAO,QAAS,SAAU5vkB,EAAO25K,EAAMtqL,EAAQ8B,GACpE,IAAIylY,GAAUvnY,EAAOw6kB,QAAQlG,cAAc3jkB,EAAO7O,EAAO9B,EAAO05kB,SAEjD,MAAXnyM,GACAj9M,EAAK7/I,EAAI88V,GAET4xM,GAAgBn5kB,GAAQy5kB,eAAiB9okB,CAEhD,GAED4vkB,GAAkB,CAAC,IAAK,IAAK,KAAM,SAAU5vkB,EAAO25K,EAAMtqL,EAAQ8B,GAC9DwoL,EAAKxoL,GAASs8kB,GAAMztkB,EACvB,GAiCD,IAAIm0kB,GACI,2DAA2D9ilB,MAAM,KACrE+ilB,GAA6B,8BAA8B/ilB,MAAM,KACjEgjlB,GAA2B,uBAAuBhjlB,MAAM,KACxDijlB,GAAuBlF,GACvBmF,GAA4BnF,GAC5BoF,GAA0BpF,GAE9B,SAASqF,GAAe//Y,EAAGj2J,GACvB,IAAIshiB,EAAWphjB,EAAQrvB,KAAKollB,WACtBpllB,KAAKollB,UACLpllB,KAAKollB,UACDhgZ,IAAW,IAANA,GAAcplM,KAAKollB,UAAUnS,SAASvukB,KAAKyqC,GAC1C,SACA,cAEhB,OAAa,IAANi2J,EACDo/Y,GAAc/T,EAAUzwkB,KAAKgklB,MAAM9R,KACnC9sY,EACAqrY,EAASrrY,EAAEtnJ,OACX2yhB,CACT,CAED,SAAS4U,GAAoBjgZ,GACzB,OAAa,IAANA,EACDo/Y,GAAcxklB,KAAKsllB,eAAgBtllB,KAAKgklB,MAAM9R,KAC9C9sY,EACAplM,KAAKsllB,eAAelgZ,EAAEtnJ,OACtB99C,KAAKsllB,cACd,CAED,SAASC,GAAkBngZ,GACvB,OAAa,IAANA,EACDo/Y,GAAcxklB,KAAKwllB,aAAcxllB,KAAKgklB,MAAM9R,KAC5C9sY,EACAplM,KAAKwllB,aAAapgZ,EAAEtnJ,OACpB99C,KAAKwllB,YACd,CAED,SAASC,GAAoBC,EAAav2iB,EAAQ+oiB,GAC9C,IAAI1ikB,EACAmskB,GACA1M,GACA2M,GAAM8D,EAAY7D,oBACtB,IAAK7hlB,KAAK2llB,eAKN,IAJA3llB,KAAK2llB,eAAiB,GACtB3llB,KAAK4llB,oBAAsB,GAC3B5llB,KAAK6llB,kBAAoB,GAEpBrwkB,EAAI,EAAGA,EAAI,IAAKA,EACjBy/jB,GAAMgD,GAAU,CAAC,IAAM,IAAIn6hB,IAAItoC,GAC/BxV,KAAK6llB,kBAAkBrwkB,GAAKxV,KAAK2wkB,YAC7BsE,GACA,IACF4M,oBACF7hlB,KAAK4llB,oBAAoBpwkB,GAAKxV,KAAK0wkB,cAC/BuE,GACA,IACF4M,oBACF7hlB,KAAK2llB,eAAenwkB,GAAKxV,KAAKywkB,SAASwE,GAAK,IAAI4M,oBAIxD,OAAI3J,EACe,SAAX/oiB,GAEc,KADdwyiB,GAAK1glB,GAAQK,KAAKtB,KAAK2llB,eAAgB/D,KACpBD,GAAK,KACN,QAAXxyiB,GAEO,KADdwyiB,GAAK1glB,GAAQK,KAAKtB,KAAK4llB,oBAAqBhE,KACzBD,GAAK,MAGV,KADdA,GAAK1glB,GAAQK,KAAKtB,KAAK6llB,kBAAmBjE,KACvBD,GAAK,KAGb,SAAXxyiB,GAEW,KADXwyiB,GAAK1glB,GAAQK,KAAKtB,KAAK2llB,eAAgB/D,OAK5B,KADXD,GAAK1glB,GAAQK,KAAKtB,KAAK4llB,oBAAqBhE,OAK9B,KADdD,GAAK1glB,GAAQK,KAAKtB,KAAK6llB,kBAAmBjE,KAF/BD,GAGa,KACN,QAAXxyiB,GAEI,KADXwyiB,GAAK1glB,GAAQK,KAAKtB,KAAK4llB,oBAAqBhE,OAKjC,KADXD,GAAK1glB,GAAQK,KAAKtB,KAAK2llB,eAAgB/D,OAKzB,KADdD,GAAK1glB,GAAQK,KAAKtB,KAAK6llB,kBAAmBjE,KAF/BD,GAGa,MAGb,KADXA,GAAK1glB,GAAQK,KAAKtB,KAAK6llB,kBAAmBjE,OAK/B,KADXD,GAAK1glB,GAAQK,KAAKtB,KAAK2llB,eAAgB/D,OAKzB,KADdD,GAAK1glB,GAAQK,KAAKtB,KAAK4llB,oBAAqBhE,KAFjCD,GAGa,IAGnC,CAED,SAASmE,GAAoBJ,EAAav2iB,EAAQ+oiB,GAC9C,IAAI1ikB,EAAGy/jB,GAAK/gc,GAEZ,GAAIl0I,KAAK+llB,oBACL,OAAON,GAAoBnklB,KAAKtB,KAAM0llB,EAAav2iB,EAAQ+oiB,GAU/D,IAPKl4kB,KAAK2llB,iBACN3llB,KAAK2llB,eAAiB,GACtB3llB,KAAK6llB,kBAAoB,GACzB7llB,KAAK4llB,oBAAsB,GAC3B5llB,KAAKgmlB,mBAAqB,IAGzBxwkB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CA6BpB,GA1BAy/jB,GAAMgD,GAAU,CAAC,IAAM,IAAIn6hB,IAAItoC,GAC3B0ikB,IAAWl4kB,KAAKgmlB,mBAAmBxwkB,KACnCxV,KAAKgmlB,mBAAmBxwkB,GAAK,IAAI/Q,OAC7B,IAAMzE,KAAKywkB,SAASwE,GAAK,IAAI50kB,QAAQ,IAAK,QAAU,IACpD,KAEJL,KAAK4llB,oBAAoBpwkB,GAAK,IAAI/Q,OAC9B,IAAMzE,KAAK0wkB,cAAcuE,GAAK,IAAI50kB,QAAQ,IAAK,QAAU,IACzD,KAEJL,KAAK6llB,kBAAkBrwkB,GAAK,IAAI/Q,OAC5B,IAAMzE,KAAK2wkB,YAAYsE,GAAK,IAAI50kB,QAAQ,IAAK,QAAU,IACvD,MAGHL,KAAK2llB,eAAenwkB,KACrB0+H,GACI,IACAl0I,KAAKywkB,SAASwE,GAAK,IACnB,KACAj1kB,KAAK0wkB,cAAcuE,GAAK,IACxB,KACAj1kB,KAAK2wkB,YAAYsE,GAAK,IAC1Bj1kB,KAAK2llB,eAAenwkB,GAAK,IAAI/Q,OAAOyvI,GAAM7zI,QAAQ,IAAK,IAAK,MAI5D63kB,GACW,SAAX/oiB,GACAnvC,KAAKgmlB,mBAAmBxwkB,GAAG9Q,KAAKghlB,GAEhC,OAAOlwkB,EACJ,GACH0ikB,GACW,QAAX/oiB,GACAnvC,KAAK4llB,oBAAoBpwkB,GAAG9Q,KAAKghlB,GAEjC,OAAOlwkB,EACJ,GACH0ikB,GACW,OAAX/oiB,GACAnvC,KAAK6llB,kBAAkBrwkB,GAAG9Q,KAAKghlB,GAE/B,OAAOlwkB,EACJ,IAAK0ikB,GAAUl4kB,KAAK2llB,eAAenwkB,GAAG9Q,KAAKghlB,GAC9C,OAAOlwkB,CAEd,CACJ,CAID,SAASywkB,GAAgBv1kB,GACrB,IAAK1Q,KAAKsrO,UACN,OAAgB,MAAT56N,EAAgB1Q,KAAO22N,IAElC,IAAI74K,EAAM99C,KAAKs6kB,OAASt6kB,KAAKu5kB,GAAG+J,YAActjlB,KAAKu5kB,GAAGx7hB,SACtD,OAAa,MAATrtC,GACAA,EAAQ4zkB,GAAa5zkB,EAAO1Q,KAAKq8kB,cAC1Br8kB,KAAKgM,IAAI0E,EAAQotC,EAAK,MAEtBA,CAEd,CAED,SAASooiB,GAAsBx1kB,GAC3B,IAAK1Q,KAAKsrO,UACN,OAAgB,MAAT56N,EAAgB1Q,KAAO22N,IAElC,IAAI2wK,GAAWtnY,KAAK89C,MAAQ,EAAI99C,KAAKq8kB,aAAa2H,MAAM9R,KAAO,EAC/D,OAAgB,MAATxhkB,EAAgB42X,EAAUtnY,KAAKgM,IAAI0E,EAAQ42X,EAAS,IAC9D,CAED,SAAS6+M,GAAmBz1kB,GACxB,IAAK1Q,KAAKsrO,UACN,OAAgB,MAAT56N,EAAgB1Q,KAAO22N,IAOlC,GAAa,MAATjmN,EAAe,CACf,IAAI42X,EAAUi9M,GAAgB7zkB,EAAO1Q,KAAKq8kB,cAC1C,OAAOr8kB,KAAK89C,IAAI99C,KAAK89C,MAAQ,EAAIwpV,EAAUA,EAAU,EACxD,CACG,OAAOtnY,KAAK89C,OAAS,CAE5B,CAED,SAAS8miB,GAAcvzB,GACnB,OAAIrxjB,KAAK+llB,qBACAjO,EAAW93kB,KAAM,mBAClBomlB,GAAqB9klB,KAAKtB,MAE1BqxjB,EACOrxjB,KAAKqmlB,qBAELrmlB,KAAKsmlB,iBAGXxO,EAAW93kB,KAAM,oBAClBA,KAAKsmlB,eAAiBtB,IAEnBhllB,KAAKqmlB,sBAAwBh1B,EAC9BrxjB,KAAKqmlB,qBACLrmlB,KAAKsmlB,eAElB,CAED,SAAS3B,GAAmBtzB,GACxB,OAAIrxjB,KAAK+llB,qBACAjO,EAAW93kB,KAAM,mBAClBomlB,GAAqB9klB,KAAKtB,MAE1BqxjB,EACOrxjB,KAAKumlB,0BAELvmlB,KAAKwmlB,sBAGX1O,EAAW93kB,KAAM,yBAClBA,KAAKwmlB,oBAAsBvB,IAExBjllB,KAAKumlB,2BAA6Bl1B,EACnCrxjB,KAAKumlB,0BACLvmlB,KAAKwmlB,oBAElB,CAED,SAAS9B,GAAiBrzB,GACtB,OAAIrxjB,KAAK+llB,qBACAjO,EAAW93kB,KAAM,mBAClBomlB,GAAqB9klB,KAAKtB,MAE1BqxjB,EACOrxjB,KAAKymlB,wBAELzmlB,KAAK0mlB,oBAGX5O,EAAW93kB,KAAM,uBAClBA,KAAK0mlB,kBAAoBxB,IAEtBlllB,KAAKymlB,yBAA2Bp1B,EACjCrxjB,KAAKymlB,wBACLzmlB,KAAK0mlB,kBAElB,CAED,SAASN,KACL,SAASzD,EAAUxljB,GAAGpF,IAClB,OAAOA,GAAEz3B,OAAS68B,GAAE78B,MACvB,CAED,IAIIkV,GACAy/jB,GACA0R,GACAC,GACAC,GARAC,EAAY,GACZlE,EAAc,GACdC,EAAa,GACbC,GAAc,GAMlB,IAAKttkB,GAAI,EAAGA,GAAI,EAAGA,KAEfy/jB,GAAMgD,GAAU,CAAC,IAAM,IAAIn6hB,IAAItoC,IAC/BmxkB,GAAOxG,GAAYnglB,KAAK2wkB,YAAYsE,GAAK,KACzC2R,GAASzG,GAAYnglB,KAAK0wkB,cAAcuE,GAAK,KAC7C4R,GAAQ1G,GAAYnglB,KAAKywkB,SAASwE,GAAK,KACvC6R,EAAU9qkB,KAAK2qkB,IACf/D,EAAY5mkB,KAAK4qkB,IACjB/D,EAAW7mkB,KAAK6qkB,IAChB/D,GAAY9mkB,KAAK2qkB,IACjB7D,GAAY9mkB,KAAK4qkB,IACjB9D,GAAY9mkB,KAAK6qkB,IAIrBC,EAAUlljB,KAAK+gjB,GACfC,EAAYhhjB,KAAK+gjB,GACjBE,EAAWjhjB,KAAK+gjB,GAChBG,GAAYlhjB,KAAK+gjB,GAEjB3ilB,KAAKsmlB,eAAiB,IAAI7hlB,OAAO,KAAOq+kB,GAAYnhlB,KAAK,KAAO,IAAK,KACrE3B,KAAKwmlB,oBAAsBxmlB,KAAKsmlB,eAChCtmlB,KAAK0mlB,kBAAoB1mlB,KAAKsmlB,eAE9BtmlB,KAAKqmlB,qBAAuB,IAAI5hlB,OAC5B,KAAOo+kB,EAAWlhlB,KAAK,KAAO,IAC9B,KAEJ3B,KAAKumlB,0BAA4B,IAAI9hlB,OACjC,KAAOm+kB,EAAYjhlB,KAAK,KAAO,IAC/B,KAEJ3B,KAAKymlB,wBAA0B,IAAIhilB,OAC/B,KAAOqilB,EAAUnllB,KAAK,KAAO,IAC7B,IAEP,CAID,SAASollB,KACL,OAAO/mlB,KAAK28C,QAAU,IAAM,EAC/B,CAED,SAASqqiB,KACL,OAAOhnlB,KAAK28C,SAAW,EAC1B,CAgCD,SAASk0hB,GAAShvkB,EAAOollB,GACrB9K,GAAet6kB,EAAO,EAAG,EAAG,WACxB,OAAO7B,KAAKq8kB,aAAaxL,SACrB7wkB,KAAK28C,QACL38C,KAAK48C,UACLqqiB,EAEP,EACJ,CAcD,SAASC,GAAc71B,EAAUr/gB,GAC7B,OAAOA,EAAOm1iB,cACjB,CA0DD,SAASC,GAAW12kB,GAGhB,MAAgD,OAAxCA,EAAQ,IAAIqK,cAAcha,OAAO,EAC5C,CApHDo7kB,GAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,GAAe,IAAK,CAAC,KAAM,GAAI,EAAG4K,IAClC5K,GAAe,IAAK,CAAC,KAAM,GAAI,EAAG6K,IAElC7K,GAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAK4K,GAAQ5yjB,MAAMn0B,MAAQ07kB,GAAS17kB,KAAK48C,UAAW,EAC9D,GAEDu/hB,GAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACA4K,GAAQ5yjB,MAAMn0B,MACd07kB,GAAS17kB,KAAK48C,UAAW,GACzB8+hB,GAAS17kB,KAAK68C,UAAW,EAEhC,GAEDs/hB,GAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAKn8kB,KAAK28C,QAAU++hB,GAAS17kB,KAAK48C,UAAW,EACvD,GAEDu/hB,GAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACAn8kB,KAAK28C,QACL++hB,GAAS17kB,KAAK48C,UAAW,GACzB8+hB,GAAS17kB,KAAK68C,UAAW,EAEhC,GAYDg0hB,GAAS,KAAK,GACdA,GAAS,KAAK,GAIdyM,GAAa,OAAQ,KAGrBQ,GAAgB,OAAQ,IAQxBiC,GAAc,IAAKmH,IACnBnH,GAAc,IAAKmH,IACnBnH,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAE/BgB,GAAc,MAAOX,IACrBW,GAAc,QAASV,IACvBU,GAAc,MAAOX,IACrBW,GAAc,QAASV,IAEvBe,GAAc,CAAC,IAAK,MAAO71H,IAC3B61H,GAAc,CAAC,IAAK,MAAO,SAAU1vkB,EAAOuiB,EAAOlzB,GAC/C,IAAIsnlB,EAASlJ,GAAMztkB,GACnBuiB,EAAMs3b,IAAmB,KAAX88H,EAAgB,EAAIA,CACrC,GACDjH,GAAc,CAAC,IAAK,KAAM,SAAU1vkB,EAAOuiB,EAAOlzB,GAC9CA,EAAOunlB,MAAQvnlB,EAAOw6kB,QAAQ5lY,KAAKjkM,GACnC3Q,EAAOwnlB,UAAY72kB,CACtB,GACD0vkB,GAAc,CAAC,IAAK,MAAO,SAAU1vkB,EAAOuiB,EAAOlzB,GAC/CkzB,EAAMs3b,IAAQ4zH,GAAMztkB,GACpBwokB,GAAgBn5kB,GAAQ25kB,SAAU,CACrC,GACD0G,GAAc,MAAO,SAAU1vkB,EAAOuiB,EAAOlzB,GACzC,IAAIwmC,EAAM71B,EAAMpQ,OAAS,EACzB2yB,EAAMs3b,IAAQ4zH,GAAMztkB,EAAM0nH,OAAO,EAAG7xF,IACpCtT,EAAM0tjB,IAAUxC,GAAMztkB,EAAM0nH,OAAO7xF,IACnC2yiB,GAAgBn5kB,GAAQ25kB,SAAU,CACrC,GACD0G,GAAc,QAAS,SAAU1vkB,EAAOuiB,EAAOlzB,GAC3C,IAAIynlB,EAAO92kB,EAAMpQ,OAAS,EACtBmnlB,GAAO/2kB,EAAMpQ,OAAS,EAC1B2yB,EAAMs3b,IAAQ4zH,GAAMztkB,EAAM0nH,OAAO,EAAGovd,IACpCv0jB,EAAM0tjB,IAAUxC,GAAMztkB,EAAM0nH,OAAOovd,EAAM,IACzCv0jB,EAAM2tjB,IAAUzC,GAAMztkB,EAAM0nH,OAAOqvd,KACnCvO,GAAgBn5kB,GAAQ25kB,SAAU,CACrC,GACD0G,GAAc,MAAO,SAAU1vkB,EAAOuiB,EAAOlzB,GACzC,IAAIwmC,EAAM71B,EAAMpQ,OAAS,EACzB2yB,EAAMs3b,IAAQ4zH,GAAMztkB,EAAM0nH,OAAO,EAAG7xF,IACpCtT,EAAM0tjB,IAAUxC,GAAMztkB,EAAM0nH,OAAO7xF,GACtC,GACD65iB,GAAc,QAAS,SAAU1vkB,EAAOuiB,EAAOlzB,GAC3C,IAAIynlB,EAAO92kB,EAAMpQ,OAAS,EACtBmnlB,GAAO/2kB,EAAMpQ,OAAS,EAC1B2yB,EAAMs3b,IAAQ4zH,GAAMztkB,EAAM0nH,OAAO,EAAGovd,IACpCv0jB,EAAM0tjB,IAAUxC,GAAMztkB,EAAM0nH,OAAOovd,EAAM,IACzCv0jB,EAAM2tjB,IAAUzC,GAAMztkB,EAAM0nH,OAAOqvd,IACtC,GAUD,IAAIC,GAA6B,gBAK7BC,GAAarJ,GAAW,SAAS,GAErC,SAASsJ,GAAejriB,EAAOC,EAASk0hB,GACpC,OAAIn0hB,EAAQ,GACDm0hB,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAE/B,CAED,IAuBI+W,GAvBAC,GAAa,CACbhmZ,SAAU25Y,GACV1K,eAAgB4L,GAChBvH,YAAa0H,GACb7K,QAAS+K,GACThL,uBAAwBiL,GACxBtL,aAAcwL,GAEd3giB,OAAQwkiB,GACRxQ,YAAayQ,GAEb52Z,KAAM45Z,GAENxT,SAAUoU,GACVlU,YAAaoU,GACbrU,cAAeoU,GAEflU,cAAe8W,IAIfK,GAAU,GACVC,GAAiB,GAGrB,SAASC,GAAap1L,EAAMC,GACxB,IAAIt9Y,EACA0ykB,EAAOxzjB,KAAK9Z,IAAIi4Y,EAAKvyZ,OAAQwyZ,EAAKxyZ,QACtC,IAAKkV,EAAI,EAAGA,EAAI0ykB,EAAM1ykB,GAAK,EACvB,GAAIq9Y,EAAKr9Y,KAAOs9Y,EAAKt9Y,GACjB,OAAOA,EAGf,OAAO0ykB,CACV,CAED,SAASC,GAAgBvujB,GACrB,OAAOA,GAAMA,EAAI7e,cAAc1a,QAAQ,IAAK,IAC/C,CAKD,SAAS+nlB,GAAaj1jB,GAOlB,QALI6c,EACA/qC,EACA+sC,GACAjwC,GAJAyT,EAAI,EAMDA,EAAI2d,EAAM7yB,QAAQ,CAKrB,IAHA0vC,GADAjuC,GAAQomlB,GAAgBh1jB,EAAM3d,IAAIzT,MAAM,MAC9BzB,OAEV2E,GADAA,EAAOkjlB,GAAgBh1jB,EAAM3d,EAAI,KACnBvQ,EAAKlD,MAAM,KAAO,KACzBiuC,EAAI,GAAG,CAEV,GADAgC,GAAS83a,GAAW/nd,GAAML,MAAM,EAAGsuC,GAAGruC,KAAK,MAEvC,OAAOqwC,GAEX,GACI/sC,GACAA,EAAK3E,QAAU0vC,GACfi4iB,GAAalmlB,GAAOkD,IAAS+qC,EAAI,EAGjC,MAEJA,GACH,CACDx6B,GACH,CACD,OAAOqykB,EACV,CAED,SAASQ,GAAiB5glB,GAEtB,OAAoC,MAA7BA,EAAKorB,MAAM,cACrB,CAED,SAASi3b,GAAWrid,GAChB,IAAI6glB,EAAY,KAGhB,QACsBvzkB,IAAlBgzkB,GAAQtglB,IAERk6iB,IACAA,GAAO7uH,SACPu1J,GAAiB5glB,GAEjB,IACI6glB,EAAYT,GAAaU,MAEzBC,QAAe,KAAc/glB,GAC7BghlB,GAAmBH,EAKtB,CAJA,MAGGP,GAAQtglB,GAAQ,IACnB,CAEL,OAAOsglB,GAAQtglB,EAClB,CAKD,SAASghlB,GAAmB7ujB,EAAKkB,GAC7B,IAAIvb,EACJ,OAAIqa,KAEIra,EADAysjB,GAAYlxiB,GACL4tjB,GAAU9ujB,GAEV22iB,GAAa32iB,EAAKkB,IAKzB+sjB,GAAetokB,SAEJ0Y,QAAY,KAAeA,QAAQ80L,MAE1C90L,QAAQ80L,KACJ,UAAYnzL,EAAM,2CAM3BiujB,GAAaU,KACvB,CAED,SAAShY,GAAa9okB,EAAM1H,GACxB,GAAe,OAAXA,EAAiB,CACjB,IAAIiyC,EACAspiB,EAAewM,GAEnB,GADA/nlB,EAAO61kB,KAAOnukB,EACO,MAAjBsglB,GAAQtglB,GACRuzkB,GACI,uBACA,2OAKJM,EAAeyM,GAAQtglB,GAAMwzkB,gBACC,MAAvBl7kB,EAAO4olB,aACd,GAAoC,MAAhCZ,GAAQholB,EAAO4olB,cACfrN,EAAeyM,GAAQholB,EAAO4olB,cAAc1N,gBAG9B,OADdjpiB,EAAS83a,GAAW/pd,EAAO4olB,eAIvB,OAAKX,GAAejolB,EAAO4olB,gBACvBX,GAAejolB,EAAO4olB,cAAgB,IAE1CX,GAAejolB,EAAO4olB,cAAc3skB,KAAK,CACrCvU,KAAMA,EACN1H,OAAQA,IAEL,KATPu7kB,EAAetpiB,EAAOipiB,OASf,CAInB8M,UAAQtglB,GAAQ,IAAI+zkB,GAAOH,GAAaC,EAAcv7kB,IAElDiolB,GAAevglB,IACfuglB,GAAevglB,GAAMgJ,QAAQ,SAAU4X,IACnCkojB,GAAalojB,GAAE5gB,KAAM4gB,GAAEtoB,OAC1B,GAML0olB,GAAmBhhlB,GAEZsglB,GAAQtglB,EAClB,CAEG,cAAOsglB,GAAQtglB,GACR,IAEd,CAED,SAASmhlB,GAAanhlB,EAAM1H,GACxB,GAAc,MAAVA,EAAgB,CAChB,IAAIiyC,EACA62iB,EACAvN,GAAewM,GAEE,MAAjBC,GAAQtglB,IAA+C,MAA9BsglB,GAAQtglB,GAAMkhlB,aAEvCZ,GAAQtglB,GAAM8rB,IAAI8njB,GAAa0M,GAAQtglB,GAAMwzkB,QAASl7kB,KAIrC,OADjB8olB,EAAY/+H,GAAWrid,MAEnB6zkB,GAAeuN,EAAU5N,SAE7Bl7kB,EAASs7kB,GAAaC,GAAcv7kB,GACnB,MAAb8olB,IAIA9olB,EAAO61kB,KAAOnukB,IAElBuqC,EAAS,IAAIwpiB,GAAOz7kB,IACb4olB,aAAeZ,GAAQtglB,GAC9BsglB,GAAQtglB,GAAQuqC,GAIpBy2iB,GAAmBhhlB,EACtB,MAEwB,MAAjBsglB,GAAQtglB,KAC0B,MAA9BsglB,GAAQtglB,GAAMkhlB,cACdZ,GAAQtglB,GAAQsglB,GAAQtglB,GAAMkhlB,aAC1BlhlB,IAASghlB,MACTA,GAAmBhhlB,IAEC,MAAjBsglB,GAAQtglB,WACRsglB,GAAQtglB,IAI3B,OAAOsglB,GAAQtglB,EAClB,CAGD,SAASihlB,GAAU9ujB,GACf,IAAIoY,EAMJ,GAJIpY,GAAOA,EAAI2gjB,SAAW3gjB,EAAI2gjB,QAAQgO,QAClC3ujB,EAAMA,EAAI2gjB,QAAQgO,QAGjB3ujB,EACD,OAAOiujB,GAGX,IAAKx4jB,EAAQuK,GAAM,CAGf,GADAoY,EAAS83a,GAAWlwb,GAEhB,OAAOoY,EAEXpY,EAAM,CAACA,EACV,CAED,OAAOwujB,GAAaxujB,EACvB,CAED,SAASkvjB,KACL,OAAOnvjB,GAAKoujB,GACf,CAED,SAASgB,GAAc3jZ,GACnB,IAAI95E,EACAnuF,EAAIioK,EAAEmiF,GAEV,OAAIpqP,IAAqC,IAAhC+7iB,GAAgB9zY,GAAG95E,WACxBA,EACInuF,EAAEujjB,IAAS,GAAKvjjB,EAAEujjB,IAAS,GACrBA,GACAvjjB,EAAEnP,IAAQ,GAAKmP,EAAEnP,IAAQywjB,GAAYthjB,EAAEsjjB,IAAOtjjB,EAAEujjB,KAChD1yjB,GACAmP,EAAEotb,IAAQ,GACVptb,EAAEotb,IAAQ,IACG,KAAZptb,EAAEotb,MACgB,IAAdptb,EAAEwjjB,KACe,IAAdxjjB,EAAEyjjB,KACiB,IAAnBzjjB,EAAE0jjB,KACVt2H,GACAptb,EAAEwjjB,IAAU,GAAKxjjB,EAAEwjjB,IAAU,GAC7BA,GACAxjjB,EAAEyjjB,IAAU,GAAKzjjB,EAAEyjjB,IAAU,GAC7BA,GACAzjjB,EAAE0jjB,IAAe,GAAK1jjB,EAAE0jjB,IAAe,IACvCA,IACA,EAGN3H,GAAgB9zY,GAAG4jZ,qBAClB19d,EAAWm1d,IAAQn1d,EAAWt9F,MAE/Bs9F,EAAWt9F,IAEXkrjB,GAAgB9zY,GAAG6jZ,iBAA+B,IAAb39d,IACrCA,EAAWw1d,IAEX5H,GAAgB9zY,GAAG8jZ,mBAAiC,IAAb59d,IACvCA,EAAWm/V,IAGfyuH,GAAgB9zY,GAAG95E,SAAWA,GAG3B85E,CACV,CAID,IAAI+jZ,GACI,iJACJC,GACI,6IACJC,GAAU,wBACVC,GAAW,CACP,CAAC,eAAgB,uBACjB,CAAC,aAAc,mBACf,CAAC,eAAgB,kBACjB,CAAC,aAAc,eAAe,GAC9B,CAAC,WAAY,eACb,CAAC,UAAW,cAAc,GAC1B,CAAC,aAAc,cACf,CAAC,WAAY,SACb,CAAC,aAAc,eACf,CAAC,YAAa,eAAe,GAC7B,CAAC,UAAW,SACZ,CAAC,SAAU,SAAS,GACpB,CAAC,OAAQ,SAAS,IAGtBC,GAAW,CACP,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAEXC,GAAkB,qBAElBxQ,GACI,0LACJyQ,GAAa,CACTC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIb,SAASC,GAAcrqlB,GACnB,IAAIyV,EACA+4F,EAGA87e,GACAC,GACAC,GACAC,GALAtmV,EAASnkQ,EAAOm6kB,GAChBrnjB,GAAQs2jB,GAAiB/zhB,KAAK8uM,IAAWklV,GAAch0hB,KAAK8uM,GAK5DumV,GAAcnB,GAAShplB,OACvBoqlB,GAAcnB,GAASjplB,OAE3B,GAAIuyB,GAAO,CAEP,IADAqmjB,GAAgBn5kB,GAAQ+4kB,KAAM,EACzBtjkB,EAAI,EAAG+4F,EAAIk8e,GAAaj1kB,EAAI+4F,EAAG/4F,IAChC,GAAI8zkB,GAAS9zkB,GAAG,GAAG4/C,KAAKviC,GAAM,IAAK,CAC/By3jB,GAAahB,GAAS9zkB,GAAG,GACzB60kB,IAA+B,IAAnBf,GAAS9zkB,GAAG,GACxB,KACH,CAEL,GAAkB,MAAd80kB,GAEA,YADAvqlB,EAAOq5kB,UAAW,GAGtB,GAAIvmjB,GAAM,GAAI,CACV,IAAKrd,EAAI,EAAG+4F,EAAIm8e,GAAal1kB,EAAI+4F,EAAG/4F,IAChC,GAAI+zkB,GAAS/zkB,GAAG,GAAG4/C,KAAKviC,GAAM,IAAK,CAE/B03jB,IAAc13jB,GAAM,IAAM,KAAO02jB,GAAS/zkB,GAAG,GAC7C,KACH,CAEL,GAAkB,MAAd+0kB,GAEA,YADAxqlB,EAAOq5kB,UAAW,EAGzB,CACD,IAAKiR,IAA2B,MAAdE,GAEd,YADAxqlB,EAAOq5kB,UAAW,GAGtB,GAAIvmjB,GAAM,GACN,KAAIw2jB,GAAQj0hB,KAAKviC,GAAM,IAInB,YADA9yB,EAAOq5kB,UAAW,GAFlBoR,GAAW,GAId,CAELzqlB,EAAOo6kB,GAAKmQ,IAAcC,IAAc,KAAOC,IAAY,IAC3DG,GAA0B5qlB,EAC7B,MACGA,EAAOq5kB,UAAW,CAEzB,CAED,SAASwR,GACLC,EACAC,EACAC,EACAC,EACAC,GACAC,IAEA,IAAIt5jB,GAAS,CACTu5jB,GAAeN,GACf5J,GAAyBhglB,QAAQ6plB,GACjCl0jB,SAASm0jB,EAAQ,IACjBn0jB,SAASo0jB,EAAS,IAClBp0jB,SAASq0jB,GAAW,KAGxB,OAAIC,IACAt5jB,GAAO5V,KAAK4a,SAASs0jB,GAAW,KAG7Bt5jB,EACV,CAED,SAASu5jB,GAAeN,GACpB,IAAIpza,EAAO7gJ,SAASi0jB,EAAS,IAC7B,OAAIpza,GAAQ,GACD,IAAOA,EACPA,GAAQ,IACR,KAAOA,EAEXA,CACV,CAED,SAAS2za,GAAkBpojB,GAEvB,OAAOA,EACF3iC,QAAQ,qBAAsB,KAC9BA,QAAQ,WAAY,KACpBA,QAAQ,SAAU,IAClBA,QAAQ,SAAU,GAC1B,CAED,SAASgrlB,GAAaC,EAAYC,EAAaxrlB,GAC3C,OAAIurlB,GAEsBxG,GAA2B7jlB,QAAQqqlB,KACrC,IAAIhplB,KAChBiplB,EAAY,GACZA,EAAY,GACZA,EAAY,IACdxtiB,WAEFm7hB,GAAgBn5kB,GAAQk5kB,iBAAkB,EAC1Cl5kB,EAAOq5kB,UAAW,GACX,EAIlB,CAED,SAASoS,GAAgBC,EAAWC,EAAgBC,GAChD,GAAIF,EACA,OAAOhC,GAAWgC,GACf,GAAIC,EAEP,OAAO,EAEP,IAAI3mN,EAAKnuW,SAAS+0jB,EAAW,IACzBvmZ,GAAI2/L,EAAK,IAEb,OADSA,EAAK3/L,IAAK,IACR,GAAKA,EAEvB,CAGD,SAASwmZ,GAAkB7rlB,GACvB,IACI8rlB,EADAh5jB,EAAQmmjB,GAAQ5jhB,KAAKg2hB,GAAkBrrlB,EAAOm6kB,KAElD,GAAIrnjB,EAAO,CASP,GARAg5jB,EAAcjB,GACV/3jB,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,KAELw4jB,GAAax4jB,EAAM,GAAIg5jB,EAAa9rlB,GACrC,OAGJA,EAAOwnR,GAAKskU,EACZ9rlB,EAAOs6kB,KAAOmR,GAAgB34jB,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAExD9yB,EAAOw5kB,GAAK4J,GAAchvjB,MAAM,KAAMp0B,EAAOwnR,IAC7CxnR,EAAOw5kB,GAAGuS,cAAc/rlB,EAAOw5kB,GAAGn/O,gBAAkBr6V,EAAOs6kB,MAE3DnB,GAAgBn5kB,GAAQi5kB,SAAU,CACrC,MACGj5kB,EAAOq5kB,UAAW,CAEzB,CAGD,SAAS2S,GAAiBhslB,GACtB,IAAI6mC,EAAU4ijB,GAAgBp0hB,KAAKr1D,EAAOm6kB,IAC1B,OAAZtziB,GAKJwjjB,GAAcrqlB,IACU,IAApBA,EAAOq5kB,kBACAr5kB,EAAOq5kB,SAKlBwS,GAAkB7rlB,IACM,IAApBA,EAAOq5kB,kBACAr5kB,EAAOq5kB,SAKdr5kB,EAAO05kB,QACP15kB,EAAOq5kB,UAAW,EAGlBxB,EAAMoU,wBAAwBjslB,MAtB9BA,EAAOw5kB,GAAK,IAAIj3kB,MAAMskC,EAAQ,GAwBrC,CAYD,SAAS00B,GAASn+B,EAAGpF,EAAGx2B,GACpB,OAAI47B,GAGApF,GAGGx2B,CACV,CAED,SAAS0qlB,GAAiBlslB,GAEtB,IAAImslB,EAAW,IAAI5plB,KAAKs1kB,EAAMpijB,OAC9B,OAAIz1B,EAAOoslB,QACA,CACHD,EAASlyP,iBACTkyP,EAASjyP,cACTiyP,EAAShyP,cAGV,CAACgyP,EAASxuiB,cAAewuiB,EAASvuiB,WAAYuuiB,EAASluiB,UACjE,CAMD,SAASouiB,GAAgBrslB,GACrB,IAAIyV,EACAnT,EAEA+rL,GACAi+Z,GACAC,GAHA57kB,EAAQ,GAKZ,IAAI3Q,EAAOw5kB,GAgCX,KA5BAnrZ,GAAc69Z,GAAiBlslB,GAG3BA,EAAOwglB,IAAyB,MAAnBxglB,EAAOwnR,GAAGv5P,KAAqC,MAApBjuB,EAAOwnR,GAAGm5T,KAClD6L,GAAsBxslB,GAID,MAArBA,EAAOyslB,aACPF,GAAYhxhB,GAASv7D,EAAOwnR,GAAGk5T,IAAOryZ,GAAYqyZ,MAG9C1glB,EAAOyslB,WAAazJ,GAAWuJ,KACT,IAAtBvslB,EAAOyslB,cAEPtT,GAAgBn5kB,GAAQiplB,oBAAqB,GAGjD3mlB,EAAO8glB,GAAcmJ,GAAW,EAAGvslB,EAAOyslB,YAC1CzslB,EAAOwnR,GAAGm5T,IAASr+kB,EAAK43V,cACxBl6V,EAAOwnR,GAAGv5P,IAAQ3rB,EAAK63V,cAQtB1kV,EAAI,EAAGA,EAAI,GAAqB,MAAhBzV,EAAOwnR,GAAG/xQ,KAAcA,EACzCzV,EAAOwnR,GAAG/xQ,GAAK9E,EAAM8E,GAAK44K,GAAY54K,GAI1C,KAAOA,EAAI,EAAGA,IACVzV,EAAOwnR,GAAG/xQ,GAAK9E,EAAM8E,GACD,MAAhBzV,EAAOwnR,GAAG/xQ,GAAoB,IAANA,EAAU,EAAI,EAAKzV,EAAOwnR,GAAG/xQ,GAKrC,KAApBzV,EAAOwnR,GAAGgjM,KACY,IAAtBxqd,EAAOwnR,GAAGo5T,KACY,IAAtB5glB,EAAOwnR,GAAGq5T,KACiB,IAA3B7glB,EAAOwnR,GAAGs5T,MAEV9glB,EAAO0slB,UAAW,EAClB1slB,EAAOwnR,GAAGgjM,IAAQ,GAGtBxqd,EAAOw5kB,IAAMx5kB,EAAOoslB,QAAUhJ,GAAgB3ra,IAAYrjJ,MACtD,KACAzjB,GAEJ27kB,GAAkBtslB,EAAOoslB,QACnBpslB,EAAOw5kB,GAAG+J,YACVvjlB,EAAOw5kB,GAAGx7hB,SAIG,MAAfh+C,EAAOs6kB,MACPt6kB,EAAOw5kB,GAAGuS,cAAc/rlB,EAAOw5kB,GAAGn/O,gBAAkBr6V,EAAOs6kB,MAG3Dt6kB,EAAO0slB,WACP1slB,EAAOwnR,GAAGgjM,IAAQ,IAKlBxqd,EAAOwglB,WACAxglB,EAAOwglB,GAAG/1iB,EAAM,KACvBzqC,EAAOwglB,GAAG/1iB,IAAM6hjB,KAEhBnT,GAAgBn5kB,GAAQk5kB,iBAAkB,GAEjD,CAED,SAASsT,GAAsBxslB,GAC3B,IAAI6zH,EAAG84d,EAAUria,EAAMi9M,GAAS4qM,GAAKC,GAAKt3c,GAAM8xd,GAAiBC,GAGrD,OADZh5d,EAAI7zH,EAAOwglB,IACLsM,IAAqB,MAAPj5d,EAAEE,GAAoB,MAAPF,EAAEM,GACjCg+c,GAAM,EACNC,GAAM,EAMNua,EAAWpxhB,GACPs4D,EAAEi5d,GACF9slB,EAAOwnR,GAAGk5T,IACViD,GAAWoJ,KAAe,EAAG,GAAGr1a,MAEpC4S,EAAO/uH,GAASs4D,EAAEE,EAAG,KACrBwzQ,GAAUhsU,GAASs4D,EAAEM,EAAG,IACV,GAAKozQ,GAAU,KACzBqlN,IAAkB,KAGtBza,GAAMnykB,EAAOw6kB,QAAQyJ,MAAM9R,IAC3BC,GAAMpykB,EAAOw6kB,QAAQyJ,MAAM7R,IAE3Bya,GAAUlJ,GAAWoJ,KAAe5a,GAAKC,IAEzCua,EAAWpxhB,GAASs4D,EAAEm5d,GAAIhtlB,EAAOwnR,GAAGk5T,IAAOmM,GAAQn1a,MAGnD4S,EAAO/uH,GAASs4D,EAAEA,EAAGg5d,GAAQvia,MAElB,MAAPz2D,EAAEppF,IAEF88V,GAAU1zQ,EAAEppF,GACE,GAAK88V,GAAU,KACzBqlN,IAAkB,GAER,MAAP/4d,EAAEnvG,GAET6iX,GAAU1zQ,EAAEnvG,EAAIytjB,IACZt+c,EAAEnvG,EAAI,GAAKmvG,EAAEnvG,EAAI,KACjBkokB,IAAkB,IAItBrlN,GAAU4qM,IAGd7nZ,EAAO,GAAKA,EAAOw5Z,EAAY6I,EAAUxa,GAAKC,IAC9C+G,GAAgBn5kB,GAAQkplB,gBAAiB,EACf,MAAnB0D,GACPzT,GAAgBn5kB,GAAQmplB,kBAAmB,GAE3Crud,GAAO0od,GAAmBmJ,EAAUria,EAAMi9M,GAAS4qM,GAAKC,IACxDpykB,EAAOwnR,GAAGk5T,IAAQ5ld,GAAK48C,KACvB13K,EAAOyslB,WAAa3xd,GAAKwsQ,UAEhC,CASD,SAASsjN,GAA0B5qlB,GAE/B,GAAIA,EAAOo6kB,KAAOvC,EAAMoV,SAIxB,GAAIjtlB,EAAOo6kB,KAAOvC,EAAMqV,SAAxB,CAIAltlB,EAAOwnR,GAAK,GACZ2xT,GAAgBn5kB,GAAQqyE,OAAQ,EAGhC,IACI58D,EACA+1kB,EACAxlV,GACAlkQ,GACAqrlB,GAGAhmN,GACAm5M,GATAn8U,EAAS,GAAKnkQ,EAAOm6kB,GAMrBiT,GAAejpV,EAAO5jQ,OACtB8slB,GAAyB,EAO7B,IADA/M,IAFAt6U,GACI02U,GAAa18kB,EAAOo6kB,GAAIp6kB,EAAOw6kB,SAAS1njB,MAAMkpjB,KAAqB,IACrDz7kB,OACbkV,EAAI,EAAGA,EAAI6qkB,GAAU7qkB,IACtB3T,GAAQkkQ,GAAOvwP,IACf+1kB,GAAernV,EAAOrxO,MAAMotjB,GAAsBp+kB,GAAO9B,KACrD,IAAI,OAEJmtlB,GAAUhpV,EAAO9rI,OAAO,EAAG8rI,EAAOjjQ,QAAQsqlB,KAC9BjrlB,OAAS,GACjB44kB,GAAgBn5kB,GAAQw4kB,YAAYv8jB,KAAKkxkB,IAE7ChpV,EAASA,EAAOxiQ,MACZwiQ,EAAOjjQ,QAAQsqlB,GAAeA,EAAYjrlB,QAE9C8slB,IAA0B7B,EAAYjrlB,QAGtC47kB,GAAqBr6kB,KACjB0plB,EACArS,GAAgBn5kB,GAAQqyE,OAAQ,EAEhC8mgB,GAAgBn5kB,GAAQu4kB,aAAat8jB,KAAKna,IAE9C2+kB,GAAwB3+kB,GAAO0plB,EAAaxrlB,IACrCA,EAAO05kB,UAAY8R,GAC1BrS,GAAgBn5kB,GAAQu4kB,aAAat8jB,KAAKna,IAKlDq3kB,GAAgBn5kB,GAAQy4kB,cACpB2U,GAAeC,GACflpV,EAAO5jQ,OAAS,GAChB44kB,GAAgBn5kB,GAAQw4kB,YAAYv8jB,KAAKkoP,GAKzCnkQ,EAAOwnR,GAAGgjM,KAAS,KACiB,IAApC2uH,GAAgBn5kB,GAAQ25kB,SACxB35kB,EAAOwnR,GAAGgjM,IAAQ,IAElB2uH,GAAgBn5kB,GAAQ25kB,aAAU3kkB,GAGtCmkkB,GAAgBn5kB,GAAQg5kB,gBAAkBh5kB,EAAOwnR,GAAG7lR,MAAM,GAC1Dw3kB,GAAgBn5kB,GAAQ8wkB,SAAW9wkB,EAAOwnlB,UAE1CxnlB,EAAOwnR,GAAGgjM,IAAQ8iI,GACdttlB,EAAOw6kB,QACPx6kB,EAAOwnR,GAAGgjM,IACVxqd,EAAOwnlB,WAKC,QADZrgN,GAAMgyM,GAAgBn5kB,GAAQmnY,OAE1BnnY,EAAOwnR,GAAGk5T,IAAQ1glB,EAAOw6kB,QAAQ+S,gBAAgBpmN,GAAKnnY,EAAOwnR,GAAGk5T,MAGpE2L,GAAgBrslB,GAChBgplB,GAAchplB,EA9Eb,MAFG6rlB,GAAkB7rlB,QAJlBqqlB,GAAcrqlB,EAqFrB,CAED,SAASstlB,GAAgBr7iB,EAAQolI,EAAMy5Z,GACnC,IAAI0c,EAEJ,OAAgB,MAAZ1c,EAEOz5Z,EAEgB,MAAvBplI,EAAOshiB,aACAthiB,EAAOshiB,aAAal8Z,EAAMy5Z,IACX,MAAf7+hB,EAAO2iK,QAEd44Y,EAAOv7iB,EAAO2iK,KAAKk8X,KACPz5Z,EAAO,KACfA,GAAQ,KAEPm2a,GAAiB,KAATn2a,IACTA,EAAO,IAEJA,EAKd,CAGD,SAASo2a,GAAyBztlB,GAC9B,IAAI0tlB,EACAC,EACAC,EACAn4kB,GACAo4kB,GACAC,GACAC,IAAoB,EACpBC,GAAahulB,EAAOo6kB,GAAG75kB,OAE3B,GAAmB,IAAfytlB,GAGA,OAFA7U,GAAgBn5kB,GAAQ64kB,eAAgB,OACxC74kB,EAAOw5kB,GAAK,IAAIj3kB,KAAKq0N,MAIzB,IAAKnhN,GAAI,EAAGA,GAAIu4kB,GAAYv4kB,KACxBo4kB,GAAe,EACfC,IAAmB,EACnBJ,EAAa1T,GAAW,GAAIh6kB,GACN,MAAlBA,EAAOoslB,UACPsB,EAAWtB,QAAUpslB,EAAOoslB,SAEhCsB,EAAWtT,GAAKp6kB,EAAOo6kB,GAAG3kkB,IAC1Bm1kB,GAA0B8C,GAEtBniX,GAAQmiX,KACRI,IAAmB,GAIvBD,IAAgB1U,GAAgBuU,GAAYjV,cAG5CoV,IAAkE,GAAlD1U,GAAgBuU,GAAYnV,aAAah4kB,OAEzD44kB,GAAgBuU,GAAYv9M,MAAQ09M,GAE/BE,GAaGF,GAAeD,IACfA,EAAcC,GACdF,EAAaD,IAbE,MAAfE,GACAC,GAAeD,GACfE,MAEAF,EAAcC,GACdF,EAAaD,EACTI,KACAC,IAAoB,IAWpCp8d,GAAO3xH,EAAQ2tlB,GAAcD,EAChC,CAED,SAASO,GAAiBjulB,GACtB,IAAIA,EAAOw5kB,GAIX,KAAI/jkB,EAAIiokB,GAAqB19kB,EAAOm6kB,IAChC+T,OAAsBl5kB,IAAVS,EAAEsoC,IAAoBtoC,EAAEnT,KAAOmT,EAAEsoC,IACjD/9C,EAAOwnR,GAAKlmR,GACR,CAACmU,EAAEiiK,KAAMjiK,EAAEkiK,MAAOu2a,EAAWz4kB,EAAE4hK,KAAM5hK,EAAEu9L,OAAQv9L,EAAE+qK,OAAQ/qK,EAAEo2L,aAC3D,SAAU74K,GACN,OAAOA,GAAO6D,SAAS7D,EAAK,GAC/B,GAGLq5jB,GAAgBrslB,EAAD,CAClB,CAED,SAASmulB,GAAiBnulB,GACtB,IAAIumV,EAAM,IAAIk0P,GAAOuO,GAAcoF,GAAcpulB,KACjD,OAAIumV,EAAImmQ,WAEJnmQ,EAAIt6U,IAAI,EAAG,KACXs6U,EAAImmQ,cAAW13kB,GAGZuxU,CACV,CAED,SAAS6nQ,GAAcpulB,GACnB,IAAI2Q,EAAQ3Q,EAAOm6kB,GACf/qiB,EAASpvC,EAAOo6kB,GAIpB,OAFAp6kB,EAAOw6kB,QAAUx6kB,EAAOw6kB,SAAWmO,GAAU3olB,EAAOq6kB,IAEtC,OAAV1pkB,QAA8BqE,IAAXo6B,GAAkC,KAAVz+B,EACpCkpkB,GAAc,CAAEnB,WAAW,KAGjB,iBAAV/nkB,IACP3Q,EAAOm6kB,GAAKxpkB,EAAQ3Q,EAAOw6kB,QAAQ3H,SAASlikB,IAG5CgqkB,GAAShqkB,GACF,IAAI8pkB,GAAOuO,GAAcr4kB,KACzBsiV,GAAOtiV,GACd3Q,EAAOw5kB,GAAK7okB,EACL2e,EAAQ8f,GACfq+iB,GAAyBztlB,GAClBovC,EACPw7iB,GAA0B5qlB,GAE1BqulB,GAAgBrulB,GAGfurO,GAAQvrO,KACTA,EAAOw5kB,GAAK,MAGTx5kB,GACV,CAED,SAASqulB,GAAgBrulB,GACrB,IAAI2Q,EAAQ3Q,EAAOm6kB,GACflO,GAAYt7jB,GACZ3Q,EAAOw5kB,GAAK,IAAIj3kB,KAAKs1kB,EAAMpijB,OACpBw9T,GAAOtiV,GACd3Q,EAAOw5kB,GAAK,IAAIj3kB,KAAKoO,EAAM/N,WACH,iBAAV+N,EACdq7kB,GAAiBhslB,GACVsvB,EAAQ3e,IACf3Q,EAAOwnR,GAAKlmR,GAAIqP,EAAMhP,MAAM,GAAI,SAAUqxB,GACtC,OAAO6D,SAAS7D,EAAK,GACxB,GACDq5jB,GAAgBrslB,IACTqxB,EAAS1gB,GAChBs9kB,GAAiBjulB,GACVmwB,GAASxf,GAEhB3Q,EAAOw5kB,GAAK,IAAIj3kB,KAAKoO,GAErBknkB,EAAMoU,wBAAwBjslB,EAErC,CAED,SAASo4kB,GAAiBznkB,EAAOy+B,EAAQ6C,EAAQkmiB,EAAQmW,IACrD,IAAI9slB,GAAI,GAER,QAAe,IAAX4tC,IAA8B,IAAXA,KACnB+oiB,EAAS/oiB,EACTA,OAASp6B,KAGE,IAAXi9B,IAA8B,IAAXA,KACnBkmiB,EAASlmiB,EACTA,OAASj9B,IAIRqc,EAAS1gB,IAAUqnkB,GAAcrnkB,IACjC2e,EAAQ3e,IAA2B,IAAjBA,EAAMpQ,UAEzBoQ,OAAQqE,GAIZxT,GAAE04kB,kBAAmB,EACrB14kB,GAAE4qlB,QAAU5qlB,GAAE+4kB,OAAS+T,GACvB9slB,GAAE64kB,GAAKpoiB,EACPzwC,GAAE24kB,GAAKxpkB,EACPnP,GAAE44kB,GAAKhriB,EACP5tC,GAAEk4kB,QAAUvB,EAELgW,GAAiB3slB,GAC3B,CAED,SAASurlB,GAAYp8kB,EAAOy+B,EAAQ6C,EAAQkmiB,GACxC,OAAOC,GAAiBznkB,EAAOy+B,EAAQ6C,EAAQkmiB,GAAQ,EAC1D,CAxeDN,EAAMoU,wBAA0Bl/C,GAC5B,gSAGA,SAAU/siB,GACNA,EAAOw5kB,GAAK,IAAIj3kB,KAAKvC,EAAOm6kB,IAAMn6kB,EAAOoslB,QAAU,OAAS,IAC/D,GAsLLvU,EAAMoV,SAAW,WAAc,EAG/BpV,EAAMqV,SAAW,WAAc,EA2S/B,IAAIqB,GAAexhD,GACX,qGACA,WACI,IAAIlwe,EAAQkwhB,GAAY34jB,MAAM,KAAMhD,WACpC,OAAInxB,KAAKsrO,WAAa1uK,EAAM0uK,UACjB1uK,EAAQ58D,KAAOA,KAAO48D,EAEtBg9gB,IAEd,GAEL2U,GAAezhD,GACX,qGACA,WACI,IAAIlwe,EAAQkwhB,GAAY34jB,MAAM,KAAMhD,WACpC,OAAInxB,KAAKsrO,WAAa1uK,EAAM0uK,UACjB1uK,EAAQ58D,KAAOA,KAAO48D,EAEtBg9gB,IAEd,GAQT,SAAS9T,GAAOt1iB,EAAIg+jB,GAChB,IAAIloQ,EAAK9wU,EAIT,GAHuB,IAAnBg5kB,EAAQlulB,QAAgB+uB,EAAQm/jB,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQlulB,OACT,OAAOwslB,KAGX,IADAxmQ,EAAMkoQ,EAAQ,GACTh5kB,EAAI,EAAGA,EAAIg5kB,EAAQlulB,SAAUkV,IACzBg5kB,EAAQh5kB,GAAG81N,WAAakjX,EAAQh5kB,GAAGgb,GAAI81T,MACxCA,EAAMkoQ,EAAQh5kB,IAGtB,OAAO8wU,CACV,CAGD,SAAS1rU,KAGL,OAAOkrjB,GAAO,WAFH,GAAGpkkB,MAAMJ,KAAK6vB,UAAW,GAGvC,CAED,SAAStW,KAGL,OAAOirjB,GAAO,UAFH,GAAGpkkB,MAAMJ,KAAK6vB,UAAW,GAGvC,CAED,IAAIqE,GAAM,WACN,OAAOlzB,KAAKkzB,IAAMlzB,KAAKkzB,OAAS,IAAIlzB,IACvC,EAEGmslB,GAAW,CACX,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eAGJ,SAASC,GAAgBtpZ,GACrB,IAAIxrK,EAEApkB,EADAm5kB,GAAiB,EAEjBC,GAAWH,GAASnulB,OACxB,IAAKs5B,KAAOwrK,EACR,GACI0yY,EAAW1yY,EAAGxrK,MAEsB,IAAhC34B,GAAQK,KAAKmtlB,GAAU70jB,IACZ,MAAVwrK,EAAExrK,IAAiBzJ,MAAMi1K,EAAExrK,KAGhC,OAAO,EAIf,IAAKpkB,EAAI,EAAGA,EAAIo5kB,KAAYp5kB,EACxB,GAAI4vL,EAAEqpZ,GAASj5kB,IAAK,CAChB,GAAIm5kB,EACA,OAAO,EAEP58jB,WAAWqzK,EAAEqpZ,GAASj5kB,OAAS2okB,GAAM/4Y,EAAEqpZ,GAASj5kB,OAChDm5kB,GAAiB,EAExB,CAGL,OAAO,CACV,CAED,SAASE,KACL,OAAO7ulB,KAAKo5kB,QACf,CAED,SAAS0V,KACL,OAAOC,GAAep4X,IACzB,CAED,SAASq4X,GAASpkkB,GACd,IAAIgzjB,EAAkBH,GAAqB7yjB,GACvC2xB,EAAQqhiB,EAAgBnma,MAAQ,EAChCgvN,EAAWm3M,EAAgBz2M,SAAW,EACtC3qV,GAASohiB,EAAgBlma,OAAS,EAClCj7H,GAAQmhiB,EAAgBvzZ,MAAQuzZ,EAAgBqR,SAAW,EAC3DvyiB,GAAOkhiB,EAAgB9/hB,KAAO,EAC9BnB,GAAQihiB,EAAgBxma,MAAQ,EAChCx6H,GAAUghiB,EAAgB7qY,QAAU,EACpCl2J,GAAU+giB,EAAgBr9Z,QAAU,EACpCzjI,GAAe8giB,EAAgBhyY,aAAe,EAElD5rM,KAAKo5kB,SAAWsV,GAAgB9Q,GAGhC59kB,KAAKkvlB,eACApyiB,GACS,IAAVD,GACU,IAAVD,GACQ,IAARD,GAAe,GAAK,GAGxB38C,KAAKmvlB,OAASzyiB,GAAe,EAARD,GAIrBz8C,KAAKshlB,SAAW9kiB,GAAoB,EAAXiqV,EAAuB,GAARlqV,EAExCv8C,KAAKud,MAAQ,GAEbvd,KAAKu6kB,QAAUmO,KAEf1olB,KAAKovlB,SACR,CAED,SAASC,GAAWt8jB,GAChB,OAAOA,aAAei8jB,EACzB,CAED,SAASM,GAASt0N,GACd,OAAIA,EAAS,GACwB,EAA1BtmW,KAAK7E,OAAM,EAAKmrW,GAEhBtmW,KAAK7E,MAAMmrW,EAEzB,CAGD,SAASu0N,GAAcC,EAAQC,EAAQC,GACnC,IAGIl6kB,GAHA6+Q,EAAM3/P,KAAK9Z,IAAI40kB,EAAOlvlB,OAAQmvlB,EAAOnvlB,QACrCqvlB,GAAaj7jB,KAAKsH,IAAIwzjB,EAAOlvlB,OAASmvlB,EAAOnvlB,QAC7CsvlB,GAAQ,EAEZ,IAAKp6kB,GAAI,EAAGA,GAAI6+Q,EAAK7+Q,MAEZk6kB,GAAeF,EAAOh6kB,MAAOi6kB,EAAOj6kB,MACnCk6kB,GAAevR,GAAMqR,EAAOh6kB,OAAQ2okB,GAAMsR,EAAOj6kB,OAEnDo6kB,KAGR,OAAOA,GAAQD,EAClB,CAID,SAAShnkB,GAAO9mB,EAAOq1I,GACnBilc,GAAet6kB,EAAO,EAAG,EAAG,WACxB,IAAI8mB,EAAS3oB,KAAK6vlB,YACdr+hB,EAAO,IACX,OAAI7oC,EAAS,IACTA,GAAUA,EACV6oC,EAAO,KAGPA,EACAkqhB,MAAY/yjB,EAAS,IAAK,GAC1BuuH,EACAwkc,KAAW/yjB,EAAS,GAAI,EAE/B,EACJ,CAEDA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIbo3jB,GAAc,IAAKH,IACnBG,GAAc,KAAMH,IACpBQ,GAAc,CAAC,IAAK,MAAO,SAAU1vkB,EAAOuiB,EAAOlzB,GAC/CA,EAAOoslB,SAAU,EACjBpslB,EAAOs6kB,KAAOyV,GAAiBlQ,GAAkBlvkB,EACpD,GAOD,IAAIq/kB,GAAc,kBAElB,SAASD,GAAiBh5X,EAASotC,GAC/B,IAEIpiQ,GACA86C,GAHAh0C,GAAWs7P,GAAU,IAAIrxO,MAAMikM,GAKnC,OAAgB,OAAZluN,EACO,KAOQ,KAFnBg0C,GAAuB,IADvB96C,KADQ8G,EAAQA,EAAQtI,OAAS,IAAM,IACtB,IAAIuyB,MAAMk9jB,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAW5R,GAAMr8kB,GAAM,KAElB,EAAiB,MAAbA,GAAM,GAAa86C,IAAWA,EAC5D,CAGD,SAASoziB,GAAgBt/kB,EAAOqiG,GAC5B,IAAIuzO,EAAKxqT,EACT,OAAIi3E,EAAMune,QACNh0P,EAAMvzO,EAAM5tG,QACZ22B,GACK4+iB,GAAShqkB,IAAUsiV,GAAOtiV,GACrBA,EAAM/N,UACNmqlB,GAAYp8kB,GAAO/N,WAAa2jV,EAAI3jV,UAE9C2jV,EAAIizP,GAAG/6Z,QAAQ8nK,EAAIizP,GAAG52kB,UAAYm5B,GAClC87iB,EAAM6C,aAAan0P,GAAK,GACjBA,GAEAwmQ,GAAYp8kB,GAAO66R,OAEjC,CAED,SAAS0kT,GAAc7qZ,GAGnB,OAAQ1wK,KAAK7E,MAAMu1K,EAAEm0Y,GAAGv8hB,oBAC3B,CAoBD,SAASkziB,GAAax/kB,EAAOy/kB,EAAeC,GACxC,IACIC,GADA1nkB,EAAS3oB,KAAKooB,SAAW,EAE7B,IAAKpoB,KAAKsrO,UACN,OAAgB,MAAT56N,EAAgB1Q,KAAO22N,IAElC,GAAa,MAATjmN,EAAe,CACf,GAAqB,iBAAVA,GAEP,GAAc,QADdA,EAAQo/kB,GAAiBlQ,GAAkBlvkB,IAEvC,OAAO1Q,UAEJ00B,KAAKsH,IAAItrB,GAAS,KAAO0/kB,IAChC1/kB,GAAgB,IAEpB,OAAK1Q,KAAKs6kB,QAAU6V,IAChBE,GAAcJ,GAAcjwlB,OAEhCA,KAAKooB,QAAU1X,EACf1Q,KAAKs6kB,QAAS,EACK,MAAf+V,IACArwlB,KAAKgM,IAAIqklB,GAAa,KAEtB1nkB,IAAWjY,KACNy/kB,GAAiBnwlB,KAAKswlB,kBACvBC,GACIvwlB,KACA+ulB,GAAer+kB,EAAQiY,EAAQ,KAC/B,GACA,GAEI3oB,KAAKswlB,oBACbtwlB,KAAKswlB,mBAAoB,EACzB1Y,EAAM6C,aAAaz6kB,MAAM,GACzBA,KAAKswlB,kBAAoB,OAG1BtwlB,IACV,CACG,OAAOA,KAAKs6kB,OAAS3xjB,EAASsnkB,GAAcjwlB,KAEnD,CAED,SAASwwlB,GAAW9/kB,EAAOy/kB,GACvB,OAAa,MAATz/kB,GACqB,iBAAVA,IACPA,GAASA,GAGb1Q,KAAK6vlB,UAAUn/kB,EAAOy/kB,GAEfnwlB,OAECA,KAAK6vlB,WAEpB,CAED,SAASY,GAAeN,GACpB,OAAOnwlB,KAAK6vlB,UAAU,EAAGM,EAC5B,CAED,SAASO,GAAiBP,GACtB,OAAInwlB,KAAKs6kB,SACLt6kB,KAAK6vlB,UAAU,EAAGM,GAClBnwlB,KAAKs6kB,QAAS,EAEV6V,GACAnwlB,KAAKu7P,SAAS00V,GAAcjwlB,MAAO,MAGpCA,IACV,CAED,SAAS2wlB,KACL,GAAiB,MAAb3wlB,KAAKq6kB,KACLr6kB,KAAK6vlB,UAAU7vlB,KAAKq6kB,MAAM,GAAO,QAAjC,GAC0B,iBAAZr6kB,KAAKk6kB,GAAiB,CACpC,IAAI0W,EAAQd,GAAiBnQ,GAAa3/kB,KAAKk6kB,IAClC,MAAT0W,EACA5wlB,KAAK6vlB,UAAUe,GAEf5wlB,KAAK6vlB,UAAU,GAAG,EAEzB,CACD,OAAO7vlB,IACV,CAED,SAAS6wlB,GAAqBnglB,GAC1B,QAAK1Q,KAAKsrO,YAGV56N,EAAQA,EAAQo8kB,GAAYp8kB,GAAOm/kB,YAAc,GAEzC7vlB,KAAK6vlB,YAAcn/kB,GAAS,IAAO,EAC9C,CAED,SAASoglB,KACL,OACI9wlB,KAAK6vlB,YAAc7vlB,KAAKmF,QAAQuyK,MAAM,GAAGm4a,aACzC7vlB,KAAK6vlB,YAAc7vlB,KAAKmF,QAAQuyK,MAAM,GAAGm4a,WAEhD,CAED,SAASkB,KACL,IAAK/kB,GAAYhskB,KAAKgxlB,eAClB,OAAOhxlB,KAAKgxlB,cAGhB,IACIp0hB,EADAr7D,EAAI,GAGRw4kB,UAAWx4kB,EAAGvB,OACduB,EAAI4slB,GAAc5slB,IAEZgmR,IACF3qN,EAAQr7D,EAAE+4kB,OAASrC,GAAU12kB,EAAEgmR,IAAMulU,GAAYvrlB,EAAEgmR,IACnDvnR,KAAKgxlB,cACDhxlB,KAAKsrO,WAAaikX,GAAchulB,EAAEgmR,GAAI3qN,EAAMxnD,WAAa,GAE7DpV,KAAKgxlB,eAAgB,EAGlBhxlB,KAAKgxlB,aACf,CAED,SAASC,KACL,QAAOjxlB,KAAKsrO,YAAatrO,KAAKs6kB,MACjC,CAED,SAAS4W,KACL,QAAOlxlB,KAAKsrO,WAAYtrO,KAAKs6kB,MAChC,CAED,SAAS6W,KACL,QAAOnxlB,KAAKsrO,WAAYtrO,KAAKs6kB,QAA2B,IAAjBt6kB,KAAKooB,OAC/C,CArJDwvjB,EAAM6C,aAAe,WAAc,EAwJnC,IAAI2W,GAAc,wDAIdC,GACI,sKAER,SAAStC,GAAer+kB,EAAOkpB,GAC3B,IAGI43B,GACA66Q,GACAilR,GALA1mkB,EAAWla,EAEXmiB,EAAQ,KAKZ,OAAIw8jB,GAAW3+kB,GACXka,EAAW,CACPmpW,GAAIrjX,EAAMw+kB,cACV1kjB,EAAG95B,EAAMy+kB,MACTz6d,EAAGhkH,EAAM4wkB,SAENpxjB,GAASxf,KAAWyf,OAAOzf,IAClCka,EAAW,GACPgP,EACAhP,EAASgP,IAAQlpB,EAEjBka,EAASkyB,cAAgBpsC,IAErBmiB,EAAQu+jB,GAAYh8hB,KAAK1kD,KACjC8gD,GAAoB,MAAb3+B,EAAM,IAAa,EAAK,EAC/BjI,EAAW,CACPtC,EAAG,EACHkiB,EAAG2ziB,GAAMtrjB,EAAM7E,KAASwjC,GACxB9mB,EAAGyziB,GAAMtrjB,EAAM03b,KAAS/4Z,GACxB4zI,EAAG+4Y,GAAMtrjB,EAAM8tjB,KAAWnvhB,GAC1BxuB,EAAGm7iB,GAAMtrjB,EAAM+tjB,KAAWpvhB,GAC1BuiU,GAAIoqN,GAAMmR,GAA8B,IAArBz8jB,EAAMgujB,MAAwBrvhB,MAE7C3+B,EAAQw+jB,GAASj8hB,KAAK1kD,KAC9B8gD,GAAoB,MAAb3+B,EAAM,IAAa,EAAK,EAC/BjI,EAAW,CACPtC,EAAGipkB,GAAS1+jB,EAAM,GAAI2+B,IACtBkjE,EAAG68d,GAAS1+jB,EAAM,GAAI2+B,IACtBoiE,EAAG29d,GAAS1+jB,EAAM,GAAI2+B,IACtBhnB,EAAG+mjB,GAAS1+jB,EAAM,GAAI2+B,IACtB9mB,EAAG6mjB,GAAS1+jB,EAAM,GAAI2+B,IACtB4zI,EAAGmsZ,GAAS1+jB,EAAM,GAAI2+B,IACtBxuB,EAAGuujB,GAAS1+jB,EAAM,GAAI2+B,MAEP,MAAZ5mC,EAEPA,EAAW,GAES,iBAAbA,IACN,SAAUA,GAAY,OAAQA,KAE/B0mkB,GAAUE,GACN1E,GAAYlikB,EAASplB,MACrBsnlB,GAAYlikB,EAASosB,MAGzBpsB,EAAW,IACFmpW,GAAKu9N,GAAQx0iB,aACtBlyB,EAAS8pG,EAAI48d,GAAQ90iB,QAGzB6vR,GAAM,IAAI2iR,GAASpkkB,GAEfykkB,GAAW3+kB,IAAUonkB,EAAWpnkB,EAAO,aACvC27T,GAAIkuQ,QAAU7pkB,EAAM6pkB,SAGpB8U,GAAW3+kB,IAAUonkB,EAAWpnkB,EAAO,cACvC27T,GAAI+sQ,SAAW1okB,EAAM0okB,UAGlB/sQ,EACV,CAKD,SAASklR,GAASE,EAAKjgiB,GAInB,IAAI80R,EAAMmrQ,GAAO1/jB,WAAW0/jB,EAAIpxlB,QAAQ,IAAK,MAE7C,OAAQ8vB,MAAMm2T,GAAO,EAAIA,GAAO90R,CACnC,CAED,SAASkgiB,GAA0BvmiB,EAAMyR,GACrC,IAAI0pR,EAAM,GAEVA,SAAI9pS,OACAogB,EAAM86G,QAAUvsH,EAAKusH,QAAyC,IAA9B96G,EAAM66G,OAAStsH,EAAKssH,QACpDtsH,EAAKhmD,QAAQ6G,IAAIs6U,EAAI9pS,OAAQ,KAAKm1iB,QAAQ/0hB,MACxC0pR,EAAI9pS,OAGV8pS,EAAIxpS,cAAgB8f,GAASzR,EAAKhmD,QAAQ6G,IAAIs6U,EAAI9pS,OAAQ,KAEnD8pS,CACV,CAED,SAASkrQ,GAAkBrmiB,EAAMyR,GAC7B,IAAI0pR,EACJ,OAAMn7R,EAAKmgL,WAAa1uK,EAAM0uK,WAI9B1uK,EAAQozhB,GAAgBpzhB,EAAOzR,GAC3BA,EAAKymiB,SAASh1hB,GACd0pR,EAAMorQ,GAA0BvmiB,EAAMyR,KAEtC0pR,EAAMorQ,GAA0B90hB,EAAOzR,IACnCrO,cAAgBwpS,EAAIxpS,aACxBwpS,EAAI9pS,QAAU8pS,EAAI9pS,QAGf8pS,GAZI,CAAExpS,aAAc,EAAGN,OAAQ,EAazC,CAGD,SAASq1iB,GAAY/llB,EAAWrE,GAC5B,OAAO,SAAUszM,EAAKm4X,GAClB,IAASxkhB,GAET,OAAe,OAAXwkhB,IAAoB/ijB,OAAO+ijB,KAC3B8H,GACIvzkB,EACA,YACIA,EACA,uDACAA,EACA,kGAGRinD,GAAMqsJ,EACNA,EAAMm4X,EACNA,EAASxkhB,IAIb6hiB,GAAYvwlB,KADN+ulB,GAAeh0Y,EAAKm4X,GACHpnkB,GAChB9L,IACV,CACJ,CAED,SAASuwlB,GAAYtb,EAAKrqjB,EAAUknkB,EAAUrX,GAC1C,IAAI39hB,GAAelyB,EAASskkB,cACxBxyiB,GAAO4yiB,GAAS1kkB,EAASukkB,OACzB3yiB,GAAS8yiB,GAAS1kkB,EAAS02jB,UAE1BrM,EAAI3pW,YAKTmvW,EAAeA,IAAuB,EAElCj+hB,IACA27H,GAAS88Z,EAAKl1jB,GAAIk1jB,EAAK,SAAWz4hB,GAASs1iB,GAE3Cp1iB,IACA8hiB,GAAMvJ,EAAK,OAAQl1jB,GAAIk1jB,EAAK,QAAUv4hB,GAAOo1iB,GAE7Ch1iB,IACAm4hB,EAAIsE,GAAG/6Z,QAAQy2Z,EAAIsE,GAAG52kB,UAAYm6C,GAAeg1iB,GAEjDrX,GACA7C,EAAM6C,aAAaxF,EAAKv4hB,IAAQF,IAEvC,CA9FDuyiB,GAAev+jB,GAAKw+jB,GAAS5tlB,UAC7B2tlB,GAAet7M,QAAUq7M,GA+FzB,IAAI9ilB,GAAM6llB,GAAY,EAAG,OACrBt2V,GAAWs2V,IAAY,EAAI,YAE/B,SAASzhkB,GAAS1f,GACd,MAAwB,iBAAVA,GAAsBA,aAAiBhQ,MACxD,CAGD,SAASqxlB,GAAcrhlB,GACnB,OACIgqkB,GAAShqkB,IACTsiV,GAAOtiV,IACP0f,GAAS1f,IACTwf,GAASxf,IACTshlB,GAAsBthlB,IACtBuhlB,GAAoBvhlB,IALpBgqkB,MAMAhqkB,CAGP,CAED,SAASuhlB,GAAoBvhlB,GACzB,IA4BI8E,GACAob,GA7BAshkB,EAAa9gkB,EAAS1gB,KAAWqnkB,GAAcrnkB,GAC/CyhlB,GAAe,EACf5uc,EAAa,CACT,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAIJ6uc,GAAc7uc,EAAWjjJ,OAE7B,IAAKkV,GAAI,EAAGA,GAAI48kB,GAAa58kB,IAAK,EAC9Bob,GAAW2yH,EAAW/tI,IACtB28kB,EAAeA,GAAgBra,EAAWpnkB,EAAOkgB,IAGrD,OAAOshkB,GAAcC,CACxB,CAED,SAASH,GAAsBthlB,GAC3B,IAAI2hlB,EAAYhjkB,EAAQ3e,GACpB4hlB,GAAe,EACnB,OAAID,IACAC,EAGkB,IAFd5hlB,EAAM4E,OAAO,SAAUkR,GACnB,OAAQ0J,GAAS1J,IAAS4J,GAAS1f,EACtC,GAAEpQ,QAEJ+xlB,GAAaC,CACvB,CAED,SAASC,GAAe7hlB,GACpB,IAUI8E,GACAob,GAXAshkB,EAAa9gkB,EAAS1gB,KAAWqnkB,GAAcrnkB,GAC/CyhlB,GAAe,EACf5uc,EAAa,CACT,UACA,UACA,UACA,WACA,WACA,YAKR,IAAK/tI,GAAI,EAAGA,GAAI+tI,EAAWjjJ,OAAQkV,IAAK,EACpCob,GAAW2yH,EAAW/tI,IACtB28kB,EAAeA,GAAgBra,EAAWpnkB,EAAOkgB,IAGrD,OAAOshkB,GAAcC,CACxB,CAED,SAASK,GAAkBC,EAAUj9jB,GACjC,IAAIsG,EAAO22jB,EAAS32jB,KAAKtG,EAAK,QAAQ,GACtC,OAAOsG,GAAO,EACR,WACAA,GAAO,EACP,WACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,WACA,UACT,CAED,SAAS42jB,GAAW3vjB,EAAM6jP,GAEG,IAArBz1P,UAAU7wB,SACL6wB,UAAU,GAGJ4gkB,GAAc5gkB,UAAU,KAC/B4R,EAAO5R,UAAU,GACjBy1P,OAAU7xQ,GACHw9kB,GAAephkB,UAAU,MAChCy1P,EAAUz1P,UAAU,GACpB4R,OAAOhuB,IAPPguB,OAAOhuB,EACP6xQ,OAAU7xQ,IAWlB,IAAIygB,EAAMuN,GAAQ+pjB,KACd6F,EAAM3C,GAAgBx6jB,EAAKx1B,MAAM4ylB,QAAQ,OACzCzjjB,GAASyoiB,EAAMib,eAAe7ylB,KAAM2ylB,IAAQ,WAC5CvylB,GACIwmR,IACCr2P,GAAWq2P,EAAQz3O,KACdy3O,EAAQz3O,IAAQ7tC,KAAKtB,KAAMw1B,GAC3BoxP,EAAQz3O,KAEtB,OAAOnvC,KAAKmvC,OACR/uC,IAAUJ,KAAKq8kB,aAAav6Y,SAAS3yJ,GAAQnvC,KAAM8slB,GAAYt3jB,IAEtE,CAED,SAASrwB,KACL,OAAO,IAAIq1kB,GAAOx6kB,KACrB,CAED,SAAS2xlB,GAAQjhlB,EAAOg1C,GACpB,IAAIotiB,EAAapY,GAAShqkB,GAASA,EAAQo8kB,GAAYp8kB,GACvD,SAAM1Q,KAAKsrO,YAAawnX,EAAWxnX,aAIrB,iBADd5lL,EAAQ83hB,GAAe93hB,IAAU,eAEtB1lD,KAAK2C,UAAYmwlB,EAAWnwlB,UAE5BmwlB,EAAWnwlB,UAAY3C,KAAKmF,QAAQytlB,QAAQltiB,GAAO/iD,UAEjE,CAED,SAASivlB,GAASlhlB,EAAOg1C,GACrB,IAAIotiB,EAAapY,GAAShqkB,GAASA,EAAQo8kB,GAAYp8kB,GACvD,SAAM1Q,KAAKsrO,YAAawnX,EAAWxnX,aAIrB,iBADd5lL,EAAQ83hB,GAAe93hB,IAAU,eAEtB1lD,KAAK2C,UAAYmwlB,EAAWnwlB,UAE5B3C,KAAKmF,QAAQ4tlB,MAAMrtiB,GAAO/iD,UAAYmwlB,EAAWnwlB,UAE/D,CAED,SAASqwlB,GAAUxtlB,EAAMwxC,EAAI0O,EAAOutiB,GAChC,IAAIC,GAAYxY,GAASl1kB,GAAQA,EAAOsnlB,GAAYtnlB,GAChD2tlB,GAAUzY,GAAS1jiB,GAAMA,EAAK81iB,GAAY91iB,GAC9C,SAAMh3C,KAAKsrO,WAAa4nX,GAAU5nX,WAAa6nX,GAAQ7nX,aAK/B,OAFxB2nX,EAAcA,GAAe,MAEZ,GACPjzlB,KAAK2xlB,QAAQuB,GAAWxtiB,IACvB1lD,KAAK4xlB,SAASsB,GAAWxtiB,MACZ,MAAnButiB,EAAY,GACPjzlB,KAAK4xlB,SAASuB,GAASztiB,IACtB1lD,KAAK2xlB,QAAQwB,GAASztiB,GAEpC,CAED,SAAS0tiB,GAAO1ilB,EAAOg1C,GACnB,IACI2tiB,EADAP,EAAapY,GAAShqkB,GAASA,EAAQo8kB,GAAYp8kB,GAEvD,SAAM1Q,KAAKsrO,YAAawnX,EAAWxnX,aAIrB,iBADd5lL,EAAQ83hB,GAAe93hB,IAAU,eAEtB1lD,KAAK2C,YAAcmwlB,EAAWnwlB,WAErC0wlB,EAAUP,EAAWnwlB,UAEjB3C,KAAKmF,QAAQytlB,QAAQltiB,GAAO/iD,WAAa0wlB,GACzCA,GAAWrzlB,KAAKmF,QAAQ4tlB,MAAMrtiB,GAAO/iD,WAGhD,CAED,SAAS2wlB,GAAc5ilB,EAAOg1C,GAC1B,OAAO1lD,KAAKozlB,OAAO1ilB,EAAOg1C,IAAU1lD,KAAK2xlB,QAAQjhlB,EAAOg1C,EAC3D,CAED,SAAS6tiB,GAAe7ilB,EAAOg1C,GAC3B,OAAO1lD,KAAKozlB,OAAO1ilB,EAAOg1C,IAAU1lD,KAAK4xlB,SAASlhlB,EAAOg1C,EAC5D,CAED,SAAS5pB,GAAKprB,EAAOg1C,EAAO8tiB,GACxB,IAAI98c,EAAM+8c,GAAWrzlB,GAErB,IAAKJ,KAAKsrO,UACN,OAAO3U,IAKX,KAFAjgF,EAAOs5c,GAAgBt/kB,EAAO1Q,OAEpBsrO,UACN,OAAO3U,IAOX,OAJA88X,GAAoD,KAAvC/8c,EAAKm5c,YAAc7vlB,KAAK6vlB,aAErCnqiB,EAAQ83hB,GAAe93hB,IAEfA,IACC,OACDtlD,GAASszlB,GAAU1zlB,KAAM02I,GAAQ,GACjC,UACC,QACDt2I,GAASszlB,GAAU1zlB,KAAM02I,GACzB,UACC,UACDt2I,GAASszlB,GAAU1zlB,KAAM02I,GAAQ,EACjC,UACC,SACDt2I,IAAUJ,KAAO02I,GAAQ,IACzB,UACC,SACDt2I,IAAUJ,KAAO02I,GAAQ,IACzB,UACC,OACDt2I,IAAUJ,KAAO02I,GAAQ,KACzB,UACC,MACDt2I,IAAUJ,KAAO02I,EAAO+8c,IAAa,MACrC,UACC,OACDrzlB,IAAUJ,KAAO02I,EAAO+8c,IAAa,OACrC,cAEArzlB,GAASJ,KAAO02I,EAGxB,OAAO88c,EAAUpzlB,GAAS89kB,GAAS99kB,GACtC,CAED,SAASszlB,GAAUv2jB,EAAGpF,GAClB,GAAIoF,EAAE96B,OAAS01B,EAAE11B,OAGb,OAAQqxlB,GAAU37jB,EAAGoF,GAGzB,IAII4rU,GAJA4qP,EAAyC,IAAvB57jB,EAAE0/I,OAASt6I,EAAEs6I,SAAgB1/I,EAAE2/I,QAAUv6I,EAAEu6I,SAE7Dl2J,EAAS2b,EAAEh4B,QAAQ6G,IAAI2nlB,EAAgB,UAI3C,OAGI5qP,GAHAhxU,EAAIvW,EAAS,GAGHuW,EAAIvW,IAAWA,EAFf2b,EAAEh4B,QAAQ6G,IAAI2nlB,EAAiB,EAAG,YAMlC57jB,EAAIvW,IAFJ2b,EAAEh4B,QAAQ6G,IAAI2nlB,EAAiB,EAAG,UAETnykB,KAI9BmykB,EAAiB5qP,KAAW,CACxC,CAKD,SAAStnW,KACL,OAAOzB,KAAKmF,QAAQ6sC,OAAO,MAAM7C,OAAO,mCAC3C,CAED,SAASykjB,GAAYC,GACjB,IAAK7zlB,KAAKsrO,UACN,OAAO,KAEX,IAAI8sW,GAAqB,IAAfyb,EACNzuZ,EAAIgzY,EAAMp4kB,KAAKmF,QAAQizkB,MAAQp4kB,KACnC,OAAIolM,EAAE3tB,OAAS,GAAK2tB,EAAE3tB,OAAS,KACpB+ka,GACHp3Y,EACAgzY,EACM,iCACA,gCAGV7njB,GAAWjuB,KAAKlB,UAAUwylB,aAEtBxb,EACOp4kB,KAAKm9C,SAASy2iB,cAEd,IAAItxlB,KAAKtC,KAAK2C,UAA+B,GAAnB3C,KAAK6vlB,YAAmB,KACpD+D,cACAvzlB,QAAQ,IAAKm8kB,GAAap3Y,EAAG,MAGnCo3Y,GACHp3Y,EACAgzY,EAAM,+BAAiC,6BAE9C,CAQD,SAAS0b,KACL,IAAK9zlB,KAAKsrO,UACN,MAAO,qBAAuBtrO,KAAKk6kB,GAAK,OAE5C,IAEI7kc,EACAoiC,EACAm5N,GACAjqM,GALA6nJ,EAAO,SACPlwU,EAAO,GAKX,OAAKte,KAAKixlB,YACNziQ,EAA4B,IAArBxuV,KAAK6vlB,YAAoB,aAAe,mBAC/CvxkB,EAAO,KAEX+2H,EAAS,IAAMm5M,EAAO,MACtB/2K,EAAO,GAAKz3K,KAAKy3K,QAAUz3K,KAAKy3K,QAAU,KAAO,OAAS,SAC1Dm5N,GAAW,wBACXjqM,GAASroL,EAAO,OAETte,KAAKmvC,OAAOkmG,EAASoiC,EAAOm5N,GAAWjqM,GACjD,CAED,SAASx3J,GAAO6xF,GACPA,IACDA,EAAchhI,KAAKmxlB,QACbvZ,EAAMmc,iBACNnc,EAAMoc,eAEhB,IAAI5zlB,EAASo8kB,GAAax8kB,KAAMghI,GAChC,OAAOhhI,KAAKq8kB,aAAa3J,WAAWtykB,EACvC,CAED,SAASoF,GAAKu9B,EAAMwviB,GAChB,OACIvykB,KAAKsrO,YACHovW,GAAS33iB,IAASA,EAAKuoM,WAAcwhX,GAAY/pjB,GAAMuoM,WAElDyjX,GAAe,CAAE/3iB,GAAIh3C,KAAMwF,KAAMu9B,IACnCiP,OAAOhyC,KAAKgyC,UACZiijB,UAAU1hB,GAERvykB,KAAKq8kB,aAAajH,aAEhC,CAED,SAAS8e,GAAQ3hB,GACb,OAAOvykB,KAAKwF,KAAKsnlB,KAAeva,EACnC,CAED,SAASv7hB,GAAGjU,EAAMwviB,GACd,OACIvykB,KAAKsrO,YACHovW,GAAS33iB,IAASA,EAAKuoM,WAAcwhX,GAAY/pjB,GAAMuoM,WAElDyjX,GAAe,CAAEvplB,KAAMxF,KAAMg3C,GAAIjU,IACnCiP,OAAOhyC,KAAKgyC,UACZiijB,UAAU1hB,GAERvykB,KAAKq8kB,aAAajH,aAEhC,CAED,SAAS+e,GAAM5hB,GACX,OAAOvykB,KAAKg3C,GAAG81iB,KAAeva,EACjC,CAKD,SAASvgiB,GAAOpY,GACZ,IAAIw6jB,EAEJ,YAAYr/kB,IAAR6kB,EACO55B,KAAKu6kB,QAAQgO,OAGC,OADrB6L,EAAgB1L,GAAU9ujB,MAEtB55B,KAAKu6kB,QAAU6Z,GAEZp0lB,KAEd,CA5HD43kB,EAAMoc,cAAgB,uBACtBpc,EAAMmc,iBAAmB,yBA6HzB,IAAIM,GAAOvnD,GACP,kJACA,SAAUlzgB,GACN,YAAY7kB,IAAR6kB,EACO55B,KAAKq8kB,aAELr8kB,KAAKgyC,OAAOpY,EAE1B,GAGL,SAASyijB,KACL,OAAOr8kB,KAAKu6kB,OACf,CAED,IAAI+Z,GAAgB,IAChBC,GAAgB,GAAKD,GACrBE,GAAc,GAAKD,GACnBE,WAA2CD,GAG/C,SAASE,GAAMp2J,EAAUj0Y,GACrB,OAASi0Y,EAAWj0Y,EAAWA,GAAWA,CAC7C,CAED,SAASsqiB,GAAiBrskB,EAAG88K,EAAG56J,GAE5B,OAAIliB,EAAI,KAAOA,GAAK,EAET,IAAIhmB,KAAKgmB,EAAI,IAAK88K,EAAG56J,GAAKiqjB,GAE1B,IAAInylB,KAAKgmB,EAAG88K,EAAG56J,GAAG7nC,SAEhC,CAED,SAASiylB,GAAetskB,EAAG88K,EAAG56J,GAE1B,OAAIliB,EAAI,KAAOA,GAAK,EAEThmB,KAAK2qX,IAAI3kW,EAAI,IAAK88K,EAAG56J,GAAKiqjB,GAE1BnylB,KAAK2qX,IAAI3kW,EAAG88K,EAAG56J,EAE7B,CAED,SAASoojB,GAAQltiB,GACb,IAAI3iB,EAAM8xjB,EAEV,QAAc9/kB,KADd2wC,EAAQ83hB,GAAe93hB,KACc,gBAAVA,IAA4B1lD,KAAKsrO,UACxD,OAAOtrO,KAKX,OAFA60lB,EAAc70lB,KAAKs6kB,OAASsa,GAAiBD,GAErCjviB,OACC,OACD3iB,EAAO8xjB,EAAY70lB,KAAKy3K,OAAQ,EAAG,GACnC,UACC,UACD10I,EAAO8xjB,EACH70lB,KAAKy3K,OACLz3K,KAAK03K,QAAW13K,KAAK03K,QAAU,EAC/B,GAEJ,UACC,QACD30I,EAAO8xjB,EAAY70lB,KAAKy3K,OAAQz3K,KAAK03K,QAAS,GAC9C,UACC,OACD30I,EAAO8xjB,EACH70lB,KAAKy3K,OACLz3K,KAAK03K,QACL13K,KAAKqC,OAASrC,KAAKsnY,WAEvB,UACC,UACDvkW,EAAO8xjB,EACH70lB,KAAKy3K,OACLz3K,KAAK03K,QACL13K,KAAKqC,QAAUrC,KAAK80lB,aAAe,IAEvC,UACC,UACA,OACD/xjB,EAAO8xjB,EAAY70lB,KAAKy3K,OAAQz3K,KAAK03K,QAAS13K,KAAKqC,QACnD,UACC,OACD0gC,EAAO/iC,KAAKu5kB,GAAG52kB,UACfogC,GAAQ2xjB,GACJ3xjB,GAAQ/iC,KAAKs6kB,OAAS,EAAIt6kB,KAAK6vlB,YAAc0E,IAC7CC,IAEJ,UACC,SACDzxjB,EAAO/iC,KAAKu5kB,GAAG52kB,UACfogC,GAAQ2xjB,GAAM3xjB,EAAMwxjB,IACpB,UACC,SACDxxjB,EAAO/iC,KAAKu5kB,GAAG52kB,UACfogC,GAAQ2xjB,GAAM3xjB,EAAMuxjB,IAI5B,YAAK/a,GAAG/6Z,QAAQz7I,GAChB60iB,EAAM6C,aAAaz6kB,MAAM,GAClBA,IACV,CAED,SAAS+ylB,GAAMrtiB,GACX,IAAI3iB,EAAM8xjB,EAEV,QAAc9/kB,KADd2wC,EAAQ83hB,GAAe93hB,KACc,gBAAVA,IAA4B1lD,KAAKsrO,UACxD,OAAOtrO,KAKX,OAFA60lB,EAAc70lB,KAAKs6kB,OAASsa,GAAiBD,GAErCjviB,OACC,OACD3iB,EAAO8xjB,EAAY70lB,KAAKy3K,OAAS,EAAG,EAAG,GAAK,EAC5C,UACC,UACD10I,EACI8xjB,EACI70lB,KAAKy3K,OACLz3K,KAAK03K,QAAW13K,KAAK03K,QAAU,EAAK,EACpC,GACA,EACR,UACC,QACD30I,EAAO8xjB,EAAY70lB,KAAKy3K,OAAQz3K,KAAK03K,QAAU,EAAG,GAAK,EACvD,UACC,OACD30I,EACI8xjB,EACI70lB,KAAKy3K,OACLz3K,KAAK03K,QACL13K,KAAKqC,OAASrC,KAAKsnY,UAAY,GAC/B,EACR,UACC,UACDvkW,EACI8xjB,EACI70lB,KAAKy3K,OACLz3K,KAAK03K,QACL13K,KAAKqC,QAAUrC,KAAK80lB,aAAe,GAAK,GACxC,EACR,UACC,UACA,OACD/xjB,EAAO8xjB,EAAY70lB,KAAKy3K,OAAQz3K,KAAK03K,QAAS13K,KAAKqC,OAAS,GAAK,EACjE,UACC,OACD0gC,EAAO/iC,KAAKu5kB,GAAG52kB,UACfogC,GACIyxjB,GACAE,GACI3xjB,GAAQ/iC,KAAKs6kB,OAAS,EAAIt6kB,KAAK6vlB,YAAc0E,IAC7CC,IAEJ,EACJ,UACC,SACDzxjB,EAAO/iC,KAAKu5kB,GAAG52kB,UACfogC,GAAQwxjB,GAAgBG,GAAM3xjB,EAAMwxjB,IAAiB,EACrD,UACC,SACDxxjB,EAAO/iC,KAAKu5kB,GAAG52kB,UACfogC,GAAQuxjB,GAAgBI,GAAM3xjB,EAAMuxjB,IAAiB,EAI7D,YAAK/a,GAAG/6Z,QAAQz7I,GAChB60iB,EAAM6C,aAAaz6kB,MAAM,GAClBA,IACV,CAED,SAAS2C,KACL,OAAO3C,KAAKu5kB,GAAG52kB,UAAkC,KAArB3C,KAAKooB,SAAW,EAC/C,CAED,SAAS2skB,KACL,OAAOrgkB,KAAKI,MAAM90B,KAAK2C,UAAY,IACtC,CAED,SAASw6C,KACL,OAAO,IAAI76C,KAAKtC,KAAK2C,UACxB,CAED,SAASyS,KACL,IAAIgwL,EAAIplM,KACR,MAAO,CACHolM,EAAE3tB,OACF2tB,EAAE1tB,QACF0tB,EAAE/iM,OACF+iM,EAAEhuB,OACFguB,EAAE2N,SACF3N,EAAE7kB,SACF6kB,EAAEwG,cAET,CAED,SAAS4vD,KACL,IAAIp2D,EAAIplM,KACR,MAAO,CACHu8C,MAAO6oJ,EAAE3tB,OACTj7H,OAAQ4oJ,EAAE1tB,QACVr1K,KAAM+iM,EAAE/iM,OACRs6C,MAAOyoJ,EAAEzoJ,QACTC,QAASwoJ,EAAExoJ,UACXC,QAASuoJ,EAAEvoJ,UACXC,aAAcsoJ,EAAEtoJ,eAEvB,CAED,SAAS6gN,KAEL,OAAO39P,KAAKsrO,UAAYtrO,KAAK4zlB,cAAgB,IAChD,CAED,SAASoB,KACL,OAAO1pX,GAAQtrO,KAClB,CAED,SAASi1lB,KACL,OAAOvje,GAAO,GAAIwnd,GAAgBl5kB,MACrC,CAED,SAASk1lB,KACL,OAAOhc,GAAgBl5kB,MAAMsrH,QAChC,CAED,SAAS6pe,KACL,MAAO,CACHzklB,MAAO1Q,KAAKk6kB,GACZ/qiB,OAAQnvC,KAAKm6kB,GACbnoiB,OAAQhyC,KAAKu6kB,QACb8T,MAAOrulB,KAAKs6kB,OACZpC,OAAQl4kB,KAAKy5kB,QAEpB,CAmDD,SAAS2b,GAAWhwZ,EAAGj2J,GACnB,IAAI35B,EACA+4F,EACAlsG,GACA2kY,GAAOhnY,KAAKq1lB,OAAS3M,GAAU,MAAM2M,MACzC,IAAK7/kB,EAAI,EAAG+4F,EAAIy4R,GAAK1mY,OAAQkV,EAAI+4F,IAAK/4F,EASlC,OAPS,iBADMwxX,GAAKxxX,GAAGmgkB,QAGftzkB,GAAOu1kB,EAAM5wM,GAAKxxX,GAAGmgkB,OAAOid,QAAQ,OACpC5rN,GAAKxxX,GAAGmgkB,MAAQtzkB,GAAKM,kBAIdqkY,GAAKxxX,GAAG00hB,WACd,YACDljK,GAAKxxX,GAAG00hB,MAAQ,IAChB,UACC,SAED7niB,GAAOu1kB,EAAM5wM,GAAKxxX,GAAG00hB,OAAO0oD,QAAQ,OAAOjwlB,UAC3CqkY,GAAKxxX,GAAG00hB,MAAQ7niB,GAAKM,UAIjC,OAAOqkY,EACV,CAED,SAASsuN,GAAgBC,EAASpmjB,EAAQ+oiB,GACtC,IAAI1ikB,EACA+4F,GAEA9mG,GACAmukB,GACA9shB,GAHAk+U,GAAOhnY,KAAKgnY,OAMhB,IAFAuuN,EAAUA,EAAQvre,cAEbx0G,EAAI,EAAG+4F,GAAIy4R,GAAK1mY,OAAQkV,EAAI+4F,KAAK/4F,EAKlC,GAJA/N,GAAOu/X,GAAKxxX,GAAG/N,KAAKuiH,cACpB4rd,GAAO5uM,GAAKxxX,GAAGogkB,KAAK5rd,cACpBlhE,GAASk+U,GAAKxxX,GAAGszC,OAAOkhE,cAEpBkud,EACA,OAAQ/oiB,OACC,QACA,SACA,MACD,GAAIymiB,KAAS2f,EACT,OAAOvuN,GAAKxxX,GAEhB,UAEC,OACD,GAAI/N,KAAS8tlB,EACT,OAAOvuN,GAAKxxX,GAEhB,UAEC,QACD,GAAIszC,KAAWysiB,EACX,OAAOvuN,GAAKxxX,QAEhB,GAED,CAAC/N,GAAMmukB,GAAM9shB,IAAQ7nD,QAAQs0lB,IAAY,EAChD,OAAOvuN,GAAKxxX,EAGvB,CAED,SAASgglB,GAAsBtuN,EAAKzvN,GAChC,IAAI9iK,EAAMuyX,EAAIyuM,OAASzuM,EAAIgjK,MAAQ,GAAK,EACxC,YAAan1hB,IAAT0iK,EACOmga,EAAM1wM,EAAIyuM,OAAOl+Z,OAEjBmga,EAAM1wM,EAAIyuM,OAAOl+Z,QAAUA,EAAOyvN,EAAIv+W,QAAUhU,CAE9D,CAED,SAAS8glB,KACL,IAAIjglB,EACA+4F,EACAwsG,EACAisL,EAAOhnY,KAAKq8kB,aAAar1M,OAC7B,IAAKxxX,EAAI,EAAG+4F,EAAIy4R,EAAK1mY,OAAQkV,EAAI+4F,IAAK/4F,EAOlC,GALAulM,EAAM/6M,KAAKmF,QAAQytlB,QAAQ,OAAOjwlB,UAE9BqkY,EAAKxxX,GAAGmgkB,OAAS56X,GAAOA,GAAOisL,EAAKxxX,GAAG00hB,OAGvCljK,EAAKxxX,GAAG00hB,OAASnvV,GAAOA,GAAOisL,EAAKxxX,GAAGmgkB,MACvC,OAAO3uM,EAAKxxX,GAAG/N,KAIvB,MAAO,EACV,CAED,SAASiulB,KACL,IAAIlglB,EACA+4F,EACAwsG,EACAisL,EAAOhnY,KAAKq8kB,aAAar1M,OAC7B,IAAKxxX,EAAI,EAAG+4F,EAAIy4R,EAAK1mY,OAAQkV,EAAI+4F,IAAK/4F,EAOlC,GALAulM,EAAM/6M,KAAKmF,QAAQytlB,QAAQ,OAAOjwlB,UAE9BqkY,EAAKxxX,GAAGmgkB,OAAS56X,GAAOA,GAAOisL,EAAKxxX,GAAG00hB,OAGvCljK,EAAKxxX,GAAG00hB,OAASnvV,GAAOA,GAAOisL,EAAKxxX,GAAGmgkB,MACvC,OAAO3uM,EAAKxxX,GAAGszC,OAIvB,MAAO,EACV,CAED,SAAS6siB,KACL,IAAInglB,EACA+4F,EACAwsG,EACAisL,EAAOhnY,KAAKq8kB,aAAar1M,OAC7B,IAAKxxX,EAAI,EAAG+4F,EAAIy4R,EAAK1mY,OAAQkV,EAAI+4F,IAAK/4F,EAOlC,GALAulM,EAAM/6M,KAAKmF,QAAQytlB,QAAQ,OAAOjwlB,UAE9BqkY,EAAKxxX,GAAGmgkB,OAAS56X,GAAOA,GAAOisL,EAAKxxX,GAAG00hB,OAGvCljK,EAAKxxX,GAAG00hB,OAASnvV,GAAOA,GAAOisL,EAAKxxX,GAAGmgkB,MACvC,OAAO3uM,EAAKxxX,GAAGogkB,KAIvB,MAAO,EACV,CAED,SAASggB,KACL,IAAIpglB,EACA+4F,EACA55F,EACAomM,EACAisL,GAAOhnY,KAAKq8kB,aAAar1M,OAC7B,IAAKxxX,EAAI,EAAG+4F,EAAIy4R,GAAK1mY,OAAQkV,EAAI+4F,IAAK/4F,EAMlC,GALAb,EAAMqyX,GAAKxxX,GAAGmgkB,OAAS3uM,GAAKxxX,GAAG00hB,MAAQ,GAAK,EAG5CnvV,EAAM/6M,KAAKmF,QAAQytlB,QAAQ,OAAOjwlB,UAG7BqkY,GAAKxxX,GAAGmgkB,OAAS56X,GAAOA,GAAOisL,GAAKxxX,GAAG00hB,OACvCljK,GAAKxxX,GAAG00hB,OAASnvV,GAAOA,GAAOisL,GAAKxxX,GAAGmgkB,MAExC,OACK31kB,KAAKy3K,OAASmga,EAAM5wM,GAAKxxX,GAAGmgkB,OAAOl+Z,QAAU9iK,EAC9CqyX,GAAKxxX,GAAGmT,OAKpB,OAAO3oB,KAAKy3K,MACf,CAED,SAASo+a,GAAcxkC,GACnB,OAAKymB,EAAW93kB,KAAM,mBAClB81lB,GAAiBx0lB,KAAKtB,MAEnBqxjB,EAAWrxjB,KAAK+1lB,eAAiB/1lB,KAAKg2lB,UAChD,CAED,SAASC,GAAc5kC,GACnB,OAAKymB,EAAW93kB,KAAM,mBAClB81lB,GAAiBx0lB,KAAKtB,MAEnBqxjB,EAAWrxjB,KAAKk2lB,eAAiBl2lB,KAAKg2lB,UAChD,CAED,SAASG,GAAgB9kC,GACrB,OAAKymB,EAAW93kB,KAAM,qBAClB81lB,GAAiBx0lB,KAAKtB,MAEnBqxjB,EAAWrxjB,KAAKo2lB,iBAAmBp2lB,KAAKg2lB,UAClD,CAED,SAASK,GAAahlC,EAAUr/gB,GAC5B,OAAOA,EAAOikjB,cAAc5kC,EAC/B,CAED,SAASilC,GAAajlC,EAAUr/gB,GAC5B,OAAOA,EAAO6jjB,cAAcxkC,EAC/B,CAED,SAASklC,GAAellC,EAAUr/gB,GAC9B,OAAOA,EAAOmkjB,gBAAgB9kC,EACjC,CAED,SAASmlC,GAAoBnlC,EAAUr/gB,GACnC,OAAOA,EAAOykjB,sBAAwBhX,EACzC,CAED,SAASqW,KACL,IAIItglB,GACA+4F,GALAmof,EAAa,GACbC,EAAa,GACbC,EAAe,GACf9T,EAAc,GAGd97M,GAAOhnY,KAAKgnY,OAEhB,IAAKxxX,GAAI,EAAG+4F,GAAIy4R,GAAK1mY,OAAQkV,GAAI+4F,KAAK/4F,GAClCmhlB,EAAW36kB,KAAKmkkB,GAAYn5M,GAAKxxX,IAAG/N,OACpCivlB,EAAW16kB,KAAKmkkB,GAAYn5M,GAAKxxX,IAAGogkB,OACpCghB,EAAa56kB,KAAKmkkB,GAAYn5M,GAAKxxX,IAAGszC,SAEtCg6hB,EAAY9mkB,KAAKmkkB,GAAYn5M,GAAKxxX,IAAG/N,OACrCq7kB,EAAY9mkB,KAAKmkkB,GAAYn5M,GAAKxxX,IAAGogkB,OACrCkN,EAAY9mkB,KAAKmkkB,GAAYn5M,GAAKxxX,IAAGszC,SAGzC9oD,KAAKg2lB,WAAa,IAAIvxlB,OAAO,KAAOq+kB,EAAYnhlB,KAAK,KAAO,IAAK,KACjE3B,KAAK+1lB,eAAiB,IAAItxlB,OAAO,KAAOkylB,EAAWh1lB,KAAK,KAAO,IAAK,KACpE3B,KAAKk2lB,eAAiB,IAAIzxlB,OAAO,KAAOiylB,EAAW/0lB,KAAK,KAAO,IAAK,KACpE3B,KAAKo2lB,iBAAmB,IAAI3xlB,OACxB,KAAOmylB,EAAaj1lB,KAAK,KAAO,IAChC,IAEP,CAYD,SAASk1lB,GAAuBh1lB,EAAO8wB,GACnCwpjB,GAAe,EAAG,CAACt6kB,EAAOA,EAAMvB,QAAS,EAAGqyB,EAC/C,CAyCD,SAASmkkB,GAAepmlB,GACpB,OAAOqmlB,GAAqBz1lB,KACxBtB,KACA0Q,EACA1Q,KAAKqqL,OACLrqL,KAAKsnY,UACLtnY,KAAKq8kB,aAAa2H,MAAM9R,IACxBlykB,KAAKq8kB,aAAa2H,MAAM7R,IAE/B,CAED,SAAS6kB,GAAkBtmlB,GACvB,OAAOqmlB,GAAqBz1lB,KACxBtB,KACA0Q,EACA1Q,KAAKivlB,UACLjvlB,KAAK80lB,aACL,EACA,EAEP,CAED,SAASmC,KACL,OAAOpT,EAAY7jlB,KAAKy3K,OAAQ,EAAG,EACtC,CAED,SAASy/a,KACL,OAAOrT,EAAY7jlB,KAAKm3lB,cAAe,EAAG,EAC7C,CAED,SAASC,KACL,IAAIC,EAAWr3lB,KAAKq8kB,aAAa2H,MACjC,OAAOH,EAAY7jlB,KAAKy3K,OAAQ4/a,EAASnlB,IAAKmlB,EAASllB,IAC1D,CAED,SAASmlB,KACL,IAAID,EAAWr3lB,KAAKq8kB,aAAa2H,MACjC,OAAOH,EAAY7jlB,KAAK0slB,WAAY2K,EAASnlB,IAAKmlB,EAASllB,IAC9D,CAED,SAAS4kB,GAAqBrmlB,EAAO25K,EAAMi9M,EAAS4qM,EAAKC,IACrD,IAAIolB,GACJ,OAAa,MAAT7mlB,EACOgzkB,GAAW1jlB,KAAMkykB,EAAKC,IAAK16Z,MAG9B4S,GADJkta,GAAc1T,EAAYnzkB,EAAOwhkB,EAAKC,OAElC9nZ,EAAOkta,IAEJC,GAAWl2lB,KAAKtB,KAAM0Q,EAAO25K,EAAMi9M,EAAS4qM,EAAKC,IAE/D,CAED,SAASqlB,GAAW9K,EAAUria,EAAMi9M,EAAS4qM,EAAKC,IAC9C,IAAIslB,GAAgBlU,GAAmBmJ,EAAUria,EAAMi9M,EAAS4qM,EAAKC,IACjE9vkB,GAAO8glB,GAAcsU,GAAchgb,KAAM,EAAGggb,GAAcpwN,WAE9D,YAAK5vN,KAAKp1K,GAAK23V,kBACfh6V,KAAK03K,MAAMr1K,GAAK43V,eAChBj6V,KAAKqC,KAAKA,GAAK63V,cACRl6V,IACV,CAuBD,SAAS03lB,GAAchnlB,GACnB,OAAgB,MAATA,EACDgkB,KAAKG,MAAM70B,KAAK03K,QAAU,GAAK,GAC/B13K,KAAK03K,MAAoB,GAAbhnK,EAAQ,GAAU1Q,KAAK03K,QAAU,EACtD,CApaDyka,GAAe,IAAK,EAAG,EAAG,WAC1BA,GAAe,KAAM,EAAG,EAAG,WAC3BA,GAAe,MAAO,EAAG,EAAG,WAC5BA,GAAe,OAAQ,EAAG,EAAG,WAC7BA,GAAe,QAAS,EAAG,EAAG,aAE9BA,GAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,GAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,GAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,GAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WAEpC4D,GAAc,IAAKsW,IACnBtW,GAAc,KAAMsW,IACpBtW,GAAc,MAAOsW,IACrBtW,GAAc,OAAQuW,IACtBvW,GAAc,QAASwW,IAEvBnW,GACI,CAAC,IAAK,KAAM,MAAO,OAAQ,SAC3B,SAAU1vkB,EAAOuiB,EAAOlzB,EAAQ8B,GAC5B,IAAIqlY,GAAMnnY,EAAOw6kB,QAAQod,UAAUjnlB,EAAO7O,EAAO9B,EAAO05kB,SACpDvyM,GACAgyM,GAAgBn5kB,GAAQmnY,IAAMA,GAE9BgyM,GAAgBn5kB,GAAQ24kB,WAAahokB,CAE5C,GAGLqvkB,GAAc,IAAKN,IACnBM,GAAc,KAAMN,IACpBM,GAAc,MAAON,IACrBM,GAAc,OAAQN,IACtBM,GAAc,KAAMyW,IAEpBpW,GAAc,CAAC,IAAK,KAAM,MAAO,QAASK,IAC1CL,GAAc,CAAC,MAAO,SAAU1vkB,EAAOuiB,EAAOlzB,EAAQ8B,GAClD,IAAIgxB,GACA9yB,EAAOw6kB,QAAQkc,uBACf5jkB,GAAQniB,EAAMmiB,MAAM9yB,EAAOw6kB,QAAQkc,uBAGnC12lB,EAAOw6kB,QAAQzE,oBACf7ijB,EAAMwtjB,IAAQ1glB,EAAOw6kB,QAAQzE,oBAAoBplkB,EAAOmiB,IAExDI,EAAMwtjB,IAAQ7pjB,SAASlmB,EAAO,GAErC,GA0ODyrkB,GAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOn8kB,KAAK0slB,WAAa,GAC5B,GAEDvQ,GAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOn8kB,KAAKm3lB,cAAgB,GAC/B,GAMDN,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAIhCvZ,GAAa,WAAY,MACzBA,GAAa,cAAe,MAI5BQ,GAAgB,WAAY,GAC5BA,GAAgB,cAAe,GAI/BiC,GAAc,IAAKL,IACnBK,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,QAASP,GAAWN,IAElCoB,GACI,CAAC,OAAQ,QAAS,OAAQ,SAC1B,SAAU5vkB,EAAO25K,EAAMtqL,EAAQ8B,GAC3BwoL,EAAKxoL,EAAMu2H,OAAO,EAAG,IAAM+ld,GAAMztkB,EACpC,GAGL4vkB,GAAkB,CAAC,KAAM,MAAO,SAAU5vkB,EAAO25K,EAAMtqL,EAAQ8B,GAC3DwoL,EAAKxoL,GAAS+1kB,EAAMoL,kBAAkBtykB,EACzC,GAqEDyrkB,GAAe,IAAK,EAAG,KAAM,WAI7BmB,GAAa,UAAW,KAIxBQ,GAAgB,UAAW,GAI3BiC,GAAc,IAAKjB,IACnBsB,GAAc,IAAK,SAAU1vkB,EAAOuiB,GAChCA,EAAMytjB,IAA8B,GAApBvC,GAAMztkB,GAAS,EAClC,GAYDyrkB,GAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrCmB,GAAa,OAAQ,KAGrBQ,GAAgB,OAAQ,GAIxBiC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAM,SAAU1uB,EAAUr/gB,GAEpC,OAAOq/gB,EACDr/gB,EAAOmpiB,yBAA2BnpiB,EAAOopiB,cACzCppiB,EAAOkpiB,8BAChB,GAEDkF,GAAc,CAAC,IAAK,MAAOpyjB,IAC3BoyjB,GAAc,KAAM,SAAU1vkB,EAAOuiB,GACjCA,EAAMjF,IAAQmwjB,GAAMztkB,EAAMmiB,MAAMssjB,IAAW,GAC9C,GAID,IAAIyY,GAAmBtZ,GAAW,QAAQ,GAyB1C,SAASuZ,GAAgBnnlB,GACrB,IAAI22X,EACA3yW,KAAK7E,OACA7vB,KAAKmF,QAAQytlB,QAAQ,OAAS5ylB,KAAKmF,QAAQytlB,QAAQ,SAAW,OAC/D,EACR,OAAgB,MAATlilB,EAAgB22X,EAAYrnY,KAAKgM,IAAI0E,EAAQ22X,EAAW,IAClE,CA3BD80M,GAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3CmB,GAAa,YAAa,OAG1BQ,GAAgB,YAAa,GAI7BiC,GAAc,MAAOT,IACrBS,GAAc,OAAQf,IACtBoB,GAAc,CAAC,MAAO,QAAS,SAAU1vkB,EAAOuiB,EAAOlzB,GACnDA,EAAOyslB,WAAarO,GAAMztkB,EAC7B,GAgBDyrkB,GAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCmB,GAAa,SAAU,KAIvBQ,GAAgB,SAAU,IAI1BiC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BqB,GAAc,CAAC,IAAK,MAAOO,IAI3B,IAAImX,GAAexZ,GAAW,WAAW,GAIzCnC,GAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCmB,GAAa,SAAU,KAIvBQ,GAAgB,SAAU,IAI1BiC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BqB,GAAc,CAAC,IAAK,MAAOQ,IAI3B,IA8CI/+kB,GAAOk2lB,GA9CPC,GAAe1Z,GAAW,WAAW,GA+CzC,IA3CAnC,GAAe,IAAK,EAAG,EAAG,WACtB,SAAUn8kB,KAAK4rM,cAAgB,IAClC,GAEDuwY,GAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,SAAUn8kB,KAAK4rM,cAAgB,GAClC,GAEDuwY,GAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,GAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,WAC9B,OAA4B,GAArBn8kB,KAAK4rM,aACf,GACDuwY,GAAe,EAAG,CAAC,QAAS,GAAI,EAAG,WAC/B,OAA4B,IAArBn8kB,KAAK4rM,aACf,GACDuwY,GAAe,EAAG,CAAC,SAAU,GAAI,EAAG,WAChC,OAA4B,IAArBn8kB,KAAK4rM,aACf,GACDuwY,GAAe,EAAG,CAAC,UAAW,GAAI,EAAG,WACjC,OAA4B,IAArBn8kB,KAAK4rM,aACf,GACDuwY,GAAe,EAAG,CAAC,WAAY,GAAI,EAAG,WAClC,OAA4B,IAArBn8kB,KAAK4rM,aACf,GACDuwY,GAAe,EAAG,CAAC,YAAa,GAAI,EAAG,WACnC,OAA4B,IAArBn8kB,KAAK4rM,aACf,GAID0xY,GAAa,cAAe,MAI5BQ,GAAgB,cAAe,IAI/BiC,GAAc,IAAKT,GAAWR,IAC9BiB,GAAc,KAAMT,GAAWP,IAC/BgB,GAAc,MAAOT,GAAWN,IAG3Bn9kB,GAAQ,OAAQA,GAAMvB,QAAU,EAAGuB,IAAS,IAC7Ck+kB,GAAcl+kB,GAAO49kB,IAGzB,SAASwY,GAAQvnlB,EAAOuiB,GACpBA,EAAM4tjB,IAAe1C,GAAuB,KAAhB,KAAOztkB,GACtC,CAED,IAAK7O,GAAQ,IAAKA,GAAMvB,QAAU,EAAGuB,IAAS,IAC1Cu+kB,GAAcv+kB,GAAOo2lB,IAYzB,SAASC,KACL,OAAOl4lB,KAAKs6kB,OAAS,MAAQ,EAChC,CAED,SAAS6d,KACL,OAAOn4lB,KAAKs6kB,OAAS,6BAA+B,EACvD,CAfDyd,GAAoBzZ,GAAW,gBAAgB,GAI/CnC,GAAe,IAAK,EAAG,EAAG,YAC1BA,GAAe,KAAM,EAAG,EAAG,YAY3B,IAAIjijB,GAAQsgjB,GAAOp5kB,UAwGnB,SAASg3lB,GAAW1nlB,GAChB,OAAOo8kB,GAAoB,IAARp8kB,EACtB,CAED,SAAS2nlB,KACL,OAAOvL,GAAY34jB,MAAM,KAAMhD,WAAWmnkB,WAC7C,CAED,SAASC,GAAmBr0V,GACxB,OAAOA,CACV,CAhHDhqO,GAAMluB,IAAMA,GACZkuB,GAAM4nK,SAAW4wZ,GACjBx4jB,GAAM/0B,MAAQA,GACd+0B,GAAM4B,KAAOA,GACb5B,GAAM64jB,MAAQA,GACd74jB,GAAMiV,OAASA,GACfjV,GAAM10B,KAAOA,GACb00B,GAAMg6jB,QAAUA,GAChBh6jB,GAAM8c,GAAKA,GACX9c,GAAMi6jB,MAAQA,GACdj6jB,GAAMna,IAAM2+jB,GACZxkjB,GAAMg7jB,UAAYA,GAClBh7jB,GAAMy3jB,QAAUA,GAChBz3jB,GAAM03jB,SAAWA,GACjB13jB,GAAM84jB,UAAYA,GAClB94jB,GAAMk5jB,OAASA,GACfl5jB,GAAMo5jB,cAAgBA,GACtBp5jB,GAAMq5jB,eAAiBA,GACvBr5jB,GAAMoxM,QAAU0pX,GAChB96jB,GAAMm6jB,KAAOA,GACbn6jB,GAAM8X,OAASA,GACf9X,GAAMmijB,WAAaA,GACnBnijB,GAAMrf,IAAM0zkB,GACZr0jB,GAAMtf,IAAM0zkB,GACZp0jB,GAAM+6jB,aAAeA,GACrB/6jB,GAAM3G,IAAMorjB,GACZzkjB,GAAM04jB,QAAUA,GAChB14jB,GAAMqhO,SAAWA,GACjBrhO,GAAM9kB,QAAUA,GAChB8kB,GAAMshO,SAAWA,GACjBthO,GAAMijB,OAASA,GACfjjB,GAAM05jB,YAAcA,GACpB15jB,GAAM45jB,QAAUA,UACLlgQ,OAAW,KAA6B,MAAdA,OAAOgtI,MACxC1mc,GAAM05T,OAAOgtI,IAAI,+BAAiC,WAC9C,MAAO,UAAY5ge,KAAKmvC,SAAW,GACtC,GAELjV,GAAMyjO,OAASA,GACfzjO,GAAMz4B,SAAWA,GACjBy4B,GAAM66jB,KAAOA,GACb76jB,GAAMv3B,QAAUA,GAChBu3B,GAAMi7jB,aAAeA,GACrBj7jB,GAAMq7jB,QAAUE,GAChBv7jB,GAAMkvb,UAAYssI,GAClBx7jB,GAAMgvb,QAAUysI,GAChBz7jB,GAAMs+jB,QAAU5C,GAChB17jB,GAAMu9I,KAAOwra,GACb/ojB,GAAM+jjB,WAAaiF,GACnBhpjB,GAAMwyjB,SAAWoK,GACjB58jB,GAAMi9jB,YAAcH,GACpB98jB,GAAMitW,QAAUjtW,GAAMusW,SAAWixN,GACjCx9jB,GAAMw9I,MAAQ0qa,GACdlojB,GAAMukjB,YAAc4D,GACpBnojB,GAAMmwJ,KAAOnwJ,GAAMuiB,MAAQ2niB,GAC3BlqjB,GAAM+0jB,QAAU/0jB,GAAMu+jB,SAAWpU,GACjCnqjB,GAAM2pjB,YAAcuT,GACpBl9jB,GAAMw+jB,gBAAkBpB,GACxBp9jB,GAAMy+jB,eAAiB1B,GACvB/8jB,GAAM0+jB,sBAAwB1B,GAC9Bh9jB,GAAM73B,KAAOu1lB,GACb19jB,GAAM4jB,IAAM5jB,GAAMwiB,KAAOupiB,GACzB/rjB,GAAMotW,QAAU4+M,GAChBhsjB,GAAM46jB,WAAa3O,GACnBjsjB,GAAMmtW,UAAYwwN,GAClB39jB,GAAMk9I,KAAOl9I,GAAMyiB,MAAQgriB,GAC3BztjB,GAAM64K,OAAS74K,GAAM0iB,QAAUk7iB,GAC/B59jB,GAAMqmJ,OAASrmJ,GAAM2iB,QAAUm7iB,GAC/B99jB,GAAM0xK,YAAc1xK,GAAM4iB,aAAei7iB,GACzC79jB,GAAM21jB,UAAYK,GAClBh2jB,GAAMk+iB,IAAMqY,GACZv2jB,GAAMqxQ,MAAQmlT,GACdx2jB,GAAMo+jB,UAAY3H,GAClBz2jB,GAAM22jB,qBAAuBA,GAC7B32jB,GAAM2+jB,MAAQ/H,GACd52jB,GAAM+2jB,QAAUA,GAChB/2jB,GAAMg3jB,YAAcA,GACpBh3jB,GAAMi3jB,MAAQA,GACdj3jB,GAAMm0jB,MAAQ8C,GACdj3jB,GAAM4+jB,SAAWZ,GACjBh+jB,GAAM6+jB,SAAWZ,GACjBj+jB,GAAMmlB,MAAQytf,GACV,kDACA8qD,IAEJ19jB,GAAMsiB,OAASswf,GACX,mDACAs1C,IAEJlojB,GAAMqiB,MAAQuwf,GACV,iDACAm2C,IAEJ/ojB,GAAM5b,KAAOwuhB,GACT,2GACA0jD,IAEJt2jB,GAAM8+jB,aAAelsD,GACjB,0GACAikD,IAeJ,IAAIkI,GAAUzd,GAAOp6kB,UAuCrB,SAAS83lB,GAAM/pjB,EAAQ3iC,EAAOglB,EAAOu4F,GACjC,IAAI/3E,GAAS02iB,KACTtQ,GAAMH,KAAY1kjB,IAAIw2F,EAAQv9G,GAClC,OAAOwlC,GAAOxgB,GAAO4mjB,GAAKjpiB,EAC7B,CAED,SAASgqjB,GAAehqjB,EAAQ3iC,EAAOglB,GAQnC,GAPItB,GAASif,KACT3iC,EAAQ2iC,EACRA,OAASp6B,GAGbo6B,EAASA,GAAU,GAEN,MAAT3iC,EACA,OAAO0slB,GAAM/pjB,EAAQ3iC,EAAOglB,EAAO,SAGvC,IAAIhc,EACA47B,GAAM,GACV,IAAK57B,EAAI,EAAGA,EAAI,GAAIA,IAChB47B,GAAI57B,GAAK0jlB,GAAM/pjB,EAAQ35B,EAAGgc,EAAO,SAErC,OAAO4f,EACV,CAUD,SAASgojB,GAAiBC,EAAclqjB,EAAQ3iC,EAAOglB,GACvB,kBAAjB6nkB,GACHnpkB,GAASif,KACT3iC,EAAQ2iC,EACRA,OAASp6B,GAGbo6B,EAASA,GAAU,KAGnB3iC,EADA2iC,EAASkqjB,EAETA,GAAe,EAEXnpkB,GAASif,KACT3iC,EAAQ2iC,EACRA,OAASp6B,GAGbo6B,EAASA,GAAU,IAGvB,IAEI35B,GAFAw8B,GAAS02iB,KACT9iiB,GAAQyziB,EAAernjB,GAAOgyiB,MAAM9R,IAAM,EAE1C9giB,GAAM,GAEV,GAAa,MAAT5kC,EACA,OAAO0slB,GAAM/pjB,GAAS3iC,EAAQo5C,IAAS,EAAGp0B,EAAO,OAGrD,IAAKhc,GAAI,EAAGA,GAAI,EAAGA,KACf47B,GAAI57B,IAAK0jlB,GAAM/pjB,GAAS35B,GAAIowC,IAAS,EAAGp0B,EAAO,OAEnD,OAAO4f,EACV,CAED,SAASkojB,GAAWnqjB,EAAQ3iC,GACxB,OAAO2slB,GAAehqjB,EAAQ3iC,EAAO,SACxC,CAED,SAAS+slB,GAAgBpqjB,EAAQ3iC,GAC7B,OAAO2slB,GAAehqjB,EAAQ3iC,EAAO,cACxC,CAED,SAASgtlB,GAAaH,EAAclqjB,EAAQ3iC,GACxC,OAAO4slB,GAAiBC,EAAclqjB,EAAQ3iC,EAAO,WACxD,CAED,SAASitlB,GAAkBJ,EAAclqjB,EAAQ3iC,GAC7C,OAAO4slB,GAAiBC,EAAclqjB,EAAQ3iC,EAAO,gBACxD,CAED,SAASktlB,GAAgBL,EAAclqjB,EAAQ3iC,GAC3C,OAAO4slB,GAAiBC,EAAclqjB,EAAQ3iC,EAAO,cACxD,CA7HDyslB,GAAQn3Z,SAAWA,GACnBm3Z,GAAQloB,eAAiBA,GACzBkoB,GAAQ7jB,YAAcA,GACtB6jB,GAAQhnB,QAAUA,GAClBgnB,GAAQrmB,SAAW2lB,GACnBU,GAAQvmB,WAAa6lB,GACrBU,GAAQtnB,aAAeA,GACvBsnB,GAAQ5b,WAAaA,GACrB4b,GAAQ1lkB,IAAMA,GACd0lkB,GAAQjyN,KAAOouN,GACf6D,GAAQtB,UAAYrC,GACpB2D,GAAQ3L,gBAAkBkI,GAC1ByD,GAAQhD,cAAgBA,GACxBgD,GAAQpD,cAAgBA,GACxBoD,GAAQ9C,gBAAkBA,GAE1B8C,GAAQz8iB,OAAS6kiB,GACjB4X,GAAQzoB,YAAc+Q,GACtB0X,GAAQnlB,YAAcmO,GACtBgX,GAAQllB,YAAcA,GACtBklB,GAAQ1lB,iBAAmBA,GAC3B0lB,GAAQ5ua,KAAO05Z,GACfkV,GAAQU,eAAiBxV,GACzB8U,GAAQW,eAAiB1V,GAEzB+U,GAAQxoB,SAAW0U,GACnB8T,GAAQtoB,YAAc4U,GACtB0T,GAAQvoB,cAAgB2U,GACxB4T,GAAQ5kB,cAAgByR,GAExBmT,GAAQrU,cAAgBA,GACxBqU,GAAQtU,mBAAqBA,GAC7BsU,GAAQvU,iBAAmBA,GAE3BuU,GAAQtkZ,KAAOyyY,GACf6R,GAAQpoB,SAAW+W,GA4FnBa,GAAmB,KAAM,CACrBzhN,KAAM,CACF,CACI2uM,MAAO,aACPzrC,MAAO,IACPvhhB,OAAQ,EACRlhB,KAAM,cACNqhD,OAAQ,KACR8shB,KAAM,MAEV,CACID,MAAO,aACPzrC,OAAO,IACPvhhB,OAAQ,EACRlhB,KAAM,gBACNqhD,OAAQ,KACR8shB,KAAM,OAGd5D,uBAAwB,uBACxBC,QAAS,SAAUj3M,GACf,IAAIjjW,EAAIijW,EAAS,GAWjB,OAAOA,GATgC,IAA/BmjN,GAAOnjN,EAAS,IAAO,IACjB,KACM,IAANjjW,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAEjB,IAKL6/iB,EAAMyc,KAAOvnD,GACT,wDACA27C,IAEJ7Q,EAAMiiB,SAAW/sD,GACb,gEACA47C,IAGJ,IAAIoR,GAAUplkB,KAAKsH,IAEnB,SAASA,KACL,IAAIzc,EAAOvf,KAAKud,MAEhB,YAAK2xkB,cAAgB4K,GAAQ95lB,KAAKkvlB,eAClClvlB,KAAKmvlB,MAAQ2K,GAAQ95lB,KAAKmvlB,OAC1BnvlB,KAAKshlB,QAAUwY,GAAQ95lB,KAAKshlB,SAE5B/hkB,EAAKu9B,aAAeg9iB,GAAQv6kB,EAAKu9B,cACjCv9B,EAAKs9B,QAAUi9iB,GAAQv6kB,EAAKs9B,SAC5Bt9B,EAAKq9B,QAAUk9iB,GAAQv6kB,EAAKq9B,SAC5Br9B,EAAKo9B,MAAQm9iB,GAAQv6kB,EAAKo9B,OAC1Bp9B,EAAKi9B,OAASs9iB,GAAQv6kB,EAAKi9B,QAC3Bj9B,EAAKg9B,MAAQu9iB,GAAQv6kB,EAAKg9B,OAEnBv8C,IACV,CAED,SAAS+5lB,GAAcnvkB,EAAUla,EAAOxI,EAAO4D,GAC3C,IAAI8wD,GAAQmyhB,GAAer+kB,EAAOxI,GAElC0iB,SAASskkB,eAAiBpjlB,EAAY8wD,GAAMsyhB,cAC5CtkkB,EAASukkB,OAASrjlB,EAAY8wD,GAAMuyhB,MACpCvkkB,EAAS02jB,SAAWx1kB,EAAY8wD,GAAM0khB,QAE/B12jB,EAASwkkB,SACnB,CAGD,SAAS4K,GAAMtplB,EAAOxI,GAClB,OAAO6xlB,GAAc/5lB,KAAM0Q,EAAOxI,EAAO,EAC5C,CAGD,SAAS+xlB,GAAWvplB,EAAOxI,GACvB,OAAO6xlB,GAAc/5lB,KAAM0Q,EAAOxI,GAAO,EAC5C,CAED,SAASgylB,GAAQl/N,GACb,OAAIA,EAAS,EACFtmW,KAAKI,MAAMkmW,GAEXtmW,KAAKG,KAAKmmW,EAExB,CAED,SAASl+Q,KACL,IAIIjgE,GACAD,GACAD,GACAJ,GACA49iB,GARAr9iB,EAAe98C,KAAKkvlB,cACpBxyiB,EAAO18C,KAAKmvlB,MACZ3yiB,EAASx8C,KAAKshlB,QACd/hkB,EAAOvf,KAAKud,MAShB,OAESu/B,GAAgB,GAAKJ,GAAQ,GAAKF,GAAU,GAC5CM,GAAgB,GAAKJ,GAAQ,GAAKF,GAAU,IAGjDM,GAAuD,MAAvCo9iB,GAAQE,GAAa59iB,GAAUE,GAC/CA,EAAO,EACPF,EAAS,GAKbj9B,EAAKu9B,aAAeA,EAAe,IAEnCD,GAAUqhiB,GAASphiB,EAAe,KAClCv9B,EAAKs9B,QAAUA,GAAU,GAEzBD,GAAUshiB,GAASrhiB,GAAU,IAC7Bt9B,EAAKq9B,QAAUA,GAAU,GAEzBD,GAAQuhiB,GAASthiB,GAAU,IAC3Br9B,EAAKo9B,MAAQA,GAAQ,GAErBD,GAAQwhiB,GAASvhiB,GAAQ,IAIzBH,GADA29iB,GAAiBjc,GAASmc,GAAa39iB,IAEvCA,GAAQw9iB,GAAQE,GAAaD,KAG7B59iB,GAAQ2hiB,GAAS1hiB,EAAS,IAC1BA,GAAU,GAEVj9B,EAAKm9B,KAAOA,EACZn9B,EAAKi9B,OAASA,EACdj9B,EAAKg9B,MAAQA,GAENv8C,IACV,CAED,SAASq6lB,GAAa39iB,GAGlB,OAAe,KAAPA,EAAe,MAC1B,CAED,SAAS09iB,GAAa59iB,GAElB,OAAiB,OAATA,EAAmB,IAC9B,CAED,SAAS48K,GAAG1zK,GACR,IAAK1lD,KAAKsrO,UACN,OAAO3U,IAEX,IAAIj6K,EACAF,EACAM,EAAe98C,KAAKkvlB,cAIxB,GAAc,WAFdxpiB,EAAQ83hB,GAAe93hB,KAEY,YAAVA,GAAiC,SAAVA,EAG5C,OAFAhJ,EAAO18C,KAAKmvlB,MAAQryiB,EAAe,MACnCN,EAASx8C,KAAKshlB,QAAU+Y,GAAa39iB,GAC7BgJ,OACC,QACD,OAAOlJ,MACN,UACD,OAAOA,EAAS,MACf,OACD,OAAOA,EAAS,QAKxB,OADAE,EAAO18C,KAAKmvlB,MAAQz6jB,KAAK7E,MAAMuqkB,GAAap6lB,KAAKshlB,UACzC57hB,OACC,OACD,OAAOhJ,EAAO,EAAII,EAAe,WAChC,MACD,OAAOJ,EAAOI,EAAe,UAC5B,OACD,OAAc,GAAPJ,EAAYI,EAAe,SACjC,SACD,OAAc,KAAPJ,EAAcI,EAAe,QACnC,SACD,OAAc,MAAPJ,EAAeI,EAAe,QAEpC,cACD,OAAOpoB,KAAKI,MAAa,MAAP4nB,GAAgBI,UAElC,MAAM,IAAIv8C,MAAM,gBAAkBmlD,GAGjD,CAGD,SAAS40iB,KACL,OAAKt6lB,KAAKsrO,UAINtrO,KAAKkvlB,cACQ,MAAblvlB,KAAKmvlB,MACJnvlB,KAAKshlB,QAAU,GAAM,OACK,QAA3BnD,GAAMn+kB,KAAKshlB,QAAU,IANd3qX,GAQd,CAED,SAAS4jY,GAAOjpf,GACZ,OAAO,WACH,OAAOtxG,KAAKo5N,GAAG9nH,EAClB,CACJ,CAED,IAAIkpf,GAAiBD,GAAO,MACxBE,GAAYF,GAAO,KACnBG,GAAYH,GAAO,KACnBI,GAAUJ,GAAO,KACjBK,GAASL,GAAO,KAChBM,GAAUN,GAAO,KACjBO,GAAWP,GAAO,KAClBQ,EAAaR,GAAO,KACpBS,EAAUT,GAAO,KAErB,SAASU,KACL,OAAOlM,GAAe/ulB,KACzB,CAED,SAASk7lB,GAAMx1iB,GACXA,SAAQ83hB,GAAe93hB,GAChB1lD,KAAKsrO,UAAYtrO,KAAK0lD,EAAQ,OAASixK,GACjD,CAED,SAASwkY,GAAW1zlB,GAChB,OAAO,WACH,OAAOzH,KAAKsrO,UAAYtrO,KAAKud,MAAM9V,GAAQkvN,GAC9C,CACJ,CAED,IAAI75K,GAAeq+iB,GAAW,gBAC1Bt+iB,GAAUs+iB,GAAW,WACrBv+iB,GAAUu+iB,GAAW,WACrBx+iB,GAAQw+iB,GAAW,SACnBz+iB,GAAOy+iB,GAAW,QAClB3+iB,GAAS2+iB,GAAW,UACpB5+iB,GAAQ4+iB,GAAW,SAEvB,SAAS1+iB,KACL,OAAOyhiB,GAASl+kB,KAAK08C,OAAS,EACjC,CAED,IAAI7sB,GAAQ6E,KAAK7E,MACburkB,GAAa,CACTh0P,GAAI,GACJpkU,EAAG,GACHoiK,EAAG,GACH16J,EAAG,GACHF,EAAG,GACHopF,EAAG,KACHc,EAAG,IAIX,SAAS2me,GAAkBn3V,EAAQ82H,EAAQu3M,EAAeC,EAAUxgiB,IAChE,OAAOA,GAAO2/hB,aAAa32M,GAAU,IAAKu3M,EAAeruU,EAAQsuU,EACpE,CAED,SAAS8oB,GAAeC,EAAgBhpB,EAAe6oB,EAAYppjB,GAC/D,IAAIpnB,GAAWmkkB,GAAewM,GAAgBv/jB,MAC1C6gB,GAAUhtB,GAAMjF,GAASwuM,GAAG,MAC5Bx8K,GAAU/sB,GAAMjF,GAASwuM,GAAG,MAC5Bz8K,GAAQ9sB,GAAMjF,GAASwuM,GAAG,MAC1B18K,GAAO7sB,GAAMjF,GAASwuM,GAAG,MACzB58K,GAAS3sB,GAAMjF,GAASwuM,GAAG,MAC3B38K,GAAQ5sB,GAAMjF,GAASwuM,GAAG,MAC1B78K,GAAQ1sB,GAAMjF,GAASwuM,GAAG,MAC1Bj8L,GACK0f,IAAWu+iB,EAAWh0P,IAAM,CAAC,IAAKvqT,KAClCA,GAAUu+iB,EAAWp4jB,GAAK,CAAC,KAAM6Z,KACjCD,IAAW,GAAK,CAAC,MACjBA,GAAUw+iB,EAAWh2Z,GAAK,CAAC,KAAMxoJ,KACjCD,IAAS,GAAK,CAAC,MACfA,GAAQy+iB,EAAW1wjB,GAAK,CAAC,KAAMiS,KAC/BD,IAAQ,GAAK,CAAC,MACdA,GAAO0+iB,EAAW5wjB,GAAK,CAAC,KAAMkS,IAEvC,OAAoB,MAAhB0+iB,EAAWxne,IACXz2F,GACIA,IACCsf,IAAS,GAAK,CAAC,MACfA,GAAQ2+iB,EAAWxne,GAAK,CAAC,KAAMn3E,MAExCtf,GAAIA,IACCqf,IAAU,GAAK,CAAC,MAChBA,GAAS4+iB,EAAW1me,GAAK,CAAC,KAAMl4E,KAChCD,IAAS,GAAK,CAAC,MAAS,CAAC,KAAMA,KAElC,GAAKg2hB,EACPp1iB,GAAE,IAAMo+jB,EAAiB,EACzBp+jB,GAAE,GAAK6U,EACAqpjB,GAAkBlnkB,MAAM,KAAMgJ,GACxC,CAGD,SAASq+jB,GAA2BC,GAChC,YAAyB1mlB,IAArB0mlB,EACO5rkB,GAEqB,mBAArB4rkB,IACP5rkB,GAAQ4rkB,GACD,EAGd,CAGD,SAASC,GAA4B5yc,EAAW3vG,GAC5C,YAA8BpkC,IAA1BqmlB,GAAWtyc,UAGD/zI,IAAVokC,EACOiijB,GAAWtyc,IAEtBsyc,GAAWtyc,GAAa3vG,EACN,MAAd2vG,IACAsyc,GAAWh0P,GAAKjuT,EAAQ,IAErB,GACV,CAED,SAAS86iB,GAAS0H,EAAeC,GAC7B,IAAK57lB,KAAKsrO,UACN,OAAOtrO,KAAKq8kB,aAAajH,cAG7B,IAEIpjiB,GACA5xC,GAHAy7lB,GAAa,EACbjga,EAAKw/Z,GAIT,MAA6B,iBAAlBO,IACPC,EAAgBD,EAChBA,GAAgB,GAES,kBAAlBA,IACPE,EAAaF,GAEY,iBAAlBC,IACPhga,EAAKv8K,OAAOC,OAAO,GAAI87kB,GAAYQ,GACZ,MAAnBA,EAAc54jB,GAAiC,MAApB44jB,EAAcx0P,KACzCxrK,EAAGwrK,GAAKw0P,EAAc54jB,EAAI,IAKlC5iC,GAASk7lB,GAAet7lB,MAAO67lB,EAAYjga,EAD3C5pJ,GAAShyC,KAAKq8kB,cAGVwf,IACAz7lB,GAAS4xC,GAAOqriB,YAAYr9kB,KAAMI,KAG/B4xC,GAAO0giB,WAAWtykB,GAC5B,CAED,IAAI07lB,GAAQpnkB,KAAKsH,IAEjB,SAASw1B,GAAKnpC,GACV,OAAQA,EAAI,IAAMA,EAAI,KAAOA,CAChC,CAED,SAAS0zkB,KAQL,IAAK/7lB,KAAKsrO,UACN,OAAOtrO,KAAKq8kB,aAAajH,cAG7B,IAGIx4hB,EACAD,GACAJ,GACAvZ,GAEAg5jB,GACAC,GACAC,GACAC,GAXAt/iB,EAAUi/iB,GAAM97lB,KAAKkvlB,eAAiB,IACtCxyiB,EAAOo/iB,GAAM97lB,KAAKmvlB,OAClB3yiB,EAASs/iB,GAAM97lB,KAAKshlB,SAKpB35iB,GAAQ3nC,KAAKy6lB,YAMjB,OAAK9yjB,IAOLiV,EAAUshiB,GAASrhiB,EAAU,IAC7BF,GAAQuhiB,GAASthiB,EAAU,IAC3BC,GAAW,GACXD,GAAW,GAGXL,GAAQ2hiB,GAAS1hiB,EAAS,IAC1BA,GAAU,GAGVxZ,GAAI6Z,EAAUA,EAAQ64E,QAAQ,GAAGr1H,QAAQ,SAAU,IAAM,GAEzD27lB,GAAYr0jB,GAAQ,EAAI,IAAM,GAC9Bs0jB,GAASzqiB,GAAKxxD,KAAKshlB,WAAa9vhB,GAAK7pB,IAAS,IAAM,GACpDu0jB,GAAW1qiB,GAAKxxD,KAAKmvlB,SAAW39hB,GAAK7pB,IAAS,IAAM,GACpDw0jB,GAAU3qiB,GAAKxxD,KAAKkvlB,iBAAmB19hB,GAAK7pB,IAAS,IAAM,GAGvDq0jB,GACA,KACCz/iB,GAAQ0/iB,GAAS1/iB,GAAQ,IAAM,KAC/BC,EAASy/iB,GAASz/iB,EAAS,IAAM,KACjCE,EAAOw/iB,GAAWx/iB,EAAO,IAAM,KAC/BC,IAASC,GAAWC,EAAU,IAAM,KACpCF,GAAQw/iB,GAAUx/iB,GAAQ,IAAM,KAChCC,EAAUu/iB,GAAUv/iB,EAAU,IAAM,KACpCC,EAAUs/iB,GAAUn5jB,GAAI,IAAM,KA9BxB,KAgCd,CAED,IAAIo5jB,GAAUpN,GAAS5tlB;;AA2DvBw2kB,OAzDAwkB,GAAQ9wX,QAAUujX,GAClBuN,GAAQpgkB,IAAMA,GACdogkB,GAAQpwlB,IAAMgulB,GACdoC,GAAQ7gW,SAAW0+V,GACnBmC,GAAQhjY,GAAKA,GACbgjY,GAAQ5B,eAAiBA,GACzB4B,GAAQ3B,UAAYA,GACpB2B,GAAQ1B,UAAYA,GACpB0B,GAAQzB,QAAUA,GAClByB,GAAQxB,OAASA,GACjBwB,GAAQvB,QAAUA,GAClBuB,GAAQtB,SAAWA,GACnBsB,GAAQrB,WAAaA,EACrBqB,GAAQpB,QAAUA,EAClBoB,GAAQz5lB,QAAU23lB,GAClB8B,GAAQhN,QAAUtye,GAClBs/e,GAAQj3lB,MAAQ81lB,GAChBmB,GAAQr8kB,IAAMm7kB,GACdkB,GAAQt/iB,aAAeA,GACvBs/iB,GAAQv/iB,QAAUA,GAClBu/iB,GAAQx/iB,QAAUA,GAClBw/iB,GAAQz/iB,MAAQA,GAChBy/iB,GAAQ1/iB,KAAOA,GACf0/iB,GAAQ3/iB,MAAQA,GAChB2/iB,GAAQ5/iB,OAASA,GACjB4/iB,GAAQ7/iB,MAAQA,GAChB6/iB,GAAQnI,SAAWA,GACnBmI,GAAQxI,YAAcmI,GACtBK,GAAQ36lB,SAAWs6lB,GACnBK,GAAQz+V,OAASo+V,GACjBK,GAAQpqjB,OAASA,GACjBoqjB,GAAQ/f,WAAaA,GAErB+f,GAAQC,YAAcvvD,GAClB,sFACAivD,IAEJK,GAAQ/H,KAAOA,GAIflY,GAAe,IAAK,EAAG,EAAG,QAC1BA,GAAe,IAAK,EAAG,EAAG,WAI1B4D,GAAc,IAAKL,IACnBK,GAAc,IAAKF,IACnBO,GAAc,IAAK,SAAU1vkB,EAAOuiB,EAAOlzB,GACvCA,EAAOw5kB,GAAK,IAAIj3kB,KAAyB,IAApByvB,WAAWrhB,GACnC,GACD0vkB,GAAc,IAAK,SAAU1vkB,EAAOuiB,EAAOlzB,GACvCA,EAAOw5kB,GAAK,IAAIj3kB,KAAK67kB,GAAMztkB,GAC9B,GAIDknkB,EAAM/vkB,QAAU,SAEhBgwkB,EAAgBiV,IAEhBlV,EAAMpnjB,GAAK0J,GACX09iB,EAAMh9jB,IAAMA,GACZg9jB,EAAM/8jB,IAAMA,GACZ+8jB,EAAMpijB,IAAMA,GACZoijB,EAAMQ,IAAMH,GACZL,EAAMmd,KAAOqD,GACbxgB,EAAMp7hB,OAAS88iB,GACf1hB,EAAM5kP,OAASA,GACf4kP,EAAM5liB,OAASy2iB,GACf7Q,EAAMnkM,QAAUmmM,GAChBhC,EAAMhtjB,SAAWmkkB,GACjBnX,EAAM8C,SAAWA,GACjB9C,EAAMnH,SAAW+oB,GACjB5hB,EAAM0gB,UAAYD,GAClBzgB,EAAMyE,WAAaqM,GACnB9Q,EAAMyX,WAAaA,GACnBzX,EAAMpH,YAAc+oB,GACpB3hB,EAAMjH,YAAc+oB,GACpB9hB,EAAMrH,aAAeA,GACrBqH,EAAMgR,aAAeA,GACrBhR,EAAMmQ,QAAUe,GAChBlR,EAAMlH,cAAgB+oB,GACtB7hB,EAAM4F,eAAiBA,GACvB5F,EAAM0kB,qBAAuBd,GAC7B5jB,EAAM2kB,sBAAwBb,GAC9B9jB,EAAMib,eAAiBL,GACvB5a,EAAMx2kB,UAAY84B,GAGlB09iB,EAAM4kB,UAAY,CACdC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnB3ukB,KAAM,aACNyzT,KAAM,QACNm7Q,aAAc,WACdC,QAAS,eACT/b,KAAM,aACNJ,MAAO,WAGJ9I,CAEV,CA7iLmF10kB,iECN7E,MAAMq2J,UAAwBlvJ,IACjCvK,YAAYohG,GACRjjF,QACAje,KAAKkhG,OAASA,CACjB,CACGh5F,YACA,OAAOlI,KAAKkqD,UACf,CACD4yiB,WAAWtnY,GACP,MAAMz7D,EAAe97I,MAAM6+kB,WAAWtnY,GACtC,OAACz7D,EAAa/xH,QAAUwtL,EAAWvwN,KAAKjF,KAAKkhG,QACtC64D,CACV,CACD7vG,WACI,MAAQ6yiB,WAAUC,cAAa97f,UAAWlhG,KAC1C,GAAI+8lB,EACA,MAAMC,EAEV,YAAKC,iBACE/7f,CACV,CACDj8F,KAAKiD,GACD+V,MAAMhZ,KAAMjF,KAAKkhG,OAASh5F,EAC7B,EAvBwC,4HCMtC,MAAMw8E,GACT5kF,YAAYoM,IACJA,KACAlM,KAAK88lB,WAAa5wlB,GAEzB,CACD6sQ,KAAK/gD,IACD,MAAMz8B,GAAa,IAAI72G,GACvB62G,UAAW5qK,OAAS3wB,KACpBu7L,GAAWy8B,SAAWA,GACfz8B,EACV,CACDrvL,UAAUgxlB,GAAgBvhkB,GAAOm7D,IAC7B,MAAM0+H,GAqEd,SAAS2nY,GAAaj1lB,IAClB,OAAQA,IAASA,cAAiBk1lB,MAJtC,SAASC,GAAWn1lB,IAChB,OAAOA,OAASqoB,KAAWroB,GAAMjD,QAAP,EAAgBsrB,KAAWroB,GAAMyzB,SAAP,EAAiBpL,KAAWroB,GAAM4uF,SACzF,CAEqDumgB,CAAWn1lB,MAAD,EAAWo1lB,MAAep1lB,GACzF,CAvE0Bi1lB,CAAaD,IAAkBA,GAAiB,IAAIK,KAAeL,GAAgBvhkB,GAAOm7D,IAC7G0mgB,eAAa,KACT,MAAQxlY,YAAUrnM,WAAW3wB,KAC7Bw1N,GAAWxpN,IAAIgsN,GAEPA,GAAS12N,KAAKk0N,GAAY7kM,IAC5BA,GAEM3wB,KAAK88lB,WAAWtnY,IAEhBx1N,KAAKy9lB,cAAcjoY,IAP/B,GASGA,EACV,CACDioY,cAAcC,IACV,IACI,OAAO19lB,KAAK88lB,WAAWY,GAI1B,CAHA,MACMjua,IACHiua,GAAK/hkB,MAAM8zJ,GACd,CACJ,CACDh/K,QAAQxL,GAAM04lB,IACVA,OACO,IADPA,GAAcC,GAAeD,KACN,CAAC31lB,GAASkvF,MAC7B,MAAMs+H,GAAa,IAAI+nY,KAAe,CAClCt4lB,KAAOiD,KACH,IACIjD,GAAKiD,GAKR,CAJA,MACMunL,IACHv4F,GAAOu4F,IACP+lC,GAAWvkN,aACd,GAEL0qB,MAAOu7D,GACPJ,SAAU9uF,KAEdhI,KAAKkM,UAAUspN,GAAf,EAEP,CACDsnY,WAAWtnY,IACP,IAAI+xD,GACJ,OAA8B,QAAtBA,GAAKvnR,KAAK2wB,cAA2B,IAAP42P,QAAgB,EAASA,GAAGr7Q,UAAUspN,GAC/E,CACiB,CAAjBqoY,OACG,OAAO79lB,IACV,CACDyF,QAAQq4lB,IACJ,SAAOC,KAAcD,GAArB,CAAiC99lB,KACpC,CACDg+lB,UAAUL,IACNA,OACO,IADPA,GAAcC,GAAeD,KACN,CAAC31lB,GAASkvF,MAC7B,IAAIhvF,GACJlI,KAAKkM,UAAWmc,IAAOngB,GAAQmgB,GAAKonK,IAAQv4F,GAAOu4F,IAAM,IAAMznL,GAAQE,IAAvE,EAEP,EAKL,SAAS01lB,GAAeD,IACpB,IAAIp2U,GACJ,OAAgG,QAAxFA,GAAKo2U,IAA+D59lB,mBAAmC,IAAPwnR,GAAgBA,GAAKhiR,OAChI,CANDm/E,GAAWv4D,OAAUjgB,IACV,IAAIw4E,GAAWx4E,GAWzB,yECzFM,MAAM+qL,UAAsB5sL,IAC/BvK,YAAYm+lB,EAAc1nP,IAAU2nP,EAAc3nP,IAAU4nP,GAAqBC,KAC7EnglB,QACAje,KAAKi+lB,YAAcA,EACnBj+lB,KAAKk+lB,YAAcA,EACnBl+lB,KAAKm+lB,mBAAqBA,GAC1Bn+lB,KAAKq+lB,QAAU,GACfr+lB,KAAKs+lB,qBAAsB,EAC3Bt+lB,KAAKs+lB,oBAAsBJ,IAAgB3nP,IAC3Cv2W,KAAKi+lB,YAAcvpkB,KAAK7Z,IAAI,EAAGojlB,GAC/Bj+lB,KAAKk+lB,YAAcxpkB,KAAK7Z,IAAI,EAAGqjlB,EAClC,CACDj5lB,KAAKiD,GACD,MAAQq2lB,YAAWF,WAASC,uBAAqBH,sBAAoBD,gBAAgBl+lB,KAChFu+lB,IACDF,GAAQrilB,KAAK9T,IACZo2lB,IAAuBD,GAAQrilB,KAAKmilB,GAAmB3okB,MAAQ0okB,KAEpEl+lB,KAAKw+lB,cACLvglB,MAAMhZ,KAAKiD,EACd,CACD40lB,WAAWtnY,GACPx1N,KAAKi9lB,iBACLj9lB,KAAKw+lB,cACL,MAAMzkc,EAAe/5J,KAAKy+lB,gBAAgBjpY,IAClC8oY,uBAAqBD,YAAYr+lB,KACnCy/C,GAAO4+iB,GAAQ38lB,QACrB,QAAS8T,GAAI,EAAGA,GAAIiqC,GAAKn/C,SAAWk1N,EAAWxtL,OAAQxyB,IAAK8olB,GAAsB,EAAI,EAClF9oY,EAAWvwN,KAAKw6C,GAAKjqC,KAEzB,YAAKkplB,wBAAwBlpY,GACtBz7D,CACV,CACDykc,cACI,MAAQP,cAAaE,qBAAoBE,WAASC,wBAAwBt+lB,KACpE2+lB,IAAsBL,GAAsB,EAAI,GAAKL,EAE3D,GADAA,EAAc1nP,KAAYooP,GAAqBN,GAAQ/9lB,QAAU+9lB,GAAQx3iB,OAAO,EAAGw3iB,GAAQ/9lB,OAASq+lB,KAC/FL,GAAqB,CACtB,MAAM9okB,GAAM2okB,EAAmB3okB,MAC/B,IAAIxf,GAAO,EACX,QAASR,GAAI,EAAGA,GAAI6olB,GAAQ/9lB,QAAU+9lB,GAAQ7olB,KAAMggB,GAAKhgB,IAAK,EAC1DQ,GAAOR,GAEXQ,IAAQqolB,GAAQx3iB,OAAO,EAAG7wC,GAAO,EACpC,CACJ,EA7CsC,yECDpC,MAAM4olB,aAA0BC,GAAkB1xD,IAAW,WAChEA,GAAOntiB,MACPA,KAAKyH,KAAO,0BACZzH,KAAK6f,QAAU,qBAClB,2BCAM,MAAMxV,WAAgBq6E,IACzB5kF,cACIme,QACAje,KAAKgoC,QAAS,EACdhoC,KAAK8+lB,iBAAmB,KACxB9+lB,KAAKuwG,UAAY,GACjBvwG,KAAKu+lB,WAAY,EACjBv+lB,KAAK+8lB,UAAW,EAChB/8lB,KAAKg9lB,YAAc,IACtB,CACDjkV,KAAK/gD,IACD,MAAMhhC,GAAU,IAAI+na,GAAiB/+lB,KAAMA,MAC3Cg3L,UAAQghC,SAAWA,GACZhhC,EACV,CACDima,iBACI,GAAIj9lB,KAAKgoC,OACL,MAAM,IAAI42jB,CAEjB,CACD35lB,KAAKiD,KACDs1lB,OAAa,KAET,GADAx9lB,KAAKi9lB,kBACAj9lB,KAAKu+lB,UAAW,CACZv+lB,KAAK8+lB,mBACN9+lB,KAAK8+lB,iBAAmB39lB,MAAMqE,KAAKxF,KAAKuwG,YAE5C,UAAW18E,MAAY7zB,KAAK8+lB,iBACxBjrkB,GAAS5uB,KAAKiD,GAErB,GAER,CACDyzB,MAAM8zJ,KACF+ta,OAAa,KAET,GADAx9lB,KAAKi9lB,kBACAj9lB,KAAKu+lB,UAAW,CACjBv+lB,KAAK+8lB,SAAW/8lB,KAAKu+lB,WAAY,EACjCv+lB,KAAKg9lB,YAAcvta,GACnB,MAAQl/E,cAAcvwG,KACtB,KAAOuwG,GAAUjwG,QACbiwG,GAAU3qD,QAAQjqB,MAAM8zJ,GAE/B,GAER,CACD34F,YACI0mgB,OAAa,KAET,GADAx9lB,KAAKi9lB,kBACAj9lB,KAAKu+lB,UAAW,CACjBv+lB,KAAKu+lB,WAAY,EACjB,MAAQhuf,cAAcvwG,KACtB,KAAOuwG,GAAUjwG,QACbiwG,GAAU3qD,QAAQkxC,UAEzB,GAER,CACD7lF,cACIjR,KAAKu+lB,UAAYv+lB,KAAKgoC,QAAS,EAC/BhoC,KAAKuwG,UAAYvwG,KAAK8+lB,iBAAmB,IAC5C,CACGE,eACA,IAAIz3U,GACJ,OAAkC,QAAzBA,GAAKvnR,KAAKuwG,iBAA8B,IAAPg3K,QAAgB,EAASA,GAAGjnR,QAAU,CACnF,CACDm9lB,cAAcjoY,IACV,YAAKynY,iBACEh/kB,MAAMw/kB,cAAcjoY,GAC9B,CACDsnY,WAAWtnY,IACP,YAAKynY,iBACLj9lB,KAAK0+lB,wBAAwBlpY,IACtBx1N,KAAKy+lB,gBAAgBjpY,GAC/B,CACDipY,gBAAgBjpY,IACZ,MAAQunY,YAAUwB,aAAWhuf,cAAcvwG,KAC3C,OAAI+8lB,IAAYwB,GACLU,MAEXj/lB,KAAK8+lB,iBAAmB,KACxBvuf,GAAUv0F,KAAKw5M,IACR,IAAI5pN,KAAa,KACpB5L,KAAK8+lB,iBAAmB,QACxBhjL,KAAUvrU,GAAWilH,GAAZ,GAEhB,CACDkpY,wBAAwBlpY,IACpB,MAAQunY,YAAUC,eAAauB,cAAcv+lB,KACzC+8lB,GACAvnY,GAAW75L,MAAMqhkB,IAEZuB,IACL/oY,GAAW1+H,UAElB,CACDvsF,eACI,MAAMgxL,GAAa,IAAI72G,IACvB62G,UAAW5qK,OAAS3wB,KACbu7L,EACV,EAELlxL,GAAQ8hB,OAAS,CAACuE,GAAaC,KACpB,IAAIoukB,GAAiBrukB,GAAaC,IAEtC,MAAMoukB,WAAyB10lB,GAClCvK,YAAY4wB,GAAaC,IACrB1S,QACAje,KAAK0wB,YAAcA,GACnB1wB,KAAK2wB,OAASA,EACjB,CACD1rB,KAAKiD,IACD,IAAIq/Q,GAAIguC,GACwE,QAA/EA,GAAiC,QAA3BhuC,GAAKvnR,KAAK0wB,mBAAgC,IAAP62P,QAAgB,EAASA,GAAGtiR,YAAyB,IAAPswT,IAAyBA,GAAGj0T,KAAKimR,GAAIr/Q,GAChI,CACDyzB,MAAM8zJ,IACF,IAAI83F,GAAIguC,GACyE,QAAhFA,GAAiC,QAA3BhuC,GAAKvnR,KAAK0wB,mBAAgC,IAAP62P,QAAgB,EAASA,GAAG5rP,aAA0B,IAAP45R,IAAyBA,GAAGj0T,KAAKimR,GAAI93F,GACjI,CACD34F,WACI,IAAIywL,GAAIguC,GAC4E,QAAnFA,GAAiC,QAA3BhuC,GAAKvnR,KAAK0wB,mBAAgC,IAAP62P,QAAgB,EAASA,GAAGzwL,gBAA6B,IAAPy+N,IAAyBA,GAAGj0T,KAAKimR,GAChI,CACDu1U,WAAWtnY,IACP,IAAI+xD,GAAIguC,GACR,OAAmG,QAA3FA,GAA4B,QAAtBhuC,GAAKvnR,KAAK2wB,cAA2B,IAAP42P,QAAgB,EAASA,GAAGr7Q,UAAUspN,WAAgC,IAAP+/F,GAAgBA,GAAK0pS,IACnI,EArByC,oHC9GvC,MAAMC,EAA+BC,GAAmB,SAAKpqlB,OAAWA,GAOxE,SAASoqlB,GAAmBpuP,GAAM7oW,GAAOyzB,IAC5C,MAAO,CACHo1U,QACA7oW,SACAyzB,SAEP,2BCLM,MAAMyhkB,WAAmBxxlB,KAC5B9L,YAAY4wB,IACRzS,QACAje,KAAKu+lB,WAAY,EACb7tkB,IACA1wB,KAAK0wB,YAAcA,MACf4skB,MAAe5skB,KACfA,GAAY1kB,IAAIhM,OAIpBA,KAAK0wB,YAAc0ukB,EAE1B,CACYr5lB,cAACd,GAAM02B,GAAOm7D,IACvB,OAAO,IAAIymgB,GAAet4lB,GAAM02B,GAAOm7D,GAC1C,CACD7xF,KAAKiD,IACGlI,KAAKu+lB,UACLc,GDvBL,SAASC,GAAiBp3lB,IAC7B,OAAOi3lB,GAAmB,IAAKj3lB,QAAO6M,EACzC,CCqBqCuqlB,CAAiBp3lB,IAAQlI,MAGnDA,KAAKu/lB,MAAMr3lB,GAElB,CACDyzB,MAAM8zJ,IACEzvL,KAAKu+lB,UACLc,GDlCL,SAASG,GAAkB7jkB,IAC9B,OAAOwjkB,GAAmB,SAAKpqlB,EAAW4mB,GAC7C,CCgCqC6jkB,CAAkB/va,IAAMzvL,OAGlDA,KAAKu+lB,WAAY,EACjBv+lB,KAAKy/lB,OAAOhwa,IAEnB,CACD34F,WACQ92F,KAAKu+lB,UACLc,GAA0BH,EAAuBl/lB,OAGjDA,KAAKu+lB,WAAY,EACjBv+lB,KAAK0/lB,YAEZ,CACDzulB,cACSjR,KAAKgoC,SACNhoC,KAAKu+lB,WAAY,EACjBtglB,MAAMhN,cACNjR,KAAK0wB,YAAc,KAE1B,CACD6ukB,MAAMr3lB,IACFlI,KAAK0wB,YAAYzrB,KAAKiD,GACzB,CACDu3lB,OAAOhwa,IACH,IACIzvL,KAAK0wB,YAAYiL,MAAM8zJ,GAI1B,CAHA,QAEGzvL,KAAKiR,aACR,CACJ,CACDyulB,YACI,IACI1/lB,KAAK0wB,YAAYomE,UAIpB,CAHA,QAEG92F,KAAKiR,aACR,CACJ,EAEL,MAAM0ulB,GAAQzgV,SAAS99Q,UAAU8L,KACjC,SAASA,GAAKsjB,GAAI6kM,IACd,OAAOsqY,GAAMr+lB,KAAKkvB,GAAI6kM,GACzB,CACD,MAAMuqY,GACF9/lB,YAAY+/lB,IACR7/lB,KAAK6/lB,gBAAkBA,EAC1B,CACD56lB,KAAKiD,IACD,MAAQ23lB,oBAAoB7/lB,KAC5B,GAAI6/lB,GAAgB56lB,KAChB,IACI46lB,GAAgB56lB,KAAKiD,GAIxB,CAHA,MACMyzB,IACHmkkB,GAAqBnkkB,GACxB,CAER,CACDA,MAAM8zJ,IACF,MAAQowa,oBAAoB7/lB,KAC5B,GAAI6/lB,GAAgBlkkB,MAChB,IACIkkkB,GAAgBlkkB,MAAM8zJ,GAIzB,CAHA,MACM9zJ,IACHmkkB,GAAqBnkkB,GACxB,MAGDmkkB,GAAqBrwa,GAE5B,CACD34F,WACI,MAAQ+ogB,oBAAoB7/lB,KAC5B,GAAI6/lB,GAAgB/ogB,SAChB,IACI+ogB,GAAgB/ogB,UAInB,CAHA,MACMn7D,IACHmkkB,GAAqBnkkB,GACxB,CAER,EAEE,MAAM4hkB,WAAuBH,GAChCt9lB,YAAYo9lB,GAAgBvhkB,GAAOm7D,IAE/B,IAAI+ogB,GACJ,GAFA5hlB,SAEA,EAAIsS,KAAW2skB,MAAoBA,GAC/B2C,GAAkB,CACd56lB,KAAOi4lB,SAAwEnolB,EAC/E4mB,MAAOA,SAA6C5mB,EACpD+hF,SAAUA,SAAsD/hF,OAGnE,CACD,IAAI0C,GACAzX,MAAQD,8BACR0X,GAAU4H,OAAO8M,OAAO+wkB,IACxBzllB,GAAQxG,YAAc,IAAMjR,KAAKiR,cACjC4ulB,GAAkB,CACd56lB,KAAMi4lB,GAAej4lB,MAAQiI,GAAKgwlB,GAAej4lB,KAAMwS,IACvDkkB,MAAOuhkB,GAAevhkB,OAASzuB,GAAKgwlB,GAAevhkB,MAAOlkB,IAC1Dq/E,SAAUomgB,GAAepmgB,UAAY5pF,GAAKgwlB,GAAepmgB,SAAUr/E,MAIvEoolB,GAAkB3C,EAEzB,CACDl9lB,KAAK0wB,YAAc,IAAIkvkB,GAAiBC,GAC3C,EAEL,SAASC,GAAqBnkkB,IACtB57B,6CACAggmB,MAAapkkB,KAAD,EAGZqkkB,KAAqBrkkB,GAE5B,CAID,SAAS0jkB,GAA0Bt/F,GAAcvqS,IAC7C,MAAQyqY,0BAA0BlgmB,IAClCkgmB,IAAyBC,gBAA2B,IAAMD,GAAsBlgG,GAAcvqS,IACjG,CACM,MAAM4pY,GAAiB,CAC1Bp3jB,QAAQ,EACR/iC,KAAMuxI,IACN76G,MAVJ,SAASD,GAAoB+zJ,IACzB,MAAMA,EACT,EASG34F,SAAU0/C,IAJgB,oFCtKvB,MAAM2pd,aAAsBtB,GAAkB1xD,IAAW,SAAiC9rK,IAC7F8rK,GAAOntiB,MACPA,KAAK6f,QAAUwhX,GACR,GAAEA,GAAO/gY,kDAClB+gY,GAAOhgY,IAAI,CAACouL,GAAKj6K,KAAO,GAAEA,GAAI,MAAMi6K,GAAIhuL,cAAcE,KAAK,UACnD,GACN3B,KAAKyH,KAAO,sBACZzH,KAAKqhY,OAASA,EACjB,iBCNM,MAAMz1X,EACT9L,YAAYsgmB,IACRpgmB,KAAKogmB,gBAAkBA,GACvBpgmB,KAAKgoC,QAAS,EACdhoC,KAAKqgmB,WAAa,KAClBrgmB,KAAKsgmB,YAAc,IACtB,CACDrvlB,cACI,IAAIowX,GACJ,IAAKrhY,KAAKgoC,OAAQ,CACdhoC,KAAKgoC,QAAS,EACd,MAAQq4jB,eAAergmB,KACvB,GAAIqgmB,GAEA,GADArgmB,KAAKqgmB,WAAa,KACdl/lB,MAAMkuB,QAAQgxkB,IACd,UAAW1okB,MAAU0okB,GACjB1okB,GAAOhgB,OAAO3X,WAIlBqgmB,GAAW1olB,OAAO3X,MAG1B,MAAQogmB,gBAAiBG,IAAqBvgmB,KAC9C,MAAIuwB,KAAWgwkB,IACX,IACIA,IAIH,CAHA,MACM97kB,IACH48W,GAAS58W,cAAa07kB,EAAsB17kB,GAAE48W,OAAS,CAAC58W,GAC3D,CAEL,MAAQ67kB,gBAAgBtgmB,KACxB,GAAIsgmB,GAAa,CACbtgmB,KAAKsgmB,YAAc,KACnB,UAAWE,MAAaF,GACpB,IACIG,GAAcD,GAUjB,CATA,MACM/wa,IACH4xM,GAASA,IAAgD,GACrD5xM,cAAe0wa,EACf9+N,GAAS,IAAIA,MAAW5xM,GAAI4xM,QAG5BA,GAAOrlX,KAAKyzK,GAEnB,CAER,CACD,GAAI4xM,GACA,MAAM,IAAI8+N,EAAoB9+N,GAErC,CACJ,CACDr1X,IAAI00lB,IACA,IAAIn5U,GACJ,GAAIm5U,IAAYA,KAAa1gmB,KACzB,GAAIA,KAAKgoC,OACLy4jB,GAAcC,QAEb,CACD,GAAIA,cAAoB90lB,EAAc,CAClC,GAAI80lB,GAAS14jB,QAAU04jB,GAASC,WAAW3gmB,MACvC,OAEJ0gmB,GAASE,WAAW5gmB,KACvB,EACAA,KAAKsgmB,YAA0C,QAA3B/4U,GAAKvnR,KAAKsgmB,mBAAgC,IAAP/4U,GAAgBA,GAAK,IAAIvrQ,KAAK0klB,GACzF,CAER,CACDC,WAAWhpkB,IACP,MAAQ0okB,eAAergmB,KACvB,OAAOqgmB,KAAe1okB,IAAWx2B,MAAMkuB,QAAQgxkB,KAAeA,GAAW/7lB,SAASqzB,GACrF,CACDipkB,WAAWjpkB,IACP,MAAQ0okB,eAAergmB,KACvBA,KAAKqgmB,WAAal/lB,MAAMkuB,QAAQgxkB,KAAeA,GAAWrklB,KAAK2b,IAAS0okB,IAAcA,GAAa,CAACA,GAAY1okB,IAAUA,EAC7H,CACDkpkB,cAAclpkB,IACV,MAAQ0okB,eAAergmB,KACnBqgmB,KAAe1okB,GACf33B,KAAKqgmB,WAAa,KAEbl/lB,MAAMkuB,QAAQgxkB,MAAd,EACLvkL,KAAUukL,GAAY1okB,GAE7B,CACDhgB,OAAO+olB,IACH,MAAQJ,gBAAgBtgmB,KACxBsgmB,OAAexkL,KAAUwkL,GAAaI,IAClCA,cAAoB90lB,GACpB80lB,GAASG,cAAc7gmB,KAE9B,EAEL4L,EAAawvL,YACT,MAAMhpH,GAAQ,IAAIxmE,EAClBwmE,UAAMpqC,QAAS,EACRoqC,EACV,EAJYgpH,GAKN,MAAM6ja,EAAqBrzlB,EAAawvL,MACxC,SAASkia,GAAep1lB,IAC3B,OAAQA,cAAiB0D,GACpB1D,IAAS,WAAYA,OAASqoB,KAAWroB,GAAMyP,UAAP,EAAkB4Y,KAAWroB,GAAM8D,OAAP,EAAeukB,KAAWroB,GAAM+I,YAC5G,CACD,SAASwvlB,GAAcD,KACnB,EAAIjwkB,KAAWiwkB,IACXA,KAGAA,GAAUvvlB,aAEjB,mDCrHM,MAAMlR,EAAS,CAClB+gmB,iBAAkB,KAClBb,sBAAuB,KACvB16lB,aAASwP,EACTgslB,uCAAuC,EACvCC,0BAA0B,EALR,kJCSf,SAASp7b,MAAiBxrJ,IAC7B,MAAMwgK,MAAYqmb,MAAa7mlB,IACzBmwT,MAAiB22R,MAAkB9mlB,KACjCA,KAAM87Y,GAAav8X,UAArB,EAA8BwnkB,KAAqB/mlB,IACzD,GAA2B,IAAvB87Y,GAAY51Z,OACZ,SAAOkF,KAAK,GAAIo1K,IAEpB,MAAMhpJ,GAAS,IAAI8yD,IAOhB,SAAS08gB,GAAkBlrM,GAAat7O,GAAWymb,GAAiBngP,KACvE,OAAQ1rJ,KACJ8rY,GAAc1mb,GAAW,KACrB,MAAQt6K,WAAW41Z,GACbp7X,GAAS,IAAI35B,MAAMb,IACzB,IAAImf,GAASnf,GACTihmB,GAAuBjhmB,GAC3B,QAASkV,GAAI,EAAGA,GAAIlV,GAAQkV,KACxB8rlB,GAAc1mb,GAAW,KACrB,MAAMjqJ,MAASnrB,KAAK0wZ,GAAY1gZ,IAAIolK,IACpC,IAAI4mb,IAAgB,EACpB7wkB,GAAOzkB,aAAUwpN,MAAyBF,GAAattN,KACnD4yB,GAAOtlB,IAAKtN,GACPs5lB,KACDA,IAAgB,EAChBD,MAECA,IACD/rY,GAAWvwN,KAAKo8lB,GAAevmkB,GAAOp5B,SAAtC,EAEL,OACQ+d,IACH+1M,GAAW1+H,UAAX,GAXR,EAcD0+H,GAjBU,EAmBlBA,GAzBU,CA2BpB,CApCiC4rY,CAAkBlrM,GAAat7O,GAAWjhJ,GAE/DmB,OAAW2mkB,MAAa9nkB,GAAMmB,IAE/BomV,MACR,OAAO32C,GAAiB34S,GAAOnsB,QAAKi8lB,KAAiBn3R,KAAmB34S,EAC3E,CA+BD,SAAS0vkB,GAAc1mb,GAAWS,GAASthB,IACnC6gB,MACA+mb,MAAgB5nc,GAAc6gB,GAAWS,IAGzCA,IAEP,wFCzDM,SAASv1J,KAAU1L,GACtB,OCHG,SAASwnlB,IACZ,SAAOC,KAAS,EACnB,CDCUD,IAAS,EAAGp8lB,KAAK4U,KAAM6mlB,MAAa7mlB,IAC9C,kDEJM,MAAMghL,EAAQ,WAAI12G,GAAY8wI,GAAeA,EAAW1+H,WAM9D,+FCJM,SAASgrgB,EAAUlnb,GAAW12I,GAAQ,GACzC,SAAOqxL,KAAQ,CAAC5kM,GAAQ6kM,MACpB7kM,GAAOzkB,aAAUwpN,KAAyBF,GAAattN,OAAUy5lB,KAAgBnsY,GAAY56C,GAAW,IAAM46C,GAAWvwN,KAAKiD,IAAQg8B,IAAQ,OAAMy9jB,KAAgBnsY,GAAY56C,GAAW,IAAM46C,GAAW1+H,WAAY5yD,IAASurJ,OAAQkya,KAAgBnsY,GAAY56C,GAAW,IAAM46C,GAAW75L,MAAM8zJ,IAAMvrJ,KAA7S,EAEP,CCNM,SAAS69jB,EAAYnnb,GAAW12I,GAAQ,GAC3C,SAAOqxL,KAAQ,CAAC5kM,GAAQ6kM,MACpBA,GAAWxpN,IAAI4uK,GAAU3I,SAAS,IAAMthJ,GAAOzkB,UAAUspN,IAAatxL,IAAtE,EAEP,yCCHM,SAAS89jB,GAAsBtxlB,GAAOkqK,IACzC,IAAKlqK,GACD,MAAM,IAAInQ,MAAM,2BAEpB,OAAO,IAAImkF,KAAY8wI,MACnBmsY,OAAgBnsY,GAAY56C,GAAW,KACnC,MAAMy7N,GAAW3lY,GAAMkjV,OAAOquQ,kBAC9BN,OAAgBnsY,GAAY56C,GAAW,KACnCy7N,GAASpxY,OAAOoD,KAAMupB,KACdA,GAAO+0H,KACP6uE,GAAW1+H,WAGX0+H,GAAWvwN,KAAK2sB,GAAO1pB,MAAvB,EALR,EAQD,GAAG,EATS,EAFJ,EActB,gFCRM,SAASirK,GAAUziK,GAAOkqK,IAC7B,GAAa,MAATlqK,GAAe,CACf,MAAIwxlB,MAAoBxxlB,IACpB,OCbL,SAASyxlB,GAAmBzxlB,GAAOkqK,IACtC,SAAOwnb,MAAU1xlB,IAAOjL,KAAKs8lB,EAAYnnb,IAAYknb,EAAUlnb,IAClE,CDWkBunb,CAAmBzxlB,GAAOkqK,IAErC,MAAI86Y,MAAYhljB,IACZ,OElBL,SAAS2xlB,GAAc3xlB,GAAOkqK,IACjC,OAAO,IAAIl2F,KAAY8wI,KACnB,IAAIhgN,GAAI,EACR,OAAOolK,GAAU3I,SAAS,WAClBz8J,KAAM9E,GAAMpQ,OACZk1N,GAAW1+H,YAGX0+H,GAAWvwN,KAAKyL,GAAM8E,OACjBggN,GAAWxtL,QACZhoC,KAAKiyK,WAGhB,EAVM,EAYd,CFGkBowb,CAAc3xlB,GAAOkqK,IAEhC,MAAI0nb,MAAU5xlB,IACV,OGnBL,SAAS6xlB,GAAgB7xlB,GAAOkqK,IACnC,SAAOwnb,MAAU1xlB,IAAOjL,KAAKs8lB,EAAYnnb,IAAYknb,EAAUlnb,IAClE,CHiBkB2nb,CAAgB7xlB,GAAOkqK,IAElC,MAAI4nb,MAAgB9xlB,IAChB,OAAOsxlB,GAAsBtxlB,GAAOkqK,IAExC,MAAI6nb,MAAW/xlB,IACX,OIxBL,SAASgylB,GAAiBhylB,GAAOkqK,IACpC,OAAO,IAAIl2F,KAAY8wI,KACnB,IAAI6gL,GACJsrN,cAAgBnsY,GAAY56C,GAAW,KACnCy7N,GAAW3lY,GAAMiylB,SAAN,EACXhB,KAAgBnsY,GAAY56C,GAAW,KACnC,IAAI1yK,GACAy+I,GACJ,MACOz+I,SAAOy+I,SAAS0vP,GAASpxY,OAK/B,CAJA,MACMwqL,IAEH,YADA+lC,GAAW75L,MAAM8zJ,GAEpB,CACG9oC,GACA6uE,GAAW1+H,WAGX0+H,GAAWvwN,KAAKiD,GAAhB,EAEL,GAAG,EAhBS,GAkBZ,OAAMqoB,MAA+D8lX,IAASusN,SAAWvsN,GAASusN,QAAT,EAEvG,CJDkBF,CAAiBhylB,GAAOkqK,IAEnC,MAAIiob,MAAqBnylB,IACrB,OK7BL,SAASoylB,GAA2BpylB,GAAOkqK,IAC9C,OAAOonb,MAAsBe,MAAmCrylB,IAAQkqK,GAC3E,CL2BkBkob,CAA2BpylB,GAAOkqK,GAEhD,CACD,QAAMoob,MAAiCtylB,GAC1C,CMjCM,SAASlL,GAAKkL,GAAOkqK,IACxB,OAAOA,GAAYzH,GAAUziK,GAAOkqK,KAAR,EAAqBwnb,MAAU1xlB,GAC9D,mHCED,MAAMuylB,GAA0B,CAAC,cAAe,kBAC1CC,GAAqB,CAAC,mBAAoB,uBAC1CC,GAAgB,CAAC,KAAM,OACtB,SAASxmlB,GAAUE,GAAQiZ,GAAW9vB,GAASukU,IAKlD,MAJIh6S,KAAWvqB,MACXukU,GAAiBvkU,GACjBA,QAAU+O,GAEVw1T,GACA,OAAO5tT,GAAUE,GAAQiZ,GAAW9vB,IAASP,QAAKi8lB,KAAiBn3R,KAEvE,MAAOv+T,GAAK2L,IA+BhB,SAASyrlB,GAAcvmlB,IACnB,SAAO0T,KAAW1T,GAAOmZ,oBAAR,EAA6BzF,KAAW1T,GAAOka,oBACnE,CAjCyBqskB,CAAcvmlB,IAC9BqmlB,GAAmB7hmB,IAAK8qJ,IAAgBpnE,IAAYloE,GAAOsvI,IAAYr2H,GAAWivD,GAAS/+E,KAwBrG,SAASq9lB,GAAwBxmlB,IAC7B,SAAO0T,KAAW1T,GAAOymlB,eAAR,EAAwB/ykB,KAAW1T,GAAOugc,eAC9D,CAxBWimJ,CAAwBxmlB,IAClBomlB,GAAwB5hmB,IAAIkimB,GAAwB1mlB,GAAQiZ,KAwB9E,SAAS0tkB,GAA0B3mlB,IAC/B,SAAO0T,KAAW1T,GAAO+4H,MAAR,EAAerlH,KAAW1T,GAAOs5H,IACrD,CAzBiBqtd,CAA0B3mlB,IACtBsmlB,GAAc9hmB,IAAIkimB,GAAwB1mlB,GAAQiZ,KAClD,GAClB,IAAK9pB,OACG0pjB,KAAY74iB,IACZ,SAAOnX,KAAU+9lB,IAAc9mlB,GAAU8mlB,GAAW3tkB,GAAW9vB,IAA/D,EAAe,EAA0Do8lB,MAAUvllB,KAG3F,IAAK7Q,GACD,MAAM,IAAIguU,UAAU,wBAExB,OAAO,IAAIt1P,IAAY8wI,KACnB,MAAMzwI,GAAU,IAAI3qE,KAASo7M,GAAWvwN,KAAK,EAAImV,GAAK9Z,OAAS8Z,GAAOA,GAAK,IAC3EpO,UAAI+4E,IACG,IAAMptE,GAAOotE,GAAD,EAE1B,CACD,SAASw+gB,GAAwB1mlB,GAAQiZ,IACrC,OAAQq2H,IAAgBpnE,IAAYloE,GAAOsvI,IAAYr2H,GAAWivD,GACrE,CASA,mLCtCM,SAASq9gB,GAAU1xlB,IACtB,GAAIA,cAAiBg0E,IACjB,OAAOh0E,GAEX,GAAa,MAATA,GAAe,CACf,MAAIwxlB,KAAoBxxlB,IACpB,OAoBL,SAASgzlB,GAAsB3wkB,IAClC,OAAO,IAAI2xD,IAAY8wI,KACnB,MAAMq/L,GAAM9hY,GAAI8qkB,QAChB,MAAIttkB,MAAWskY,GAAI3oZ,WACf,OAAO2oZ,GAAI3oZ,UAAUspN,IAEzB,MAAM,IAAIwkH,UAAU,iEAAd,EAEb,CA5BkB0pR,CAAsBhzlB,IAEjC,MAAIgljB,KAAYhljB,IACZ,OA0BL,SAASizlB,GAAc1wkB,IAC1B,OAAO,IAAIyxD,IAAY8wI,KACnB,QAAShgN,GAAI,EAAGA,GAAIyd,GAAM3yB,SAAWk1N,GAAWxtL,OAAQxyB,KACpDggN,GAAWvwN,KAAKguB,GAAMzd,KAE1BggN,GAAW1+H,UAAX,EAEP,CAjCkB6sgB,CAAcjzlB,IAEzB,MAAI4xlB,KAAU5xlB,IACV,OA+BL,SAASkzlB,GAAY9rgB,IACxB,OAAO,IAAIpT,IAAY8wI,KACnB19H,GACKzvF,KAAMH,KACFstN,GAAWxtL,SACZwtL,GAAWvwN,KAAKiD,IAChBstN,GAAW1+H,WAAX,EAEJ24F,IAAQ+lC,GAAW75L,MAAM8zJ,KACxBpnL,KAAK,KAAM23lB,KAPhB,EASP,CA1CkB4D,CAAYlzlB,IAEvB,MAAI8xlB,KAAgB9xlB,IAChB,OAAOmzlB,GAAkBnzlB,IAE7B,MAAI+xlB,MAAW/xlB,IACX,OAqCL,SAASozlB,GAAaroC,IACzB,OAAO,IAAI/2e,IAAY8wI,KACnB,UAAWttN,MAASuzjB,GAEhB,GADAjmW,GAAWvwN,KAAKiD,IACZstN,GAAWxtL,OACX,OAGRwtL,GAAW1+H,UAAX,EAEP,CA/CkBgtgB,CAAapzlB,IAExB,MAAImylB,MAAqBnylB,IACrB,OAkDL,SAASqzlB,GAAuBC,IACnC,OAAOH,MAAkBd,MAAmCiB,IAC/D,CApDkBD,CAAuBrzlB,GAErC,CACD,QAAMsylB,MAAiCtylB,GAC1C,CAyCM,SAASmzlB,GAAkBI,IAC9B,OAAO,IAAIv/gB,IAAY8wI,MAO3B,SAASr7M,GAAQ8plB,GAAezuY,IAC5B,IAAI0uY,GAAiBC,GACjBC,GAAK78U,GACT,SAAO88U,MAAUrkmB,UAAM,OAAQ,EAAQ,YACnC,IACI,IAAKkkmB,MAAkBI,MAAcL,MAAgBE,SAA0BD,GAAgBj/lB,QAA2B0hJ,MAAO,CAC7H,MAAMz+I,GAAQi8lB,GAAkBj8lB,MAEhC,GADAstN,GAAWvwN,KAAKiD,IACZstN,GAAWxtL,OACX,MAEP,CAQJ,CAPA,MACMu8jB,IAASH,GAAM,CAAEzokB,MAAO4okB,GAAU,SAErC,IACQJ,KAAsBA,GAAkBx9c,OAAS4gI,GAAK28U,GAAgBtB,gBAAer7U,GAAGjmR,KAAK4imB,IAEhE,CADpC,QACS,GAAIE,GAAK,MAAMA,GAAIzokB,KAAQ,CACxC,CACD65L,GAAW1+H,UACd,EACJ,EA5BO38E,CAAQ8plB,GAAezuY,IAAYgvY,MAAO/0a,IAAQ+lC,GAAW75L,MAAM8zJ,IAAnE,EAEP,CA0BA,0EC1GM,SAAS5hI,EAASqlhB,EAAS,EAAGt4Z,EAAY6pb,KAC7C,OAAIvxB,EAAS,IACTA,EAAS,MAENwxB,KAAMxxB,EAAQA,EAAQt4Z,EAChC,uGCFM,SAAS39J,KAAS7C,IACrB,MAAMwgK,MAAYqmb,MAAa7mlB,IACzBs6f,MAAaiwF,MAAUvqlB,GAAMm8V,KAC7Bx8B,GAAU3/T,GAChB,OAAQ2/T,GAAQz5U,OAGS,IAAnBy5U,GAAQz5U,QAAW,EAEb8hmB,MAAUroR,GAAQ,KAAT,EAET8nR,KAASntF,GAFA,EAED,EAAalvgB,KAAKu0U,GAASn/J,KALvCwgB,GAMX,0ECfM,SAASV,KAAMtgL,GAClB,MAAMwgK,KAAYqmb,MAAa7mlB,GAC/B,SAAO5U,KAAK4U,EAAMwgK,EACrB,0ECHM,SAASgqb,EAAWC,EAAqBjqb,GAC5C,MAAMkqb,KAAev0kB,KAAWs0kB,GAAuBA,EAAsB,IAAMA,EAC7Etmc,GAAQi3D,IAAeA,GAAW75L,MAAMmpkB,KAC9C,OAAO,IAAIpghB,IAAWk2F,EAAa46C,IAAe56C,EAAU3I,SAAS1T,GAAM,EAAGi3D,IAAcj3D,GAC/F,oFCFM,SAASmmc,EAAMK,EAAU,EAAGC,GAAqBpqb,GAAY6pb,KAChE,IAAIQ,IAAmB,EACvB,OAA2B,MAAvBD,MAAuB,EACnBE,KAAYF,IACZpqb,GAAYoqb,GAGZC,GAAmBD,IAGpB,IAAItghB,IAAY8wI,KACnB,IAAI2vY,GCfL,SAASC,EAAYl9lB,GACxB,OAAOA,aAAiB5F,OAAS6tB,MAAMjoB,EAC1C,CDaiBk9lB,CAAYL,IAAYA,EAAUnqb,GAAUplJ,MAAQuvkB,EAC1DI,GAAM,IACNA,GAAM,GAEV,IAAIrqY,GAAI,EACR,OAAOlgD,GAAU3I,SAAS,WACjBujD,GAAWxtL,SACZwtL,GAAWvwN,KAAK61N,MACZ,GAAKmqY,GACLjlmB,KAAKiyK,cAASl9J,EAAWkwlB,IAGzBzvY,GAAW1+H,WAGtB,EAAEqugB,GAVI,EAYd,2EEhCD,MAAQ91kB,WAAYluB,uCCMb,SAASo+T,MAAOnlT,IACnB,MAAMmwT,MAAiB22R,OAAkB9mlB,IACnC2/T,GDPH,SAASsrR,EAAejrlB,IAC3B,OAAuB,IAAhBA,GAAK9Z,QAAgB+uB,EAAQjV,GAAK,IAAMA,GAAK,GAAKA,EAC5D,CCKmBirlB,CAAejrlB,IAC/B,OAAO2/T,GAAQz5U,OACT,IAAIokF,IAAY8wI,KACd,IAAIomN,GAAU7hG,GAAQ14U,IAAI,IAAM,IAC5BikmB,GAAYvrR,GAAQ14U,IAAI,KAAM,GAClCm0N,GAAWxpN,IAAI,KACX4va,GAAU0pL,GAAY,OAE1B,QAASC,GAAc,GAAI/vY,GAAWxtL,QAAUu9jB,GAAcxrR,GAAQz5U,OAAQilmB,MAC1EnD,QAAUroR,GAAQwrR,KAAcr5lB,aAAUwpN,KAAyBF,GAAattN,KAE5E,GADA0za,GAAQ2pL,IAAavplB,KAAK9T,IACtB0za,GAAQp7P,MAAO5/K,IAAWA,GAAON,QAAS,CAC1C,MAAMsxB,GAASgqZ,GAAQv6a,IAAKT,IAAWA,GAAOglD,SAC9C4vK,GAAWvwN,KAAKslU,GAAiBA,MAAkB34S,IAAUA,IACzDgqZ,GAAQpgW,KAAK,CAAC56E,GAAQ4U,MAAO5U,GAAON,QAAUglmB,GAAU9vlB,MACxDggN,GAAW1+H,UAElB,GACF,KACCwugB,GAAUC,KAAe,GACxB3pL,GAAQ2pL,IAAajlmB,QAAUk1N,GAAW1+H,UAAX,IAGxC,MAAO,KACH8kV,GAAU0pL,GAAY,KACzB,GAEHlqa,GACT,iECnCM,SAASs6B,EAAyBhlM,EAAa80kB,EAAQvvM,EAAYz/T,GAASivgB,IAC/E,OAAO,IAAIC,EAAmBh1kB,EAAa80kB,EAAQvvM,EAAYz/T,GAASivgB,GAC3E,CACM,MAAMC,UAA2BtI,KACpCt9lB,YAAY4wB,EAAa80kB,EAAQvvM,GAAYz/T,GAASivgB,GAAYE,IAC9D1nlB,MAAMyS,GACN1wB,KAAKylmB,WAAaA,GAClBzlmB,KAAK2lmB,kBAAoBA,GACzB3lmB,KAAKu/lB,MAAQiG,EACP,SAAUt9lB,IACR,IACIs9lB,EAAOt9lB,GAIV,CAHA,MACMunL,IACH/+J,EAAYiL,MAAM8zJ,GACrB,CACJ,EACCxxK,MAAMshlB,MACZv/lB,KAAKy/lB,OAASjpgB,GACR,SAAUi5F,IACR,IACIj5F,GAAQi5F,GAOX,CANA,MACMA,IACH/+J,EAAYiL,MAAM8zJ,GACrB,SAEGzvL,KAAKiR,aACR,CACJ,EACCgN,MAAMwhlB,OACZz/lB,KAAK0/lB,UAAYzpM,GACX,WACE,IACIA,IAOH,CANA,MACMxmO,IACH/+J,EAAYiL,MAAM8zJ,GACrB,SAEGzvL,KAAKiR,aACR,CACJ,EACCgN,MAAMyhlB,SACf,CACDzulB,cACI,IAAIs2Q,EACJ,IAAKvnR,KAAK2lmB,mBAAqB3lmB,KAAK2lmB,oBAAqB,CACrD,MAAQ39jB,UAAWhoC,KACnBie,MAAMhN,eACL+2B,IAAsC,QAA1Bu/O,EAAKvnR,KAAKylmB,kBAA+B,IAAPl+U,GAAyBA,EAAGjmR,KAAKtB,MACnF,CACJ,EAjD8C,6GCD5C,SAAS25J,GAAU/uI,GAAUgwJ,GAAY6pb,KAC5C,OCDG,SAASmB,EAAMC,IAClB,SAAOtwY,KAAQ,CAAC5kM,GAAQ6kM,MACpB,IAAIlqJ,IAAW,EACXw6hB,GAAY,KACZC,GAAqB,KACrBC,IAAa,EACjB,MAAMC,GAAc,KAGhB,GAFwEF,IAAmB90lB,cAC3F80lB,GAAqB,KACjBz6hB,GAAU,CACVA,IAAW,EACX,MAAMpjE,GAAQ49lB,GACdA,GAAY,KACZtwY,GAAWvwN,KAAKiD,GACnB,CACD89lB,IAAcxwY,GAAW1+H,UAAX,EAEZovgB,GAAkB,KACpBH,GAAqB,KACrBC,IAAcxwY,GAAW1+H,UAAX,EAElBnmE,GAAOzkB,aAAUwpN,KAAyBF,GAAattN,KACnDojE,IAAW,EACXw6hB,GAAY59lB,GACP69lB,OACD3D,MAAUyD,GAAiB39lB,KAAQgE,UAAW65lB,MAAqBrwY,KAAyBF,GAAYywY,GAAaC,IAArH,EAEL,KACCF,IAAa,IACX16hB,KAAay6hB,IAAsBA,GAAmB/9jB,SAAWwtL,GAAW1+H,UAAX,GARvE,EAWP,CD/BU8ugB,CAAM,OAAMlB,KAAM95kB,GAAUgwJ,IACtC,qFEFM,SAASooD,EAAWr6N,GACvB,SAAO4sN,KAAQ,CAAC5kM,EAAQ6kM,MACpB,IAEI2wY,GAFAC,GAAW,KACXC,IAAY,EAEhBD,GAAWz1kB,EAAOzkB,aAAUwpN,KAAyBF,QAAYzgN,OAAWA,EAAY06K,KACpF02a,MAAgB/D,MAAUz5lB,EAAS8mL,GAAKuzC,EAAWr6N,EAAXq6N,CAAqBryM,KACzDy1kB,IACAA,GAASn1lB,cACTm1lB,GAAW,KACXD,GAAcj6lB,UAAUspN,KAGxB6wY,IAAY,KAGhBA,KACAD,GAASn1lB,cACTm1lB,GAAW,KACXD,GAAcj6lB,UAAUspN,IAAxB,EAGX,2ECvBM,SAAS+3B,EAAU+4W,EAAS/7R,GAC/B,SAAOh6S,KAAWg6S,IAAD,EAAmB7kU,KAAS4gmB,EAAS/7R,EAAgB,IAA1B,EAA+B7kU,KAAS4gmB,EAAS,EAChG,qFCDM,SAAS1vZ,EAAamuZ,EAASnqb,EAAY6pb,KAC9C,SAAOlvY,KAAQ,CAAC5kM,GAAQ6kM,MACpB,IAAI+wY,GAAa,KACbT,GAAY,KACZU,GAAW,KACf,MAAMp2lB,GAAO,KACT,GAAIm2lB,GAAY,CACZA,GAAWt1lB,cACXs1lB,GAAa,KACb,MAAMr+lB,GAAQ49lB,GACdA,GAAY,KACZtwY,GAAWvwN,KAAKiD,GACnB,GAEL,SAASu+lB,KACL,MAAMC,GAAaF,GAAWzB,EACxBvvkB,GAAMolJ,EAAUplJ,MACtB,GAAIA,GAAMkxkB,GAGN,OAFAH,GAAavmmB,KAAKiyK,cAASl9J,EAAW2xlB,GAAalxkB,SACnDggM,GAAWxpN,IAAIu6lB,IAGnBn2lB,IACH,CACDugB,GAAOzkB,aAAUwpN,KAAyBF,GAAattN,KACnD49lB,GAAY59lB,GACZs+lB,GAAW5rb,EAAUplJ,MAChB+wkB,KACDA,GAAa3rb,EAAU3I,SAASw0b,GAAc1B,GAC9CvvY,GAAWxpN,IAAIu6lB,IAAf,EAEL,KACCn2lB,KACAolN,GAAW1+H,UAAX,OACD/hF,EAAW,KACV+wlB,GAAYS,GAAa,OAX7B,EAcP,4ICpCM,SAASI,GAAUC,GAAuBC,IAC7C,OAAIA,GACQl2kB,OAAW7K,KAAO+glB,GAAkBphmB,QAAKilB,KAAK,GCJvD,SAASo8kB,KACZ,SAAOvxY,KAAQ,CAAC5kM,GAAQ6kM,MACpB7kM,GAAOzkB,aAAUwpN,KAAyBF,GAAYh/E,KAAtD,EAEP,CDAiEswd,IAAmBn2kB,GAAOlrB,KAAKkhmB,GAAUC,OAA1E,EAEtBlhmB,MAAS,CAACwC,GAAOsE,KAAUo6lB,GAAsB1+lB,GAAOsE,IAAO/G,QAAKilB,KAAK,IAAD,EAAKq8kB,MAAM7+lB,KAC7F,gBEPM,SAASg8B,GAAMihkB,GAAKvqb,GAAY6pb,KACnC,MAAM75kB,MAAW85kB,MAAMS,GAAKvqb,IAC5B,OAAO+rb,GAAU,IAAM/7kB,GAC1B,0ECJM,SAAStV,EAAO+kB,EAAWg7L,GAC9B,SAAOE,KAAQ,CAAC5kM,EAAQ6kM,MACpB,IAAIhpN,GAAQ,EACZmkB,EAAOzkB,aAAUwpN,KAAyBF,GAAattN,IAAUmyB,EAAU/4B,KAAK+zN,EAASntN,GAAOsE,OAAYgpN,GAAWvwN,KAAKiD,KAA5H,EAEP,iECNM,SAASu7N,EAAShxN,GACrB,SAAO8iN,KAAQ,CAAC5kM,EAAQ6kM,KACpB,IACI7kM,EAAOzkB,UAAUspN,EAIpB,CAHA,QAEGA,EAAWxpN,IAAIyG,EAClB,GAER,0ECRM,SAASpR,EAAIilmB,EAASjxY,GACzB,SAAOE,KAAQ,CAAC5kM,EAAQ6kM,MACpB,IAAIhpN,GAAQ,EACZmkB,EAAOzkB,aAAUwpN,KAAyBF,GAAattN,KACnDstN,GAAWvwN,KAAKqhmB,EAAQhlmB,KAAK+zN,EAASntN,GAAOsE,MAA7C,GADJ,EAIP,8DCRM,SAASu6lB,EAAM7+lB,GAClB,SAAO7G,KAAI,IAAM6G,EACpB,2ECDM,SAAS25lB,EAASntF,EAAan+J,KAClC,SAAO7wW,KAASw7W,IAAUwzJ,EAC7B,wHCCM,SAAShvgB,GAAS4gmB,GAAS/7R,GAAgBmqM,GAAan+J,KAC3D,SAAIhmV,MAAWg6S,IACJ7kU,GAAS,CAACy3B,GAAG3nB,QAAMnU,KAAI,CAAC02B,GAAG4pjB,KAAOp3Q,GAAeptS,GAAGpF,GAAGviB,GAAGmskB,IAA7CnskB,EAAS,EAAyC4slB,MAAUkE,GAAQnpkB,GAAG3nB,MAAMk/f,KAElE,iBAAnBnqM,KACZmqM,GAAanqM,OAEVh1G,KAAQ,CAAC5kM,GAAQ6kM,KCTrB,SAASwxY,EAAer2kB,GAAQ6kM,GAAY8wY,GAAS5xF,GAAYuyF,GAAcrokB,GAAQsokB,GAAmBC,IAC7G,MAAMvmmB,GAAS,GACf,IAAI6e,GAAS,EACTjT,GAAQ,EACRw5lB,IAAa,EACjB,MAAMoB,GAAgB,KACdpB,KAAeplmB,GAAON,SAAWmf,IACjC+1M,GAAW1+H,UAAX,EAGFuwgB,GAAan/lB,IAAWuX,GAASi1f,GAAa4yF,GAAWp/lB,IAAStH,GAAOob,KAAK9T,IAC9Eo/lB,GAAcp/lB,KAChB02B,IAAU42L,GAAWvwN,KAAKiD,IAC1BuX,KACA,IAAI8nlB,IAAgB,GACpBnF,QAAUkE,GAAQp+lB,GAAOsE,OAAUN,aAAUwpN,KAAyBF,GAAagyY,KACnBP,KAAaO,IACrE5okB,GACAyokB,GAAUG,IAGVhyY,GAAWvwN,KAAKuimB,GAAhB,EAEL,KACCD,IAAgB,QACjBxylB,EAAW,KACV,GAAIwylB,GACA,IAEI,IADA9nlB,KACO7e,GAAON,QAAUmf,GAASi1f,IAAY,CACzC,MAAM+yF,GAAgB7mmB,GAAOglD,QACzBshjB,MACAvF,KAAgBnsY,GAAY0xY,GAAmB,IAAMI,GAAWG,KAGhEH,GAAWG,GAElB,CACDL,IAIH,CAHA,MACM33a,IACH+lC,GAAW75L,MAAM8zJ,GACpB,IA3BT,EA+BJ9+J,UAAOzkB,aAAUwpN,KAAyBF,GAAY6xY,GAAW,KAC7DrB,IAAa,EACboB,IAAa,IAEV,KACuED,MAAmB,CAEpG,CD5C0CH,CAAer2kB,GAAQ6kM,GAAY8wY,GAAS5xF,KACtF,2EEZM,SAASgzF,EAAc/kD,EAAaglD,EAAMC,GAASC,GAAYC,IAClE,MAAO,CAACn3kB,GAAQ6kM,MACZ,IAAIuyY,GAAWH,GACXpukB,GAAQmukB,EACRn7lB,GAAQ,EACZmkB,GAAOzkB,aAAUwpN,KAAyBF,GAAattN,KACnD,MAAMsN,GAAIhJ,KACVgtB,GAAQuukB,GAEAplD,EAAYnphB,GAAOtxB,GAAOsN,KAExBuylB,IAAW,EAAO7/lB,IAC5B2/lB,IAAcryY,GAAWvwN,KAAKu0B,GAAhB,EACfsukB,UAEKC,IAAYvyY,GAAWvwN,KAAKu0B,IAC5Bg8L,GAAW1+H,UACd,IAZL,CAcP,CClBM,SAAS8jG,EAAK+nX,EAAaglD,GAC9B,SAAOpyY,KAAQmyY,EAAc/kD,EAAaglD,EAAMx2kB,UAAU7wB,QAAU,GAAG,GAC1E,8FCAM,SAASosN,EAAM1mN,GAAU,IAC5B,MAAQgimB,aAAY,KAAM,IAAI39lB,KAAW49lB,iBAAe,EAAMC,oBAAkB,EAAMC,wBAAsB,GAASnimB,GACrH,OAAQoimB,KACJ,IAAIC,GACAC,GACAtxa,GACAuxa,GAAW,EACXC,IAAe,EACfC,IAAa,EACjB,MAAMC,GAAc,KACkDJ,IAAgBr3lB,cAClFq3lB,QAAkBvzlB,GAEhBgzD,GAAQ,KACV2giB,KACAL,GAAarxa,QAAUjiL,EACvByzlB,GAAeC,IAAa,GAE1BE,GAAsB,KACxB,MAAMl+U,GAAO49U,GACbtgiB,KAC4C0iN,IAAKx5Q,aAAL,EAEhD,SAAOskN,KAAQ,CAAC5kM,GAAQ6kM,MACpB+yY,MACKE,KAAeD,IAChBE,KAEJ,MAAMn7d,GAAQypD,GAAUA,IAAmDgxa,KAC3ExyY,GAAWxpN,IAAI,KACXu8lB,KACiB,IAAbA,KAAmBE,KAAeD,KAClCF,GAAkBM,EAAYD,GAAqBR,IAAtB,GAGrC56d,GAAKrhI,UAAUspN,KACV6yY,IACDE,GAAW,IACXF,GAAa,IAAI9K,KAAe,CAC5Bt4lB,KAAOiD,IAAUqlI,GAAKtoI,KAAKiD,IAC3ByzB,MAAQ8zJ,KACJg5a,IAAa,EACbC,KACAJ,GAAkBM,EAAY7giB,GAAOkgiB,GAAcx4a,IACnDliD,GAAK5xG,MAAM8zJ,GAAX,EAEJ34F,SAAU,KACN0xgB,IAAe,EACfE,KACAJ,GAAkBM,EAAY7giB,GAAOmgiB,IACrC36d,GAAKz2C,UAAL,KAZK,EAebsrgB,MAAUzxkB,IAAQzkB,UAAUm8lB,IAA5B,EA9BR,CAgCGD,GAhCI,CAkCd,CACD,SAASQ,EAAY7giB,GAAO6tE,MAAOx7H,IAC/B,IAAW,IAAPw7H,GAEA,YADA7tE,KAGJ,IAAW,IAAP6tE,GACA,OAEJ,MAAMizd,GAAe,IAAItL,KAAe,CACpCt4lB,KAAM,KACF4jmB,GAAa53lB,cACb82D,IAAK,IAGb,OAAO6tE,MAAMx7H,IAAMlO,UAAU28lB,GAChC,gEC5EM,SAAS70jB,EAAKQ,GACjB,SAAOl/B,KAAO,CAAC6pK,EAAG3yK,IAAUgoC,GAAShoC,EACxC,oFCAM,SAASy3b,KAAanpa,GACzB,MAAM8/I,KAAYqmb,MAAanmkB,GAC/B,SAAOy6L,KAAQ,CAAC5kM,GAAQ6kM,OACnB56C,KAAY90J,KAAOgV,EAAQnK,GAAQiqJ,IAAjB,EAA8B90J,KAAOgV,EAAQnK,KAASzkB,UAAUspN,GAAnF,EAEP,qFCLM,SAASpH,EAAUk4Y,EAAS/7R,GAC/B,SAAOh1G,KAAQ,CAAC5kM,GAAQ6kM,MACpB,IAAIszY,GAAkB,KAClBt8lB,GAAQ,EACRw5lB,IAAa,EACjB,MAAMoB,GAAgB,IAAMpB,KAAe8C,IAAmBtzY,GAAW1+H,WACzEnmE,GAAOzkB,aAAUwpN,KAAyBF,GAAattN,KACe4gmB,IAAgB73lB,cAClF,IAAI83lB,GAAa,EACjB,MAAMC,GAAax8lB,MACnB41lB,QAAUkE,EAAQp+lB,GAAO8gmB,KAAa98lB,UAAW48lB,MAAkBpzY,KAAyBF,GAAagyY,IAAehyY,GAAWvwN,KAAKslU,EAAiBA,EAAeriU,GAAOs/lB,GAAYwB,GAAYD,MAAgBvB,IAAa,KAChOsB,GAAkB,KAClB1B,IAAa,GAFjB,EAID,KACCpB,IAAa,EACboB,IAAa,GAVjB,EAaP,oFCnBM,SAAS18kB,EAAK8pB,GACjB,OAAOA,GAAS,EAER,IAAM4mJ,OACRm6B,KAAQ,CAAC5kM,EAAQ6kM,MACf,IAAI8vC,GAAO,EACX30O,EAAOzkB,aAAUwpN,KAAyBF,GAAattN,OAC7Co9P,IAAQ9wN,IACVghL,GAAWvwN,KAAKiD,IACZssC,GAAS8wN,IACT9vC,GAAW1+H,WAAX,GAJZ,EASX,+FCdM,SAAS02H,EAAUy7Y,GACtB,SAAO1zY,KAAQ,CAAC5kM,GAAQ6kM,OACpB4sY,QAAU6G,GAAU/8lB,aAAUwpN,KAAyBF,GAAY,IAAMA,GAAW1+H,WAAY0/C,OAC/Fg/E,GAAWxtL,QAAUrX,GAAOzkB,UAAUspN,GAAjB,EAE7B,2ECPM,SAAS36B,EAAUxgK,EAAWmnO,GAAY,GAC7C,SAAOjsC,KAAQ,CAAC5kM,EAAQ6kM,MACpB,IAAIhpN,GAAQ,EACZmkB,EAAOzkB,aAAUwpN,KAAyBF,GAAattN,KACnD,MAAM0pB,GAASyI,EAAUnyB,GAAOsE,OAC/BolB,IAAU4vO,IAAchsC,GAAWvwN,KAAKiD,KACxC0pB,IAAU4jM,GAAW1+H,UAAX,GAHf,EAMP,+FCPM,SAASuJ,EAAI68f,EAAgBvhkB,GAAOm7D,IACvC,MAAMoygB,MAAc34kB,KAAW2skB,IAAmBvhkB,IAASm7D,GAEnD,CAAE7xF,KAAMi4lB,EAAgBvhkB,SAAOm7D,aACjComgB,EACN,OAAOgM,MACD3zY,KAAQ,CAAC5kM,GAAQ6kM,MACf,IAAI+xD,GAC6B,QAAhCA,GAAK2hV,GAAYh9lB,iBAA8B,IAAPq7Q,IAAyBA,GAAGjmR,KAAK4nmB,IAC1E,IAAIC,IAAU,EACdx4kB,GAAOzkB,aAAUwpN,KAAyBF,GAAattN,KACnD,IAAIq/Q,GACwB,QAA3BA,GAAK2hV,GAAYjkmB,YAAyB,IAAPsiR,IAAyBA,GAAGjmR,KAAK4nmB,GAAahhmB,IAClFstN,GAAWvwN,KAAKiD,GAAhB,EACD,KACC,IAAIq/Q,GACJ4hV,IAAU,EACsB,QAA/B5hV,GAAK2hV,GAAYpygB,gBAA6B,IAAPywL,IAAyBA,GAAGjmR,KAAK4nmB,IACzE1zY,GAAW1+H,UAAX,EACA24F,KACA,IAAI83F,GACJ4hV,IAAU,EACmB,QAA5B5hV,GAAK2hV,GAAYvtkB,aAA0B,IAAP4rP,IAAyBA,GAAGjmR,KAAK4nmB,GAAaz5a,IACnF+lC,GAAW75L,MAAM8zJ,GAAjB,EACD,KACC,IAAI83F,GAAIguC,GACJ4zS,KACmC,QAAlC5hV,GAAK2hV,GAAYj4lB,mBAAgC,IAAPs2Q,IAAyBA,GAAGjmR,KAAK4nmB,KAEhD,QAA/B3zS,GAAK2zS,GAAYzlY,gBAA6B,IAAP8xF,IAAyBA,GAAGj0T,KAAK4nmB,GAAR,GAnBrE,GAuBAhoP,GACX,gGCnCM,MAAMkoP,EAAwB,CACjC/lC,SAAS,EACT1H,UAAU,kBCFP,SAASloZ,GAAa7oJ,GAAUgwJ,GAAY6pb,IAAgB1kmB,GAASqpmB,GACxE,MAAMC,MAAY3E,MAAM95kB,GAAUgwJ,IAClC,ODEG,SAAS/oF,EAASg0gB,GAAkB9lmB,GAASqpmB,GAChD,SAAO7zY,KAAQ,CAAC5kM,GAAQ6kM,MACpB,MAAQ6tW,WAAS1H,aAAa57jB,GAC9B,IAAIurE,IAAW,EACXg+hB,GAAY,KACZt3gB,GAAY,KACZg0gB,IAAa,EACjB,MAAMuD,GAAgB,KACoCv3gB,IAAU/gF,cAChE+gF,GAAY,KACR2pe,KACAhnO,KACAqxQ,IAAcxwY,GAAW1+H,WAAX,EAGhB0ygB,GAAoB,KACtBx3gB,GAAY,KACZg0gB,IAAcxwY,GAAW1+H,UAAX,EAEZ2ygB,GAAiBvhmB,IAAW8pF,MAAYowgB,MAAUyD,GAAiB39lB,KAAQgE,aAAUwpN,KAAyBF,GAAY+zY,GAAeC,KACzI70Q,GAAO,KACT,GAAIrpR,GAAU,CACVA,IAAW,EACX,MAAMpjE,GAAQohmB,GACdA,GAAY,KACZ9zY,GAAWvwN,KAAKiD,KACf89lB,IAAcyD,GAAcvhmB,GAChC,GAELyoB,GAAOzkB,aAAUwpN,KAAyBF,GAAattN,KACnDojE,IAAW,EACXg+hB,GAAYphmB,KACV8pF,IAAcA,GAAUhqD,UAAYq7hB,GAAU1uO,KAAS80Q,GAAcvhmB,IAAD,EACvE,KACC89lB,IAAa,KACXrqC,IAAYrwf,IAAY0mB,KAAcA,GAAUhqD,SAAWwtL,GAAW1+H,UAAX,GANjE,EASP,CCxCUjF,CAAS,IAAMw3gB,GAAWtpmB,GACpC,iECLM,MAAM48K,UAAe/wK,KACxB9L,YAAY86K,GAAWC,IACnB58J,OACH,CACDg0J,SAASz4I,GAAO0K,GAAQ,GACpB,OAAOlkC,IACV,ECPE,MAAM0pmB,EAAmB,CAC5B33X,YAAYhtJ,EAAS+M,MAAY13E,IAC7B,MAAQogK,aAAakvb,EACrB,OAAwDlvb,IAASu3D,YACtDv3D,GAASu3D,YAAYhtJ,EAAS+M,MAAY13E,IAE9C23N,YAAYhtJ,EAAS+M,MAAY13E,GAC3C,EACDygG,cAAcx1G,GACV,MAAQm1K,aAAakvb,EACrB,OAA6Dlvb,IAAS3/D,eAAkBA,eAAex1G,EAC1G,EACDm1K,cAAUzlK,iBCTP,MAAM4lK,UAAoBgC,EAC7B78K,YAAY86K,GAAWC,IACnB58J,MAAM28J,GAAWC,IACjB76K,KAAK46K,UAAYA,GACjB56K,KAAK66K,KAAOA,GACZ76K,KAAK6rQ,SAAU,CAClB,CACD55F,SAASz4I,GAAO0K,GAAQ,GACpB,GAAIlkC,KAAKgoC,OACL,OAAOhoC,KAEXA,KAAKw5B,MAAQA,GACb,MAAMtR,GAAKloB,KAAKkoB,GACV0yJ,GAAY56K,KAAK46K,UACvB,OAAU,MAAN1yJ,KACAloB,KAAKkoB,GAAKloB,KAAKi7K,eAAeL,GAAW1yJ,GAAIgc,KAEjDlkC,KAAK6rQ,SAAU,EACf7rQ,KAAKkkC,MAAQA,GACblkC,KAAKkoB,GAAKloB,KAAKkoB,IAAMloB,KAAK86K,eAAeF,GAAW56K,KAAKkoB,GAAIgc,IACtDlkC,IACV,CACD86K,eAAeF,GAAW+ub,GAAKzlkB,GAAQ,GACnC,OAAOwlkB,cAA6B9ub,GAAUxH,MAAMlmK,KAAK0tK,GAAW56K,MAAOkkC,GAC9E,CACD+2I,eAAe2ub,GAAY1hlB,GAAIgc,GAAQ,GACnC,GAAa,MAATA,IAAiBlkC,KAAKkkC,QAAUA,KAA0B,IAAjBlkC,KAAK6rQ,QAC9C,OAAO3jP,GAEXwhlB,gBAA+BxhlB,GAElC,CACDmzJ,QAAQ7hJ,GAAO0K,IACX,GAAIlkC,KAAKgoC,OACL,OAAO,IAAIznC,MAAM,gCAErBP,KAAK6rQ,SAAU,EACf,MAAMlwO,GAAQ37B,KAAK6pmB,SAASrwkB,GAAO0K,IACnC,GAAIvI,GACA,OAAOA,IAEe,IAAjB37B,KAAK6rQ,SAAgC,MAAX7rQ,KAAKkoB,KACpCloB,KAAKkoB,GAAKloB,KAAKi7K,eAAej7K,KAAK46K,UAAW56K,KAAKkoB,GAAI,MAE9D,CACD2hlB,SAASrwkB,GAAOswkB,IACZ,IACI70iB,GADA80iB,IAAU,EAEd,IACI/pmB,KAAK66K,KAAKrhJ,GAKb,CAJA,MACM/U,IACHsllB,IAAU,EACV90iB,GAAaxwC,IAAQ,IAAIlkB,MAAM,qCAClC,CACD,GAAIwpmB,GACA,YAAK94lB,cACEgkD,EAEd,CACDhkD,cACI,IAAKjR,KAAKgoC,OAAQ,CACd,MAAQ9f,MAAI0yJ,cAAc56K,MAClB+6K,YAAYH,GACpB56K,KAAK66K,KAAO76K,KAAKw5B,MAAQx5B,KAAK46K,UAAY,KAC1C56K,KAAK6rQ,SAAU,KACfiwK,KAAU/gQ,GAAS/6K,MACT,MAANkoB,KACAloB,KAAKkoB,GAAKloB,KAAKi7K,eAAeL,GAAW1yJ,GAAI,OAEjDloB,KAAKkkC,MAAQ,KACbjmB,MAAMhN,aACT,CACJ,EAzEmC,gECFjC,MAAM+4lB,EACTlqmB,YAAYmqmB,EAAqBz0kB,EAAMw0kB,EAAUx0kB,KAC7Cx1B,KAAKiqmB,oBAAsBA,EAC3BjqmB,KAAKw1B,IAAMA,CACd,CACDy8I,SAAS4I,EAAM32I,EAAQ,EAAG1K,IACtB,OAAO,IAAIx5B,KAAKiqmB,oBAAoBjqmB,KAAM66K,GAAM5I,SAASz4I,GAAO0K,EACnE,EAEL8lkB,EAAUx0kB,IAAM4okB,QCTT,MAAMjjb,UAAuB6ub,EAChClqmB,YAAYoqmB,EAAiB10kB,EAAMw0kB,OAC/B/rlB,MAAMislB,EAAiB10kB,GACvBx1B,KAAK+6K,QAAU,GACf/6K,KAAKub,SAAU,EACfvb,KAAKg7K,gBAAajmK,CACrB,CACDq+J,MAAM94J,GACF,MAAQygK,WAAY/6K,KACpB,GAAIA,KAAKub,QAEL,YADAw/J,EAAQ/+J,KAAK1B,GAGjB,IAAIqhB,GACJ37B,KAAKub,SAAU,EACf,MACSogB,GAAQrhB,EAAO+gK,QAAQ/gK,EAAOkf,MAAOlf,EAAO4pB,OAC7C,YAEE5pB,EAASygK,EAAQn1H,SAE3B,GADA5lD,KAAKub,SAAU,EACXogB,GAAO,CACP,KAAQrhB,EAASygK,EAAQn1H,SACrBtrC,EAAOrJ,cAEX,MAAM0qB,EACT,CACJ,EA3ByC,wECCvC,MAAM8okB,EAAiB,YAAItpb,GAAeR,KACpCgtM,EAAQ88O,mDCHd,MAAMrG,EAAwB,CACjC5okB,SACY4okB,EAAsB5jb,UAAYl4K,MAAMkzB,MAEpDglJ,cAAUzlK,EAJuB,kDCA9B,MAAMmrlB,EAAkB,CAC3BxtlB,WAAWqyE,EAAS+M,KAAY13E,GAC5B,MAAQogK,YAAa0lb,EACrB,OAAwD1lb,GAAS9nK,WACtD8nK,EAAS9nK,WAAWqyE,EAAS+M,KAAY13E,GAE7C1H,WAAWqyE,EAAS+M,KAAY13E,EAC1C,EACDlJ,aAAa7L,GACT,MAAQm1K,YAAa0lb,EACrB,OAA6D1lb,GAAStpK,cAAiBA,cAAc7L,EACxG,EACDm1K,cAAUzlK,EAZiB,kDCMxB,MAAMshY,EANN,SAAS8zN,IACZ,MAAsB,mBAAXv2Q,QAA0BA,OAAOyiD,SAGrCziD,OAAOyiD,SAFH,YAGd,CACuB8zN,EAAiB,kDCNlC,MAAM5ua,EAAuC,mBAAXq4J,QAAyBA,OAAOr4J,YAAe,cAA9D,4FCE1B,SAASvlL,EAAKokB,IACV,OAAOA,GAAIA,GAAI95B,OAAS,EAC3B,CACM,SAAS4gmB,EAAkB9mlB,IAC9B,SAAOmW,KAAWva,EAAKoE,KAASA,GAAKk2C,WAAQv7C,CAChD,CACM,SAASkslB,EAAa7mlB,IACzB,SAAO8qlB,KAAYlvlB,EAAKoE,KAASA,GAAKk2C,WAAQv7C,CACjD,CACM,SAAS4vlB,EAAUvqlB,GAAMm9D,IAC5B,MAA6B,iBAAfvhE,EAAKoE,IAAqBA,GAAKk2C,MAAQinB,EACxD,mDCbD,MAAQloD,WAAYluB,OACZszS,iBAAgBrzS,UAAWkljB,EAAa3shB,KAAMywkB,GAAY/qlB,OAC3D,SAAS8hlB,EAAqB/mlB,IACjC,GAAoB,IAAhBA,GAAK9Z,OAAc,CACnB,MAAMyV,GAAQqE,GAAK,GACnB,GAAIiV,EAAQtZ,IACR,MAAO,CAAEqE,KAAMrE,GAAO4jB,KAAM,MAEhC,GAUR,SAAS0wkB,EAAOt3kB,IACZ,OAAOA,IAAsB,iBAARA,IAAoB0hR,EAAe1hR,MAASuzhB,CACpE,CAZW+jD,CAAOt0lB,IAAQ,CACf,MAAM4jB,GAAOywkB,EAAQr0lB,IACrB,MAAO,CACHqE,KAAMuf,GAAKt4B,IAAKu4B,IAAQ7jB,GAAM6jB,KAC9BD,QAEP,CACJ,CACD,MAAO,CAAEvf,KAAMA,GAAMuf,KAAM,KAC9B,CAGA,gCCpBM,SAASmiZ,EAAU1hZ,EAAK5T,GAC3B,GAAI4T,EAAK,CACL,MAAM5tB,EAAQ4tB,EAAIn5B,QAAQulB,GAC1B,GAAKha,GAAS4tB,EAAIysB,OAAOr6C,EAAO,EACnC,CACJ,kDCLM,SAASqylB,EAAiByL,GAK7B,MAAMC,EAAWD,EAJD5plB,IACZngB,MAAMe,KAAKof,GACXA,EAASm8C,OAAQ,IAAIt8D,OAAQs8D,QAGjC0tiB,SAASnpmB,UAAYie,OAAO8M,OAAO5rB,MAAMa,WACzCmpmB,EAASnpmB,UAAUtB,YAAcyqmB,EAC1BA,CACV,kDCTM,SAAS9I,EAAa9nkB,EAAMmB,GAC/B,OAAOnB,EAAKhU,OAAO,CAACiM,EAAQgI,EAAKpkB,KAAQoc,EAAOgI,GAAOkB,EAAOtlB,GAAKoc,GAAS,GAC/E,0FCDD,IAAIna,EAAU,KACP,SAAS+llB,EAAa9nP,GACzB,GAAI31W,0CAA8C,CAC9C,MAAMyqmB,GAAU/ylB,EAKhB,GAJI+ylB,IACA/ylB,EAAU,CAAEgzlB,aAAa,EAAO9ukB,MAAO,OAE3C+5U,IACI80P,EAAQ,CACR,MAAQC,eAAa9ukB,UAAUlkB,EAE/B,GADAA,EAAU,KACNgzlB,GACA,MAAM9ukB,EAEb,CACJ,MAEG+5U,GAEP,CACM,SAASqqP,EAAatwa,GACrB1vL,2CAAgD0X,IAChDA,EAAQgzlB,aAAc,EACtBhzlB,EAAQkkB,MAAQ8zJ,EAEvB,iCC1BM,SAASkya,EAAgB+I,EAAoB9vb,EAAWC,EAAM32I,EAAQ,EAAG83J,GAAS,GACrF,MAAM2ua,GAAuB/vb,EAAU3I,SAAS,WAC5C4I,IACImhB,EACA0ua,EAAmB1+lB,IAAIhM,KAAKiyK,SAAS,KAAM/tI,IAG3ClkC,KAAKiR,aAEZ,EAAEizB,GAEH,GADAwmkB,EAAmB1+lB,IAAI2+lB,KAClB3ua,EACD,OAAO2ua,EAEd,kDCdM,SAASzpP,EAAS74V,GACrB,OAAOA,CACV,oECFM,MAAMqtiB,EAAgBrtiB,GAAMA,GAAyB,iBAAbA,EAAE/nB,QAAoC,mBAAN+nB,CAAM,+DCC9E,SAASm6kB,EAAgBzvkB,GAC5B,OAAO6gU,OAAOquQ,kBAAiB1xkB,KAAqDwC,IAAI6gU,OAAOquQ,eAClG,iCCHM,SAAS1xkB,EAAWroB,GACvB,MAAwB,mBAAVA,CACjB,4FCAM,SAASg6lB,EAAoBxxlB,GAChC,SAAO6f,KAAW7f,EAAMmtlB,KAC3B,2ECFM,SAAS4E,EAAW/xlB,GACvB,SAAO6f,KAAyD7f,IAAMiylB,KACzE,iECHM,SAASL,EAAUp6lB,GACtB,SAAOqoB,KAAyDroB,GAAMG,KACzE,kFCDM,SAAS06lB,EAAmCiB,GAC/C,SAAO4G,MAAiB5qmB,KAAMmxB,UAAW,YACrC,MAAMi7S,GAAS43R,EAAe6G,YAC9B,IACI,OAAa,CACT,MAAQ3imB,SAAOy+I,eAAS,EAAMmkd,MAAQ1+R,GAAOF,QAC7C,GAAIvlL,GACA,aAAO,EAAMmkd,WAAQ,eAEnB,EAAMA,MAAQ5imB,GACvB,CAIJ,CAHA,QAEGkkU,GAAO2+R,aACV,CACJ,EACJ,CACM,SAASlI,EAAqB9vkB,GACjC,SAAOxC,KAAqDwC,GAAI83kB,UACnE,iECpBM,SAAS3F,EAAYh9lB,GACxB,OAAOA,MAASqoB,KAAWroB,EAAM+pK,SACpC,yECFM,SAAS+4b,EAAQr6kB,GACpB,SAAOJ,KAA2DI,GAAOooP,KAC5E,CACM,SAASxjD,EAAQh3D,GACpB,OAAQ5tI,IACJ,GAAIq6kB,EAAQr6kB,GACR,OAAOA,EAAOooP,KAAK,SAAUkyV,GACzB,IACI,OAAO1sc,EAAK0sc,EAAcjrmB,KAI7B,CAHA,MACMyvL,IACHzvL,KAAK27B,MAAM8zJ,GACd,CACJ,GAEL,MAAM,IAAIuqJ,UAAU,yCAAd,CAEb,gECjBD,MAAQ3qT,WAAYluB,MAIb,SAASugmB,EAAiBlxkB,GAC7B,SAAOnvB,KAAI+Y,GAJf,SAAS8wlB,EAAY16kB,EAAIpW,GACrB,OAAOiV,EAAQjV,GAAQoW,KAAMpW,GAAQoW,EAAGpW,EAC3C,CAEsB8wlB,CAAY16kB,EAAIpW,GACtC,iCCPM,SAASo8H,IAAU,yFCCnB,SAAS/wI,KAAQu5T,GACpB,OAAO++R,EAAc/+R,EACxB,CACM,SAAS++R,EAAc/+R,GAC1B,OAAmB,IAAfA,EAAI1+T,OACG4gX,IAEQ,IAAfliD,EAAI1+T,OACG0+T,EAAI,GAER,SAAetuT,GAClB,OAAOsuT,EAAIr5S,OAAO,CAACywK,GAAM5lK,KAAOA,GAAG4lK,IAAO1lL,EAC7C,CACJ,2ECZM,SAASsvlB,EAAqBvwa,GACjCywa,eAA2B,KACvB,MAAQY,oBAAqB/gmB,IAC7B,IAAI+gmB,EAIA,MAAMrxa,EAHNqxa,EAAiBrxa,EAGXA,EAGjB,iCCZM,SAASuza,EAAiCtylB,GAC7C,OAAO,IAAIspU,UAAW,gBAAyB,OAAVtpU,GAAmC,iBAAVA,EAAqB,oBAAuB,IAAGA,+HAChH,6GCwCM,kBACP,UACA,iFACAqN,eACA,6DACA,kDAA6DvI,aAAcA,KAC3EiP,8EACA1G,sBAFA,CAIA,SACA,CAiBO,yBAEP,6CACA,gBAAoC,IAAMtD,eAA2C,CAA3C,MAA+BgK,IAAYyyE,QACrF,gBAAmC,IAAMz8E,gBAA+C,CAA/C,MAAmCgK,IAAYyyE,QACxF,gBAAgCtlE,qBAJhC,gBAA4B,+CAA+D5pB,QAAiB,CAI5EmjmB,uBAChC1wlB,mCACA,EACA,CA8BO4E,cAgBA,gBACP,qEACA,yBACA,yCACApa,gBACA,sCACA,CAAqBiD,4BACrB,GAEA,mFACA,CA6CO,gBACP,qDACA,CAEO,sBACP,qFACA,oCACA,aAAiBkjmB,wEAAuF,aAAc51lB,GACtH,gBAAuBi1B,6BAAgC,mCAAqCuzG,qCAA2C,GACvI,mBAA4B,KAC5B,gBAAuBzzG,+EADW9vB,YAA6B,CAA7B,MAAiBgK,IAAY4mlB,iBAE/D,gBAA8B5miB,cAC9B,gBAA6BA,eAC7B,mBAA4Br8D,mDAC5B,CAQO,gBACP,qFACA,mCACA,uCAA2GgjmB,wEAAuF,aAAc51lB,IAChN,gBAAuBA,4BAA8B,oCACrD,yBAA6CjQ,sCAAsCyC,IAAUE,kBAAmB,EAAIgvF,KADfm0gB,uCAAwD,EAE7J,CAOAhslB,aAkCA;;;;;;ACnMA,MAAMislB,GASN,MAAM5nkB;;;;;;;OAeN,MAAM6lc,EAAa,IAqJnB,SAASv1c,EAAQvsB,GAAMo8E,IACnB,MAAO,CAAEplE,KAAM,EAAuChX,QAAMo8E,eAAa79E,QAAS,GACrF,CA2DD,SAASyV,EAAQ8vlB,GAAS75kB,GAAS,MAC/B,MAAO,CAAEjT,KAAM,EAAuCiT,UAAQ65kB,WACjE,CAsED,SAAS9+kB,GAAS04G,GAAOn/H,GAAU,MAC/B,MAAO,CAAEyY,KAAM,EAAwC0mH,SAAOn/H,WACjE,CAwCD,SAASulB,GAAMw6O,IACX,MAAO,CAAEtnP,KAAM,EAAqCiT,OAAQq0O,GAAQp9O,OAAQ,KAC/E,CA8BD,SAAS6Q,GAAM/xB,GAAMiqB,GAAQ1rB,IACzB,MAAO,CAAEyY,KAAM,EAAqChX,QAAMiqB,UAAQ1rB,WACrE,CA8CD,SAAS2iN,GAAUxjF,IACf,MAAO,CAAE1mH,KAAM,EAAyC0mH,SAC3D,CAmJD,SAASsnB,GAAW++c,GAAiBrme,GAAOn/H,GAAU,MAClD,MAAO,CAAEyY,KAAM,EAA0C4lP,KAAMmnW,GAAiB7glB,UAAWw6G,GAAOn/H,WACrG,CA4MD,SAAS0mB,GAAM/jB,GAAUgiB,GAAW3kB,GAAU,MAC1C,MAAO,CAAEyY,KAAM,GAAsC9V,YAAUgiB,aAAW3kB,WAC7E,CAiFD,SAAS6mB,GAAQ0+kB,GAAS5glB,IACtB,MAAO,CAAElM,KAAM,GAAwC8slB,WAAS5glB,aACnE;;;;;;;OASD,SAAS8glB,GAAkB/1P,IACvBnwW,QAAQyC,QAAQ,MAAMK,KAAKqtW,GAC9B;;;;;;;OAoBD,MAAMg2P,GACF5rmB,YAAY8qB,GAAW,EAAGsZ,GAAQ,GAC9BlkC,KAAK2rmB,WAAa,GAClB3rmB,KAAK4rmB,YAAc,GACnB5rmB,KAAK6rmB,cAAgB,GACrB7rmB,KAAK8rmB,mBAAqB,GAC1B9rmB,KAAK+rmB,oBAAsB,GAC3B/rmB,KAAK0mJ,UAAW,EAChB1mJ,KAAK+wG,YAAa,EAClB/wG,KAAKmpJ,WAAY,EACjBnpJ,KAAKo6W,UAAY,EACjBp6W,KAAKgsmB,aAAe,KACpBhsmB,KAAKismB,UAAYrhlB,GAAWsZ,EAC/B,CACDgokB,YACSlsmB,KAAKmpJ,YACNnpJ,KAAKmpJ,WAAY,EACjBnpJ,KAAK2rmB,WAAWl7lB,QAAQ+f,IAAMA,MAC9BxwB,KAAK2rmB,WAAa,GAEzB,CACDQ,QAAQ37kB,IACJxwB,KAAK+rmB,oBAAoB/vlB,KAAKwU,IAC9BxwB,KAAK4rmB,YAAY5vlB,KAAKwU,GACzB,CACDtD,OAAOsD,IACHxwB,KAAK8rmB,mBAAmB9vlB,KAAKwU,IAC7BxwB,KAAK2rmB,WAAW3vlB,KAAKwU,GACxB,CACD47kB,UAAU57kB,IACNxwB,KAAK6rmB,cAAc7vlB,KAAKwU,GAC3B,CACD67kB,aACI,OAAOrsmB,KAAK0mJ,QACf,CACD6X,OAAU,CACVtxI,OACSjtB,KAAKqsmB,eACNrsmB,KAAKssmB,WACLtsmB,KAAKusmB,oBAETvsmB,KAAK0mJ,UAAW,CACnB,CAED6ld,mBACId,GAAkB,IAAMzrmB,KAAKksmB,YAChC,CACDI,WACItsmB,KAAK4rmB,YAAYn7lB,QAAQ+f,IAAMA,MAC/BxwB,KAAK4rmB,YAAc,EACtB,CACDjoP,QAAW,CACX6oP,UAAa,CACbpokB,SACIpkC,KAAKksmB,WACR,CACD/+kB,UACSntB,KAAK+wG,aACN/wG,KAAK+wG,YAAa,EACb/wG,KAAKqsmB,cACNrsmB,KAAKssmB,WAETtsmB,KAAKokC,SACLpkC,KAAK6rmB,cAAcp7lB,QAAQ+f,IAAMA,MACjCxwB,KAAK6rmB,cAAgB,GAE5B,CACD9jiB,QACI/nE,KAAK0mJ,UAAW,EAChB1mJ,KAAKmpJ,WAAY,EACjBnpJ,KAAK4rmB,YAAc5rmB,KAAK+rmB,oBACxB/rmB,KAAK2rmB,WAAa3rmB,KAAK8rmB,kBAC1B,CACDj8Y,YAAYltL,IACR3iC,KAAKo6W,UAAYp6W,KAAKismB,UAAYtpkB,GAAW3iC,KAAKismB,UAAY,CACjE,CACDQ,cACI,OAAOzsmB,KAAKismB,UAAYjsmB,KAAKo6W,UAAYp6W,KAAKismB,UAAY,CAC7D,CAEDS,gBAAgBC,IACZ,MAAMC,GAAuB,SAAbD,GAAuB3smB,KAAK4rmB,YAAc5rmB,KAAK2rmB,WAC/DiB,GAAQn8lB,QAAQ+f,IAAMA,MACtBo8kB,GAAQtsmB,OAAS,CACpB;;;;;;;OAkBL,MAAMusmB,GACF/smB,YAAYgtmB,IACR9smB,KAAK2rmB,WAAa,GAClB3rmB,KAAK4rmB,YAAc,GACnB5rmB,KAAKmpJ,WAAY,EACjBnpJ,KAAK0mJ,UAAW,EAChB1mJ,KAAK+wG,YAAa,EAClB/wG,KAAK6rmB,cAAgB,GACrB7rmB,KAAKgsmB,aAAe,KACpBhsmB,KAAKismB,UAAY,EACjBjsmB,KAAK+smB,QAAUD,GACf,IAAIE,GAAY,EACZC,GAAe,EACfC,GAAa,EACjB,MAAMvlkB,GAAQ3nC,KAAK+smB,QAAQzsmB,OACd,GAATqnC,GACA8jkB,GAAkB,IAAMzrmB,KAAKksmB,aAG7BlsmB,KAAK+smB,QAAQt8lB,QAAQuc,KACjBA,GAAOE,OAAO,OACJ8/kB,IAAarlkB,IACf3nC,KAAKksmB,WAAL,GAGRl/kB,GAAOo/kB,UAAU,OACPa,IAAgBtlkB,IAClB3nC,KAAKmtmB,YAAL,GAGRnglB,GAAOm/kB,QAAQ,OACLe,IAAcvlkB,IAChB3nC,KAAKssmB,UAAL,EAFR,GAORtsmB,KAAKismB,UAAYjsmB,KAAK+smB,QAAQpnlB,OAAO,CAACod,GAAM/V,KAAW0H,KAAK7Z,IAAIkoB,GAAM/V,GAAOi/kB,WAAY,EAC5F,CACDC,YACSlsmB,KAAKmpJ,YACNnpJ,KAAKmpJ,WAAY,EACjBnpJ,KAAK2rmB,WAAWl7lB,QAAQ+f,IAAMA,MAC9BxwB,KAAK2rmB,WAAa,GAEzB,CACDptc,OACIv+J,KAAK+smB,QAAQt8lB,QAAQuc,IAAUA,GAAOuxI,OACzC,CACD4tc,QAAQ37kB,IACJxwB,KAAK4rmB,YAAY5vlB,KAAKwU,GACzB,CACD87kB,WACStsmB,KAAKqsmB,eACNrsmB,KAAK0mJ,UAAW,EAChB1mJ,KAAK4rmB,YAAYn7lB,QAAQ+f,IAAMA,MAC/BxwB,KAAK4rmB,YAAc,GAE1B,CACD1+kB,OAAOsD,IACHxwB,KAAK2rmB,WAAW3vlB,KAAKwU,GACxB,CACD47kB,UAAU57kB,IACNxwB,KAAK6rmB,cAAc7vlB,KAAKwU,GAC3B,CACD67kB,aACI,OAAOrsmB,KAAK0mJ,QACf,CACDz5H,OACSjtB,KAAKgsmB,cACNhsmB,KAAKu+J,OAETv+J,KAAKssmB,WACLtsmB,KAAK+smB,QAAQt8lB,QAAQuc,IAAUA,GAAOC,OACzC,CACD02V,QACI3jX,KAAK+smB,QAAQt8lB,QAAQuc,IAAUA,GAAO22V,QACzC,CACD6oP,UACIxsmB,KAAK+smB,QAAQt8lB,QAAQuc,IAAUA,GAAOw/kB,UACzC,CACDpokB,SACIpkC,KAAKksmB,YACLlsmB,KAAK+smB,QAAQt8lB,QAAQuc,IAAUA,GAAOoX,SACzC,CACDjX,UACIntB,KAAKmtmB,YACR,CACDA,aACSntmB,KAAK+wG,aACN/wG,KAAK+wG,YAAa,EAClB/wG,KAAKksmB,YACLlsmB,KAAK+smB,QAAQt8lB,QAAQuc,IAAUA,GAAOG,WACtCntB,KAAK6rmB,cAAcp7lB,QAAQ+f,IAAMA,MACjCxwB,KAAK6rmB,cAAgB,GAE5B,CACD9jiB,QACI/nE,KAAK+smB,QAAQt8lB,QAAQuc,IAAUA,GAAO+6C,SACtC/nE,KAAK+wG,YAAa,EAClB/wG,KAAKmpJ,WAAY,EACjBnpJ,KAAK0mJ,UAAW,CACnB,CACDmpE,YAAY3uL,IACR,MAAMkskB,GAAiBlskB,GAAIlhC,KAAKismB,UAChCjsmB,KAAK+smB,QAAQt8lB,QAAQuc,KACjB,MAAM2V,GAAW3V,GAAOi/kB,UAAYv3kB,KAAK9Z,IAAI,EAAGwylB,GAAiBpglB,GAAOi/kB,WAAa,EACrFj/kB,GAAO6iM,YAAYltL,GAAnB,EAEP,CACD8pkB,cACI,MAAMY,GAAgBrtmB,KAAK+smB,QAAQpnlB,OAAO,CAAC2nlB,GAActglB,KACT,OAAjBsglB,IAAyBtglB,GAAOi/kB,UAAYqB,GAAarB,UACxDj/kB,GAASsglB,GACtC,MACH,OAAwB,MAAjBD,GAAwBA,GAAcZ,cAAgB,CAChE,CACDc,gBACIvtmB,KAAK+smB,QAAQt8lB,QAAQuc,KACbA,GAAOuglB,eACPvglB,GAAOuglB,eAAP,EAGX,CAEDb,gBAAgBC,IACZ,MAAMC,GAAuB,SAAbD,GAAuB3smB,KAAK4rmB,YAAc5rmB,KAAK2rmB,WAC/DiB,GAAQn8lB,QAAQ+f,IAAMA,MACtBo8kB,GAAQtsmB,OAAS,CACpB;;;;;;;OAUL,MAAMktmB,GAAa;;;;;;;;;;;;;;;;;;;;;OAAA;;;;;;;;;;;;OCxpCnB,IAAIC,EAAO,KACX,SAASC,IACL,OAAOD,CACV,CAID,SAASE,EAAkBC,IAClBH,IACDA,EAAOG,GAEd,CAQD,MAAMC;;;;;;;OAkBN,MAAMjomB,GAAW,IAAIhG,MAAe;;;;;;;OA+BpC,MAAMkumB,GACFC,UAAUC,IACN,MAAM,IAAIztmB,MAAM,kBACnB,EAELutmB,GAAiB/qmB,UAAjB,4BAA6G+qmB,GAA7G,EACAA,GAAiB7qmB,WADkFD,MACnG,OAAiH8qmB,GAAjH5qmB,0BASA,SAAS+qmB,KACL,SAAOC,OAASC,GACnB,CAXsKF,EAAvK,aAA+I,aAkB/I,MAAMG,GAAuB,IAAIxumB,MAAe,wBAMhD,MAAMuumB,WAAgCL,GAClChumB,YAAYuumB,IACRpwlB,QACAje,KAAKqumB,KAAOA,GACZrumB,KAAKixJ,OACR,CAGDA,QACIjxJ,KAAKgE,SAAW6tB,OAAO7tB,SACvBhE,KAAKsumB,SAAWz8kB,OAAOg0R,OAC1B,CACD0oT,qBACI,OAAOb,IAASc,YAAYxumB,KAAKqumB,KACpC,CACDI,WAAWj+kB,IACP,MAAMqB,GAAS67kB,IAASgB,qBAAqB1umB,KAAKqumB,KAAM,UACxDx8kB,UAAOmE,iBAAiB,WAAYxF,IAAI,GACjC,IAAMqB,GAAOkF,oBAAoB,WAAYvG,GACvD,CACDm+kB,aAAan+kB,IACT,MAAMqB,GAAS67kB,IAASgB,qBAAqB1umB,KAAKqumB,KAAM,UACxDx8kB,UAAOmE,iBAAiB,aAAcxF,IAAI,GACnC,IAAMqB,GAAOkF,oBAAoB,aAAcvG,GACzD,CACGs6D,WACA,OAAO9qF,KAAKgE,SAAS8mF,IACxB,CACGi6b,eACA,OAAO/khB,KAAKgE,SAAS+ghB,QACxB,CACG3ghB,eACA,OAAOpE,KAAKgE,SAASI,QACxB,CACGC,WACA,OAAOrE,KAAKgE,SAASK,IACxB,CACGU,eACA,OAAO/E,KAAKgE,SAASe,QACxB,CACGkgP,aACA,OAAOjlP,KAAKgE,SAASihP,MACxB,CACGlkM,WACA,OAAO/gD,KAAKgE,SAAS+8C,IACxB,CACGh8C,aAAS6pmB,IACT5umB,KAAKgE,SAASe,SAAW6pmB,EAC5B,CACDl3e,UAAUl+F,GAAO/S,GAAO1iB,IAChB8qmB,KACA7umB,KAAKsumB,SAAS52e,UAAUl+F,GAAO/S,GAAO1iB,IAGtC/D,KAAKgE,SAAS+8C,KAAOh9C,EAE5B,CACD+qmB,aAAat1kB,GAAO/S,GAAO1iB,IACnB8qmB,KACA7umB,KAAKsumB,SAASQ,aAAat1kB,GAAO/S,GAAO1iB,IAGzC/D,KAAKgE,SAAS+8C,KAAOh9C,EAE5B,CACDksI,UACIjwI,KAAKsumB,SAASr+d,SACjB,CACDmwM,OACIpgV,KAAKsumB,SAASluR,MACjB,CACD2tR,UAAUC,GAAmB,GACzBhumB,KAAKsumB,SAASS,GAAGf,GACpB,CACD3uV,WACI,OAAOr/Q,KAAKsumB,SAAS90kB,KACxB,EAeL,SAASq1kB,KACL,QAASh9kB,OAAOg0R,QAAQnuL,SAC3B;;;;;;;;;;;;;;;AA6BD,SAASs3e,GAAcr0lB,GAAOG,IAC1B,GAAoB,GAAhBH,GAAMra,OACN,OAAOwa,GAEX,GAAkB,GAAdA,GAAIxa,OACJ,OAAOqa,GAEX,IAAIs0lB,GAAU,EAOd,OANIt0lB,GAAMk3H,SAAS,MACfo9d,KAEAn0lB,GAAI2tL,WAAW,MACfwma,KAEW,GAAXA,GACOt0lB,GAAQG,GAAIo3B,UAAU,GAElB,GAAX+8jB,GACOt0lB,GAAQG,GAEZH,GAAQ,IAAMG,EACxB,CAUD,SAASo0lB,GAAmBnrmB,IACxB,MAAM8uB,GAAQ9uB,GAAI8uB,MAAM,UAClBs8kB,GAAat8kB,IAASA,GAAMrmB,OAASzI,GAAIzD,OACzC8umB,GAAkBD,IAAsC,MAAxBprmB,GAAIormB,GAAa,GAAa,EAAI,GACxE,OAAOprmB,GAAIrC,MAAM,EAAG0tmB,IAAmBrrmB,GAAIrC,MAAMytmB,GACpD,CAQD,SAASE,GAAqB9mP,IAC1B,OAAOA,IAAwB,MAAdA,GAAO,GAAa,IAAMA,GAASA,EACvD;;;;;;;OA1FD4lP,GAAwBprmB,UAAxB,4BAAoHormB,IAvGjBnrmB,MAuG0D4C,IAA7J,EACAuomB,GAAwBlrmB,WAxG2ED,MAwGnG,OAAwHmrmB,GAAxHjrmB,0BAeA,SAASosmB,KACL,OAAO,IAAInB,MAAwBD,OAAStomB,IAC/C,CAjBoL0pmB,EAArL,aAA6J,aAmH7J,MAAMC,GACFxB,UAAUC,IACN,MAAM,IAAIztmB,MAAM,kBACnB,EAELgvmB,GAAiBxsmB,UAAjB,4BAA6GwsmB,GAA7G,EACAA,GAAiBtsmB,WAjOkFD,MAiOnG,OAAiHusmB,GAAjHrsmB,0BAAmK,EAAMizQ,OAAOq5V,GAAhL,aAA+I,SA4B/I,MAAMC,GAAgB,IAAI7vmB,MAAe,eAgCzC,MAAM4vmB,WAA6BD,GAC/BzvmB,YAAY4vmB,GAAmB5khB,IAC3B7sE,QACAje,KAAK0vmB,kBAAoBA,GACzB1vmB,KAAK2vmB,mBAAqB,GAC1B3vmB,KAAK4vmB,UAAY9khB,IAAQ9qF,KAAK0vmB,kBAAkBnB,uBAAvB,EACrBp4V,OAAOvwQ,IAAU5B,UAAUC,QAAU,EAC5C,CAED4M,cACI,KAAO7Q,KAAK2vmB,mBAAmBrvmB,QAC3BN,KAAK2vmB,mBAAmBr/iB,KAAxBtwD,EAEP,CACDyumB,WAAWj+kB,IACPxwB,KAAK2vmB,mBAAmB3zlB,KAAKhc,KAAK0vmB,kBAAkBjB,WAAWj+kB,IAAKxwB,KAAK0vmB,kBAAkBf,aAAan+kB,IAC3G,CACDg+kB,cACI,OAAOxumB,KAAK4vmB,SACf,CACDC,mBAAmBC,IACf,OAAOd,GAAchvmB,KAAK4vmB,UAAWE,GACxC,CACDrglB,KAAKsglB,IAAc,GACf,MAAMhrmB,GAAW/E,KAAK0vmB,kBAAkB3qmB,SAAWsqmB,GAAqBrvmB,KAAK0vmB,kBAAkBzqX,QACzFlkM,GAAO/gD,KAAK0vmB,kBAAkB3ujB,KACpC,OAAOA,IAAQgvjB,GAAe,GAAEhrmB,KAAWg8C,KAASh8C,EACvD,CACD2yH,UAAUl+F,GAAO/S,GAAO1iB,GAAKismB,IACzB,MAAMC,GAAcjwmB,KAAK6vmB,mBAAmB9rmB,GAAMsrmB,GAAqBW,KACvEhwmB,KAAK0vmB,kBAAkBh4e,UAAUl+F,GAAO/S,GAAOwplB,GAClD,CACDnB,aAAat1kB,GAAO/S,GAAO1iB,GAAKismB,IAC5B,MAAMC,GAAcjwmB,KAAK6vmB,mBAAmB9rmB,GAAMsrmB,GAAqBW,KACvEhwmB,KAAK0vmB,kBAAkBZ,aAAat1kB,GAAO/S,GAAOwplB,GACrD,CACDhge,UACIjwI,KAAK0vmB,kBAAkBz/d,SAC1B,CACDmwM,OACIpgV,KAAK0vmB,kBAAkBtvR,MAC1B,CACD/gE,WACI,OAAOr/Q,KAAK0vmB,kBAAkBrwV,UACjC,CACD0uV,UAAUC,GAAmB,GACzBhumB,KAAK0vmB,kBAAkB3B,YAAYC,GACtC,EAELwB,GAAqBzsmB,UAArB,4BAAiHysmB,IA9UdxsmB,MA8UoD8qmB,IA9UpD9qmB,MA8UiFysmB,GAApL,KACAD,GAAqBvsmB,WA/U8ED,MA+UnG,OAAqHwsmB,GAArHtsmB,QAAqHssmB,GAArH,qBAAuJ;;;;;;;;AAoCvJ,MAAMU,WAA6BX,GAC/BzvmB,YAAY4vmB,GAAmBE,IAC3B3xlB,QACAje,KAAK0vmB,kBAAoBA,GACzB1vmB,KAAK4vmB,UAAY,GACjB5vmB,KAAK2vmB,mBAAqB,GACT,MAAbC,KACA5vmB,KAAK4vmB,UAAYA,GAExB,CAED/+lB,cACI,KAAO7Q,KAAK2vmB,mBAAmBrvmB,QAC3BN,KAAK2vmB,mBAAmBr/iB,KAAxBtwD,EAEP,CACDyumB,WAAWj+kB,IACPxwB,KAAK2vmB,mBAAmB3zlB,KAAKhc,KAAK0vmB,kBAAkBjB,WAAWj+kB,IAAKxwB,KAAK0vmB,kBAAkBf,aAAan+kB,IAC3G,CACDg+kB,cACI,OAAOxumB,KAAK4vmB,SACf,CACDnglB,KAAKsglB,IAAc,GAGf,IAAItglB,GAAOzvB,KAAK0vmB,kBAAkB3ujB,KAClC,OAAY,MAARtxB,KACAA,GAAO,KACJA,GAAKnvB,OAAS,EAAImvB,GAAKyiB,UAAU,GAAKziB,EAChD,CACDoglB,mBAAmBC,IACf,MAAM/rmB,GAAMirmB,GAAchvmB,KAAK4vmB,UAAWE,IAC1C,OAAO/rmB,GAAIzD,OAAS,EAAK,IAAMyD,GAAOA,EACzC,CACD2zH,UAAUl+F,GAAO/S,GAAOgJ,GAAMuglB,IAC1B,IAAIjsmB,GAAM/D,KAAK6vmB,mBAAmBpglB,GAAO4/kB,GAAqBW,KAC5C,GAAdjsmB,GAAIzD,SACJyD,GAAM/D,KAAK0vmB,kBAAkB3qmB,UAEjC/E,KAAK0vmB,kBAAkBh4e,UAAUl+F,GAAO/S,GAAO1iB,GAClD,CACD+qmB,aAAat1kB,GAAO/S,GAAOgJ,GAAMuglB,IAC7B,IAAIjsmB,GAAM/D,KAAK6vmB,mBAAmBpglB,GAAO4/kB,GAAqBW,KAC5C,GAAdjsmB,GAAIzD,SACJyD,GAAM/D,KAAK0vmB,kBAAkB3qmB,UAEjC/E,KAAK0vmB,kBAAkBZ,aAAat1kB,GAAO/S,GAAO1iB,GACrD,CACDksI,UACIjwI,KAAK0vmB,kBAAkBz/d,SAC1B,CACDmwM,OACIpgV,KAAK0vmB,kBAAkBtvR,MAC1B,CACD/gE,WACI,OAAOr/Q,KAAK0vmB,kBAAkBrwV,UACjC,CACD0uV,UAAUC,GAAmB,GACzBhumB,KAAK0vmB,kBAAkB3B,YAAYC,GACtC,EAELkC,GAAqBntmB,UAArB,4BAAiHmtmB,IAhbdltmB,MAgboD8qmB,IAhbpD9qmB,MAgbiFysmB,GAApL,KACAS,GAAqBjtmB,WAjb8ED,MAibnG,OAAqHktmB,GAArHhtmB,QAAqHgtmB,GAArH;;;;;;;;AA6CA,MAAMpje,GACFhtI,YAAYqwmB,IAERnwmB,KAAKowmB,SAAW,IAAIllmB,MAEpBlL,KAAKqwmB,oBAAsB,GAE3BrwmB,KAAKswmB,uBAAyB,KAC9BtwmB,KAAKuwmB,kBAAoBJ,GACzB,MAAMK,GAAkBxwmB,KAAKuwmB,kBAAkB/B,cAC/CxumB,KAAK4vmB,UAAYV,GAAmBuB,GAAgBD,KACpDxwmB,KAAKuwmB,kBAAkB9B,WAAYvkZ,KAC/BlqN,KAAKowmB,SAAShgmB,KAAK,CACfrM,IAAO/D,KAAKyvB,MAAK,GACjB6gC,KAAO,EACP92B,MAAS0wL,GAAG1wL,MACZ/a,KAAQyrM,GAAGzrM,MAJf,EAOP,CAED5N,cACI7Q,KAAKswmB,wBAAwBr/lB,cAC7BjR,KAAKqwmB,oBAAsB,EAC9B,CAUD5glB,KAAKsglB,IAAc,GACf,OAAO/vmB,KAAKo4K,UAAUp4K,KAAKuwmB,kBAAkB9glB,KAAKsglB,IACrD,CAKD1wV,WACI,OAAOr/Q,KAAKuwmB,kBAAkBlxV,UACjC,CAUDqxV,qBAAqBjhlB,GAAM/C,GAAQ,IAC/B,OAAO1sB,KAAKyvB,QAAUzvB,KAAKo4K,UAAU3oJ,GAAO4/kB,GAAqB3ilB,IACpE,CAQD0rJ,UAAUr0K,IACN,OAAO+oI,GAASoie,mBA4JxB,SAASyB,GAAehmhB,GAAU5mF,IAC9B,OAAO4mF,IAAY5mF,GAAI0kM,WAAW99G,IAAY5mF,GAAImuC,UAAUy4C,GAASrqF,QAAUyD,EAClF,CA9J0C4smB,CAAe3wmB,KAAK4vmB,UAAWa,GAAgB1smB,KACrF,CAWD8rmB,mBAAmB9rmB,IACf,OAAIA,IAAkB,MAAXA,GAAI,KACXA,GAAM,IAAMA,IAET/D,KAAKuwmB,kBAAkBV,mBAAmB9rmB,GACpD,CAWDgrmB,GAAGt/kB,GAAM/C,GAAQ,GAAI8M,GAAQ,MACzBx5B,KAAKuwmB,kBAAkB74e,UAAUl+F,GAAO,GAAI/J,GAAM/C,IAClD1sB,KAAK4wmB,0BAA0B5wmB,KAAK6vmB,mBAAmBpglB,GAAO4/kB,GAAqB3ilB,KAAS8M,GAC/F,CASDs1kB,aAAar/kB,GAAM/C,GAAQ,GAAI8M,GAAQ,MACnCx5B,KAAKuwmB,kBAAkBzB,aAAat1kB,GAAO,GAAI/J,GAAM/C,IACrD1sB,KAAK4wmB,0BAA0B5wmB,KAAK6vmB,mBAAmBpglB,GAAO4/kB,GAAqB3ilB,KAAS8M,GAC/F,CAIDy2G,UACIjwI,KAAKuwmB,kBAAkBtge,SAC1B,CAIDmwM,OACIpgV,KAAKuwmB,kBAAkBnwR,MAC1B,CAaD2tR,UAAUC,GAAmB,GACzBhumB,KAAKuwmB,kBAAkBxC,YAAYC,GACtC,CAQD6C,YAAYrglB,IACR,YAAK6/kB,oBAAoBr0lB,KAAKwU,IACzBxwB,KAAKswmB,yBACNtwmB,KAAKswmB,uBAAyBtwmB,KAAKkM,UAAU2rN,KACzC73N,KAAK4wmB,0BAA0B/4Y,GAAE9zN,IAAK8zN,GAAEr+L,MAAxC,IAGD,KACH,MAAMs3kB,GAAU9wmB,KAAKqwmB,oBAAoBpvmB,QAAQuvB,IACjDxwB,KAAKqwmB,oBAAoBxpjB,OAAOiqjB,GAAS,GACD,IAApC9wmB,KAAKqwmB,oBAAoB/vmB,SACzBN,KAAKswmB,wBAAwBr/lB,cAC7BjR,KAAKswmB,uBAAyB,MAGzC,CAEDM,0BAA0B7smB,GAAM,GAAIy1B,IAChCx5B,KAAKqwmB,oBAAoB5/lB,QAAQ+f,IAAMA,GAAGzsB,GAAKy1B,IAClD,CAcDttB,UAAUs5lB,GAAQuL,GAASC,IACvB,OAAOhxmB,KAAKowmB,SAASlkmB,UAAU,CAAEjH,KAAMugmB,GAAQ7pkB,MAAOo1kB,GAASj6gB,SAAUk6gB,IAC5E,EA8CL,SAASP,GAAgB1smB,IACrB,OAAOA,GAAI1D,QAAQ,gBAAiB,GACvC;;;;;;;;;;;;;;OAvCDysI,GAASuie,qBAAuBA,GAUhCvie,GAASkie,cAAgBA,GAUzBlie,GAASoie,mBAAqBA,GAC9Bpie,GAAS/pI,UAAT,4BAAqG+pI,IA7qBF9pI,MA6qB4BusmB,IAA/H,EACAzie,GAAS7pI,WA9qB0FD,MA8qBnG,OAAyG8pI,GAAzG5pI,0BASA,SAAS+tmB,KACL,OAAO,IAAInke,MAASohe,OAASqB,IAChC,CAXkJ0B,EAAnJ,aAA+H,SAmC/H,MAAMC,GAAgB,CAAE1jJ,IAAO,MAACz4c,OAAWA,EAAW,GAAI44c,IAAO,MAAC54c,EAAW,SAAK,GAAI84c,IAAO,MAAC94c,OAAWA,EAAW,GAAI+4c,IAAO,MAAC/4c,EAAW,SAAK,GAAIi5c,IAAO,MAACj5c,EAAW,MAAOy5c,IAAO,MAACz5c,EAAW,KAAM25c,IAAO,CAAC,KAAM,KAAMG,IAAO,MAAC95c,EAAW,UAAMg6c,IAAO,MAACh6c,EAAW,MAAOk6c,IAAO,MAACl6c,EAAW,KAAMm6c,IAAO,MAACn6c,EAAW,UAAM06c,IAAO,MAAC16c,OAAWA,EAAW,GAAI26c,IAAO,MAAC36c,OAAWA,EAAW,GAAI46c,IAAO,MAAC56c,EAAW,KAAM66c,IAAO,MAAC76c,EAAW,KAAM86c,IAAO,MAAC96c,EAAW,MAAOq7c,IAAO,CAAC,MAAOI,IAAO,MAACz7c,EAAW,KAAM47c,IAAO,MAAC57c,EAAW,KAAM87c,IAAO,MAAC97c,OAAWA,EAAW,GAAI+7c,IAAO,MAAC/7c,OAAWA,EAAW,GAAIg8c,IAAO,MAACh8c,EAAW,KAAMi8c,IAAO,CAAC,MAAO,IAAK,GAAIG,IAAO,MAACp8c,OAAWA,EAAW,GAAIu8c,IAAO,MAACv8c,OAAWA,EAAW,GAAIw8c,IAAO,MAACx8c,EAAW,IAAK,GAAI28c,IAAO,CAAC,SAAO,QAAMC,IAAO,MAAC58c,EAAW,IAAK,GAAI88c,IAAO,MAAC98c,EAAW,SAAK,GAAIi9c,IAAO,MAACj9c,EAAW,KAAMk9c,IAAO,MAACl9c,EAAW,KAAMq9c,IAAO,MAACr9c,EAAW,UAAM,GAAIw9c,IAAO,MAACx9c,OAAWA,EAAW,GAAIy9c,IAAO,MAACz9c,EAAW,KAAM,GAAI09c,IAAO,MAAC19c,EAAW,KAAM+9c,IAAO,MAAC/9c,EAAW,SAAOm+c,IAAO,MAACn+c,EAAW,SAAK,GAAIuuX,IAAO,CAAC,UAAM+vF,IAAO,MAACt+c,EAAW,KAAMu+c,IAAO,MAACv+c,EAAW,QAAMy+c,IAAO,CAAC,QAAME,IAAO,MAAC3+c,EAAW,UAAM6+c,IAAO,MAAC7+c,EAAW,YAAQ8+c,IAAO,MAAC9+c,EAAW,QAAMg/c,IAAO,MAACh/c,EAAW,KAAM,GAAIo/c,IAAO,MAACp/c,EAAW,KAAMu/c,IAAO,MAACv/c,EAAW,IAAK,GAAIw/c,IAAO,CAAC,MAAO,KAAMC,IAAO,MAACz/c,EAAW,KAAM2/c,IAAO,MAAC3/c,EAAW,MAAO6/c,IAAO,MAAC7/c,EAAW,KAAM,GAAI8/c,IAAO,MAAC9/c,EAAW,KAAM,GAAIkgd,IAAO,CAAC,UAAMC,IAAO,CAAC,UAAMC,IAAO,MAACpgd,OAAWA,EAAW,GAAIqgd,IAAO,MAACrgd,OAAWA,EAAW,GAAIugd,IAAO,MAACvgd,EAAW,KAAM,GAAIwgd,IAAO,MAACxgd,OAAWA,EAAW,GAAIygd,IAAO,MAACzgd,EAAW,KAAM0gd,IAAO,MAAC1gd,OAAWA,EAAW,GAAI2gd,IAAO,CAAC,YAAK3gd,EAAW,GAAI8gd,IAAO,MAAC9gd,EAAW,UAAM+gd,IAAO,MAAC/gd,EAAW,KAAM,GAAIghd,IAAO,MAAChhd,EAAW,SAAK,GAAImhd,IAAO,CAAC,cAAKnhd,EAAW,GAAIohd,IAAO,MAACphd,OAAWA,EAAW,GAAIqhd,IAAO,MAACrhd,EAAW,KAAMshd,IAAO,MAACthd,EAAW,UAAMuhd,IAAO,MAACvhd,EAAW,SAAK,GAAIwhd,IAAO,MAACxhd,EAAW,QAAM,GAAIyhd,IAAO,MAACzhd,EAAW,MAAO0hd,IAAO,MAAC1hd,EAAW,KAAM4hd,IAAO,MAAC5hd,EAAW,MAAO+hd,IAAO,MAAC/hd,OAAWA,EAAW,GAAIiid,IAAO,MAACjid,EAAW,MAAOmid,IAAO,MAACnid,OAAWA,EAAW,GAAIyid,IAAO,MAACzid,EAAW,KAAM,GAAI0id,IAAO,MAAC1id,OAAWA,EAAW,GAAI8id,IAAO,MAAC9id,EAAW,IAAK,GAAI+id,IAAO,MAAC/id,EAAW,SAAK,GAAIijd,IAAO,MAACjjd,OAAWA,EAAW,GAAIqjd,IAAO,MAACrjd,EAAW,KAAM,GAAIyjd,IAAO,CAAC,MAAO,KAAMG,IAAO,MAAC5jd,EAAW,MAAOgkd,IAAO,MAAChkd,EAAW,KAAMikd,IAAO,MAACjkd,EAAW,UAAMmkd,IAAO,MAACnkd,EAAW,MAAOqkd,IAAO,MAACrkd,EAAW,KAAM,GAAIskd,IAAO,MAACtkd,EAAW,MAAOukd,IAAO,CAAC,MAAO,KAAMC,IAAO,MAACxkd,OAAWA,EAAW,GAAI8kd,IAAO,CAAC,UAAMC,IAAO,MAAC/kd,EAAW,KAAM,GAAIgld,IAAO,MAAChld,EAAW,WAAOmld,IAAO,MAACnld,EAAW,SAAK,GAAIuld,IAAO,MAACvld,EAAW,OAAQwld,IAAO,MAACxld,OAAWA,EAAW,GAAIyld,IAAO,MAACzld,EAAW,UAAM2ld,IAAO,MAAC3ld,EAAW,KAAM,GAAI6ld,IAAO,MAAC7ld,EAAW,KAAMkmd,IAAO,MAAClmd,EAAW,KAAM,GAAImmd,IAAO,MAACnmd,EAAW,KAAMomd,IAAO,MAACpmd,EAAW,QAAMo8lB,IAAO,MAACp8lB,OAAWA,EAAW,GAAIumd,IAAO,MAACvmd,OAAWA,EAAW,GAAIwmd,IAAO,MAACxmd,OAAWA,EAAW,GAAIymd,IAAO,MAACzmd,EAAW,KAAM2md,IAAO,MAAC3md,EAAW,QAAM4md,IAAO,MAAC5md,OAAWA,EAAW,GAAI6md,IAAO,MAAC7md,EAAW,MAAOgnd,IAAO,MAAChnd,EAAW,OAAK,GAAIknd,IAAO,MAAClnd,EAAW,UAAMqnd,IAAO,MAACrnd,OAAWA,EAAW,GAAIund,IAAO,MAACvnd,OAAWA,EAAW,GAAIga,IAAO,MAACha,EAAW,MAAOynd,IAAO,MAACznd,OAAWA,EAAW,GAAI0nd,IAAO,MAAC1nd,EAAW,UAAM2nd,IAAO,MAAC3nd,EAAW,KAAM4nd,IAAO,CAAC,MAAO,IAAK,GAAIC,IAAO,MAAC7nd,OAAWA,EAAW,GAAI8nd,IAAO,MAAC9nd,EAAW,UAAMiod,IAAO,MAACjod,OAAWA,EAAW,GAAIwuX,IAAO,CAAC,KAAM45F,IAAO,MAACpod,OAAWA,EAAW,GAAIsod,IAAO,MAACtod,EAAW,KAAMuod,IAAO,MAACvod,OAAWA,EAAW,GAAIwod,IAAO,MAACxod,OAAWA,EAAW,GAAI0od,IAAO,MAAC1od,EAAW,KAAM,GAAI4od,IAAO,CAAC,cAAK5od,EAAW,GAAI8od,IAAO,MAAC9od,OAAWA,EAAW,GAAIgpd,IAAO,CAAC,YAAQhpd,EAAW,GAAIupd,IAAO,CAAC,MAAO,KAAMK,IAAO,CAAC,kBAAS5pd,EAAW,GAAI8pd,IAAO,CAAC,YAAQ9pd,EAAW,GAAIoqd,IAAO,CAAC,QAAME,IAAO,MAACtqd,OAAWA,EAAW,GAAI4qd,IAAO,MAAC5qd,EAAW,KAAM6qd,IAAO,MAAC7qd,OAAWA,EAAW,GAAI8qd,IAAO,MAAC9qd,EAAW,MAAOird,IAAO,MAACjrd,OAAWA,EAAW;;;;;;;OAgBpyH,IAAIq8lB,GACOA,GAePC,GAkBAC,GAYAC,GAsBAC,GAgCAC,GAgFAC,GAoIJ,SAASC,GAAoB3/jB,GAAQx9B,IAEjC,OAAOo9lB,IADDrylB,EAAOsylB,OAAgB7/jB,IACG8/jB,kBAA8Bt9lB,GACjE,CAYD,SAASu9lB,GAAoB//jB,GAAQx9B,IAEjC,OAAOo9lB,IADDrylB,EAAOsylB,OAAgB7/jB,IACG8/jB,kBAA8Bt9lB,GACjE,CAYD,SAASw9lB,GAAwBhgkB,GAAQx9B,IAGrC,OAAOo9lB,IADDK,EADOJ,OAAgB7/jB,IACG8/jB,sBACet9lB,GAClD,CAWD,SAAS09lB,GAAsBlgkB,GAAQsyG,IACnC,MAAM/kI,MAAOsylB,OAAgB7/jB,IACvBs0S,GAAM/mU,GAAKuylB,qBAAgCxtd,IACjD,UAAWgiM,GAAQ,IAAa,CAC5B,GAAIhiM,KAAWmtd,GAAaU,gBACxB,OAAO5ylB,GAAKuylB,qBAAgCL,GAAaW,SAExD,GAAI9td,KAAWmtd,GAAaY,cAC7B,OAAO9ylB,GAAKuylB,qBAAgCL,GAAa7rhB,MAEhE,CACD,OAAO0gQ,EACV,CAoCD,SAASgsR,GAAsBtgkB,GAAQvzB,IAEnC,SADaozlB,OAAgB7/jB,IACjB8/jB,qBAAgCrzlB,GAC/C,EAvZU2ylB,GAKRA,KAAsBA,GAAoB,KAJvBA,GAAkBgB,QAAa,GAAK,UACtDhB,GAAkBA,GAAkBmB,QAAa,GAAK,UACtDnB,GAAkBA,GAAkBoB,SAAc,GAAK,WACvDpB,GAAkBA,GAAkBqB,WAAgB,GAAK,aAY7D,SAAWpB,IACPA,GAAOA,GAAOqB,KAAU,GAAK,OAC7BrB,GAAOA,GAAOsB,IAAS,GAAK,MAC5BtB,GAAOA,GAAOuB,IAAS,GAAK,MAC5BvB,GAAOA,GAAOwB,IAAS,GAAK,MAC5BxB,GAAOA,GAAOyB,KAAU,GAAK,OAC7BzB,GAAOA,GAAO0B,MAAW,GAAK,OACjC,CAPD,CAOG1B,KAAWA,GAAS,KAWvB,SAAWC,IACPA,GAAUA,GAAU0B,OAAY,GAAK,SACrC1B,GAAUA,GAAU2B,WAAgB,GAAK,YAC5C,CAHD,CAGG3B,KAAcA,GAAY,KAS7B,SAAWC,IAEPA,GAAiBA,GAAiB2B,OAAY,GAAK,SAEnD3B,GAAiBA,GAAiB4B,YAAiB,GAAK,cAExD5B,GAAiBA,GAAiB6B,KAAU,GAAK,OAEjD7B,GAAiBA,GAAiB8B,MAAW,GAAK,OACrD,CATD,CASG9B,KAAqBA,GAAmB,KAa3C,SAAWC,IAKPA,GAAYA,GAAY6B,MAAW,GAAK,QAKxC7B,GAAYA,GAAY8B,OAAY,GAAK,SAKzC9B,GAAYA,GAAY+B,KAAU,GAAK,OAKvC/B,GAAYA,GAAYtrI,KAAU,GAAK,MAC1C,CArBD,CAqBGsrI,KAAgBA,GAAc,KAWjC,SAAWC,IAMPA,GAAaA,GAAaW,QAAa,GAAK,UAM5CX,GAAaA,GAAa7rhB,MAAW,GAAK,QAK1C6rhB,GAAaA,GAAa+B,KAAU,GAAK,OAKzC/B,GAAaA,GAAagC,YAAiB,GAAK,cAKhDhC,GAAaA,GAAaiC,SAAc,GAAK,WAK7CjC,GAAaA,GAAakC,UAAe,GAAK,YAK9ClC,GAAaA,GAAamC,YAAiB,GAAK,cAKhDnC,GAAaA,GAAaoC,uBAA4B,GAAK,yBAK3DpC,GAAaA,GAAaqC,SAAc,GAAK,WAK7CrC,GAAaA,GAAal7P,SAAc,GAAK,WAK7Ck7P,GAAaA,GAAa96Y,IAAS,IAAM,MAKzC86Y,GAAaA,GAAasC,cAAmB,IAAM,gBAKnDtC,GAAaA,GAAaU,gBAAqB,IAAM,kBAKrDV,GAAaA,GAAaY,cAAmB,IAAM,eACtD,CAzED,CAyEGZ,KAAiBA,GAAe,KAOnC,SAAWC,IACPA,GAAQA,GAAQnmc,OAAY,GAAK,SACjCmmc,GAAQA,GAAQlmc,OAAY,GAAK,SACjCkmc,GAAQA,GAAQjmc,QAAa,GAAK,UAClCimc,GAAQA,GAAQhmc,UAAe,GAAK,YACpCgmc,GAAQA,GAAQ/lc,SAAc,GAAK,WACnC+lc,GAAQA,GAAQ9lc,OAAY,GAAK,SACjC8lc,GAAQA,GAAQ7lc,SAAc,GAAK,UACtC,CARD,CAQG6lc,KAAYA,GAAU,KAoRzB,MAAMsC,GAAsBC,MAC5B,SAASC,GAAc30lB,IACnB,IAAKA,GAAKuylB,iBACN,MAAM,IAAIvxmB,MAAO,6CAA4Cgf,GAAKuylB,gHAGzE,CAqFD,SAASF,GAAoBrylB,GAAM/S,IAC/B,QAASgJ,GAAIhJ,GAAOgJ,IAAI,EAAIA,KACxB,UAAW+J,GAAK/J,IAAO,IACnB,OAAO+J,GAAK/J,IAGpB,MAAM,IAAIjV,MAAM,yCACnB,CAID,SAAS4zmB,GAAYpxkB,IACjB,MAAO2H,GAAG06J,IAAKriK,GAAKhhC,MAAM,KAC1B,MAAO,CAAE46C,OAAQjS,GAAGkS,SAAUwoJ,GACjC,CAgBD,SAASgva,GAAkBp+e,GAAM7mF,GAAQ6C,GAAS,MAC9C,MAAMkxV,GAlIV,SAASmxO,GAAoBrikB,IAEzB,SADa6/jB,OAAgB7/jB,IACjB8/jB,iBACf,CA+HoBuC,CAAoBrikB,IAAQgkF,KAASk7e,GAAcl7e,KAAS,GACvEs+e,GAAepxO,GAAS,GAC9B,MAAe,WAAX/zV,IAA+C,iBAAjBmlkB,GACvBA,GAEJpxO,GAAS,IAAkCltQ,EACrD;;;;;;;;AA6BD,MAAMu+e,GAAqB,wGAErBC,GAAgB,GAChBC,GAAqB,oNAC3B,IAAIC,GAOAC,GAWAC,GA4BJ,SAAS/vb,GAAW38K,GAAOinC,GAAQ6C,GAAQ6ikB,IACvC,IAAIxymB,GA4mBR,SAAS86C,GAAOj1C,IACZ,GAAI8qV,GAAO9qV,IACP,OAAOA,GAEX,GAAqB,iBAAVA,KAAuBioB,MAAMjoB,IACpC,OAAO,IAAI5F,KAAK4F,IAEpB,GAAqB,iBAAVA,GAAoB,CAE3B,GADAA,GAAQA,GAAM4J,OACV,kCAAkCpN,KAAKwD,IAAQ,CAQ/C,MAAOogB,GAAG88K,GAAI,EAAG56J,GAAI,GAAKtiC,GAAMnG,MAAM,KAAKV,IAAK05M,KAASA,IACzD,OAAOvjC,GAAWlvJ,GAAG88K,GAAI,EAAG56J,GAC/B,CACD,MAAMsqkB,GAAW/ilB,WAAW7pB,IAE5B,IAAKioB,MAAMjoB,GAAQ4smB,IACf,OAAO,IAAIxymB,KAAKwymB,IAEpB,IAAIjilB,GACJ,GAAIA,GAAQ3qB,GAAM2qB,MAAM0hlB,IACpB,OAaZ,SAASQ,GAAgBlilB,IACrB,MAAMxwB,GAAO,IAAIC,KAAK,GACtB,IAAI0ymB,GAAS,EACTC,GAAQ,EAEZ,MAAMC,GAAarilB,GAAM,GAAKxwB,GAAK+glB,eAAiB/glB,GAAKs1K,YACnDw9b,GAAatilB,GAAM,GAAKxwB,GAAK+ymB,YAAc/ymB,GAAKi7C,SAElDzqB,GAAM,KACNmilB,GAASzmlB,OAAOsE,GAAM,GAAKA,GAAM,KACjCoilB,GAAQ1mlB,OAAOsE,GAAM,GAAKA,GAAM,MAEpCqilB,GAAW5zmB,KAAKe,GAAMksB,OAAOsE,GAAM,IAAKtE,OAAOsE,GAAM,IAAM,EAAGtE,OAAOsE,GAAM,KAC3E,MAAM6X,GAAInc,OAAOsE,GAAM,IAAM,GAAKmilB,GAC5B5va,GAAI72K,OAAOsE,GAAM,IAAM,GAAKoilB,GAC5BjykB,GAAIzU,OAAOsE,GAAM,IAAM,GAIvBkhW,GAAKr/V,KAAKI,MAA2C,IAArC/C,WAAW,MAAQc,GAAM,IAAM,KACrDsilB,UAAW7zmB,KAAKe,GAAMqoC,GAAG06J,GAAGpiK,GAAG+wV,IACxB1xX,EACV,CAnCkB0ymB,CAAgBlilB,GAE9B,CACD,MAAMxwB,GAAO,IAAIC,KAAK4F,IACtB,IAAK8qV,GAAO3wV,IACR,MAAM,IAAI9B,MAAO,sBAAqB2H,mBAE1C,OAAO7F,EACV,CA/oBc86C,CAAOj1C,IAElBinC,GADoBkmkB,GAAerjkB,GAAQ7C,KACnBA,GACxB,IACItc,GADA/wB,GAAQ,GAEZ,KAAOqtC,IAEH,IADAtc,GAAQ4hlB,GAAmBr/iB,KAAKjmB,KAC5Btc,GAQC,CACD/wB,GAAMka,KAAKmzB,IACX,KACH,CAXU,CACPrtC,GAAQA,GAAMgkB,OAAO+M,GAAMnxB,MAAM,IACjC,MAAMokM,GAAOhkM,GAAMwuD,MACnB,IAAKw1I,GACD,MAEJ32J,GAAS22J,EACZ,CAIA,CAEL,IAAIwva,GAAqBjzmB,GAAK26C,oBAC1B63jB,KACAS,GAAqBC,GAAiBV,GAAUS,IAChDjzmB,GAmkBR,SAASmzmB,GAAuBnzmB,GAAMwymB,GAAUz/jB,IAC5C,MAAMwzD,GAAexzD,IAAU,EAAK,EAC9BkgkB,GAAqBjzmB,GAAK26C,oBAC1By4jB,GAAiBF,GAAiBV,GAAUS,IAClD,OATJ,SAASI,GAAerzmB,GAAMu6C,IAC1Bv6C,UAAO,IAAIC,KAAKD,GAAK2uB,YAChBmtB,WAAW97C,GAAK21K,aAAep7H,IAC7Bv6C,EACV,CAKUqzmB,CAAerzmB,GAAMumG,IAAgB6sgB,GAAiBH,IAChE,CAxkBcE,CAAuBnzmB,GAAMwymB,IAAU,IAElD,IAAIx8lB,GAAO,GACXvW,UAAM2O,QAAQvI,KACV,MAAMytmB,GA8Td,SAASC,GAAiBzmkB,IACtB,GAAI0mkB,GAAa1mkB,IACb,OAAO0mkB,GAAa1mkB,IAExB,IAAIy2e,GACJ,OAAQz2e,QAEC,QACA,SACA,MACDy2e,GAAYkwF,GAAclB,GAAgBmB,KAAMxE,GAAiB4B,aACjE,UACC,OACDvtF,GAAYkwF,GAAclB,GAAgBmB,KAAMxE,GAAiB6B,MACjE,UACC,QACDxtF,GAAYkwF,GAAclB,GAAgBmB,KAAMxE,GAAiB2B,QACjE,UAEC,IACDttF,GAAYowF,GAAWrB,GAASsB,SAAU,EAAG,GAAG,GAAO,GACvD,UAEC,KACDrwF,GAAYowF,GAAWrB,GAASsB,SAAU,EAAG,GAAG,GAAM,GACtD,UAEC,MACDrwF,GAAYowF,GAAWrB,GAASsB,SAAU,EAAG,GAAG,GAAO,GACvD,UAEC,OACDrwF,GAAYowF,GAAWrB,GAASsB,SAAU,EAAG,GAAG,GAAO,GACvD,UAEC,IACDrwF,GAAYswF,GAAwB,GACpC,UAGC,KACDtwF,GAAYswF,GAAwB,GAAG,GACvC,UAGC,MACDtwF,GAAYswF,GAAwB,GACpC,UAEC,OACDtwF,GAAYswF,GAAwB,GACpC,UAEC,QACA,IACDtwF,GAAYowF,GAAWrB,GAASwB,MAAO,EAAG,GAC1C,UACC,SACA,KACDvwF,GAAYowF,GAAWrB,GAASwB,MAAO,EAAG,GAC1C,UAEC,MACDvwF,GAAYkwF,GAAclB,GAAgBwB,OAAQ7E,GAAiB4B,aACnE,UACC,OACDvtF,GAAYkwF,GAAclB,GAAgBwB,OAAQ7E,GAAiB6B,MACnE,UACC,QACDxtF,GAAYkwF,GAAclB,GAAgBwB,OAAQ7E,GAAiB2B,QACnE,UAEC,MACDttF,GACIkwF,GAAclB,GAAgBwB,OAAQ7E,GAAiB4B,YAAa7B,GAAU2B,YAClF,UACC,OACDrtF,GACIkwF,GAAclB,GAAgBwB,OAAQ7E,GAAiB6B,KAAM9B,GAAU2B,YAC3E,UACC,QACDrtF,GACIkwF,GAAclB,GAAgBwB,OAAQ7E,GAAiB2B,OAAQ5B,GAAU2B,YAC7E,UAEC,IACDrtF,GAAYywF,GAAW,GACvB,UACC,KACDzwF,GAAYywF,GAAW,GACvB,UAEC,IACDzwF,GAAYywF,GAAW,GAAG,GAC1B,UAEC,IACDzwF,GAAYowF,GAAWrB,GAASrymB,KAAM,GACtC,UACC,KACDsjhB,GAAYowF,GAAWrB,GAASrymB,KAAM,GACtC,UAEC,QACA,KACDsjhB,GAAYowF,GAAWrB,GAAS/6b,IAAK,GACrC,UACC,MACDgsW,GACIkwF,GAAclB,GAAgB0B,KAAM/E,GAAiB4B,YAAa7B,GAAU2B,YAChF,UACC,OACDrtF,GAAYkwF,GAAclB,GAAgB0B,KAAM/E,GAAiB6B,KAAM9B,GAAU2B,YACjF,UACC,QACDrtF,GACIkwF,GAAclB,GAAgB0B,KAAM/E,GAAiB2B,OAAQ5B,GAAU2B,YAC3E,UACC,SACDrtF,GAAYkwF,GAAclB,GAAgB0B,KAAM/E,GAAiB8B,MAAO/B,GAAU2B,YAClF,UAEC,QACA,SACA,MACDrtF,GAAYkwF,GAAclB,GAAgB0B,KAAM/E,GAAiB4B,aACjE,UACC,OACDvtF,GAAYkwF,GAAclB,GAAgB0B,KAAM/E,GAAiB6B,MACjE,UACC,QACDxtF,GAAYkwF,GAAclB,GAAgB0B,KAAM/E,GAAiB2B,QACjE,UACC,SACDttF,GAAYkwF,GAAclB,GAAgB0B,KAAM/E,GAAiB8B,OACjE,UAEC,QACA,SACA,MACDztF,GAAYkwF,GAAclB,GAAgB2B,WAAYhF,GAAiB4B,aACvE,UACC,OACDvtF,GAAYkwF,GAAclB,GAAgB2B,WAAYhF,GAAiB6B,MACvE,UACC,QACDxtF,GAAYkwF,GAAclB,GAAgB2B,WAAYhF,GAAiB2B,QACvE,UAEC,QACA,SACA,MACDttF,GAAYkwF,GAAclB,GAAgB2B,WAAYhF,GAAiB4B,YAAa7B,GAAU2B,YAAY,GAC1G,UACC,OACDrtF,GAAYkwF,GAAclB,GAAgB2B,WAAYhF,GAAiB6B,KAAM9B,GAAU2B,YAAY,GACnG,UACC,QACDrtF,GAAYkwF,GAAclB,GAAgB2B,WAAYhF,GAAiB2B,OAAQ5B,GAAU2B,YAAY,GACrG,UAEC,QACA,SACA,MACDrtF,GAAYkwF,GAAclB,GAAgB2B,WAAYhF,GAAiB4B,YAAa7B,GAAU0B,QAAQ,GACtG,UACC,OACDptF,GACIkwF,GAAclB,GAAgB2B,WAAYhF,GAAiB6B,KAAM9B,GAAU0B,QAAQ,GACvF,UACC,QACDptF,GAAYkwF,GAAclB,GAAgB2B,WAAYhF,GAAiB2B,OAAQ5B,GAAU0B,QAAQ,GACjG,UAEC,IACDptF,GAAYowF,GAAWrB,GAAS6B,MAAO,GAAG,IAC1C,UACC,KACD5wF,GAAYowF,GAAWrB,GAAS6B,MAAO,GAAG,IAC1C,UAEC,IACD5wF,GAAYowF,GAAWrB,GAAS6B,MAAO,GACvC,UAEC,KACD5wF,GAAYowF,GAAWrB,GAAS6B,MAAO,GACvC,UAEC,IACD5wF,GAAYowF,GAAWrB,GAAS8B,QAAS,GACzC,UACC,KACD7wF,GAAYowF,GAAWrB,GAAS8B,QAAS,GACzC,UAEC,IACD7wF,GAAYowF,GAAWrB,GAAS+B,QAAS,GACzC,UACC,KACD9wF,GAAYowF,GAAWrB,GAAS+B,QAAS,GACzC,UAEC,IACD9wF,GAAYowF,GAAWrB,GAASgC,kBAAmB,GACnD,UACC,KACD/wF,GAAYowF,GAAWrB,GAASgC,kBAAmB,GACnD,UACC,MACD/wF,GAAYowF,GAAWrB,GAASgC,kBAAmB,GACnD,UAEC,QACA,SACA,MACD/wF,GAAYgxF,GAAelC,GAAUrB,OACrC,UAEC,QACDztF,GAAYgxF,GAAelC,GAAUmC,UACrC,UAEC,QACA,SACA,UAEA,QACA,SACA,MACDjxF,GAAYgxF,GAAelC,GAAUoC,UACrC,UAEC,WACA,WAEA,OACDlxF,GAAYgxF,GAAelC,GAAUnB,MACrC,cAEA,OAAO,KAEfsC,UAAa1mkB,IAAUy2e,GAChBA,EACV,CAljB6BgwF,CAAiB1tmB,IACvCmQ,IAAQs9lB,GAAgBA,GAActzmB,GAAM2vC,GAAQsjkB,IACtC,OAAVptmB,GAAmB,IACfA,GAAM7H,QAAQ,WAAY,IAAIA,QAAQ,MAAO,IAA7C,GAELgY,EACV,CAWD,SAASm/J,GAAWC,GAAMC,GAAOr1K,IAK7B,MAAMg1K,GAAU,IAAI/0K,KAAK,GAMzB+0K,UAAQM,YAAYF,GAAMC,GAAOr1K,IAIjCg1K,GAAQ/5H,SAAS,EAAG,EAAG,GAChB+5H,EACV,CACD,SAASg+b,GAAerjkB,GAAQ7C,IAC5B,MAAMu3H,GAzhBV,SAASqwc,GAAY/kkB,IACjB,SAAO6/jB,OAAgB7/jB,IAAQ8/jB,eAClC,CAuhBoBiF,CAAY/kkB,IAE7B,GADAwikB,GAAc9tc,IAAY8tc,GAAc9tc,KAAa,GACjD8tc,GAAc9tc,IAAUv3H,IACxB,OAAOqlkB,GAAc9tc,IAAUv3H,IAEnC,IAAI4xB,GAAc,GAClB,OAAQ5xB,QACC,YACD4xB,GAAc4wiB,GAAoB3/jB,GAAQw/jB,GAAY6B,OACtD,UACC,aACDtyiB,GAAc4wiB,GAAoB3/jB,GAAQw/jB,GAAY8B,QACtD,UACC,WACDvyiB,GAAc4wiB,GAAoB3/jB,GAAQw/jB,GAAY+B,MACtD,UACC,WACDxyiB,GAAc4wiB,GAAoB3/jB,GAAQw/jB,GAAYtrI,MACtD,UACC,YACDnla,GAAcgxiB,GAAoB//jB,GAAQw/jB,GAAY6B,OACtD,UACC,aACDtyiB,GAAcgxiB,GAAoB//jB,GAAQw/jB,GAAY8B,QACtD,UACC,WACDvyiB,GAAcgxiB,GAAoB//jB,GAAQw/jB,GAAY+B,MACtD,UACC,WACDxyiB,GAAcgxiB,GAAoB//jB,GAAQw/jB,GAAYtrI,MACtD,UACC,QACD,MAAM8wI,GAAY3B,GAAerjkB,GAAQ,aACnCilkB,GAAY5B,GAAerjkB,GAAQ,aACzC+uB,GAAcm2iB,GAAelF,GAAwBhgkB,GAAQw/jB,GAAY6B,OAAQ,CAAC2D,GAAWC,KAC7F,UACC,SACD,MAAME,GAAa9B,GAAerjkB,GAAQ,cACpColkB,GAAa/B,GAAerjkB,GAAQ,cAC1C+uB,GAAcm2iB,GAAelF,GAAwBhgkB,GAAQw/jB,GAAY8B,QAAS,CAAC6D,GAAYC,KAC/F,UACC,OACD,MAAMC,GAAWhC,GAAerjkB,GAAQ,YAClCslkB,GAAWjC,GAAerjkB,GAAQ,YACxC+uB,GACIm2iB,GAAelF,GAAwBhgkB,GAAQw/jB,GAAY+B,MAAO,CAAC8D,GAAUC,KACjF,UACC,OACD,MAAMC,GAAWlC,GAAerjkB,GAAQ,YAClCwlkB,GAAWnC,GAAerjkB,GAAQ,YACxC+uB,GACIm2iB,GAAelF,GAAwBhgkB,GAAQw/jB,GAAYtrI,MAAO,CAACqxI,GAAUC,KAGzF,OAAIz2iB,KACAyziB,GAAc9tc,IAAUv3H,IAAU4xB,IAE/BA,EACV,CACD,SAASm2iB,GAAe/2mB,GAAKs3mB,IACzB,OAAIA,KACAt3mB,GAAMA,GAAIE,QAAQ,cAAe,SAAUwyB,GAAO+G,IAC9C,OAAsB,MAAd69kB,IAAsB79kB,MAAO69kB,GAAcA,GAAW79kB,IAAO/G,EACxE,IAEE1yB,EACV,CACD,SAASu3mB,GAAUr0c,GAAKtnC,GAAQ0mQ,GAAY,IAAK3wX,GAAM6lmB,IACnD,IAAIC,GAAM,IACNv0c,GAAM,GAAMs0c,IAAWt0c,IAAO,KAC1Bs0c,GACAt0c,GAAa,EAANA,IAGPA,IAAOA,GACPu0c,GAAMn1O,KAGd,IAAIo1O,GAASn3mB,OAAO2iK,IACpB,KAAOw0c,GAAOv3mB,OAASy7H,IACnB87e,GAAS,IAAMA,GAEnB,OAAI/lmB,KACA+lmB,GAASA,GAAOn2mB,MAAMm2mB,GAAOv3mB,OAASy7H,KAEnC67e,GAAMC,EAChB,CAQD,SAAS7B,GAAWvumB,GAAMwG,GAAM0a,GAAS,EAAG7W,IAAO,EAAO6lmB,IAAU,GAChE,OAAO,SAAUt1mB,GAAM2vC,IACnB,IAAI8zJ,GAgBZ,SAASgya,GAAYhya,GAAMzjM,IACvB,OAAQyjM,SACC6ua,GAASsB,SACV,OAAO5zmB,GAAKq7C,cAAL,KACNi3jB,GAASwB,MACV,OAAO9zmB,GAAKs7C,WAAL,KACNg3jB,GAASrymB,KACV,OAAOD,GAAK27C,UAAL,KACN22jB,GAAS6B,MACV,OAAOn0mB,GAAKg7C,WAAL,KACNs3jB,GAAS8B,QACV,OAAOp0mB,GAAK21K,aAAL,KACN28b,GAAS+B,QACV,OAAOr0mB,GAAKg8C,aAAL,KACNs2jB,GAASgC,kBACV,OAAOt0mB,GAAKk8C,kBAAL,KACNo2jB,GAAS/6b,IACV,OAAOv3K,GAAK07C,SAAL,QAEP,MAAM,IAAIx9C,MAAO,2BAA0BulM,QAEtD,CArCkBgya,CAAYrwmB,GAAMpF,IAI7B,IAHIsmB,GAAS,GAAKm9K,IAAQn9K,MACtBm9K,IAAQn9K,IAERlhB,KAASktmB,GAAS6B,MACL,IAAT1wa,KAAyB,KAAXn9K,KACdm9K,GAAO,YAGNr+L,KAASktmB,GAASgC,kBACvB,OAnBZ,SAASoB,GAAwBj7jB,GAAci/E,IAE3C,OADc27e,GAAU56jB,GAAc,GACzB5K,UAAU,EAAG6pF,GAC7B,CAgBkBg8e,CAAwBjya,GAAM73L,IAEzC,MAAM+pmB,GAAc9F,GAAsBlgkB,GAAQy/jB,GAAakC,WAC/D,OAAO+D,GAAU5xa,GAAM73L,GAAM+pmB,GAAalmmB,GAAM6lmB,GACnD,CACJ,CA0BD,SAAS7B,GAAcrumB,GAAM+M,GAAO01P,GAAOonW,GAAU0B,OAAQiF,IAAW,GACpE,OAAO,SAAU51mB,GAAM2vC,IACnB,OAMR,SAASkmkB,GAAmB71mB,GAAM2vC,GAAQvqC,GAAM+M,GAAO01P,GAAM+tW,IACzD,OAAQxwmB,SACCmtmB,GAAgBwB,OACjB,OAznBZ,SAAS+B,GAAoBnmkB,GAAQomkB,GAAW5jmB,IAC5C,MAAM+K,MAAOsylB,OAAgB7/jB,IAEvBwK,GAASo1jB,GADI,CAACrylB,GAAKuylB,oBAAgCvylB,GAAKuylB,yBACfsG,IAC/C,OAAOxG,GAAoBp1jB,GAAQhoC,GACtC,CAonBkB2jmB,CAAoBnmkB,GAAQk4N,GAAM11P,IAAOnS,GAAKs7C,YAAL,KAC/Ci3jB,GAAgB0B,KACjB,OA7oBZ,SAAS+B,GAAkBrmkB,GAAQomkB,GAAW5jmB,IAC1C,MAAM+K,MAAOsylB,OAAgB7/jB,IAEvB0K,GAAOk1jB,GADI,CAACrylB,GAAKuylB,kBAA8BvylB,GAAKuylB,uBACfsG,IAC3C,OAAOxG,GAAoBl1jB,GAAMloC,GACpC,CAwoBkB6jmB,CAAkBrmkB,GAAQk4N,GAAM11P,IAAOnS,GAAK07C,UAAL,KAC7C62jB,GAAgB2B,WACjB,MAAM+B,GAAej2mB,GAAKg7C,WACpBk7jB,GAAiBl2mB,GAAK21K,aAC5B,GAAIigc,GAAU,CACV,MAAM1vW,GA7YtB,SAASiwW,GAA6BxmkB,IAClC,MAAMzyB,MAAOsylB,OAAgB7/jB,IAC7BkikB,UAAc30lB,KACAA,GAAKuylB,iBAA4B,IAAuD,IACzFzwmB,IAAKmnQ,IACM,iBAATA,GACA2rW,GAAY3rW,IAEhB,CAAC2rW,GAAY3rW,GAAK,IAAK2rW,GAAY3rW,GAAK,KAEtD,CAmY6BgwW,CAA6BxmkB,IACrCszJ,GAlXtB,SAASmza,GAAyBzmkB,GAAQomkB,GAAW5jmB,IACjD,MAAM+K,MAAOsylB,OAAgB7/jB,IAC7BkikB,GAAc30lB,IACd,MAIM+lL,GAAassa,GAJI,CACnBrylB,GAAKuylB,iBAA4B,GACjCvylB,GAAKuylB,iBAA4B,IAEkBsG,KAAc,GACrE,OAAOxG,GAAoBtsa,GAAY9wL,KAAU,EACpD,CAyWkCikmB,CAAyBzmkB,GAAQk4N,GAAM11P,IACpDhI,GAAQ+7P,GAAMhkQ,UAAUikQ,KAC1B,GAAIrnQ,MAAMkuB,QAAQm5O,IAAO,CAErB,MAAOhjQ,GAAMwxC,IAAMwxN,GACby3C,GAAYq4T,IAAgB9ymB,GAAKm3C,OAAS47jB,IAAkB/ymB,GAAKo3C,QACjEsjQ,GAAYo4T,GAAethkB,GAAG2F,OAC/B27jB,KAAiBthkB,GAAG2F,OAAS47jB,GAAiBvhkB,GAAG4F,QAWtD,GAAIp3C,GAAKm3C,MAAQ3F,GAAG2F,OAChB,GAAIsjQ,IAAaC,GACb,OAAO,UAGND,IAAaC,GAClB,OAAO,CAEd,SAEO13C,GAAK7rN,QAAU27jB,IAAgB9vW,GAAK5rN,UAAY27jB,GAChD,OAAO,EAGf,OAAO,IAEX,IAAc,IAAV/rmB,GACA,OAAO84L,GAAW94L,GAEzB,CAED,OA9sBZ,SAASksmB,GAAoB1mkB,GAAQomkB,GAAW5jmB,IAC5C,MAAM+K,MAAOsylB,OAAgB7/jB,IAIvB2mkB,GAAO/G,GAHI,CACbrylB,GAAKuylB,wBAAoCvylB,GAAKuylB,6BAEPsG,IAC3C,OAAOxG,GAAoB+G,GAAMnkmB,GACpC,CAusBkBkkmB,CAAoB1mkB,GAAQk4N,GAAM11P,IAAO8jmB,GAAe,GAAK,EAAI,QACvE1D,GAAgBmB,KACjB,OAzpBZ,SAAS6C,GAAkB5mkB,GAAQx9B,IAG/B,OAAOo9lB,IADDiH,EADOhH,OAAgB7/jB,IACP8/jB,YACet9lB,GACxC,CAqpBkBokmB,CAAkB5mkB,GAAQx9B,IAAOnS,GAAKq7C,eAAiB,EAAI,EAAI,WAOtE,MAAM,IAAIn9C,MAAO,+BADEkH,MAG9B,CAnEcywmB,CAAmB71mB,GAAM2vC,GAAQvqC,GAAM+M,GAAO01P,GAAM+tW,GAC9D,CACJ,CAuED,SAASrB,GAAepimB,IACpB,OAAO,SAAUnS,GAAM2vC,GAAQrpB,IAC3B,MAAMrK,IAAO,EAAKqK,GACZ85W,GAAYyvO,GAAsBlgkB,GAAQy/jB,GAAakC,WACvDh3jB,GAAQr+B,GAAO,EAAIoW,KAAKI,MAAMxW,GAAO,IAAMoW,KAAKG,KAAKvW,GAAO,IAClE,OAAQ9J,SACCkgmB,GAAUrB,MACX,OAAS/0lB,IAAQ,EAAK,IAAM,IAAMo5lB,GAAU/6jB,GAAO,EAAG8lV,IAClDi1O,GAAUhjlB,KAAKsH,IAAI1d,GAAO,IAAK,EAAGmkX,IAAzB,KACZiyO,GAAUoC,SACX,MAAO,OAAUx4lB,IAAQ,EAAK,IAAM,IAAMo5lB,GAAU/6jB,GAAO,EAAG8lV,IAAX,KAClDiyO,GAAUnB,KACX,MAAO,OAAUj1lB,IAAQ,EAAK,IAAM,IAAMo5lB,GAAU/6jB,GAAO,EAAG8lV,IAAa,IACvEi1O,GAAUhjlB,KAAKsH,IAAI1d,GAAO,IAAK,EAAGmkX,IAAzB,KACZiyO,GAAUmC,SACX,OAAe,IAAXlulB,GACO,KAGErK,IAAQ,EAAK,IAAM,IAAMo5lB,GAAU/6jB,GAAO,EAAG8lV,IAAa,IAC/Di1O,GAAUhjlB,KAAKsH,IAAI1d,GAAO,IAAK,EAAGmkX,IAAzB,QAGjB,MAAM,IAAIliY,MAAO,uBAAsBiU,OAElD,CACJ,EA3VD,SAAWkgmB,IACPA,GAAUA,GAAUrB,MAAW,GAAK,QACpCqB,GAAUA,GAAUoC,SAAc,GAAK,WACvCpC,GAAUA,GAAUnB,KAAU,GAAK,OACnCmB,GAAUA,GAAUmC,SAAc,GAAK,UAC1C,CALD,CAKGnC,KAAcA,GAAY,KAE7B,SAAWC,IACPA,GAASA,GAASsB,SAAc,GAAK,WACrCtB,GAASA,GAASwB,MAAW,GAAK,QAClCxB,GAASA,GAASrymB,KAAU,GAAK,OACjCqymB,GAASA,GAAS6B,MAAW,GAAK,QAClC7B,GAASA,GAAS8B,QAAa,GAAK,UACpC9B,GAASA,GAAS+B,QAAa,GAAK,UACpC/B,GAASA,GAASgC,kBAAuB,GAAK,oBAC9ChC,GAASA,GAAS/6b,IAAS,GAAK,KACnC,CATD,CASG+6b,KAAaA,GAAW,KAE3B,SAAWC,IACPA,GAAgBA,GAAgB2B,WAAgB,GAAK,aACrD3B,GAAgBA,GAAgB0B,KAAU,GAAK,OAC/C1B,GAAgBA,GAAgBwB,OAAY,GAAK,SACjDxB,GAAgBA,GAAgBmB,KAAU,GAAK,MAClD,CALD,CAKGnB,KAAoBA,GAAkB,KA2UzC,SAASkE,GAAoBloO,IACzB,OAAOp5N,GAAWo5N,GAASlzV,cAAekzV,GAASjzV,WAAYizV,GAAS5yV,WAN3D,EAMmF4yV,GAAS7yV,UAC5G,CACD,SAASs4jB,GAAWpomB,GAAM8qmB,IAAa,GACnC,OAAO,SAAU12mB,GAAM2vC,IACnB,IAAIpgB,GACJ,GAAImnlB,GAAY,CACZ,MAAMC,GAA4B,IAAI12mB,KAAKD,GAAKq7C,cAAer7C,GAAKs7C,WAAY,GAAGI,SAAW,EACxFmkI,GAAQ7/K,GAAK27C,UACnBpsB,GAAS,EAAI8C,KAAKI,OAAOotJ,GAAQ82b,IAA6B,EACjE,KACI,CACD,MAAMC,GAAYH,GAAoBz2mB,IAGhC62mB,GAnBlB,SAASC,GAAuB1hc,IAC5B,MAAMkib,GAAiBnib,GAAWC,GAHtB,EAGqC,GAAG15H,SACpD,OAAOy5H,GAAWC,GAAM,EAAG,GAAMkib,IAHpB,IAG6Dyf,IAAgBzf,GAC7F,CAgB8Bwf,CAAuBF,GAAUv7jB,eAC9C5hB,GAAOm9kB,GAAUjolB,UAAYkolB,GAAWlolB,UAC9CY,GAAS,EAAI8C,KAAK7E,MAAMiM,GAAO,OAClC,CACD,OAAO47kB,GAAU9llB,GAAQ3jB,GAAMikmB,GAAsBlgkB,GAAQy/jB,GAAakC,WAC7E,CACJ,CAID,SAASuC,GAAwBjomB,GAAM6D,IAAO,GAC1C,OAAO,SAAUzP,GAAM2vC,IAGnB,OAAO0lkB,GAFWoB,GAAoBz2mB,IACFq7C,cACAzvC,GAAMikmB,GAAsBlgkB,GAAQy/jB,GAAakC,WAAY7hmB,GACpG,CACJ,CACD,MAAM+jmB,GAAe,GA0PrB,SAASN,GAAiBV,GAAUwE,IAGhCxE,GAAWA,GAASx0mB,QAAQ,KAAM,IAClC,MAAMi5mB,GAA0Bh3mB,KAAKJ,MAAM,yBAA2B2ymB,IAAY,IAClF,OAAO1klB,MAAMmplB,IAA2BD,GAAWC,EACtD,CAuFD,SAAStmR,GAAO9qV,IACZ,OAAOA,cAAiB5F,OAAS6tB,MAAMjoB,GAAMvF,UAChD;;;;;;;OASD,MAAM42mB,GAAuB,8BAY7B,SAASC,GAA2BtxmB,GAAOopH,GAASt/E,GAAQynkB,GAAaC,GAAeC,GAAYjtJ,IAAY,GAC5G,IAAIktJ,GAAgB,GAChBC,IAAS,EACb,GAAKvplB,SAASpoB,IAGT,CACD,IAAI4xmB,GAgPZ,SAAS7+X,GAAY53E,IACjB,IACkBtnC,GAAQg+e,GACtBvkmB,GAAGw6B,GAAGgqkB,GAFNC,GAASvllB,KAAKsH,IAAIqnI,IAAO,GACzB62c,GAAW,EAmBf,KAhBKH,GAAaE,GAAOh5mB,QAtQT,OAsQiC,IAC7Cg5mB,GAASA,GAAO55mB,QAvQJ,IAuQyB,MAGpCmV,GAAIykmB,GAAOh1X,OAAO,OAAS,GAExB80X,GAAa,IACbA,GAAavkmB,IACjBukmB,KAAeE,GAAOv4mB,MAAM8T,GAAI,GAChCykmB,GAASA,GAAO/nkB,UAAU,EAAG18B,KAExBukmB,GAAa,IAElBA,GAAaE,GAAO35mB,QAGnBkV,GAAI,EArRK,MAqRFykmB,GAAOl5mB,OAAOyU,IAAkBA,MAE5C,GAAIA,MAAOwkmB,GAAQC,GAAO35mB,QAEtBy7H,GAAS,CAAC,GACVg+e,GAAa,MAEZ,CAGD,IADAC,KA9RU,MA+RHC,GAAOl5mB,OAAOi5mB,KACjBA,KAKJ,IAHAD,IAAcvkmB,GACdumH,GAAS,GAEJ/rF,GAAI,EAAGx6B,IAAKwkmB,GAAOxkmB,KAAKw6B,KACzB+rF,GAAO/rF,IAAKzhB,OAAO0rlB,GAAOl5mB,OAAOyU,IAExC,CAED,OAAIukmB,GA5SW,KA6SXh+e,GAASA,GAAOl1E,OAAO,EAAGszjB,IAC1BD,GAAWH,GAAa,EACxBA,GAAa,GAEV,CAAEh+e,UAAQm+e,YAAUH,cAC9B,CAhS0B9+X,CAAY/yO,IAC3Bwkd,KACAotJ,GAqNZ,SAASM,GAAUN,IAEf,GAA+B,IAA3BA,GAAa/9e,OAAO,GACpB,OAAO+9e,GAGX,MAAMO,GAAcP,GAAa/9e,OAAOz7H,OAASw5mB,GAAaC,WAC9D,OAAID,GAAaI,SACbJ,GAAaI,UAAY,GAGL,IAAhBG,GACAP,GAAa/9e,OAAO//G,KAAK,EAAG,GAEP,IAAhBq+lB,IACLP,GAAa/9e,OAAO//G,KAAK,GAE7B89lB,GAAaC,YAAc,GAExBD,EACV,CAzO0BM,CAAUN,KAE7B,IAAIQ,GAAShpf,GAAQgpf,OACjBC,GAAcjpf,GAAQkpf,QACtBC,GAAcnpf,GAAQopf,QAC1B,GAAIf,GAAY,CACZ,MAAM73mB,GAAQ63mB,GAAW9mlB,MAAM0mlB,IAC/B,GAAc,OAAVz3mB,GACA,MAAM,IAAIvB,MAAO,GAAEo5mB,gCAEvB,MAAMgB,GAAa74mB,GAAM,GACnB84mB,GAAkB94mB,GAAM,GACxB+4mB,GAAkB/4mB,GAAM,GACZ,MAAd64mB,KACAL,GAASQ,GAAkBH,KAER,MAAnBC,KACAL,GAAcO,GAAkBF,KAEb,MAAnBC,GACAJ,GAAcK,GAAkBD,IAER,MAAnBD,IAA2BL,GAAcE,KAC9CA,GAAcF,GAErB,EA0QT,SAASpuO,GAAY2tO,GAAcU,GAASE,IACxC,GAAIF,GAAUE,GACV,MAAM,IAAIn6mB,MAAO,gDAA+Ci6mB,mCAAwCE,QAE5G,IAAI3+e,GAAS+9e,GAAa/9e,OACtBs+e,GAAct+e,GAAOz7H,OAASw5mB,GAAaC,WAC/C,MAAMgB,GAAermlB,KAAK9Z,IAAI8Z,KAAK7Z,IAAI2/lB,GAASH,IAAcK,IAE9D,IAAIM,GAAUD,GAAejB,GAAaC,WACtCkB,GAAQl/e,GAAOi/e,IACnB,GAAIA,GAAU,EAAG,CAEbj/e,GAAOl1E,OAAOnyB,KAAK7Z,IAAIi/lB,GAAaC,WAAYiB,KAEhD,QAAShrkB,GAAIgrkB,GAAShrkB,GAAI+rF,GAAOz7H,OAAQ0vC,KACrC+rF,GAAO/rF,IAAK,CAEnB,KACI,CAEDqqkB,GAAc3llB,KAAK7Z,IAAI,EAAGw/lB,IAC1BP,GAAaC,WAAa,EAC1Bh+e,GAAOz7H,OAASo0B,KAAK7Z,IAAI,EAAGmgmB,GAAUD,GAAe,GACrDh/e,GAAO,GAAK,EACZ,QAASvmH,GAAI,EAAGA,GAAIwlmB,GAASxlmB,KACzBumH,GAAOvmH,IAAK,CACnB,CACD,GAAIylmB,IAAS,EACT,GAAID,GAAU,EAAI,EAAG,CACjB,QAAStha,GAAI,EAAGA,GAAIsha,GAAStha,KACzB39E,GAAOj4D,QAAQ,GACfg2iB,GAAaC,aAEjBh+e,GAAOj4D,QAAQ,GACfg2iB,GAAaC,YAChB,MAEGh+e,GAAOi/e,GAAU,KAIzB,KAAOX,GAAc3llB,KAAK7Z,IAAI,EAAGkgmB,IAAeV,KAC5Ct+e,GAAO//G,KAAK,GAChB,IAAIk/lB,GAAqC,IAAjBH,GAGxB,MAAMI,GAASX,GAAUV,GAAaC,WAEhCqB,GAAQr/e,GAAOi7G,YAAY,SAAUokY,GAAO5wkB,GAAGh1B,GAAGumH,IACpDvxF,WAAQ4wkB,GACRr/e,GAAOvmH,IAAKg1B,GAAI,GAAKA,GAAIA,GAAI,GACzB0wkB,KAEkB,IAAdn/e,GAAOvmH,KAAYA,IAAK2lmB,GACxBp/e,GAAOzrE,MAGP4qjB,IAAoB,GAGrB1wkB,IAAK,GAAK,EAAI,CACxB,EAAE,GACC4wkB,KACAr/e,GAAOj4D,QAAQs3iB,IACftB,GAAaC,aAEpB,CA3UO5tO,CAAY2tO,GAAcS,GAAaE,IACvC,IAAI1+e,GAAS+9e,GAAa/9e,OACtBg+e,GAAaD,GAAaC,WAC9B,MAAMG,GAAWJ,GAAaI,SAC9B,IAAI7uO,GAAW,GAGf,IAFAwuO,GAAS99e,GAAOykD,MAAMh2I,KAAMA,IAErBuvkB,GAAaO,GAAQP,KACxBh+e,GAAOj4D,QAAQ,GAGnB,KAAOi2iB,GAAa,EAAGA,KACnBh+e,GAAOj4D,QAAQ,GAGfi2iB,GAAa,EACb1uO,GAAWtvQ,GAAOl1E,OAAOkzjB,GAAYh+e,GAAOz7H,SAG5C+qY,GAAWtvQ,GACXA,GAAS,CAAC,IAGd,MAAM1vF,GAAS,GAIf,IAHI0vF,GAAOz7H,QAAUgxH,GAAQ+pf,QACzBhvkB,GAAOy3B,QAAQi4D,GAAOl1E,QAAQyqE,GAAQ+pf,OAAQt/e,GAAOz7H,QAAQqB,KAAK,KAE/Do6H,GAAOz7H,OAASgxH,GAAQgqf,OAC3BjvkB,GAAOy3B,QAAQi4D,GAAOl1E,QAAQyqE,GAAQgqf,MAAOv/e,GAAOz7H,QAAQqB,KAAK,KAEjEo6H,GAAOz7H,QACP+rC,GAAOy3B,QAAQi4D,GAAOp6H,KAAK,KAE/Bi4mB,GAAgBvtkB,GAAO1qC,KAAKuwmB,GAAsBlgkB,GAAQynkB,KAEtDpuO,GAAS/qY,SACTs5mB,IAAiB1H,GAAsBlgkB,GAAQ0nkB,IAAiBruO,GAAS1pY,KAAK,KAE9Eu4mB,KACAN,IAAiB1H,GAAsBlgkB,GAAQy/jB,GAAamC,aAAe,IAAMsG,GAExF,MAxEGN,GAAgB1H,GAAsBlgkB,GAAQy/jB,GAAal7P,UAyE/D,OACIqjQ,GADA1xmB,GAAQ,IAAM2xmB,GACEvof,GAAQiqf,OAAS3B,GAAgBtof,GAAQkqf,OAGzClqf,GAAQmqf,OAAS7B,GAAgBtof,GAAQoqf,OAEtD9B,EACV,CA0BD,SAAS+B,GAAezzmB,GAAO8pC,GAAQkxV,GAAU04O,GAAcjC,IAC3D,MACMrof,GAAUuqf,GADDvJ,GAAsBtgkB,GAAQo/jB,GAAkBoB,UACrBN,GAAsBlgkB,GAAQy/jB,GAAakC,YACrFrif,UAAQkpf,QAt3BZ,SAASsB,GAA0B9lf,IAC/B,IAAI+F,GACJ,MAAMmnQ,GAAWguO,GAAcl7e,IAC/B,OAAIktQ,KACAnnQ,GAASmnQ,GAAS,IAEG,iBAAXnnQ,GAAsBA,GAjBF,CAkBrC,CA+2BqB+/e,CAA0BF,IAC5Ctqf,GAAQopf,QAAUppf,GAAQkpf,QACdhB,GAA2BtxmB,GAAOopH,GAASt/E,GAAQy/jB,GAAaY,cAAeZ,GAAaU,gBAAiBwH,IAEpHt5mB,QA1Ha,OA0HU6iY,IAEvB7iY,QA5Ha,OA4HU,IAKvByR,MACR,CAgDD,SAAS+pmB,GAAkB1skB,GAAQszV,GAAY,KAC3C,MAAMvhW,GAAI,CACNo5kB,OAAQ,EACRE,QAAS,EACTE,QAAS,EACTe,OAAQ,GACRC,OAAQ,GACRH,OAAQ,GACRC,OAAQ,GACRF,MAAO,EACPD,OAAQ,GAENU,GAAe5skB,GAAOptC,MAjMZ,KAkMVk7D,GAAW8+iB,GAAa,GACxBh+iB,GAAWg+iB,GAAa,GACxBC,IAAkD,IAAlC/+iB,GAASh8D,QAtMf,KAuMZg8D,GAASl7D,MAvMG,KAwMZ,CACIk7D,GAAS/qB,UAAU,EAAG+qB,GAASy7J,YAxMzB,KAwMkD,GACxDz7J,GAAS/qB,UAAU+qB,GAASy7J,YAzMtB,KAyM+C,IACtDsyK,GAAUgxO,GAAc,GAAIvvO,GAAWuvO,GAAc,IAAM,GAClE96kB,GAAEu6kB,OAASzwO,GAAQ94V,UAAU,EAAG84V,GAAQ/pY,QAxMzB,MAyMf,QAASuU,GAAI,EAAGA,GAAIi3X,GAASnsY,OAAQkV,KAAK,CACtC,MAAMkjU,GAAK+zD,GAAS1rY,OAAOyU,IA7MjB,MA8MNkjU,GACAx3S,GAAEs5kB,QAAUt5kB,GAAEw5kB,QAAUllmB,GAAI,EA5MrB,MA8MFkjU,GACLx3S,GAAEw5kB,QAAUllmB,GAAI,EAGhB0rB,GAAEw6kB,QAAUhjS,EAEnB,CACD,MAAMrsS,GAAS2+V,GAAQjpY,MAtNT,KAyNd,GAFAm/B,GAAEo6kB,MAAQjvkB,GAAO,GAAKA,GAAO,GAAG/rC,OAAS,EACzC4gC,GAAEm6kB,OAAUhvkB,GAAO,IAAMA,GAAO,IAAOA,GAAO,IAAMA,GAAO,IAAI/rC,OAAS,EACpEy9D,GAAU,CACV,MAAMk+iB,GAAWh/iB,GAAS38D,OAAS4gC,GAAEu6kB,OAAOn7mB,OAAS4gC,GAAEw6kB,OAAOp7mB,OAAQimC,GAAMw3B,GAAS98D,QAzN1E,KA0NXigC,GAAEq6kB,OAASx9iB,GAAS7rB,UAAU,EAAG3L,IAAKlmC,QAAQ,KAAM,IACpD6gC,GAAEs6kB,OAASz9iB,GAASr8D,MAAM6kC,GAAM01kB,IAAU57mB,QAAQ,KAAM,GAC3D,MAEG6gC,GAAEq6kB,OAAS94O,GAAYvhW,GAAEu6kB,OACzBv6kB,GAAEs6kB,OAASt6kB,GAAEw6kB,OAEjB,OAAOx6kB,EACV,CAmJD,SAAS45kB,GAAkBzimB,IACvB,MAAMuZ,GAASgF,SAASve,IACxB,GAAI8X,MAAMyB,IACN,MAAM,IAAIrxB,MAAM,wCAA0C8X,IAE9D,OAAOuZ,EACV;;;;;;;OAYD,MAAMsqlB,IAiBN,SAASC,GAAkBj0mB,GAAOk0mB,GAAOC,GAAgBrqkB,IACrD,IAAIpY,GAAO,IAAG1xB,KAKd,GAJIk0mB,GAAMn7mB,QAAQ24B,KAAO,IAGzBA,GAAMyilB,GAAeF,kBAAkBj0mB,GAAO8pC,IAC1CoqkB,GAAMn7mB,QAAQ24B,KAAO,GACrB,OAAOA,GAEX,GAAIwilB,GAAMn7mB,QAAQ,UAAW,EACzB,MAAO,QAEX,MAAM,IAAIV,MAAO,sCAAqC2H,MACzD,CA5BDg0mB,GAAen5mB,UAAf,4BAA2Gm5mB,GAA3G,EACAA,GAAej5mB,WAx8EoFD,MAw8EnG,OAA+Gk5mB,GAA/Gh5mB,sDAAgK8uC,GAx8E7DhvC,MAw8E0H2jK,OAA7Np8H,GAA2K,IAAI+xkB,GAAqBtqkB,KAApMzH,OAAgKyH,EAAhK,aAA2I,SAiC3I,MAAMsqkB,WAA6BJ,GAC/Bp8mB,YAAYkyC,IACR/zB,QACAje,KAAKgyC,OAASA,EACjB,CACDmqkB,kBAAkBj0mB,GAAO8pC,IAErB,OADegikB,GAAoBhikB,IAAUhyC,KAAKgyC,OAAnCgikB,CAA2C9rmB,KAA3C,KAENmpmB,GAAOqB,KACR,MAAO,YACNrB,GAAOsB,IACR,MAAO,WACNtB,GAAOuB,IACR,MAAO,WACNvB,GAAOwB,IACR,MAAO,WACNxB,GAAOyB,KACR,MAAO,eAEP,MAAO,QAElB;;;;;;;;AA2BL,SAASyJ,GAAmBh9lB,GAAMmnJ,GAAU81c,IACxC,SAAOC,OAAoBl9lB,GAAMmnJ,GAAU81c,GAC9C;;;;;;;OASD,SAASE,GAAiBC,GAAWl1mB,IACjCA,GAAOm1mB,mBAAmBn1mB,IAC1B,UAAWo1mB,MAAUF,GAAU56mB,MAAM,KAAM,CACvC,MAAM+6mB,GAAUD,GAAO57mB,QAAQ,MACxB87mB,GAAYC,KAA0B,GAAXF,GAAgB,CAACD,GAAQ,IAAM,CAACA,GAAOn7mB,MAAM,EAAGo7mB,IAAUD,GAAOn7mB,MAAMo7mB,GAAU,IACnH,GAAIC,GAAWjrmB,SAAWrK,GACtB,OAAOvG,mBAAmB87mB,GAEjC,CACD,OAAO,IACV;;;;;;;OA9CDV,GAAqBv5mB,UAArB,4BAAiHu5mB,IAhgFdt5mB,MAggFoD2jK,OAAvJ,EACA21c,GAAqBr5mB,WAjgF8ED,MAigFnG,OAAqHs5mB,GAArHp5mB,QAAqHo5mB,GAArH,YAkFA,MAAMW,GACFn9mB,YAAYo9mB,GAAkBC,GAAkBC,GAAOt2G,IACnD9mgB,KAAKk9mB,iBAAmBA,GACxBl9mB,KAAKm9mB,iBAAmBA,GACxBn9mB,KAAKo9mB,MAAQA,GACbp9mB,KAAK8mgB,UAAYA,GACjB9mgB,KAAKq9mB,gBAAkB,KACvBr9mB,KAAKs9mB,gBAAkB,KACvBt9mB,KAAKu9mB,gBAAkB,GACvBv9mB,KAAKw9mB,UAAY,IACpB,CACGC,UAAMv1mB,IACNlI,KAAK09mB,eAAe19mB,KAAKu9mB,iBACzBv9mB,KAAKu9mB,gBAAmC,iBAAVr1mB,GAAqBA,GAAMnG,MAAM,OAAS,GACxE/B,KAAK29mB,cAAc39mB,KAAKu9mB,iBACxBv9mB,KAAK29mB,cAAc39mB,KAAKw9mB,UAC3B,CACGI,YAAQ11mB,IACRlI,KAAK09mB,eAAe19mB,KAAKw9mB,WACzBx9mB,KAAK29mB,cAAc39mB,KAAKu9mB,iBACxBv9mB,KAAKq9mB,gBAAkB,KACvBr9mB,KAAKs9mB,gBAAkB,KACvBt9mB,KAAKw9mB,UAA6B,iBAAVt1mB,GAAqBA,GAAMnG,MAAM,OAASmG,GAC9DlI,KAAKw9mB,eACDK,OAAoB79mB,KAAKw9mB,WACzBx9mB,KAAKq9mB,gBAAkBr9mB,KAAKk9mB,iBAAiB73lB,KAAKrlB,KAAKw9mB,WAAWrxlB,SAGlEnsB,KAAKs9mB,gBAAkBt9mB,KAAKm9mB,iBAAiB93lB,KAAKrlB,KAAKw9mB,WAAWrxlB,SAG7E,CACD67J,YACI,GAAIhoL,KAAKq9mB,gBAAiB,CACtB,MAAMS,GAAkB99mB,KAAKq9mB,gBAAgBvhlB,KAAK97B,KAAKw9mB,WACnDM,IACA99mB,KAAK+9mB,sBAAsBD,GAElC,SACQ99mB,KAAKs9mB,gBAAiB,CAC3B,MAAMU,GAAkBh+mB,KAAKs9mB,gBAAgBxhlB,KAAK97B,KAAKw9mB,WACnDQ,IACAh+mB,KAAKi+mB,sBAAsBD,GAElC,CACJ,CACDC,sBAAsBhymB,IAClBA,GAAQiymB,iBAAkB71b,IAAWroL,KAAKm+mB,aAAa91b,GAAOzuJ,IAAKyuJ,GAAOznK,eAC1E3U,GAAQmymB,mBAAoB/1b,IAAWroL,KAAKm+mB,aAAa91b,GAAOzuJ,IAAKyuJ,GAAOznK,eAC5E3U,GAAQoymB,mBAAoBh2b,KACpBA,GAAOz+K,eACP5J,KAAKm+mB,aAAa91b,GAAOzuJ,KAAK,EAA9B,EAGX,CACDmklB,sBAAsB9xmB,IAClBA,GAAQiymB,iBAAkB71b,KACtB,GAA2B,iBAAhBA,GAAO7hK,KAId,MAAM,IAAIjmB,MAAO,oEAAgE+9mB,OAAWj2b,GAAO7hK,SAHnGxmB,KAAKm+mB,aAAa91b,GAAO7hK,MAAM,EAGzB,GAGdva,GAAQoymB,mBAAoBh2b,IAAWroL,KAAKm+mB,aAAa91b,GAAO7hK,MAAM,GACzE,CASDm3lB,cAAcY,IACNA,KACIp9mB,MAAMkuB,QAAQkvlB,KAAgBA,cAAuBjjlB,IACrDijlB,GAAY9tmB,QAASgtmB,IAAUz9mB,KAAKm+mB,aAAaV,IAAO,IAGxDp+lB,OAAOsa,KAAK4klB,IAAa9tmB,QAAQgtmB,IAASz9mB,KAAKm+mB,aAAaV,KAASc,GAAYd,MAG5F,CAKDC,eAAea,IACPA,KACIp9mB,MAAMkuB,QAAQkvlB,KAAgBA,cAAuBjjlB,IACrDijlB,GAAY9tmB,QAASgtmB,IAAUz9mB,KAAKm+mB,aAAaV,IAAO,IAGxDp+lB,OAAOsa,KAAK4klB,IAAa9tmB,QAAQgtmB,IAASz9mB,KAAKm+mB,aAAaV,IAAO,IAG9E,CACDU,aAAaV,GAAO/9d,KAChB+9d,GAAQA,GAAM3rmB,SAEV2rmB,GAAM17mB,MAAM,QAAQ0O,QAAQgtmB,KACpB/9d,GACA1/I,KAAK8mgB,UAAU10f,SAASpS,KAAKo9mB,MAAMjxmB,cAAesxmB,IAGlDz9mB,KAAK8mgB,UAAU9zf,YAAYhT,KAAKo9mB,MAAMjxmB,cAAesxmB,GAArD,EAIf,EAELR,GAAQl6mB,UAAR,4BAAoGk6mB,IAnsFDj6mB,MAmsF0BA,OAnsF1BA,MAmsFyDA,OAnsFzDA,MAmsFwFA,OAnsFxFA,MAmsFkHA,OAArN,EACAi6mB,GAAQ3pmB,UApsF2FtQ,MAosFnG,MAAwFi6mB,GAAxF1pmB;;;;;;;;AAiFA,MAAMirmB,GACF1+mB,YAAY2+mB,IACRz+mB,KAAKy+mB,kBAAoBA,GACzBz+mB,KAAK0+mB,kBAAoB,IAC5B,CAEDrumB,YAAYpE,IACR,MAAQwymB,kBAAmBlnmB,GAAkBonmB,0BAA2B14mB,GAAU24mB,iCAAkCC,IAAqB7+mB,KAGzI,GAFAuX,GAAiB4jB,QACjBn7B,KAAKuwO,mBAAgBx7N,EACjB/U,KAAK0+mB,kBAAmB,CACxB,MAAM74b,GAAW7lL,KAAK8+mB,2BAA6BvnmB,GAAiBo0M,gBAChE1/M,GAAQ0ymB,2BAAgC1ymB,GAAQ2ymB,oCAC5C5+mB,KAAK++mB,YACL/+mB,KAAK++mB,WAAW5xlB,UAEhBntB,KAAK++mB,WADL94mB,IACK84mB,EAAaC,OAAe/4mB,GAAUg5mB,GAAkBp5b,KAExDg5b,GACaA,GAAgB1ylB,OAAO8ylB,GAAkBp5b,UAGzC9wK,GAG1B/U,KAAKuwO,cAAgBh5N,GAAiB60M,gBAAgBpsN,KAAK0+mB,kBAAmB,CAC1ElymB,MAAO+K,GAAiBjX,OACxBulL,YACAq5b,YAAal/mB,KAAK++mB,WAClBI,iBAAkBn/mB,KAAKo/mB,0BAE9B,CACJ,CAEDvumB,cACQ7Q,KAAK++mB,YACL/+mB,KAAK++mB,WAAW5xlB,SACvB,EAsBL,SAAS8xlB,GAAkBp5b,IAEvB,OADuBA,GAAS9lK,IAAIs/lB,OACdx5b,QACzB;;;;;;;OAvBD24b,GAAkBz7mB,UAAlB,4BAA8Gy7mB,IA5zFXx7mB,MA4zF8CA,OAAjJ,EACAw7mB,GAAkBlrmB,UA7zFiFtQ,MA6zFnG,MAAkGw7mB,GAAlGjrmB,mVA7zFmGvQ,SAg2FnG,MAAMs8mB,GACFx/mB,YAAYynL,GAAWg4b,GAAS/ymB,GAAOgoC,IACnCx0C,KAAKunL,UAAYA,GACjBvnL,KAAKu/mB,QAAUA,GACfv/mB,KAAKwM,MAAQA,GACbxM,KAAKw0C,MAAQA,EAChB,CACGz+B,YACA,OAAsB,IAAf/V,KAAKwM,KACf,CACGwJ,WACA,OAAOhW,KAAKwM,QAAUxM,KAAKw0C,MAAQ,CACtC,CACGioF,WACA,OAAOz8H,KAAKwM,MAAQ,GAAM,CAC7B,CACG6uH,UACA,OAAQr7H,KAAKy8H,IAChB,EAoGL,MAAM+if,GACF1/mB,YAAY4nL,GAAgBz3F,GAAW03F,IACnC3nL,KAAK0nL,eAAiBA,GACtB1nL,KAAKiwF,UAAYA,GACjBjwF,KAAK2nL,SAAWA,GAChB3nL,KAAKy/mB,SAAW,KAChBz/mB,KAAK0/mB,eAAgB,EACrB1/mB,KAAK4nL,QAAU,IAClB,CAKG23b,YAAQA,IACRv/mB,KAAKy/mB,SAAWF,GAChBv/mB,KAAK0/mB,eAAgB,CACxB,CAmBGC,iBAAanvlB,IAQbxwB,KAAK4/mB,WAAapvlB,EACrB,CACGmvlB,mBACA,OAAO3/mB,KAAK4/mB,UACf,CAKGC,kBAAc33mB,IAIVA,KACAlI,KAAKiwF,UAAY/nF,GAExB,CAKD8/K,YACI,GAAIhoL,KAAK0/mB,cAAe,CACpB1/mB,KAAK0/mB,eAAgB,EAErB,MAAMx3mB,GAAQlI,KAAKy/mB,UACdz/mB,KAAK4nL,SAAW1/K,KAmBblI,KAAK4nL,QAAU5nL,KAAK2nL,SAAStiK,KAAKnd,IAAOikB,OAAOnsB,KAAK2/mB,cAGhE,CACD,GAAI3/mB,KAAK4nL,QAAS,CACd,MAAM37K,GAAUjM,KAAK4nL,QAAQ9rJ,KAAK97B,KAAKy/mB,UACnCxzmB,IACAjM,KAAKioL,cAAch8K,GAC1B,CACJ,CACDg8K,cAAch8K,IACV,MAAM6zmB,GAAgB9/mB,KAAK0nL,eAC3Bz7K,GAAQm8K,iBAAiB,CAAC5hK,GAAMu5lB,GAAuB9ie,MACnD,GAA0B,MAAtBz2H,GAAKmpe,cAILmwH,GAAcjomB,mBAAmB7X,KAAKiwF,UAAW,IAAIqvhB,GAAe94lB,GAAKA,KAAMxmB,KAAKy/mB,UAAU,GAAI,GAAsB,OAAjBxie,QAAwBloI,EAAYkoI,SAA3I,GAEqB,MAAhBA,GACL6ie,GAAcnomB,OAAiC,OAA1BoomB,QAAiChrmB,EAAYgrmB,SAAlE,GAE+B,OAA1BA,GAAgC,CACrC,MAAM9je,GAAO6je,GAAc//lB,IAAIggmB,IAC/BD,GAAc9hlB,KAAKi+G,GAAMgB,IACzB+ie,GAAgB/je,GAAMz1H,GACzB,IAEL,QAAShR,GAAI,EAAGyqmB,GAAOH,GAAcx/mB,OAAQkV,GAAIyqmB,GAAMzqmB,KAAK,CAExD,MAAMiC,GADUqomB,GAAc//lB,IAAIvK,IACViC,QACxBA,GAAQjL,MAAQgJ,GAChBiC,GAAQ+8B,MAAQyrkB,GAChBxomB,GAAQ8nmB,QAAUv/mB,KAAKy/mB,QAC1B,CACDxzmB,GAAQi0mB,sBAAuB73b,KAE3B23b,GADgBF,GAAc//lB,IAAIsoK,GAAOprC,cAChBorC,GAAV,EAEtB,CAO4BtiL,8BAAC4O,GAAKnB,IAC/B,OAAO,CACV,EAiBL,SAASwsmB,GAAgB/je,GAAMosC,IAC3BpsC,GAAKxkI,QAAQ8vK,UAAYc,GAAO7hK,IACnC,CAjBDg5lB,GAAQz8mB,UAAR,4BAAoGy8mB,IAhmGDx8mB,MAgmG0BA,OAhmG1BA,MAgmG0DA,OAhmG1DA,MAgmGqFA,OAAxL,EACAw8mB,GAAQlsmB,UAjmG2FtQ,MAimGnG,MAAwFw8mB,GAAxFjsmB;;;;;;;;AAuKA,MAAM4smB,GACFrgnB,YAAY4nL,GAAgB9vK,IACxB5X,KAAK0nL,eAAiBA,GACtB1nL,KAAKukW,SAAW,IAAI67Q,GACpBpgnB,KAAKqgnB,iBAAmB,KACxBrgnB,KAAKsgnB,iBAAmB,KACxBtgnB,KAAKugnB,aAAe,KACpBvgnB,KAAKwgnB,aAAe,KACpBxgnB,KAAKqgnB,iBAAmBzomB,EAC3B,CAIG6omB,SAAKtpT,IACLn3T,KAAKukW,SAASh9K,UAAYvnL,KAAKukW,SAASk8Q,KAAOtpT,GAC/Cn3T,KAAK+7I,aACR,CAIG2ke,aAAS9omB,IACT+omB,GAAe,WAAY/omB,IAC3B5X,KAAKqgnB,iBAAmBzomB,GACxB5X,KAAKugnB,aAAe,KACpBvgnB,KAAK+7I,aACR,CAIG6ke,aAAShpmB,IACT+omB,GAAe,WAAY/omB,IAC3B5X,KAAKsgnB,iBAAmB1omB,GACxB5X,KAAKwgnB,aAAe,KACpBxgnB,KAAK+7I,aACR,CACDA,cACQ/7I,KAAKukW,SAASh9K,UACTvnL,KAAKugnB,eACNvgnB,KAAK0nL,eAAevsJ,QACpBn7B,KAAKwgnB,aAAe,KAChBxgnB,KAAKqgnB,mBACLrgnB,KAAKugnB,aACDvgnB,KAAK0nL,eAAe7vK,mBAAmB7X,KAAKqgnB,iBAAkBrgnB,KAAKukW,YAK1EvkW,KAAKwgnB,eACNxgnB,KAAK0nL,eAAevsJ,QACpBn7B,KAAKugnB,aAAe,KAChBvgnB,KAAKsgnB,mBACLtgnB,KAAKwgnB,aACDxgnB,KAAK0nL,eAAe7vK,mBAAmB7X,KAAKsgnB,iBAAkBtgnB,KAAKukW,WAItF,CAO4Bx+V,8BAAC4O,GAAKnB,IAC/B,OAAO,CACV,EAEL2smB,GAAKp9mB,UAAL,4BAAiGo9mB,IA30GEn9mB,MA20GoBA,OA30GpBA,MA20GoDA,OAAvJ,EACAm9mB,GAAK7smB,UA50G8FtQ,MA40GnG,MAAqFm9mB,GAArF5smB,wGAiBA,MAAM6smB,GACFtgnB,cACIE,KAAKunL,UAAY,KACjBvnL,KAAKygnB,KAAO,IACf,EAEL,SAASE,GAAe/vlB,GAAUhZ,IAE9B,GADgCA,KAAeA,GAAYC,mBAEvD,MAAM,IAAItX,MAAO,GAAEqwB,8CAAiD0tlB,OAAW1mmB,QAEtF;;;;;;;OASD,MAAMipmB,GACF/gnB,YAAY2+mB,GAAmBqC,IAC3B9gnB,KAAKy+mB,kBAAoBA,GACzBz+mB,KAAK8gnB,aAAeA,GACpB9gnB,KAAK+gnB,UAAW,CACnB,CACD50lB,SACInsB,KAAK+gnB,UAAW,EAChB/gnB,KAAKy+mB,kBAAkB5mmB,mBAAmB7X,KAAK8gnB,aAClD,CACD3zlB,UACIntB,KAAK+gnB,UAAW,EAChB/gnB,KAAKy+mB,kBAAkBtjlB,OAC1B,CACD6llB,aAAahyS,IACLA,KAAYhvU,KAAK+gnB,SACjB/gnB,KAAKmsB,UAEC6iT,IAAWhvU,KAAK+gnB,UACtB/gnB,KAAKmtB,SAEZ,EAoEL,MAAM8zlB,GACFnhnB,cACIE,KAAKkhnB,cAAe,EACpBlhnB,KAAKmhnB,WAAa,EAClBnhnB,KAAKohnB,oBAAsB,EAC3BphnB,KAAKqhnB,mBAAoB,CAC5B,CACGC,aAASz3mB,IACT7J,KAAKuhnB,UAAY13mB,GACO,IAApB7J,KAAKmhnB,YACLnhnB,KAAKwhnB,qBAAoB,EAEhC,CAEDC,WACI,OAAOzhnB,KAAKmhnB,YACf,CAEDO,YAAYzle,IACHj8I,KAAK2hnB,gBACN3hnB,KAAK2hnB,cAAgB,IAEzB3hnB,KAAK2hnB,cAAc3lmB,KAAKigI,GAC3B,CAED2le,WAAW15mB,IACP,MAAM0+B,GAAU1+B,IAASlI,KAAKuhnB,UAC9B,YAAKF,kBAAoBrhnB,KAAKqhnB,mBAAqBz6kB,GACnD5mC,KAAKohnB,sBACDphnB,KAAKohnB,sBAAwBphnB,KAAKmhnB,aAClCnhnB,KAAKwhnB,qBAAqBxhnB,KAAKqhnB,mBAC/BrhnB,KAAKohnB,oBAAsB,EAC3BphnB,KAAKqhnB,mBAAoB,GAEtBz6kB,EACV,CACD46kB,oBAAoBK,IAChB,GAAI7hnB,KAAK2hnB,eAAiBE,KAAe7hnB,KAAKkhnB,aAAc,CACxDlhnB,KAAKkhnB,aAAeW,GACpB,QAASrsmB,GAAI,EAAGA,GAAIxV,KAAK2hnB,cAAcrhnB,OAAQkV,KACvBxV,KAAK2hnB,cAAcnsmB,IAC3BwrmB,aAAaa,GAEhC,CACJ,EAELZ,GAASl+mB,UAAT,4BAAqGk+mB,GAArG,EACAA,GAAS3tmB,UAz/G0FtQ,MAy/GnG,MAAyFi+mB,GAAzF1tmB,4EA2CA,MAAMuumB,GACFhinB,YAAYggnB,GAAelomB,GAAa0pmB,IACpCthnB,KAAKshnB,SAAWA,GAIhBA,GAASG,WACTzhnB,KAAK47I,MAAQ,IAAIile,GAAWf,GAAelomB,GAC9C,CAKDowK,YACIhoL,KAAK47I,MAAMole,aAAahhnB,KAAKshnB,SAASM,WAAW5hnB,KAAK+hnB,cACzD,EAELD,GAAa/+mB,UAAb,4BAAyG++mB,IArjHN9+mB,MAqjHoCA,OArjHpCA,MAqjHoEA,OArjHpEA,MAqjH+Fi+mB,GAAlM,KACAa,GAAaxumB,UAtjHsFtQ,MAsjHnG,MAA6F8+mB,GAA7FvumB,wFA4BA,MAAMyumB,GACFlinB,YAAYggnB,GAAelomB,GAAa0pmB,IAIpCA,GAASI,YAAY,IAAIb,GAAWf,GAAelomB,IACtD,EAELoqmB,GAAgBj/mB,UAAhB,4BAA4Gi/mB,IA1lHTh/mB,MA0lH0CA,OA1lH1CA,MA0lH0EA,OA1lH1EA,MA0lHqGi+mB,GAAxM,KACAe,GAAgB1umB,UA3lHmFtQ,MA2lHnG,MAAgGg/mB,GAAhGzumB;;;;;;;;AAwDA,MAAM0umB,GACFninB,YAAYoinB,IACRlinB,KAAKkinB,cAAgBA,GACrBlinB,KAAKminB,WAAa,EACrB,CACGC,aAASl6mB,IACTlI,KAAKqinB,aAAen6mB,GACpBlI,KAAK+7I,aACR,CACDume,QAAQp6mB,GAAOq6mB,IACXvinB,KAAKminB,WAAWj6mB,IAASq6mB,EAC5B,CACDxme,cACI/7I,KAAKwinB,cACL,MAAMpG,GAAQ/8lB,OAAOsa,KAAK35B,KAAKminB,YACzBvolB,GAAMuilB,GAAkBn8mB,KAAKqinB,aAAcjG,GAAOp8mB,KAAKkinB,eAC7DlinB,KAAKyinB,cAAczinB,KAAKminB,WAAWvolB,IACtC,CACD4olB,cACQxinB,KAAK0inB,aACL1inB,KAAK0inB,YAAYv1lB,SACxB,CACDs1lB,cAAcxme,IACNA,KACAj8I,KAAK0inB,YAAczme,GACnBj8I,KAAK0inB,YAAYv2lB,SAExB,EAEL81lB,GAASl/mB,UAAT,4BAAqGk/mB,IAhrHFj/mB,MAgrH4Bk5mB,IAA/H,EACA+F,GAAS3umB,UAjrH0FtQ,MAirHnG,MAAyFi/mB,GAAzF1umB,4EA8BA,MAAMovmB,GACF7inB,YAAYoI,GAAOmqB,GAAUytlB,GAAesC,IACxCpinB,KAAKkI,MAAQA,GACb,MAAM06mB,IAAazylB,MAAM5B,OAAOrmB,KAChCk6mB,GAASE,QAAQM,GAAa,IAAG16mB,KAAUA,GAAO,IAAI24mB,GAAWf,GAAeztlB,IACnF,EAELswlB,GAAa5/mB,UAAb,4BAAyG4/mB,IAttHN3/mB,MAstHoC,gBAttHpCA,MAstHgFA,OAttHhFA,MAstH2GA,OAttH3GA,MAstH2Ii/mB,GAA9O,KACAU,GAAarvmB,UAvtHsFtQ,MAutHnG,MAA6F2/mB,GAA7FpvmB;;;;;;;;AAyDA,MAAMsvmB,EACF/inB,YAAYs9mB,GAAOz1b,GAAUm/U,IACzB9mgB,KAAKo9mB,MAAQA,GACbp9mB,KAAK2nL,SAAWA,GAChB3nL,KAAK8mgB,UAAYA,GACjB9mgB,KAAK8inB,SAAW,KAChB9inB,KAAK4nL,QAAU,IAClB,CACGm7b,YAAQjolB,IACR96B,KAAK8inB,SAAWholB,IACX96B,KAAK4nL,SAAW9sJ,KACjB96B,KAAK4nL,QAAU5nL,KAAK2nL,SAAStiK,KAAKyV,IAAQ3O,SAEjD,CACD67J,YACI,GAAIhoL,KAAK4nL,QAAS,CACd,MAAM37K,GAAUjM,KAAK4nL,QAAQ9rJ,KAAK97B,KAAK8inB,UACnC72mB,IACAjM,KAAKioL,cAAch8K,GAE1B,CACJ,CACD+2mB,UAAUC,GAAa/6mB,IACnB,MAAOT,GAAM8yB,IAAQ0olB,GAAYlhnB,MAAM,KACjC+sU,IAA8B,IAAtBrnU,GAAKxG,QAAQ,UAAc8T,EAAYmumB,eACxC,MAATh7mB,GACAlI,KAAK8mgB,UAAU18e,SAASpqB,KAAKo9mB,MAAMjxmB,cAAe1E,GAAM8yB,GAAQ,GAAEryB,KAAQqyB,KAASryB,GAAO4mU,IAG1F9uU,KAAK8mgB,UAAU75U,YAAYjtL,KAAKo9mB,MAAMjxmB,cAAe1E,GAAMqnU,GAElE,CACD7mJ,cAAch8K,IACVA,GAAQoymB,mBAAoBh2b,IAAWroL,KAAKgjnB,UAAU36b,GAAOzuJ,IAAK,OAClE3tB,GAAQiymB,iBAAkB71b,IAAWroL,KAAKgjnB,UAAU36b,GAAOzuJ,IAAKyuJ,GAAOznK,eACvE3U,GAAQmymB,mBAAoB/1b,IAAWroL,KAAKgjnB,UAAU36b,GAAOzuJ,IAAKyuJ,GAAOznK,cAC5E,EAELiimB,EAAQ9/mB,UAAR,4BAAoG8/mB,GAtzHD7/mB,MAszH0BA,OAtzH1BA,MAszHoDA,OAtzHpDA,MAszHmFA,OAAtL,EACA6/mB,EAAQvvmB,UAvzH2FtQ,MAuzHnG,MAAwF6/mB,EAAxFtvmB;;;;;;;;AA2CA,MAAM4vmB,GACFrjnB,YAAY2+mB,IACRz+mB,KAAKy+mB,kBAAoBA,GACzBz+mB,KAAKojnB,SAAW,KAOhBpjnB,KAAKqjnB,wBAA0B,KAI/BrjnB,KAAKsjnB,iBAAmB,KAExBtjnB,KAAKujnB,yBAA2B,IACnC,CAEDlzmB,YAAYpE,IACR,GAAIA,GAAQq3mB,kBAAuBr3mB,GAAQs3mB,yBAA6B,CACpE,MAAMhsmB,GAAmBvX,KAAKy+mB,kBAI9B,GAHIz+mB,KAAKojnB,UACL7rmB,GAAiBI,OAAOJ,GAAiBtW,QAAQjB,KAAKojnB,WAEtDpjnB,KAAKsjnB,iBAAkB,CACvB,MAAQA,iBAAkBjxlB,GAAUgxlB,wBAAyB5rmB,GAAS8rmB,yBAA0B19b,IAAa7lL,KAC7GA,KAAKojnB,SAAW7rmB,GAAiBM,mBAAmBwa,GAAU5a,GAASouK,GAAW,CAAEA,kBAAa9wK,EACpG,MAEG/U,KAAKojnB,SAAW,IAEvB,MACQpjnB,KAAKojnB,UAAYn3mB,GAAQo3mB,yBAA8BrjnB,KAAKqjnB,0BACjErjnB,KAAKojnB,SAAS3rmB,QAAUzX,KAAKqjnB,wBAEpC,EAELF,GAAiBpgnB,UAAjB,4BAA6GognB,IAx4HVngnB,MAw4H4CA,OAA/I,EACAmgnB,GAAiB7vmB,UAz4HkFtQ,MAy4HnG,MAAiGmgnB,GAAjG5vmB,kNAz4HmGvQ;;;;;;;;AAw7HnG,SAASwgnB,GAAyB/kmB,GAAMvW,IACpC,OAAO,IAAIu7mB,MAAc,MAAmDC,EAC/E;;;;;;;OA8BD,MAAMC,GAAmB,IARzB,MAAMC,GACFC,mBAAmBl8P,GAAOm8P,IACtB,OAAOn8P,GAAMt/W,KAAKy7mB,GAAmBr/lB,KACjC,MAAMA,IAEb,CACD8zH,QAAQwhB,IAAiB,GAGvBgqd,GAAwB,IAtB9B,MAAMC,GACFH,mBAAmBl8P,GAAOm8P,IACtB,OAAOn8P,GAAMz7W,UAAU,CACnBjH,KAAM6+mB,GACNnolB,MAAQlX,KACJ,MAAMA,KAGjB,CACD8zH,QAAQwhB,IACJA,GAAa9oJ,aAChB,GAwCL,MAAMgzmB,GACFnknB,YAAYmiN,IACRjiN,KAAKkknB,aAAe,KACpBlknB,KAAKmknB,cAAgB,KACrBnknB,KAAKoknB,KAAO,KACZpknB,KAAKqknB,UAAY,KAGjBrknB,KAAKsknB,KAAOria,EACf,CACDpxM,cACQ7Q,KAAKmknB,eACLnknB,KAAKuknB,WAMTvknB,KAAKsknB,KAAO,IACf,CACD13lB,UAAUmG,IACN,OAAK/yB,KAAKoknB,KAMNrxlB,KAAQ/yB,KAAKoknB,MACbpknB,KAAKuknB,WACEvknB,KAAK4sB,UAAUmG,KAEnB/yB,KAAKkknB,cATJnxlB,IACA/yB,KAAK88lB,WAAW/pkB,IAEb/yB,KAAKkknB,aAOnB,CACDpnB,WAAW/pkB,IACP/yB,KAAKoknB,KAAOrxlB,GACZ/yB,KAAKqknB,UAAYrknB,KAAKwknB,gBAAgBzxlB,IACtC/yB,KAAKmknB,cAAgBnknB,KAAKqknB,UAAUR,mBAAmB9wlB,GAAM7qB,IAAUlI,KAAKyknB,mBAAmB1xlB,GAAK7qB,IACvG,CACDs8mB,gBAAgBzxlB,IACZ,MAAI2xlB,OAAW3xlB,IACX,OAAO4wlB,GAEX,MAAIgB,OAAgB5xlB,IAChB,OAAOgxlB,GAEX,MAAMP,IACT,CACDe,WAGIvknB,KAAKqknB,UAAU9re,QAAQv4I,KAAKmknB,eAC5BnknB,KAAKkknB,aAAe,KACpBlknB,KAAKmknB,cAAgB,KACrBnknB,KAAKoknB,KAAO,IACf,CACDK,mBAAmB98P,GAAOz/W,IAClBy/W,KAAU3nX,KAAKoknB,OACfpknB,KAAKkknB,aAAeh8mB,GAGpBlI,KAAKsknB,KAAK1mmB,eAEjB,EAELqmmB,GAAUlhnB,UAAV,4BAAsGkhnB,IAtjIHjhnB,MAsjI8BA,MAAjI,MACAihnB,GAAU3tM,WAvjIyFtza,MAujInG,mBAAoGihnB,GAApG1tM;;;;;;;;AAgCA,MAAMquM,GACFh4lB,UAAU1kB,IACN,GAAa,MAATA,GACA,OAAO,KACX,GAAqB,iBAAVA,GACP,MAAMs7mB,KAEV,OAAOt7mB,GAAM6S,aAChB,EAEL6pmB,GAAc7hnB,UAAd,4BAA0G6hnB,GAA1G,EACAA,GAActuM,WAlmIqFtza,MAkmInG,uBAAwG4hnB,GAAxGruM,wBAgBA,MAAMsuM,GAAmB,qrPAkBzB,MAAMC,GACFl4lB,UAAU1kB,IACN,GAAa,MAATA,GACA,OAAO,KACX,GAAqB,iBAAVA,GACP,MAAMs7mB,KAEV,OAAOt7mB,GAAM7H,QAAQwknB,GAAmB/pR,IAAOA,GAAI,GAAG9wO,cAAgB8wO,GAAIp5V,MAAM,GAAGqZ,cACtF,EAEL+pmB,GAAc/hnB,UAAd,4BAA0G+hnB,GAA1G,EACAA,GAAcxuM,WA/oIqFtza,MA+oInG,uBAAwG8hnB,GAAxGvuM,wBAgBA,MAAMwuM,GACFn4lB,UAAU1kB,IACN,GAAa,MAATA,GACA,OAAO,KACX,GAAqB,iBAAVA,GACP,MAAMs7mB,KAEV,OAAOt7mB,GAAM8hH,aAChB,EAEL+6f,GAAchinB,UAAd,4BAA0GginB,GAA1G,EACAA,GAAczuM,WA1qIqFtza,MA0qInG,uBAAwG+hnB,GAAxGxuM;;;;;;;;AAoBA,MAAMyuM,GAA6B,IAAIplnB,MAAe,8BAgKtD,MAAMwtd,GACFttd,YAAYkyC,GAAQizkB,IAChBjlnB,KAAKgyC,OAASA,GACdhyC,KAAKilnB,gBAAkBA,EAC1B,CACDr4lB,UAAU1kB,GAAOinC,GAAS,aAAc0lkB,GAAU7ikB,IAC9C,GAAa,MAAT9pC,IAA2B,KAAVA,IAAgBA,IAAUA,GAC3C,OAAO,KACX,IACI,OAAO28K,GAAW38K,GAAOinC,GAAQ6C,IAAUhyC,KAAKgyC,OAAQ6ikB,IAAY70mB,KAAKilnB,sBAAmBlwmB,EAI/F,CAHA,MACM4mB,IACH,MAAM6nlB,GAAyBp2J,EAAUzxb,GAAM9b,QAClD,CACJ,EAELutc,GAASrqd,UAAT,4BAAqGqqd,IA92IFpqd,MA82I4B2jK,MAA/H,IA92ImG3jK,MA82IkDginB,GAArJ,MACA53J,GAAS92C,WA/2I0Ftza,MA+2InG,kBAAmGoqd,GAAnG72C;;;;;;;;AAyBA,MAAM2uM,GAAwB,KAe9B,MAAMC,GACFrlnB,YAAYoinB,IACRlinB,KAAKkinB,cAAgBA,EACxB,CAQDt1lB,UAAU1kB,GAAOk9mB,GAAWpzkB,IACxB,GAAa,MAAT9pC,GACA,MAAO,GACX,GAAyB,iBAAdk9mB,IAAwC,OAAdA,GACjC,MAAM5B,KAGV,OAAO4B,GADKjJ,GAAkBj0mB,GAAOmX,OAAOsa,KAAKyrlB,IAAYplnB,KAAKkinB,cAAelwkB,KAC3D3xC,QAAQ6knB,GAAuBh9mB,GAAMzG,WAC9D,EAEL0jnB,GAAepinB,UAAf,4BAA2GoinB,IA56IRninB,MA46IwCk5mB,GAA3I,MACAiJ,GAAe7uM,WA76IoFtza,MA66InG,wBAAyGminB,GAAzG5uM;;;;;;;;AAkCA,MAAM8uM,GAMFz4lB,UAAU1kB,GAAOqqQ,IACb,GAAa,MAATrqQ,GACA,MAAO,GACX,GAAuB,iBAAZqqQ,IAAyC,iBAAVrqQ,GACtC,MAAMs7mB,KAEV,OAAIjxW,GAAQnwQ,eAAe8F,IAChBqqQ,GAAQrqQ,IAEfqqQ,GAAQnwQ,eAAe,SAChBmwQ,GAAQ31M,MAEZ,EACV,EAELyojB,GAAetinB,UAAf,4BAA2GsinB,GAA3G,EACAA,GAAe/uM,WAr+IoFtza,MAq+InG,wBAAyGqinB,GAAzG9uM;;;;;;;;AAgCA,MAAM+uM,GAIF14lB,UAAU1kB,IACN,OAAOjG,KAAKsiP,UAAUr8O,GAAO,KAAM,EACtC,EAELo9mB,GAASvinB,UAAT,4BAAqGuinB,GAArG,EACAA,GAAShvM,WA9gJ0Ftza,MA8gJnG,kBAAmGsinB,GAAnG/uM,wBAwCA,MAAMgvM,GACFzlnB,YAAYqwP,IACRnwP,KAAKmwP,QAAUA,GACfnwP,KAAKwlnB,UAAY,GACjBxlnB,KAAKylnB,UAAYC,EACpB,CACD94lB,UAAUlc,GAAO+0mB,GAAYC,IACzB,IAAKh1mB,MAAYA,cAAiBsgJ,MAAyB,iBAAVtgJ,GAC7C,OAAO,KAEN1Q,KAAKgxP,SAENhxP,KAAKgxP,OAAShxP,KAAKmwP,QAAQ9qO,KAAK3U,IAAOyb,UAE3C,MAAMw5lB,GAAgB3lnB,KAAKgxP,OAAOl1N,KAAKprB,IACjCk1mB,GAAmBH,KAAczlnB,KAAKylnB,UAC5C,OAAIE,KACA3lnB,KAAKwlnB,UAAY,GACjBG,GAAcE,YAAat7kB,KACvBvqC,KAAKwlnB,UAAUxpmB;;;;;;;;AA1C/B,SAAS8pmB,GAAiBlslB,GAAK1xB,IAC3B,MAAO,CAAE0xB,IAAKA,GAAK1xB,MAAOA,GAC7B,CAwCmC49mB,CAAiBv7kB,GAAE3Q,IAAK2Q,GAAE3pB,cAA9C,KAGJ+kmB,IAAiBC,MACjB5lnB,KAAKwlnB,UAAU5jlB,KAAK6jlB,IACpBzlnB,KAAKylnB,UAAYA,IAEdzlnB,KAAKwlnB,SACf,EAYL,SAASE,GAAkBK,GAAWC,IAClC,MAAM7olB,GAAI4olB,GAAUnslB,IACd7B,GAAIiulB,GAAUpslB,IAEpB,GAAIuD,KAAMpF,GACN,OAAO,EAEX,QAAUhjB,IAANooB,GACA,OAAO,EACX,QAAUpoB,IAANgjB,GACA,OAAO,EAEX,GAAU,OAANoF,GACA,OAAO,EACX,GAAU,OAANpF,GACA,OAAO,EACX,GAAgB,iBAALoF,IAA6B,iBAALpF,GAC/B,OAAOoF,GAAIpF,IAAI,EAAK,EAExB,GAAgB,iBAALoF,IAA6B,iBAALpF,GAC/B,OAAOoF,GAAIpF,GAEf,GAAgB,kBAALoF,IAA8B,kBAALpF,GAChC,OAAOoF,GAAIpF,IAAI,EAAK,EAGxB,MAAMkulB,GAAUvlnB,OAAOy8B,IACjB+olB,GAAUxlnB,OAAOq3B,IACvB,OAAOkulB,IAAWC,GAAU,EAAID,GAAUC,IAAU,EAAK,CAC5D;;;;;;;OAvCDX,GAAaxinB,UAAb,4BAAyGwinB,IAnlJNvinB,MAmlJoCA,MAAvI,MACAuinB,GAAajvM,WAplJsFtza,MAolJnG,sBAAuGuinB,GAAvGhvM,wBA8GA,MAAM4vM,GACFrmnB,YAAYy6kB,IACRv6kB,KAAKu6kB,QAAUA,EAClB,CAQD3tjB,UAAU1kB,GAAOyxmB,GAAY3nkB,IACzB,IAAKo0kB,GAAQl+mB,IACT,OAAO,KACX8pC,GAASA,IAAUhyC,KAAKu6kB,QACxB,IAEI,OAv+EZ,SAAS/rM,GAAatmY,GAAO8pC,GAAQ2nkB,IAGjC,OAAOH,GAA2BtxmB,GADlB2zmB,GADDvJ,GAAsBtgkB,GAAQo/jB,GAAkBgB,SACrBF,GAAsBlgkB,GAAQy/jB,GAAakC,YACnC3hkB,GAAQy/jB,GAAa7rhB,MAAO6rhB,GAAaW,QAASuH,GACvG,CAm+EkBnrO,CADK63O,GAAYn+mB,IACC8pC,GAAQ2nkB,GAIpC,CAHA,MACMh+kB,IACH,MAAM6nlB,GAAyB2C,EAAaxqlB,GAAM9b,QACrD,CACJ,EAELsmmB,GAAYpjnB,UAAZ,4BAAwGojnB,IA1tJLnjnB,MA0tJkC2jK,MAArI,MACAw/c,GAAY7vM,WA3tJuFtza,MA2tJnG,oBAAsGmjnB,GAAtG5vM,wBA+BA,MAAM+vM,GACFxmnB,YAAYy6kB,IACRv6kB,KAAKu6kB,QAAUA,EAClB,CAiBD3tjB,UAAU1kB,GAAOyxmB,GAAY3nkB,IACzB,IAAKo0kB,GAAQl+mB,IACT,OAAO,KACX8pC,GAASA,IAAUhyC,KAAKu6kB,QACxB,IAEI,OA/jFZ,SAASgsC,GAAcr+mB,GAAO8pC,GAAQ2nkB,IAIlC,OADYH,GAA2BtxmB,GADvB2zmB,GADDvJ,GAAsBtgkB,GAAQo/jB,GAAkBmB,SACrBL,GAAsBlgkB,GAAQy/jB,GAAakC,YAC9B3hkB,GAAQy/jB,GAAa7rhB,MAAO6rhB,GAAaW,QAASuH,IAAY,GAC1Gt5mB,QAAQ,IAAIoE,OAzJN,IAyJ2B,KAAMytmB,GAAsBlgkB,GAAQy/jB,GAAagC,aAChG,CA0jFkB8S,CADKF,GAAYn+mB,IACE8pC,GAAQ2nkB,GAIrC,CAHA,MACMh+kB,IACH,MAAM6nlB,GAAyB8C,EAAa3qlB,GAAM9b,QACrD,CACJ,EAELymmB,GAAYvjnB,UAAZ,4BAAwGujnB,IA3xJLtjnB,MA2xJkC2jK,MAArI,MACA2/c,GAAYhwM,WA5xJuFtza,MA4xJnG,qBAAsGsjnB,GAAtG/vM,wBAmDA,MAAMiwM,GACF1mnB,YAAYy6kB,GAASksC,GAAuB,OACxCzmnB,KAAKu6kB,QAAUA,GACfv6kB,KAAKymnB,qBAAuBA,EAC/B,CAkCD75lB,UAAU1kB,GAAO0zmB,GAAe57mB,KAAKymnB,qBAAsB3ogB,GAAU,SAAU67f,GAAY3nkB,IACvF,IAAKo0kB,GAAQl+mB,IACT,OAAO,KACX8pC,GAASA,IAAUhyC,KAAKu6kB,QACD,kBAAZz8d,KAIPA,GAAUA,GAAU,SAAW,QAEnC,IAAIolR,GAAW04O,IAAgB57mB,KAAKymnB,qBACpB,SAAZ3ogB,KAEIolR,GADY,WAAZplR,IAAoC,kBAAZA,GACbs2f,GAAkBlxO,GAAsB,WAAZplR,GAAuB,OAAS,SAAU9rE,IAGtE8rE,IAGnB,IAEI,OAAO69f,GADK0K,GAAYn+mB,IACG8pC,GAAQkxV,GAAU04O,GAAcjC,GAI9D,CAHA,MACMh+kB,IACH,MAAM6nlB,GAAyBgD,EAAc7qlB,GAAM9b,QACtD,CACJ,EAiBL,SAASummB,GAAQl+mB,IACb,QAAkB,MAATA,IAA2B,KAAVA,IAAgBA,IAAUA,GACvD,CAID,SAASm+mB,GAAYn+mB,IAEjB,GAAqB,iBAAVA,KAAuBioB,MAAM5B,OAAOrmB,IAAS6pB,WAAW7pB,KAC/D,OAAOqmB,OAAOrmB,IAElB,GAAqB,iBAAVA,GACP,MAAM,IAAI3H,MAAO,GAAE2H,sBAEvB,OAAOA,EACV;;;;;;;OA9BDs+mB,GAAazjnB,UAAb,4BAAyGyjnB,IAj5JNxjnB,MAi5JoC2jK,MAAvI,IAj5JmG3jK,MAi5J0D0jnB,MAA7J,MACAF,GAAalwM,WAl5JsFtza,MAk5JnG,sBAAuGwjnB,GAAvGjwM,wBAyEA,MAAMowM,GACF/5lB,UAAU1kB,GAAOyS,GAAOG,IACpB,GAAa,MAAT5S,GACA,OAAO,KACX,IAAKlI,KAAKm0iB,SAASjsiB,IACf,MAAMs7mB,KAEV,OAAOt7mB,GAAMxG,MAAMiZ,GAAOG,GAC7B,CACDq5hB,SAASphhB,IACL,MAAsB,iBAARA,IAAoB5xB,MAAMkuB,QAAQ0D,GACnD,EAEL4zlB,GAAU5jnB,UAAV,4BAAsG4jnB,GAAtG,EACAA,GAAUrwM,WAz+JyFtza,MAy+JnG,mBAAoG2jnB,GAApGpwM;;;;;;;;AAqDA,MAAMz/Z,IAENA,GAAa/T,UAAb,4BAAyG+T,GAAzG,EACAA,GAAarQ,UAjiKsFzD,MAiiKnG,MAA0G8T,KAC1GA,GAAapQ,UAliKsF1D,MAkiKnG;;;;;;;;AAgBA,MAAM4jnB,GAAsB;;;;;;;;AA2CZ,IAAIC,MAAQ;;;;;;;OAc5B,MAAMC,IAKNA,GAAiB7jnB,cAAQ8jnB,OAAmB,CACxCllnB,MAAOilnB,GACPE,WAAY,OACZ9jnB,QAAS,IAAM,IAAI+jnB,MAAwB/Y,OAAStomB,IAAWisB,UAKnE,MAAMo1lB,GACFnnnB,YAAYuD,GAAUwuB,IAClB7xB,KAAKqD,SAAWA,GAChBrD,KAAK6xB,OAASA,GACd7xB,KAAK2oB,OAAS,IAAM,CAAC,EAAG,EAC3B,CAODsqM,UAAUtqM,IACFxnB,MAAMkuB,QAAQ1G,IACd3oB,KAAK2oB,OAAS,IAAMA,GAGpB3oB,KAAK2oB,OAASA,EAErB,CAKDu+lB,oBACI,OAAIlnnB,KAAKmnnB,oBACE,CAACnnnB,KAAK6xB,OAAO0E,YAAav2B,KAAK6xB,OAAOuE,aAGtC,CAAC,EAAG,EAElB,CAKDgxlB,iBAAiBzklB,IACT3iC,KAAKmnnB,qBACLnnnB,KAAK6xB,OAAO+8H,SAASjsH,GAAS,GAAIA,GAAS,GAElD,CAYD0klB,eAAexqmB,IACX,IAAK7c,KAAKmnnB,oBACN,OAEJ,MAAMG,GAyEd,SAASC,GAAuBlknB,GAAUwZ,IACtC,MAAM2qmB,GAAiBnknB,GAASoknB,eAAe5qmB,KAAWxZ,GAASqknB,kBAAkB7qmB,IAAQ,GAC7F,GAAI2qmB,GACA,OAAOA,GAIX,GAAyC,mBAA9BnknB,GAASsknB,kBAAmCtknB,GAAS0nE,OAC3D1nE,GAAS0nE,KAAK68iB,kBAAoBvknB,GAAS0nE,KAAK88iB,cAAe,CAChE,MAAMC,GAAazknB,GAASsknB,iBAAiBtknB,GAAS0nE,KAAMg9iB,WAAWC,cACvE,IAAI3tZ,GAAcytZ,GAAWztZ,YAC7B,KAAOA,IAAa,CAChB,MAAM4tZ,GAAa5tZ,GAAY4tZ,WAC/B,GAAIA,GAAY,CAGZ,MAAMr2lB,GAASq2lB,GAAWR,eAAe5qmB,KAAWormB,GAAWh9lB,cAAe,UAASpO,QACvF,GAAI+U,GACA,OAAOA,EAEd,CACDyoM,GAAcytZ,GAAWjlV,UAC5B,CACJ,CACD,OAAO,IACV,CAlG0B0kV,CAAuBvnnB,KAAKqD,SAAUwZ,IACrDyqmB,KACAtnnB,KAAKkonB,gBAAgBZ,IAOrBA,GAAWl2mB,QAElB,CAID+2mB,4BAA4BC,IACxB,GAAIponB,KAAKqonB,2BAA4B,CACjC,MAAMxiU,GAAU7lT,KAAK6xB,OAAOg0R,QACxBA,IAAWA,GAAQuiU,oBACnBviU,GAAQuiU,kBAAoBA,GAEnC,CACJ,CAODF,gBAAgBp/mB,IACZ,MAAM0gC,GAAO1gC,GAAGiiB,wBACVG,GAAOse,GAAKte,KAAOlrB,KAAK6xB,OAAO0E,YAC/B1K,GAAM2d,GAAK3d,IAAM7rB,KAAK6xB,OAAOuE,YAC7BzN,GAAS3oB,KAAK2oB,SACpB3oB,KAAK6xB,OAAO+8H,SAAS1jI,GAAOvC,GAAO,GAAIkD,GAAMlD,GAAO,GACvD,CASD0/lB,2BACI,IACI,IAAKronB,KAAKmnnB,oBACN,OAAO,EAGX,MAAMmB,GAA8BC,GAA6BvonB,KAAK6xB,OAAOg0R,UACzE0iU,GAA6BlpmB,OAAOo1R,eAAez0S,KAAK6xB,OAAOg0R,UAGnE,SAASyiU,KACFA,GAA4B37D,WAAY27D,GAA4B/0lB,IAI9E,CAHA,MAEG,OAAO,CACV,CACJ,CACD4zlB,oBACI,IACI,QAASnnnB,KAAK6xB,UAAY7xB,KAAK6xB,OAAO+8H,UAAY,gBAAiB5uJ,KAAK6xB,MAI3E,CAHA,MAEG,OAAO,CACV,CACJ,EAEL,SAAS02lB,GAA6Bx1lB,IAClC,OAAO1T,OAAOmpmB,yBAAyBz1lB,GAAK,oBAC/C;;;;;;;;AAmED,MAAM01lB;;;;;;;OAeN,SAASC,GAAcC,IAEf,MAAM,IAAIlF,MAAc,KAAqE,gCAA+BkF,6FAGnI;;;;;;;OAUD,SAASC,GAAoBC,GAAQC,IAAgB,GAEjD,MAAQ,kCADWA,GAAiB,qDAAoDD,UAAgB,qBAE3G;;;;;;;OAUD,SAASE,GAAOh6hB,GAAKk+N,IAEjB,OAAO+7T,GAAcj6hB,IAAO,IAAIjrF,IAAIirF,IAAO,IAAIjrF,IAAIirF,GAAKk+N,GAAIjpT,SAAS8mF,KACxE,CAED,SAASk+hB,GAAcj6hB,IACnB,MAAO,eAAerqF,KAAKqqF,GAC9B,CAuBD,SAASk6hB,GAAal6hB,IAClB,OAAOA,GAAI05G,WAAW,KAAO15G,GAAIrtF,MAAM,GAAKqtF,EAC/C;;;;;;;OAUD,MAAMm6hB,GAAsC,IAAI5tlB,IAAI,CAAC,YAAa,YAAa,YAoBzE6tlB,GAA6B,IAAIvpnB,MAAe,8BAQtD,MAAMwpnB,GACFtpnB,cAKIE,KAAKqpnB,gBAAkB,KAIvBrpnB,KAAKspnB,YAAc,IAAIhulB,IACvBt7B,KAAK6xB,OAAS,KACd7xB,KAAKupnB,UAAY,IAAIjulB,IAAI4tlB,IACzBR,GAAc,2BACd,MAAMz7T,MAAM92C,OAAOvwQ,IAAUstR,mBAClB+5B,GAAQ,MACfjtT,KAAK6xB,OAASo7R,IAElB,MAAMs8T,MAAYpzW,OAAOgzW,GAA4B,CAAEr8lB,UAAU,IAC7Dy8lB,IACAvpnB,KAAKwpnB,kBAAkBD,GAE9B,CACDC,kBAAkBC,IACd,IAAItonB,MAAMkuB,QAAQo6lB,IAMd,MAAM,IAAIhG,MAAc,KAAiE,qKALzFiG,GAAYD,GAASxlnB,KACjBjE,KAAKupnB,UAAUv9mB,IAtF/B,SAAS29mB,GAAgB5lnB,IACrB,OAAOilnB,GAAcjlnB,IAAQ,IAAID,IAAIC,IAAMK,SAAWL,EACzD,CAoFkC4lnB,CAAgB1lnB,IAAnC,EAOX,CAQD2lnB,iBAAiBC,GAAchB,IAC3B,IAAK7onB,KAAK6xB,OACN,OACJ,MAAMi4lB,GAASf,GAAOc,GAAc7pnB,KAAK6xB,QACrC7xB,KAAKupnB,UAAUtulB,IAAI6ulB,GAAO1lnB,WAAapE,KAAKspnB,YAAYrulB,IAAI6ulB,GAAO7lnB,UAGvEjE,KAAKspnB,YAAYt9mB,IAAI89mB,GAAO7lnB,QACvBjE,KAAKqpnB,kBAKNrpnB,KAAKqpnB,gBAAkBrpnB,KAAK+pnB,wBAE3B/pnB,KAAKqpnB,gBAAgBpulB,IAAI6ulB,GAAO7lnB,SACjCg0B,QAAQ80L,QAAKi9Z,OAAoB,KAAkE,GAAEpB,GAAoBC,gSAInFiB,GAAO7lnB,aAEpD,CACD8lnB,uBACI,MAAME,GAAiB,IAAI3ulB,IAErB4ulB,GAAQ/onB,MAAMqE,KAAKnC,SAAS4/J,iBADjB,yBAEjB,QAASqkH,MAAQ4iW,GAAO,CACpB,MAAMnmnB,GAAMglnB,GAAOzhW,GAAKx8L,KAAM9qF,KAAK6xB,QACnCo4lB,GAAej+mB,IAAIjI,GAAIE,OAC1B,CACD,OAAOgmnB,EACV,CACDp5mB,cACI7Q,KAAKqpnB,iBAAiBlulB,QACtBn7B,KAAKspnB,YAAYnulB,OACpB,EAYL,SAASuulB,GAAYh5mB,GAAO8f,IACxB,QAAStoB,MAASwI,GACdvP,MAAMkuB,QAAQnnB,IAASwhnB,GAAYxhnB,GAAOsoB,IAAMA,GAAGtoB,GAE1D;;;;;;;OAdDkhnB,GAAsBrmnB,UAAtB,4BAAkHqmnB,GAAlH,EACAA,GAAsBnmnB,WA5/K6ED,MA4/KnG,OAAsHomnB,GAAtHlmnB,QAAsHkmnB,GAAtH,qBAAyJ,SA6BzJ,MAAMe,GAAmBpqnB,IAAWA,GAAOgvF,IASrCq7hB,GAAe,IAAIxqnB,MAAe,cAAe,CACnDonnB,WAAY,OACZ9jnB,QAAS,IAAMinnB,KAWnB,SAASE,GAAkBC,GAAYC,IACnC,OAAO,SAA4B96lB,GAAMzpB,GAAU,CAAEwknB,kBAAkB,IACnE,OA9LR,SAASC,GAAYh7lB,IAEjB,GADiC,iBAATA,IACS,KAAhBA,GAAK3d,OAClB,OAAO,EAGX,IAEI,OADY,IAAIhO,IAAI2rB,KACb,CAIV,CAHA,MAEG,OAAO,CACV,CACJ,CAiLYg7lB,CAAYh7lB,KAwBzB,SAASi7lB,GAAsBj7lB,GAAM86lB,IACjC,MAAM,IAAI9G,MAAc,MAAsDC,EAGjF,CA3BWgH,GAIJj7lB,GArLR,SAASk7lB,GAAcl7lB,IACnB,OAAOA,GAAKoiH,SAAS,KAAOpiH,GAAK/tB,MAAM,GAAG,GAAM+tB,EACnD,CAmLck7lB,CAAcl7lB,IAYH,CAAC,CAAEtpB,QAASiknB,GAAc5jnB,SAX1BzG,KACVipnB,GAAcjpnB,GAAOgvF,MAsBrC,SAAS67hB,GAAgCn7lB,GAAM1rB,IAC3C,MAAM,IAAI0/mB,MAAc,MAAsDC,EAMjF;;;;;;;OAvBekH,CAAgCn7lB,EAAM1vB,GAAOgvF,KAE1Cu7hB,GAAW76lB,GAAM,IAAK1vB,GAAQgvF,IAAKk6hB,GAAalpnB,GAAOgvF,SAOrE,CACJ,CAsC+Bs7hB,GAChC,SAASQ,GAAoBp7lB,GAAM1vB,IAC/B,IAAIwoX,GAAU,cACd,OAAIxoX,GAAOyU,QACP+zW,IAAW,UAASxoX,GAAOyU,SAIvB,GAAEib,oBAAsB84V,MAAUxoX,GAAOgvF;;;;;;;OACpD,GA0B+Bs7hB,GAMhC,SAASS,GAAoBr7lB,GAAM1vB,IAK/B,IAAIwoX,GAAU,gBACd,OAAIxoX,GAAOyU,QACP+zW,IAAW,MAAKxoX,GAAOyU,SAEnB,GAAEib,mBAAqB84V,MAAUxoX,GAAOgvF;;;;;;;OACnD,GAyB6Bs7hB,GAC9B,SAASU,GAAkBt7lB,GAAM1vB,IAG7B,IAAIwoX,GAAU,YACd,OAAIxoX,GAAOyU,QACP+zW,IAAW,MAAKxoX,GAAOyU,SAEnB,GAAEib,MAAQ84V,MAAUxoX,GAAOgvF;;;;;;;OACtC,GAuB0Bs7hB,GAC3B,SAASW,GAAev7lB,GAAM1vB,IAC1B,MAAMgE,GAAM,IAAID,IAAK,GAAE2rB,MAAQ1vB,GAAOgvF,OAEtChrF,UAAIknnB,aAAa13lB,IAAI,OAAQ,UACzBxzB,GAAOyU,OACPzQ,GAAIknnB,aAAa13lB,IAAI,IAAKxzB,GAAOyU,MAAM/S,YAEpCsC,GAAI+mF;;;;;;;OACd,GAmBD,MAAMogiB,GACFprnB,cAEIE,KAAK60V,OAAS,IAAI7jM,IAElBhxJ,KAAKmrnB,cAAgB,IAAI7vlB,IACzBt7B,KAAK6xB,OAAS,KACd7xB,KAAK6zB,SAAW,KAChB60lB,GAAc,eACd,MAAMz7T,MAAM92C,OAAOvwQ,IAAUstR,mBAClB+5B,GAAQ,YAAsBm+T,oBAAwB,MAC7DprnB,KAAK6xB,OAASo7R,GACdjtT,KAAK6zB,SAAW7zB,KAAKqrnB,0BAE5B,CAKDA,0BACI,MAAMx3lB,GAAW,IAAIu3lB,oBAAqBE,KACtC,MAAM90O,GAAU80O,GAAUC,aAC1B,GAAuB,IAAnB/0O,GAAQl2Y,OACR,OAQJ,MAAMkrnB,GAHah1O,GAAQA,GAAQl2Y,OAAS,GAGlBoI,SAASqmF,KAAO,GAEtCy8hB,GAAO/ib,WAAW,UAAY+ib,GAAO/ib,WAAW,UAElCzoM,KAAK60V,OAAO90U,IAAIyrmB,MAChBxrnB,KAAKmrnB,cAAclwlB,IAAIuwlB,MACrCxrnB,KAAKmrnB,cAAcn/mB,IAAIw/mB,IA+BvC,SAASC,GAA0B5C,IAC/B,MAAM6C,GAAmB9C,GAAoBC,IAC7C5wlB,QAAQ80L,QAAKi9Z,OAAoB,KAAuD,GAAE0B,oNAI7F;;;;;;;OApCeD,CAA0BD,IAAD,GAGjC33lB,UAASozD,QAAQ,CAAExoE,KAAM,2BAA4BktmB,UAAU,IACxD93lB,EACV,CACD+3lB,cAAc/B,GAAchB,KACnB7onB,KAAK6zB,UAEV7zB,KAAK60V,OAAOthU,IAAIw1lB,GAAOc,GAAc7pnB,KAAK6xB,QAAQi5D,KAAM+9hB,GAC3D,CACDgD,gBAAgBhC,KACP7pnB,KAAK6zB,UAEV7zB,KAAK60V,OAAO35T,OAAO6tlB,GAAOc,GAAc7pnB,KAAK6xB,QAAQi5D,KACxD,CACDj6E,eACS7Q,KAAK6zB,WAEV7zB,KAAK6zB,SAASo/I,aACdjzK,KAAK60V,OAAO15T,QACZn7B,KAAKmrnB,cAAchwlB,QACtB,EAEL+vlB,GAAiBnonB,UAAjB,4BAA6GmonB,GAA7G,EACAA,GAAiBjonB,WArzLkFD,MAqzLnG,OAAiHkonB,GAAjHhonB,QAAiHgonB,GAAjH,qBAA+I,SA2B/I,MAKMY,GAAgC,4BA6HtC,MAAMC,GACFjsnB,cACIE,KAAKgsnB,eAAc71W,OAAOi0W,IAC1BpqnB,KAAK2K,YAAWwrQ,OAAOnpD,OACvBhtN,KAAKisnB,cAAa91W,OAAOn0P,OAAY7V,cACrCnM,KAAK6lL,YAAWswF,OAAO+1W,OAEvBlsnB,KAAKmsnB,YAAgE,KAOrEnsnB,KAAKosnB,aAAe,KACpBpsnB,KAAKqsnB,WAAY,CACpB,CAIG73mB,UAAMtM,IAENlI,KAAK+vT,OAASu8T,GAAepknB,GAChC,CACGsM,YACA,OAAOxU,KAAK+vT,MACf,CAIGl5R,WAAO3uB,IAEPlI,KAAKg3e,QAAUs1I,GAAepknB,GACjC,CACG2uB,aACA,OAAO72B,KAAKg3e,OACf,CAIG7tO,aAASjhQ,IACTlI,KAAKqsnB,UAgIb,SAASE,GAAerknB,IACpB,OAAgB,MAATA,IAAgC,SAAd,GAAEA,IAC9B,CAlIwBqknB,CAAerknB,GACnC,CACGihQ,eACA,OAAOnpQ,KAAKqsnB,SACf,CACD/8mB,WA2BItP,KAAKwsnB,mBACR,CACDA,oBAGIxsnB,KAAKysnB,iBAAiB,QAASzsnB,KAAKwU,MAAM/S,YAC1CzB,KAAKysnB,iBAAiB,SAAUzsnB,KAAK62B,OAAOp1B,YAC5CzB,KAAKysnB,iBAAiB,UAAWzsnB,KAAK0snB,sBACtC1snB,KAAKysnB,iBAAiB,gBAAiBzsnB,KAAK2snB,oBAG5C3snB,KAAKysnB,iBAAiB,MAAOzsnB,KAAK4snB,mBAC9B5snB,KAAK6snB,WACL7snB,KAAKysnB,iBAAiB,SAAUzsnB,KAAK8snB,qBAE5C,CACDz8mB,YAAYpE,IAIX,CACDygnB,qBACI,OAAK1snB,KAAKmpQ,eAA6Bp0P,IAAjB/U,KAAKy2F,QAGpBz2F,KAAKmpQ,SAAW,QAAU,OAFtBnpQ,KAAKy2F,OAGnB,CACDk2hB,mBACI,OAAO3snB,KAAKmpQ,SAAW,OAAS,MACnC,CACDyjX,kBAII,IAAK5snB,KAAKosnB,aAAc,CACpB,MAAMW,GAAY,CAAEh+hB,IAAK/uF,KAAK6onB,QAE9B7onB,KAAKosnB,aAAepsnB,KAAKgsnB,YAAYe,GACxC,CACD,OAAO/snB,KAAKosnB,YACf,CACDU,qBACI,MAAME,GAAclB,GAA8BpnnB,KAAK1E,KAAK6snB,WAM5D,OALkB7snB,KAAK6snB,UAAU9qnB,MAAM,KAAKuT,OAAOy5E,IAAe,KAARA,IAAY1tF,IAAI4rnB,KACtEA,GAASA,GAAOn7mB,OAChB,MAAM0C,GAAQw4mB,GAAcj7lB,WAAWk7lB,IAAUl7lB,WAAWk7lB,IAAUjtnB,KAAKwU,MAC3E,MAAQ,GAAExU,KAAKgsnB,YAAY,CAAEj9hB,IAAK/uF,KAAK6onB,OAAQr0mB,cAAYy4mB,OAE9CtrnB,KAAK,KACzB,CACDkP,cAMC,CACD47mB,iBAAiBhlnB,GAAMS,IACnBlI,KAAK2K,SAASiF,aAAa5P,KAAKisnB,WAAYxknB,GAAMS,GACrD,EA+BL,SAASoknB,GAAepknB,IACpB,MAAwB,iBAAVA,GAAqB0uB,SAAS1uB,GAAO,IAAMA,EAC5D,CA/BD6jnB,GAAiBhpnB,UAAjB,4BAA6GgpnB,GAA7G,EACAA,GAAiBz4mB,UAzlMkFtQ,MAylMnG,MAAiG+onB,GAAjGx4mB,qMAzlMmGvQ,QAy2MlG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OCl6MD,MAAMkqnB,IAYN,MAAMC;;;;;;;OAiBN,MAAMt4G,GAEF/0gB,YAAY4/W,IAKR1/W,KAAKotnB,gBAAkB,IAAIp8d,IAI3BhxJ,KAAKqtnB,WAAa,KACb3tQ,GAID1/W,KAAKstnB,SADmB,iBAAZ5tQ,GACI,KACZ1/W,KAAK0/W,QAAU,IAAI1uN,IACnB0uN,GAAQ39W,MAAM,MAAM0O,QAAQqgC,KACxB,MAAMtkC,GAAQskC,GAAK7vC,QAAQ,KAC3B,GAAIuL,GAAQ,EAAG,CACX,MAAM/E,GAAOqpC,GAAKpvC,MAAM,EAAG8K,IACrBotB,GAAMnyB,GAAKsT,cACX7S,GAAQ4oC,GAAKpvC,MAAM8K,GAAQ,GAAGsF,OACpC9R,KAAKutnB,uBAAuB9lnB,GAAMmyB,IAC9B55B,KAAK0/W,QAAQzkV,IAAIrB,IACjB55B,KAAK0/W,QAAQ3/V,IAAI6Z,IAAK5d,KAAK9T,IAG3BlI,KAAK0/W,QAAQnsV,IAAIqG,GAAK,CAAC1xB,IAE9B,GAbL,EAkBY,KAIZlI,KAAK0/W,QAAU,IAAI1uN,IACnB3xI,OAAOsa,KAAK+lV,IAASjvW,QAAQhJ,KACzB,IAAIqzB,GAAS4kV,GAAQj4W,IACrB,MAAMmyB,GAAMnyB,GAAKsT,cACK,iBAAX+f,KACPA,GAAS,CAACA,KAEVA,GAAOx6B,OAAS,IAChBN,KAAK0/W,QAAQnsV,IAAIqG,GAAKkB,IACtB96B,KAAKutnB,uBAAuB9lnB,GAAMmyB,IAAlC,EARR,EA5BJ55B,KAAK0/W,QAAU,IAAI1uN,GAyC1B,CAQD/1H,IAAIxzB,IACA,YAAK82J,OACEv+J,KAAK0/W,QAAQzkV,IAAIxzB,GAAKsT,cAChC,CAQDgF,IAAItY,IACAzH,KAAKu+J,OACL,MAAMzjI,GAAS96B,KAAK0/W,QAAQ3/V,IAAItY,GAAKsT,eACrC,OAAO+f,IAAUA,GAAOx6B,OAAS,EAAIw6B,GAAO,GAAK,IACpD,CAMDnB,OACI,YAAK4kI,OACEp9J,MAAMqE,KAAKxF,KAAKotnB,gBAAgBtylB,SAC1C,CAQD0ylB,OAAO/lnB,IACH,YAAK82J,OACEv+J,KAAK0/W,QAAQ3/V,IAAItY,GAAKsT,gBAAkB,IAClD,CAUDod,OAAO1wB,GAAMS,IACT,OAAOlI,KAAKmF,MAAM,CAAEsC,QAAMS,SAAOs1U,GAAI,KACxC,CAWDjqT,IAAI9rB,GAAMS,IACN,OAAOlI,KAAKmF,MAAM,CAAEsC,QAAMS,SAAOs1U,GAAI,KACxC,CASDtiT,OAAOzzB,GAAMS,IACT,OAAOlI,KAAKmF,MAAM,CAAEsC,QAAMS,SAAOs1U,GAAI,KACxC,CACD+vS,uBAAuB9lnB,GAAMgmnB,IACpBztnB,KAAKotnB,gBAAgBnylB,IAAIwylB,KAC1BztnB,KAAKotnB,gBAAgB75lB,IAAIk6lB,GAAQhmnB,GAExC,CACD82J,OACUv+J,KAAKstnB,WACHttnB,KAAKstnB,oBAAoBz4G,GACzB70gB,KAAK0tnB,SAAS1tnB,KAAKstnB,UAGnBttnB,KAAKstnB,WAETttnB,KAAKstnB,SAAW,KACVttnB,KAAKqtnB,aACPrtnB,KAAKqtnB,WAAW58mB,QAAQm3D,IAAU5nE,KAAK2tnB,YAAY/ljB,KACnD5nE,KAAKqtnB,WAAa,MAG7B,CACDK,SAAS9wjB,IACLA,GAAM2hG,OACNp9J,MAAMqE,KAAKo3D,GAAM8iT,QAAQ/lV,QAAQlpB,QAAQmpB,KACrC55B,KAAK0/W,QAAQnsV,IAAIqG,GAAKgjC,GAAM8iT,QAAQ3/V,IAAI6Z,KACxC55B,KAAKotnB,gBAAgB75lB,IAAIqG,GAAKgjC,GAAMwwjB,gBAAgBrtmB,IAAI6Z,IAAxD,EAEP,CACDz0B,MAAMyiE,IACF,MAAMziE,GAAQ,IAAI0vgB,GAClB1vgB,UAAMmonB,SACCttnB,KAAKstnB,UAAYttnB,KAAKstnB,oBAAoBz4G,GAAe70gB,KAAKstnB,SAAWttnB,KAChFmF,GAAMkonB,YAAcrtnB,KAAKqtnB,YAAc,IAAIvnmB,OAAO,CAAC8hD,KAC5CziE,EACV,CACDwonB,YAAY/ljB,IACR,MAAMhuC,GAAMguC,GAAOngE,KAAKsT,cACxB,OAAQ6sD,GAAO41Q,QACN,QACA,IACD,IAAIt1U,GAAQ0/D,GAAO1/D,MAInB,GAHqB,iBAAVA,KACPA,GAAQ,CAACA,KAEQ,IAAjBA,GAAM5H,OACN,OAEJN,KAAKutnB,uBAAuB3ljB,GAAOngE,KAAMmyB,IACzC,MAAMuxB,IAAsB,MAAdyc,GAAO41Q,GAAax9U,KAAK0/W,QAAQ3/V,IAAI6Z,SAAO7kB,IAAc,GACxEo2C,GAAKnvC,QAAQ9T,IACblI,KAAK0/W,QAAQnsV,IAAIqG,GAAKuxB,IACtB,UACC,IACD,MAAMyikB,GAAWhmjB,GAAO1/D,MACxB,GAAK0lnB,GAIA,CACD,IAAI30E,GAAWj5iB,KAAK0/W,QAAQ3/V,IAAI6Z,IAChC,IAAKq/gB,GACD,OAEJA,GAAWA,GAAS3jiB,OAAOpN,KAAqC,IAA5B0lnB,GAAS3snB,QAAQiH,KAC7B,IAApB+wiB,GAAS34iB,QACTN,KAAK0/W,QAAQxkV,OAAOtB,IACpB55B,KAAKotnB,gBAAgBlylB,OAAOtB,KAG5B55B,KAAK0/W,QAAQnsV,IAAIqG,GAAKq/gB,GAE7B,MAhBGj5iB,KAAK0/W,QAAQxkV,OAAOtB,IACpB55B,KAAKotnB,gBAAgBlylB,OAAOtB,IAkB3C,CAIDnpB,QAAQ+f,IACJxwB,KAAKu+J,OACLp9J,MAAMqE,KAAKxF,KAAKotnB,gBAAgBzzlB,QAC3BlpB,QAAQmpB,IAAOpJ,GAAGxwB,KAAKotnB,gBAAgBrtmB,IAAI6Z,IAAM55B,KAAK0/W,QAAQ3/V,IAAI6Z,KAC1E;;;;;;;;AAiCL,MAAMi0lB,GAMFC,UAAUl0lB,IACN,OAAOm0lB,GAAiBn0lB,GAC3B,CAMDo0lB,YAAY9lnB,IACR,OAAO6lnB,GAAiB7lnB,GAC3B,CAMD+lnB,UAAUr0lB,IACN,OAAO14B,mBAAmB04B,GAC7B,CAMDs0lB,YAAYhmnB,IACR,OAAOhH,mBAAmBgH,GAC7B,EAwBL,MAAMimnB,GAA0B,kBAC1BC,GAAiC,CACnC,GAAM,IACN,KAAM,IACN,GAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KAEV,SAASL,GAAiBl2Z,IACtB,OAAO+kZ,mBAAmB/kZ,IAAGx3N,QAAQ8tnB,GAAyB,CAACnrlB,GAAGjlB,KAAMqwmB,GAA+BrwmB,KAAMilB,GAChH,CACD,SAAS2kf,GAAcz/gB,IACnB,MAAQ,GAAEA,IACb,CASD,MAAMmmnB,GACFvunB,YAAYkG,GAAU,IAIlB,GAHAhG,KAAKsunB,QAAU,KACftunB,KAAKuunB,UAAY,KACjBvunB,KAAK6nI,QAAU7hI,GAAQ6hI,SAAW,IAAIgmf,GAChC7nnB,GAAQwonB,WAAY,CACtB,GAAMxonB,GAAQyonB,WACV,MAAM,IAAIlunB,MAAO,kDAErBP,KAAKqB,IAxDjB,SAASqtnB,GAAYC,GAAWC,IAC5B,MAAMvtnB,GAAM,IAAI2vJ,IAChB,OAAI29d,GAAUrunB,OAAS,GAIJqunB,GAAUtunB,QAAQ,MAAO,IAAI0B,MAAM,KAC3C0O,QAAS2mT,KACZ,MAAMy3T,GAAQz3T,GAAMn2T,QAAQ,MACrB24B,GAAKmhL,KAAgB,GAAT8za,GACf,CAACD,GAAMX,UAAU72T,IAAQ,IACzB,CAACw3T,GAAMX,UAAU72T,GAAM11T,MAAM,EAAGmtnB,KAASD,GAAMV,YAAY92T,GAAM11T,MAAMmtnB,GAAQ,KAC7Epvc,GAAOp+K,GAAI0e,IAAI6Z,KAAQ,GAC7B6lJ,GAAKzjK,KAAK++L,IACV15M,GAAIkyB,IAAIqG,GAAK6lJ,GAAb,GAGDp+K,EACV,CAsCsBqtnB,CAAY1onB,GAAQwonB,WAAYxunB,KAAK6nI,QACnD,MACU7hI,GAAQyonB,YACfzunB,KAAKqB,IAAM,IAAI2vJ,IACf3xI,OAAOsa,KAAK3zB,GAAQyonB,YAAYh+mB,QAAQmpB,KACpC,MAAM1xB,GAAQlC,GAAQyonB,WAAW70lB,IAE3BkB,GAAS35B,MAAMkuB,QAAQnnB,IAASA,GAAM7G,IAAIsmhB,IAAiB,CAACA,GAAcz/gB,KAChFlI,KAAKqB,IAAIkyB,IAAIqG,GAAKkB,GAAlB,IAIJ96B,KAAKqB,IAAM,IAElB,CAOD45B,IAAIm8R,IACA,YAAK74J,OACEv+J,KAAKqB,IAAI45B,IAAIm8R,GACvB,CAODr3S,IAAIq3S,IACAp3T,KAAKu+J,OACL,MAAM+nL,GAAMtmV,KAAKqB,IAAI0e,IAAIq3S,IACzB,OAASkvB,GAAMA,GAAI,GAAK,IAC3B,CAODknS,OAAOp2T,IACH,YAAK74J,OACEv+J,KAAKqB,IAAI0e,IAAIq3S,KAAU,IACjC,CAKDz9R,OACI,YAAK4kI,OACEp9J,MAAMqE,KAAKxF,KAAKqB,IAAIs4B,OAC9B,CAODxB,OAAOi/R,GAAOlvT,IACV,OAAOlI,KAAKmF,MAAM,CAAEiyT,SAAOlvT,SAAOs1U,GAAI,KACzC,CAMDsxS,UAAUvmQ,IACN,MAAM+lQ,GAAU,GAChBjvmB,cAAOsa,KAAK4uV,IAAQ93W,QAAQ2mT,KACxB,MAAMlvT,GAAQqgX,GAAOnxD,IACjBj2T,MAAMkuB,QAAQnnB,IACdA,GAAMuI,QAAQywF,KACVothB,GAAQtymB,KAAK,CAAEo7S,SAAOlvT,MAAOg5F,GAAQs8O,GAAI,KAAzC,GAIJ8wS,GAAQtymB,KAAK,CAAEo7S,SAAOlvT,MAAOA,GAAOs1U,GAAI,KAAxC,GAGDx9U,KAAKmF,MAAMmpnB,GACrB,CAOD/6lB,IAAI6jS,GAAOlvT,IACP,OAAOlI,KAAKmF,MAAM,CAAEiyT,SAAOlvT,SAAOs1U,GAAI,KACzC,CAQDtiT,OAAOk8R,GAAOlvT,IACV,OAAOlI,KAAKmF,MAAM,CAAEiyT,SAAOlvT,SAAOs1U,GAAI,KACzC,CAKD/7U,WACI,YAAK88J,OACEv+J,KAAK25B,OACPt4B,IAAIu4B,KACL,MAAMm1lB,GAAO/unB,KAAK6nI,QAAQimf,UAAUl0lB,IAIpC,OAAO55B,KAAKqB,IAAI0e,IAAI6Z,IAAKv4B,IAAI6G,IAAS6mnB,GAAO,IAAM/unB,KAAK6nI,QAAQmmf,YAAY9lnB,KACvEvG,KAAK,IADH,GAKN2T,OAAO8hT,IAAmB,KAAVA,IAChBz1T,KAAK,IACb,CACDwD,MAAMyiE,IACF,MAAMziE,GAAQ,IAAIkpnB,GAAW,CAAExmf,QAAS7nI,KAAK6nI,UAC7C1iI,UAAMopnB,UAAYvunB,KAAKuunB,WAAavunB,KACpCmF,GAAMmpnB,SAAWtunB,KAAKsunB,SAAW,IAAIxomB,OAAO8hD,IACrCziE,EACV,CACDo5J,OACqB,OAAbv+J,KAAKqB,MACLrB,KAAKqB,IAAM,IAAI2vJ,KAEI,OAAnBhxJ,KAAKuunB,YACLvunB,KAAKuunB,UAAUhwd,OACfv+J,KAAKuunB,UAAU50lB,OAAOlpB,QAAQmpB,IAAO55B,KAAKqB,IAAIkyB,IAAIqG,GAAK55B,KAAKuunB,UAAUltnB,IAAI0e,IAAI6Z,MAC9E55B,KAAKsunB,QAAQ79mB,QAAQm3D,KACjB,OAAQA,GAAO41Q,QACN,QACA,IACD,MAAMryR,IAAsB,MAAdyc,GAAO41Q,GAAax9U,KAAKqB,IAAI0e,IAAI6nD,GAAOwvP,YAASriT,IAAc,GAC7Eo2C,GAAKnvC,KAAK2rgB,GAAc//c,GAAO1/D,QAC/BlI,KAAKqB,IAAIkyB,IAAIq0C,GAAOwvP,MAAOjsQ,IAC3B,UACC,IACD,QAAqBp2C,IAAjB6yD,GAAO1/D,MAaN,CACDlI,KAAKqB,IAAI65B,OAAO0sC,GAAOwvP,OACvB,KACH,CAhB+B,CAC5B,IAAIjsQ,GAAOnrD,KAAKqB,IAAI0e,IAAI6nD,GAAOwvP,QAAU,GACzC,MAAMt2T,GAAMqqD,GAAKlqD,QAAQ0mhB,GAAc//c,GAAO1/D,SAClC,IAARpH,IACAqqD,GAAKtE,OAAO/lD,GAAK,GAEjBqqD,GAAK7qD,OAAS,EACdN,KAAKqB,IAAIkyB,IAAIq0C,GAAOwvP,MAAOjsQ,IAG3BnrD,KAAKqB,IAAI65B,OAAO0sC,GAAOwvP,MAE9B,EAIA,GAGbp3T,KAAKuunB,UAAYvunB,KAAKsunB,QAAU,KAEvC;;;;;;;OAqDL,MAAMU,GACFlvnB,cACIE,KAAKqB,IAAM,IAAI2vJ,GAClB,CASDz9H,IAAI1xB,GAAOqG,IACP,YAAK7G,IAAIkyB,IAAI1xB,GAAOqG,IACblI,IACV,CAQD+f,IAAIle,IACA,OAAK7B,KAAKqB,IAAI45B,IAAIp5B,KACd7B,KAAKqB,IAAIkyB,IAAI1xB,GAAOA,GAAM01E,gBAEvBv3E,KAAKqB,IAAI0e,IAAIle,GACvB,CAQDq5B,OAAOr5B,IACH,YAAKR,IAAI65B,OAAOr5B,IACT7B,IACV,CAQDi7B,IAAIp5B,IACA,OAAO7B,KAAKqB,IAAI45B,IAAIp5B,GACvB,CAID83B,OACI,OAAO35B,KAAKqB,IAAIs4B,MACnB;;;;;;;OA8BL,SAASsohB,GAAc/5iB,IACnB,cAAc44W,YAAgB,KAAe54W,cAAiB44W,WACjE,CAMD,SAASmuQ,GAAO/mnB,IACZ,cAAc84W,KAAS,KAAe94W,cAAiB84W,IAC1D,CAMD,SAASkuQ,GAAWhnnB,IAChB,cAAcmxgB,SAAa,KAAenxgB,cAAiBmxgB,QAC9D,CAmBD,MAAMvB,GACFh4gB,YAAY61I,GAAQ5xI,GAAK89hB,GAAOstF,IA+B5B,IAAInpnB,GAyCJ,GAvEAhG,KAAK+D,IAAMA,GAQX/D,KAAK+qE,KAAO,KAOZ/qE,KAAKm5gB,gBAAiB,EAItBn5gB,KAAKo1gB,iBAAkB,EAOvBp1gB,KAAKu0V,aAAe,OACpBv0V,KAAK21I,OAASA,GAAO3rB,cAnF7B,SAASolgB,GAAcz5e,IACnB,OAAQA,QACC,aACA,UACA,WACA,cACA,QACD,OAAO,UAEP,OAAO,EAElB,CA8EWy5e,CAAcpvnB,KAAK21I,SAAaw5e,IAEhCnvnB,KAAK+qE,UAAkBh2D,IAAV8shB,GAAuBA,GAAQ,KAC5C77hB,GAAUmpnB,IAIVnpnB,GAAU67hB,GAGV77hB,KAEAhG,KAAKm5gB,iBAAmBnzgB,GAAQmzgB,eAChCn5gB,KAAKo1gB,kBAAoBpvgB,GAAQovgB,gBAE3BpvgB,GAAQuuV,eACVv0V,KAAKu0V,aAAevuV,GAAQuuV,cAG1BvuV,GAAQ05W,UACV1/W,KAAK0/W,QAAU15W,GAAQ05W,SAErB15W,GAAQyR,UACVzX,KAAKyX,QAAUzR,GAAQyR,SAErBzR,GAAQuiX,SACVvoX,KAAKuoX,OAASviX,GAAQuiX,SAIzBvoX,KAAK0/W,UACN1/W,KAAK0/W,QAAU,IAAIm1J,IAGlB70gB,KAAKyX,UACNzX,KAAKyX,QAAU,IAAIu3mB,IAGlBhvnB,KAAKuoX,OAIL,CAED,MAAMA,GAASvoX,KAAKuoX,OAAO9mX,WAC3B,GAAsB,IAAlB8mX,GAAOjoX,OAEPN,KAAKqvnB,cAAgBtrnB,OAEpB,CAED,MAAMurnB,GAAOvrnB,GAAI9C,QAAQ,KAQnBsunB,IAAe,IAATD,GAAc,IAAOA,GAAOvrnB,GAAIzD,OAAS,EAAI,IAAM,GAC/DN,KAAKqvnB,cAAgBtrnB,GAAMwrnB,GAAMhnQ,EACpC,CACJ,MAvBGvoX,KAAKuoX,OAAS,IAAI8lQ,GAClBrunB,KAAKqvnB,cAAgBtrnB,EAuB5B,CAKDyrnB,gBAEI,OAAkB,OAAdxvnB,KAAK+qE,KACE,KAIPk3e,GAAcjijB,KAAK+qE,OAASkkjB,GAAOjvnB,KAAK+qE,OAASmkjB,GAAWlvnB,KAAK+qE,OA3H7E,SAAS0kjB,GAAkBvnnB,IACvB,cAAcwnnB,gBAAoB,KAAexnnB,cAAiBwnnB,eACrE,CA0HWD,CAAkBzvnB,KAAK+qE,OAA8B,iBAAd/qE,KAAK+qE,KACrC/qE,KAAK+qE,KAGZ/qE,KAAK+qE,gBAAgBsjjB,GACdrunB,KAAK+qE,KAAKtpE,WAGI,iBAAdzB,KAAK+qE,MAA0C,kBAAd/qE,KAAK+qE,MAC7C5pE,MAAMkuB,QAAQrvB,KAAK+qE,MACZ9oE,KAAKsiP,UAAUvkP,KAAK+qE,MAGxB/qE,KAAK+qE,KAAKtpE,UACpB,CAODkunB,0BAMI,OAJkB,OAAd3vnB,KAAK+qE,MAILmkjB,GAAWlvnB,KAAK+qE,MACT,KAIPkkjB,GAAOjvnB,KAAK+qE,MACL/qE,KAAK+qE,KAAKtsD,MAAQ,KAGzBwjiB,GAAcjijB,KAAK+qE,MACZ,KAIc,iBAAd/qE,KAAK+qE,KACL,aAGP/qE,KAAK+qE,gBAAgBsjjB,GACd,kDAGc,iBAAdrunB,KAAK+qE,MAA0C,iBAAd/qE,KAAK+qE,MACxB,kBAAd/qE,KAAK+qE,KACL,mBAGJ,IACV,CACD5lE,MAAMyiE,GAAS,IAGX,MAAM+tE,GAAS/tE,GAAO+tE,QAAU31I,KAAK21I,OAC/B5xI,GAAM6jE,GAAO7jE,KAAO/D,KAAK+D,IACzBwwV,GAAe3sR,GAAO2sR,cAAgBv0V,KAAKu0V,aAK3CxpR,QAAwBh2D,IAAhB6yD,GAAOmD,KAAsBnD,GAAOmD,KAAO/qE,KAAK+qE,KAGxDqqc,QAA8CrggB,IAA3B6yD,GAAOwtc,gBAAiCxtc,GAAOwtc,gBAAkBp1gB,KAAKo1gB,gBACzF+D,QAA4CpkgB,IAA1B6yD,GAAOuxc,eAAgCvxc,GAAOuxc,eAAiBn5gB,KAAKm5gB,eAG5F,IAAIz5J,GAAU93S,GAAO83S,SAAW1/W,KAAK0/W,QACjC6I,GAAS3gT,GAAO2gT,QAAUvoX,KAAKuoX,OAEnC,MAAM9wW,GAAUmwD,GAAOnwD,SAAWzX,KAAKyX,QAEvC,YAA0B1C,IAAtB6yD,GAAOxiE,aAEPs6W,GACIrgW,OAAOsa,KAAKiuC,GAAOxiE,YACdugB,OAAO,CAAC+5V,GAASj4W,KAASi4W,GAAQnsV,IAAI9rB,GAAMmgE,GAAOxiE,WAAWqC,KAAQi4W,KAG/E93S,GAAOgojB,YAEPrnQ,GAASlpW,OAAOsa,KAAKiuC,GAAOgojB,WACvBjqmB,OAAO,CAAC4iW,GAAQnxD,KAAUmxD,GAAOh1V,IAAI6jS,GAAOxvP,GAAOgojB,UAAUx4T,KAASmxD,KAGxE,IAAIuvJ,GAAYniY,GAAQ5xI,GAAKgnE,GAAM,CACtCw9S,UACA7I,WACAjoW,WACA0hgB,kBACA5kL,gBACA6gL,oBAEP;;;;;;;OAeL,IAAI8C,GACOA,OAyBRA,KAAkBA,GAAgB,KArBnBA,GAAc23G,KAAU,GAAK,OAI3C33G,GAAcA,GAAc43G,eAAoB,GAAK,iBAIrD53G,GAAcA,GAAc63G,eAAoB,GAAK,iBAIrD73G,GAAcA,GAAc83G,iBAAsB,GAAK,mBAIvD93G,GAAcA,GAAc+3G,SAAc,GAAK,WAI/C/3G,GAAcA,GAAcg4G,KAAU,GAAK,OAO/C,MAAMC,GAOFrwnB,YAAYy+J,GAAM6xd,GAAgB,IAA6BC,GAAoB,MAG/ErwnB,KAAK0/W,QAAUnhN,GAAKmhN,SAAW,IAAIm1J,GACnC70gB,KAAK2jV,YAAyB5uU,IAAhBwpJ,GAAKolL,OAAuBplL,GAAKolL,OAASysS,GACxDpwnB,KAAKoihB,WAAa7jX,GAAK6jX,YAAciuG,GACrCrwnB,KAAK+D,IAAMw6J,GAAKx6J,KAAO,KAEvB/D,KAAKsoQ,GAAKtoQ,KAAK2jV,QAAU,KAAO3jV,KAAK2jV,OAAS,GACjD,EAWL,MAAM2sS,WAA2BH,GAI7BrwnB,YAAYy+J,GAAO,IACftgJ,MAAMsgJ,IACNv+J,KAAKye,KAAOy5f,GAAc63G,cAC7B,CAKD5qnB,MAAMyiE,GAAS,IAGX,OAAO,IAAI0ojB,GAAmB,CAC1B5wQ,QAAS93S,GAAO83S,SAAW1/W,KAAK0/W,QAChC/7B,YAA0B5uU,IAAlB6yD,GAAO+7Q,OAAuB/7Q,GAAO+7Q,OAAS3jV,KAAK2jV,OAC3Dy+L,WAAYx6c,GAAOw6c,YAAcpihB,KAAKoihB,WACtCr+gB,IAAK6jE,GAAO7jE,KAAO/D,KAAK+D,UAAOgR,GAEtC,EAWL,MAAMojgB,WAAqBg4G,GAIvBrwnB,YAAYy+J,GAAO,IACftgJ,MAAMsgJ,IACNv+J,KAAKye,KAAOy5f,GAAc+3G,SAC1BjwnB,KAAK+qE,UAAqBh2D,IAAdwpJ,GAAKxzF,KAAqBwzF,GAAKxzF,KAAO,IACrD,CACD5lE,MAAMyiE,GAAS,IACX,OAAO,IAAIuwc,GAAa,CACpBptc,UAAuBh2D,IAAhB6yD,GAAOmD,KAAsBnD,GAAOmD,KAAO/qE,KAAK+qE,KACvD20S,QAAS93S,GAAO83S,SAAW1/W,KAAK0/W,QAChC/7B,YAA2B5uU,IAAlB6yD,GAAO+7Q,OAAwB/7Q,GAAO+7Q,OAAS3jV,KAAK2jV,OAC7Dy+L,WAAYx6c,GAAOw6c,YAAcpihB,KAAKoihB,WACtCr+gB,IAAK6jE,GAAO7jE,KAAO/D,KAAK+D,UAAOgR,GAEtC,EAeL,MAAMw7mB,WAA0BJ,GAC5BrwnB,YAAYy+J,IAERtgJ,MAAMsgJ,GAAM,EAAG,iBACfv+J,KAAKyH,KAAO,oBAIZzH,KAAKsoQ,IAAK,EAINtoQ,KAAK2jV,QAAU,KAAO3jV,KAAK2jV,OAAS,IACpC3jV,KAAK6f,QAAW,mCAAkC0+I,GAAKx6J,KAAO,kBAG9D/D,KAAK6f,QAAW,6BAA4B0+I,GAAKx6J,KAAO,oBAAoBw6J,GAAKolL,UAAUplL,GAAK6jX,aAEpGpihB,KAAK27B,MAAQ4iI,GAAK5iI,OAAS,IAC9B;;;;;;;OAoBL,SAAS60lB,GAAQxqnB,GAAS+kE,IACtB,MAAO,CACHA,QACA20S,QAAS15W,GAAQ05W,QACjBjoW,QAASzR,GAAQyR,QACjBwvE,QAASjhF,GAAQihF,QACjBshS,OAAQviX,GAAQuiX,OAChB4wJ,eAAgBnzgB,GAAQmzgB,eACxB5kL,aAAcvuV,GAAQuuV,aACtB6gL,gBAAiBpvgB,GAAQovgB,gBAEhC,CAwDD,MAAMq7G,GACF3wnB,YAAYilF,IACR/kF,KAAK+kF,QAAUA,EAClB,CA2BDjiF,QAAQiT,GAAOhS,GAAKiC,GAAU,IAC1B,IAAIquV,GAEJ,GAAIt+U,cAAiB+hgB,GAGjBzjL,GAAMt+U,OAEL,CAKD,IAAI2pW,GAQA6I,GANA7I,GADA15W,GAAQ05W,mBAAmBm1J,GACjB7ugB,GAAQ05W,QAGR,IAAIm1J,GAAY7ugB,GAAQ05W,SAIhC15W,GAAQuiX,SAENA,GADAviX,GAAQuiX,kBAAkB8lQ,GACjBronB,GAAQuiX,OAGR,IAAI8lQ,GAAW,CAAEI,WAAYzonB,GAAQuiX,UAItDl0B,GAAM,IAAIyjL,GAAY/hgB,GAAOhS,QAAuBgR,IAAjB/O,GAAQ+kE,KAAqB/kE,GAAQ+kE,KAAO,KAAO,CAClF20S,WACAjoW,QAASzR,GAAQyR,QACjB8wW,UACA4wJ,eAAgBnzgB,GAAQmzgB,eAExB5kL,aAAcvuV,GAAQuuV,cAAgB,OACtC6gL,gBAAiBpvgB,GAAQovgB,iBAEhC,CAKD,MAAMs7G,MAAUh2b,MAAG25J,IAAK5uV,QAAK8nP,KAAW8mG,IAAQr0V,KAAK+kF,QAAQ1/E,OAAOgvV,MAIpE,GAAIt+U,cAAiB+hgB,IAAmC,WAApB9xgB,GAAQihF,QACxC,OAAOypiB,GAKX,MAAMC,GAAOD,GAAQjrnB,QAAK6P,KAAQtF,IAAUA,cAAiBmogB,KAE7D,OAAQnygB,GAAQihF,SAAW,YAClB,OAMD,OAAQotQ,GAAIE,kBACH,cACD,OAAOo8R,GAAKlrnB,QAAKpE,MAAKilV,KAElB,GAAiB,OAAbA,GAAIv7Q,QAAmBu7Q,GAAIv7Q,gBAAgB+1S,aAC3C,MAAM,IAAIvgX,MAAM,mCAEpB,OAAO+lV,GAAIv7Q,QALR,IAON,OACD,OAAO4ljB,GAAKlrnB,QAAKpE,MAAKilV,KAElB,GAAiB,OAAbA,GAAIv7Q,QAAmBu7Q,GAAIv7Q,gBAAgBi2S,MAC3C,MAAM,IAAIzgX,MAAM,2BAEpB,OAAO+lV,GAAIv7Q,QALR,IAON,OACD,OAAO4ljB,GAAKlrnB,QAAKpE,MAAKilV,KAElB,GAAiB,OAAbA,GAAIv7Q,MAAqC,iBAAbu7Q,GAAIv7Q,KAChC,MAAM,IAAIxqE,MAAM,6BAEpB,OAAO+lV,GAAIv7Q,QAEd,QAGD,OAAO4ljB,GAAKlrnB,QAAKpE,MAAKilV,IAAQA,GAAIv7Q,OAA3B,IAEd,WAED,OAAO4ljB,WAGP,MAAM,IAAIpwnB,MAAO,uCAAsCyF,GAAQihF,YAE1E,CAUD/rD,OAAOn3B,GAAKiC,GAAU,IAClB,OAAOhG,KAAK8C,QAAQ,SAAUiB,GAAKiC,GACtC,CAMD+Z,IAAIhc,GAAKiC,GAAU,IACf,OAAOhG,KAAK8C,QAAQ,MAAOiB,GAAKiC,GACnC,CAQD+kD,KAAKhnD,GAAKiC,GAAU,IAChB,OAAOhG,KAAK8C,QAAQ,OAAQiB,GAAKiC,GACpC,CAmBD4qnB,MAAM7snB,GAAK8snB,IACP,OAAO7wnB,KAAK8C,QAAQ,QAASiB,GAAK,CAC9BwkX,QAAQ,IAAI8lQ,IAAal2lB,OAAO04lB,GAAe,kBAC/C5piB,QAAS,OACTstQ,aAAc,QAErB,CAQDvuV,QAAQjC,GAAKiC,GAAU,IACnB,OAAOhG,KAAK8C,QAAQ,UAAWiB,GAAKiC,GACvC,CAMD8qnB,MAAM/snB,GAAKgnE,GAAM/kE,GAAU,IACvB,OAAOhG,KAAK8C,QAAQ,QAASiB,GAAKysnB,GAAQxqnB,GAAS+kE,IACtD,CAOD4pQ,KAAK5wU,GAAKgnE,GAAM/kE,GAAU,IACtB,OAAOhG,KAAK8C,QAAQ,OAAQiB,GAAKysnB,GAAQxqnB,GAAS+kE,IACrD,CAODo2Q,IAAIp9U,GAAKgnE,GAAM/kE,GAAU,IACrB,OAAOhG,KAAK8C,QAAQ,MAAOiB,GAAKysnB,GAAQxqnB,GAAS+kE,IACpD,EAEL0ljB,GAAW1tnB,UAAX,4BAAuG0tnB,IAAVztnB,MAAsCkqnB,IAAnI,EACAuD,GAAWxtnB,WADkFD,MAC7F,OAA2GytnB,GAA3GvtnB,QAA2GutnB,GAA3G;;;;;;;;AAiBA,MAAMM,GACFjxnB,YAAYmF,GAAMm9jB,IACdpikB,KAAKiF,KAAOA,GACZjF,KAAKoikB,YAAcA,EACtB,CACD/8jB,OAAOgvV,IACH,OAAOr0V,KAAKoikB,YAAY98jB,UAAU+uV,GAAKr0V,KAAKiF,KAC/C,EAQL,MAAMmB,GAAoB,IAAIxG,MAAe,qBAC7C,MAAMoxnB,GACF1rnB,UAAU+uV,GAAKpvV,IACX,OAAOA,GAAKI,OAAOgvV,GACtB,EAEL28R,GAAgBjunB,UAAhB,4BAA4GiunB,GAA5G,EACAA,GAAgB/tnB,WAxC6ED,MAwC7F,OAAgHgunB,GAAhH9tnB,QAAgH8tnB,GAAhH;;;;;;;;AAgBA,IAKIC,GALAC,GAAgB,EAuBpB,MAAMC,IAUN,MAAMC,GACFtxnB,YAAYuxnB,GAAahunB,IACrBrD,KAAKqxnB,YAAcA,GACnBrxnB,KAAKqD,SAAWA,GAIhBrD,KAAK+H,gBAAkBxC,QAAQyC,SAClC,CAIDspnB,eACI,MAAQ,qBAAoBJ,IAC/B,CAOD7rnB,OAAOgvV,IAGH,GAAmB,UAAfA,GAAI1+M,OACJ,MAAM,IAAIp1I,MA/CS,iDAiDlB,GAAyB,SAArB8zV,GAAIE,aACT,MAAM,IAAIh0V,MAjDgB,+CAqD9B,GAAI8zV,GAAIqrB,QAAQ/lV,OAAOr5B,OAAS,EAC5B,MAAM,IAAIC,MAnDkB,0CAsDhC,OAAO,IAAImkF,IAAY7wD,KAInB,MAAMphB,GAAWzS,KAAKsxnB,eAChBvtnB,GAAMswV,GAAIg7R,cAAchvnB,QAAQ,uBAAyB,IAAGoS,QAE5DxJ,GAAOjJ,KAAKqD,SAAS0O,cAAc,UACzC9I,GAAK8lF,IAAMhrF,GAIX,IAAIgnE,GAAO,KAEPw6L,IAAW,EAIfvlQ,KAAKqxnB,YAAY5+mB,IAAa8M,YAEnBvf,KAAKqxnB,YAAY5+mB,IAExBs4D,GAAOxrD,GACPgmP,IAAW,GAKf,MAAM81G,GAAU,KAERpyW,GAAKC,YACLD,GAAKC,WAAW0J,YAAY3J,WAIzBjJ,KAAKqxnB,YAAY5+mB,KAoD5BxJ,UAAK+sB,iBAAiB,OA9CNhmB,KAIZhQ,KAAK+H,gBAAgBM,KAAK,KAEtBgzW,KAEK91G,IAaL1xO,GAAS5uB,KAAK,IAAIkzgB,GAAa,CAC3Bptc,QACA44Q,OAAQ,IACRy+L,WAAY,KACZr+gB,UAGJ8vB,GAASijE,YAjBLjjE,GAAS8H,MAAM,IAAI40lB,GAAkB,CACjCxsnB,OACA4/U,OAAQ,EACRy+L,WAAY,cACZzmf,MAAO,IAAIp7B,MArHT,oDAkIV,EAxBJ,GA2CJ0I,GAAK+sB,iBAAiB,QAbL2F,KACb0/U,KAEAxnV,GAAS8H,MAAM,IAAI40lB,GAAkB,CACjC50lB,SACAgoT,OAAQ,EACRy+L,WAAY,cACZr+gB,SAJJ,GAWJ/D,KAAKqD,SAAS0nE,KAAK/4D,YAAY/I,IAE/B4qB,GAAS5uB,KAAK,CAAEwZ,KAAMy5f,GAAc23G,OAE7B,KACEtqX,IACDvlQ,KAAKuxnB,gBAAgBtonB,IAGzBoyW,IAAO,CACV,EAER,CACDk2Q,gBAAgBtmX,IAIPgmX,KACDA,GAAkBjxnB,KAAKqD,SAASmuC,eAAeuzP,sBAEnDksV,GAAgBvoiB,UAAUuiL,GAC7B,EAELmmX,GAAmBrunB,UAAnB,4BAA+GqunB,IA7OlBpunB,MA6OsDmunB,IA7OtDnunB,MA6OuF4C,MAApL,EACAwrnB,GAAmBnunB,WA9O0ED,MA8O7F,OAAmHounB,GAAnHlunB,QAAmHkunB,GAAnH,YAeA,MAAMI,GACF1xnB,YAAY8wnB,IACR5wnB,KAAK4wnB,MAAQA,EAChB,CAQDtrnB,UAAU+uV,GAAKpvV,IACX,MAAmB,UAAfovV,GAAI1+M,OACG31I,KAAK4wnB,MAAMvrnB,OAAOgvV,IAGtBpvV,GAAKI,OAAOgvV,GACtB,EAELm9R,GAAiBzunB,UAAjB,4BAA6GyunB,IAhRhBxunB,MAgRkDounB,IAA/I,EACAI,GAAiBvunB,WAjR4ED,MAiR7F,OAAiHwunB,GAAjHtunB,QAAiHsunB,GAAjH;;;;;;;;AAYA,MAAMC,GAAc,eAqBpB,MAAMC,GACF5xnB,YAAY6xnB,IACR3xnB,KAAK2xnB,WAAaA,EACrB,CAMDtsnB,OAAOgvV,IAGH,GAAmB,UAAfA,GAAI1+M,OACJ,MAAM,IAAIp1I,MAAO,iFAGrB,OAAO,IAAImkF,IAAY7wD,KAEnB,MAAMshU,GAAMn1V,KAAK2xnB,WAAWzlmB,QAY5B,GAXAipU,GAAIx7U,KAAK06U,GAAI1+M,OAAQ0+M,GAAIg7R,eACnBh7R,GAAI+gL,kBACNjgL,GAAIigL,iBAAkB,GAG1B/gL,GAAIqrB,QAAQjvW,QAAQ,CAAChJ,GAAMqzB,KAAWq6T,GAAIy8R,iBAAiBnqnB,GAAMqzB,GAAOn5B,KAAK,OAExE0yV,GAAIqrB,QAAQzkV,IAAI,WACjBk6T,GAAIy8R,iBAAiB,SAAU,sCAG9Bv9R,GAAIqrB,QAAQzkV,IAAI,gBAAiB,CAClC,MAAM42lB,GAAex9R,GAAIs7R,0BAEJ,OAAjBkC,IACA18R,GAAIy8R,iBAAiB,eAAgBC,GAE5C,CAED,GAAIx9R,GAAIE,aAAc,CAClB,MAAMA,GAAeF,GAAIE,aAAax5U,cAMtCo6U,GAAIZ,aAAkC,SAAjBA,GAA2BA,GAAe,MAClE,CAED,MAAMu9R,GAAUz9R,GAAIm7R,gBAOpB,IAAIuC,GAAiB,KAGrB,MAAMC,GAAiB,KACnB,GAAuB,OAAnBD,GACA,OAAOA,GAEX,MAAM3vG,GAAajtL,GAAIitL,YAAc,KAE/B1iK,GAAU,IAAIm1J,GAAY1/K,GAAI88R,yBAG9BlunB,GAnFtB,SAASmunB,GAAe/8R,IACpB,MAAI,gBAAiBA,IAAOA,GAAIg9R,YACrBh9R,GAAIg9R,YAEX,mBAAmBztnB,KAAKywV,GAAI88R,yBACrB98R,GAAIi9R,kBAAkB,iBAE1B,IACV,CA2E2BF,CAAe/8R,KAAQd,GAAItwV,IAEvCgunB,UAAiB,IAAIzB,GAAmB,CAAE5wQ,WAAS/7B,OAAQwR,GAAIxR,OAAQy+L,cAAYr+gB,SAC5EgunB,IAKLx7hB,GAAS,KAEX,IAAMmpR,WAAS/7B,UAAQy+L,cAAYr+gB,QAAQiunB,KAEvCjnjB,GAAO,KACI,MAAX44Q,KAEA54Q,UAAeoqR,GAAIX,SAAa,IAAeW,GAAIk9R,aAAel9R,GAAIX,UAG3D,IAAX7Q,KACAA,GAAW54Q,GAAO,IAA8B,GAMpD,IAAIu9L,GAAKq7E,IAAU,KAAOA,GAAS,IAGnC,GAAyB,SAArB0Q,GAAIE,cAA2C,iBAATxpR,GAAmB,CAEzD,MAAMunjB,GAAevnjB,GACrBA,GAAOA,GAAK1qE,QAAQoxnB,GAAa,IACjC,IAEI1mjB,GAAgB,KAATA,GAAc9oE,KAAKC,MAAM6oE,IAAQ,IAe3C,CAdA,MACMpvC,IAIHovC,GAAOunjB,GAGHhqX,KAEAA,IAAK,EAELv9L,GAAO,CAAEpvC,SAAOtjB,KAAM0yD,IAE7B,CACJ,CACGu9L,IAEAz0O,GAAS5uB,KAAK,IAAIkzgB,GAAa,CAC3Bptc,QACA20S,WACA/7B,UACAy+L,cACAr+gB,IAAKA,SAAOgR,KAIhB8e,GAASijE,YAITjjE,GAAS8H,MAAM,IAAI40lB,GAAkB,CAEjC50lB,MAAOovC,GACP20S,WACA/7B,UACAy+L,cACAr+gB,IAAKA,SAAOgR,IANhB,EAaFyhF,GAAW76D,KACb,MAAQ53B,QAAQiunB,KACV1rS,GAAM,IAAIiqS,GAAkB,CAC9B50lB,SACAgoT,OAAQwR,GAAIxR,QAAU,EACtBy+L,WAAYjtL,GAAIitL,YAAc,gBAC9Br+gB,IAAKA,SAAOgR,IAEhB8e,GAAS8H,MAAM2qT,GAAf,EAMJ,IAAIisS,IAAc,EAGlB,MAAMC,GAAkBxinB,KAEfuinB,KACD1+lB,GAAS5uB,KAAK+snB,MACdO,IAAc,GAIlB,IAAIE,GAAgB,CAChBh0mB,KAAMy5f,GAAc83G,iBACpBjud,OAAQ/xJ,GAAM+xJ,QAGd/xJ,GAAM0inB,mBACND,GAAc9qlB,MAAQ33B,GAAM23B,OAKP,SAArB0sT,GAAIE,gBAA6BY,GAAIk9R,eACrCI,GAAcE,YAAcx9R,GAAIk9R,cAGpCx+lB,GAAS5uB,KAAKwtnB,GAAd,EAIEG,GAAgB5inB,KAGlB,IAAI0jB,GAAW,CACXjV,KAAMy5f,GAAc43G,eACpB/td,OAAQ/xJ,GAAM+xJ,QAId/xJ,GAAM0inB,mBACNh/lB,GAASiU,MAAQ33B,GAAM23B,OAG3B9T,GAAS5uB,KAAKyuB,GAAd,EAGJyhU,UAAIn/T,iBAAiB,OAAQugE,IAC7B4+P,GAAIn/T,iBAAiB,QAASwgE,IAC9B2+P,GAAIn/T,iBAAiB,UAAWwgE,IAChC2+P,GAAIn/T,iBAAiB,QAASwgE,IAE1B69P,GAAI8kL,iBAEJhkL,GAAIn/T,iBAAiB,WAAYw8lB,IAEjB,OAAZV,IAAoB38R,GAAIguL,QACxBhuL,GAAIguL,OAAOntf,iBAAiB,WAAY48lB,KAIhDz9R,GAAIR,KAAKm9R,IACTj+lB,GAAS5uB,KAAK,CAAEwZ,KAAMy5f,GAAc23G,OAG7B,KAEH16R,GAAIp+T,oBAAoB,QAASy/D,IACjC2+P,GAAIp+T,oBAAoB,QAASy/D,IACjC2+P,GAAIp+T,oBAAoB,OAAQw/D,IAChC4+P,GAAIp+T,oBAAoB,UAAWy/D,IAC/B69P,GAAI8kL,iBACJhkL,GAAIp+T,oBAAoB,WAAYy7lB,IACpB,OAAZV,IAAoB38R,GAAIguL,QACxBhuL,GAAIguL,OAAOpsf,oBAAoB,WAAY67lB,KAI/Cz9R,GAAI09R,aAAe19R,GAAIpS,MACvBoS,GAAI9wT,OAAJ,CAEP,EAER,EAELqtlB,GAAe3unB,UAAf,4BAA2G2unB,IAtiBd1unB,MAsiB8CqQ,MAA3I,EACAq+mB,GAAezunB,WAviB8ED,MAuiB7F,OAA+G0unB,GAA/GxunB,QAA+GwunB,GAA/G;;;;;;;;AAYA,MAAMoB,GAAmB,IAAIlznB,MAAe,oBACtCmznB,GAAmB,IAAInznB,MAAe,oBAM5C,MAAMoznB,IAKN,MAAMC,GACFnznB,YAAYohQ,GAAK2qB,GAAUkxV,IACvB/8mB,KAAKkhQ,IAAMA,GACXlhQ,KAAK6rR,SAAWA,GAChB7rR,KAAK+8mB,WAAaA,GAClB/8mB,KAAKkznB,iBAAmB,GACxBlznB,KAAKmznB,UAAY,KAIjBnznB,KAAKoznB,WAAa,CACrB,CACDC,WACI,GAAsB,WAAlBrznB,KAAK6rR,SACL,OAAO,KAEX,MAAMynW,GAAetznB,KAAKkhQ,IAAI27W,QAAU,GACxC,OAAIyW,KAAiBtznB,KAAKkznB,mBACtBlznB,KAAKoznB,aACLpznB,KAAKmznB,aAAYI,MAAkBD,GAActznB,KAAK+8mB,YACtD/8mB,KAAKkznB,iBAAmBI,IAErBtznB,KAAKmznB,SACf,EAELF,GAAwBlwnB,UAAxB,4BAAoHkwnB,IAxlBvBjwnB,MAwlBgE4C,MAxlBhE5C,MAwlBqFwwnB,OAxlBrFxwnB,MAwlB6G8vnB,IAA1M,EACAG,GAAwBhwnB,WAzlBqED,MAylB7F,OAAwHiwnB,GAAxH/vnB,QAAwH+vnB,GAAxH,YAgBA,MAAMQ,GACF3znB,YAAY4znB,GAAcnwnB,IACtBvD,KAAK0znB,aAAeA,GACpB1znB,KAAKuD,WAAaA,EACrB,CACD+B,UAAU+uV,GAAKpvV,IACX,MAAM0unB,GAAQt/R,GAAItwV,IAAIgX,cAKtB,GAAmB,QAAfs5U,GAAI1+M,QAAmC,SAAf0+M,GAAI1+M,QAAqBg+e,GAAMlrb,WAAW,YAClEkrb,GAAMlrb,WAAW,YACjB,OAAOxjM,GAAKI,OAAOgvV,IAEvB,MAAMxyV,GAAQ7B,KAAK0znB,aAAaL,WAEhC,OAAc,OAAVxxnB,KAAmBwyV,GAAIqrB,QAAQzkV,IAAIj7B,KAAKuD,cACxC8wV,GAAMA,GAAIlvV,MAAM,CAAEu6W,QAASrrB,GAAIqrB,QAAQnsV,IAAIvzB,KAAKuD,WAAY1B,OAEzDoD,GAAKI,OAAOgvV,GACtB,EAELo/R,GAAoB1wnB,UAApB,4BAAgH0wnB,IAhoBnBzwnB,MAgoBwDgwnB,IAhoBxDhwnB,MAgoB2F+vnB,IAAxL,EACAU,GAAoBxwnB,WAjoByED,MAioB7F,OAAoHywnB,GAApHvwnB,QAAoHuwnB,GAApH;;;;;;;;AAwBA,MAAMG,GACF9znB,YAAY+znB,GAAShuc,IACjB7lL,KAAK6znB,QAAUA,GACf7znB,KAAK6lL,SAAWA,GAChB7lL,KAAKwtc,MAAQ,IAChB,CACDnoc,OAAOgvV,IACH,GAAmB,OAAfr0V,KAAKwtc,MAAgB,CACrB,MAAMsmL,GAAe9znB,KAAK6lL,SAAS9lK,IAAI3Z,GAAmB,IAC1DpG,KAAKwtc,MAAQsmL,GAAa98Y,YAAY,CAAC/xO,GAAMm9jB,KAAgB,IAAI2uD,GAAuB9rnB,GAAMm9jB,IAAcpikB,KAAK6znB,QACpH,CACD,OAAO7znB,KAAKwtc,MAAMnoc,OAAOgvV,GAC5B,EAELu/R,GAAwB7wnB,UAAxB,4BAAoH6wnB,IAvqBvB5wnB,MAuqBgEmqnB,IAvqBhEnqnB,MAuqBwFA,OAArL,EACA4wnB,GAAwB3wnB,WAxqBqED,MAwqB7F,OAAwH4wnB,GAAxH1wnB,QAAwH0wnB,GAAxH,YA4CA,MAAMG,GAIYhunB,iBACV,MAAO,CACHE,SAAU8tnB,GACV7tnB,UAAW,CACP,CAAEC,QAASstnB,GAAqBptnB,SAAU2qnB,KAGrD,CASiBjrnB,mBAACC,GAAU,IACzB,MAAO,CACHC,SAAU8tnB,GACV7tnB,UAAW,CACPF,GAAQ+2mB,WAAa,CAAE52mB,QAAS2snB,GAAkBtsnB,SAAUR,GAAQ+2mB,YAAe,GACnF/2mB,GAAQzC,WAAa,CAAE4C,QAAS4snB,GAAkBvsnB,SAAUR,GAAQzC,YAAe,IAG9F,EAELwwnB,GAAqBhxnB,UAArB,4BAAiHgxnB,GAAjH,EACAA,GAAqBttnB,UAnvBwEzD,MAmvB7F,MAAkH+wnB,KAClHA,GAAqBrtnB,UApvBwE1D,MAovB7F,WAAmJ,CAC3IywnB,GACA,CAAEttnB,QAASC,GAAmB8X,YAAau1mB,GAAqBntnB,OAAO,GACvE,CAAEH,QAAS6snB,GAAwB3snB,SAAU4snB,IAC7C,CAAE9snB,QAAS2snB,GAAkBtsnB,SAAU,cACvC,CAAEL,QAAS4snB,GAAkBvsnB,SAAU,mBAuB/C,MAAMwtnB,IAENA,GAAiBjxnB,UAAjB,4BAA6GixnB,GAA7G,EACAA,GAAiBvtnB,UAnxB4EzD,MAmxB7F,MAA8GgxnB,KAC9GA,GAAiBttnB,UApxB4E1D,MAoxB7F,WAA2I,CACnIytnB,GACA,CAAEtqnB,QAAS+mnB,GAAa7mnB,SAAUutnB,IAClClC,GACA,CAAEvrnB,QAASgnnB,GAAajvmB,YAAawzmB,KAJ7Chjd,SAKiBqld,GAAqB/zF,YAAY,CACtC+8E,WAAY,aACZx5mB,WAAY,oBAqCxB,MAAM0wnB,IAENA,GAAsBlxnB,UAAtB,4BAAkHkxnB,GAAlH,EACAA,GAAsBxtnB,UAn0BuEzD,MAm0B7F,MAAmHixnB,KACnHA,GAAsBvtnB,UAp0BuE1D,MAo0B7F,WAAqJ,CAC7IounB,GACA,CAAEjrnB,QAASgrnB,GAAsB51d,WApIzC,SAAS24d,KACL,MAAsB,iBAAXrimB,OACAA,OAEJ,EACV,GAgIO,CAAE1rB,QAASC,GAAmBC,SAAUmrnB,GAAkBlrnB,OAAO,KA4BtD6tnB;;;;;;;;;;;;;;;ACpuEnB,MAAMpsU,OAAIhzS,EAWV,QAAe,CAAC,KAAM,CAAC,CAAC,KAAM,MAAOgzS,EAAGA,GAAIA,EAAG,CAAC,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UAAM,CAAC,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,gBAAO,CAAC,qEAAe,qEAAe,6CAAW,iCAAS,6CAAW,6CAAW,8CAAY,CAAC,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,iBAAQA,EAAG,CAAC,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UAAM,CAAC,sBAAQ,4BAAS,sBAAQ,sBAAQ,qBAAO,sBAAQ,sBAAQ,sBAAQ,4BAAS,sBAAQ,4BAAS,uBAAS,CAAC,uCAAU,6CAAW,iCAAS,uCAAU,qBAAO,2BAAQ,2BAAQ,6CAAW,mDAAY,6CAAW,uCAAU,+CAAa,CAAC,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UAAM,CAAC,sBAAQ,4BAAS,2BAAQ,sBAAQ,qBAAO,2BAAQ,2BAAQ,sBAAQ,4BAAS,sBAAQ,4BAAS,uBAAS,CAAC,uCAAU,6CAAW,2BAAQ,uCAAU,qBAAO,2BAAQ,2BAAQ,uCAAU,mDAAY,6CAAW,uCAAU,+CAAa,CAAC,CAAC,8BAAW,kBAAS,CAAC,+BAAY,mBAAU,CAAC,uHAAyB,yHAA2B,EAAG,CAAC,EAAG,GAAI,CAAC,UAAW,oBAAgB,qBAAiB,4BAAwB,CAAC,QAAS,WAAY,aAAc,iBAAkB,CAAC,WAAYA,EAAGA,EAAGA,GAAI,CAAC,IAAK,OAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAAK,SAAK,SAAK,iDAAY,KAAM,CAAC,YAAa,aAAW,mBAAc,OAAQ,MAAO,SAAK,8FAAoB,CAAE8oK,IAAO,CAAC9oK,EAAG,WAAO2rK,IAAO,CAAC3rK,EAAG,UAAM8xK,IAAO,CAAC9xK,EAAG,UAAMuyK,IAAO,CAACvyK,EAAG,KAAMyyK,IAAO,CAAC,UAAMC,IAAO,CAAC,WAAOwB,IAAO,CAAC,UAAMI,IAAO,CAAC,sBAAQM,IAAO,CAAC,OAAQE,IAAO,CAAC,UAAMsC,IAAO,CAAC,SAAW,MAVl4C,SAAS2zG,EAAO/3X,GACZ,MAAevlM,EAAIkf,KAAKI,MAAMJ,KAAKsH,IAAI++K,IAAO8c,GAAI9c,EAAIt5M,WAAWpB,QAAQ,YAAa,IAAIC,OAC1F,OAAU,IAANu3N,IAAYriN,EAAI,IAAO,GAAOA,EAAI,KAAQ,GACnC,EACD,IAANqiN,IAAYriN,EAAI,KAAOkf,KAAKI,MAAMtf,EAAI,KAAQA,EAAI,IAAM,GAAKA,EAAI,IAAM,KAAQA,EAAI,KAAO,IAAMA,EAAI,KAAO,IACpG,EACD,IAANqiN,IAAWriN,EAAI,IAAO,GAAY,IAANqiN,IAAYriN,EAAI,KAAOkf,KAAKI,MAAMtf,EAAI,KAAQA,EAAI,IAAM,GAAKA,EAAI,IAAM,GAAa,IAANqiN,IAAYriN,EAAI,MAAQkf,KAAKI,MAAMtf,EAAI,MAASA,EAAI,KAAO,IAAMA,EAAI,KAAO,GAC/K,EACJ,CACV,EACc;;;;;;;;;;;;OCHf,SAAS4+mB,EAAuBC,GAC5B,QAASz6lB,KAAOy6lB,EACZ,GAAIA,EAAyBz6lB,KAASw6lB,EAClC,OAAOx6lB,EAGf,MAAMr5B,MAAM,oDACf,CAOD,SAAS+znB,GAAez3mB,EAAQ8T,GAC5B,UAAWiJ,KAAOjJ,EACVA,EAAOvuB,eAAew3B,KAAS/c,EAAOza,eAAew3B,KACrD/c,EAAO+c,GAAOjJ,EAAOiJ,GAGhC;;;;;;;OASD,SAAS2qN,GAAU1iP,GACf,GAAqB,iBAAVA,EACP,OAAOA,EAEX,GAAIV,MAAMkuB,QAAQxtB,GACd,MAAO,IAAMA,EAAMR,IAAIkjP,IAAW5iP,KAAK,MAAQ,IAEnD,GAAa,MAATE,EACA,MAAO,GAAKA,EAEhB,GAAIA,EAAM0ynB,eACN,MAAQ,GAAE1ynB,EAAM0ynB,iBAEpB,GAAI1ynB,EAAM4F,KACN,MAAQ,GAAE5F,EAAM4F,OAEpB,MAAM6+U,EAAMzkV,EAAMJ,WAClB,GAAW,MAAP6kV,EACA,MAAO,GAAKA,EAEhB,MAAMkuS,EAAeluS,EAAIrlV,QAAQ,MACjC,OAAwB,IAAjBuznB,EAAsBluS,EAAMA,EAAIp0S,UAAU,EAAGsilB,EACvD,CASD,SAASC,GAAuBrzX,EAAQC,GACpC,OAAkB,MAAVD,GAA6B,KAAXA,EACX,OAAVC,EAAiB,GAAKA,EACZ,MAATA,GAA2B,KAAVA,EAAgBD,EAASA,EAAS,IAAMC,CAClE;;;;;;;OASD,MAAMqzX,GAAkBN,EAAuB,CAAEM,gBAAiBN,IAalE,SAASj2mB,GAAWw2mB,GAChBA,SAAaD,gBAAkBv2mB,GAC/Bw2mB,EAAalznB,SAAW,WACpB,OAAO8iP,GAAUvkP,OACpB,EACM20nB,CACV,CAcD,SAASC,GAAkBn2mB,GACvB,OAAOo2mB,GAAap2mB,GAAQA,IAASA,CACxC,CAED,SAASo2mB,GAAarkmB,GAClB,MAAqB,mBAAPA,GAAqBA,EAAGpuB,eAAesynB,KACjDlkmB,EAAGkkmB,kBAAoBv2mB,EAC9B;;;;;;;;;;;;;;;AAwCD,MAAM22mB,WAAqBv0nB,MACvBT,YAAYk2H,EAAMn2G,GACd5B,MAAM82mB,GAAmB/+f,EAAMn2G,IAC/B7f,KAAKg2H,KAAOA,CACf,EAML,SAAS++f,GAAmB/+f,EAAMn2G,GAW9B,MAPoB,MADG6U,KAAKsH,IAAIg6F,KACCn2G,EAAU,KAAOA,EAAQ/N,OAAS,IAQtE;;;;;;;OAeD,SAASkjnB,GAAgB9snB,GACrB,MAAqB,iBAAVA,EACAA,EACE,MAATA,EACO,GAGJxH,OAAOwH,EACjB,CAMD,SAAS+snB,GAAkB/snB,GACvB,MAAqB,mBAAVA,EACAA,EAAMT,MAAQS,EAAMzG,WACV,iBAAVyG,GAA+B,MAATA,GAAuC,mBAAfA,EAAMuW,KACpDvW,EAAMuW,KAAKhX,MAAQS,EAAMuW,KAAKhd,WAElCuznB,GAAgB9snB,EAC1B;;;;;;;OA8BD,SAASgtnB,GAA2BrznB,EAAOsznB,GAEvC,MAAM,IAAIL,IAAa,KAAgDpR,EAC1E;;;;;;;OA6BD,SAAS0R,GAAYC,EAAQv9c,EAAUqmK,GAC7Bk3S,GAAUv9c,GACZ8sb,GAAWzmR,EAAKk3S,EAAQv9c,EAAU,KAEzC,CAyCD,SAASw9c,GAAcD,EAAQl3S,GACb,MAAVk3S,GACAzwB,GAAWzmR,EAAKk3S,EAAQ,KAAM,KAErC,CACD,SAASzwB,GAAWzmR,EAAKk3S,EAAQv9c,EAAUy9c,GACvC,MAAM,IAAIh1nB,MAAO,oBAAmB49U,KACjB,MAAdo3S,EAAqB,GAAM,gBAAez9c,KAAYy9c,KAAcF,eAC5E;;;;;;;;AA8CD,SAAStO,GAAmBjoS,GACxB,MAAO,CACHj9U,MAAOi9U,EAAKj9U,MACZmlnB,WAAYloS,EAAKkoS,YAAc,KAC/B9jnB,QAAS47U,EAAK57U,QACdgF,WAAO6M,EAEd,CAwBD,SAASygnB,GAAiBxvnB,GACtB,MAAO,CAAEE,UAAWF,EAAQE,WAAa,GAAIwoK,QAAS1oK,EAAQ0oK,SAAW,GAC5E,CAOD,SAAS+md,GAAiBh3mB,GACtB,OAAOi3mB,GAAiBj3mB,EAAMk3mB,KAAgBD,GAAiBj3mB,EAAMm3mB,GACxE,CACD,SAASC,GAAap3mB,GAClB,OAAkC,OAA3Bg3mB,GAAiBh3mB,EAC3B,CAKD,SAASi3mB,GAAiBj3mB,EAAM+S,GAC5B,OAAO/S,EAAKrc,eAAeovB,GAAS/S,EAAK+S,GAAS,IACrD,CA0CD,SAASskmB,GAAer3mB,GACpB,OAAOA,IAASA,EAAKrc,eAAe2znB,KAAet3mB,EAAKrc,eAAe4znB,KACnEv3mB,EAAKs3mB,IACL,IACP,CACD,MAAMJ,GAAcvB,EAAuB,CAAEnxnB,WAAOmxnB,IAC9C2B,GAAa3B,EAAuB,CAAE1tnB,UAAM0tnB,IAE5CwB,GAAoBxB,EAAuB,CAAE6B,gBAAiB7B,IAC9D4B,GAAkB5B,EAAuB,CAAE8B,cAAe9B;;;;;;;OAehE,IAAI+B,GACOA;;;;;;;;AAkCX,IAAIC,GAOJ,SAASC,GAAwBC,GAC7B,MAAM3uf,EAAWyuf,GACjBA,UAAwBE,EACjB3uf,CACV,CAQD,SAAS4uf,GAAmB10nB,EAAO+pN,EAAekjH,GAC9C,MAAM0nT,EAAgBf,GAAiB5znB,GACvC,OAAI20nB,GAA6C,QAA5BA,EAAcxP,gBACAjymB,IAAxByhnB,EAActunB,MAAsBsunB,EAActunB,MAAQsunB,EAActznB,UAC3EsznB,EAActunB,MAElB4mU,EAAQqnT,GAAYM,SACb,UACW1hnB,IAAlB62M,EACOA,OACXspa,GAA2B3wY,GAAU1iP,GACxC;;;;;;;;AA6BD,SAAS60nB,GAAclmmB,GACnB,MAAO,CAAE/uB,SAAU+uB,GAAK/uB,UAC3B;;;;;;;OAiBD,IAAIk1nB,GAmBAC,GAiEAC,IApMOV,EAgBRA,KAAgBA,GAAc,KAZjBA,EAAY/vJ,QAAa,GAAK,UAK1C+vJ,EAAYA,EAAYW,KAAU,GAAK,OAEvCX,EAAYA,EAAYY,KAAU,GAAK,OAEvCZ,EAAYA,EAAYa,SAAc,GAAK,WAE3Cb,EAAYA,EAAYM,SAAc,GAAK,WAkG/C,SAAWE,GAOPA,EAAwBA,EAAwBM,OAAY,GAAK,SAKjEN,EAAwBA,EAAwBvwJ,QAAa,GAAK,SACrE,CAbD,CAaGuwJ,KAA4BA,GAA0B,KAMzD,SAAWC,GAKPA,EAAqBA,EAAqBM,UAAe,GAAK,YAK9DN,EAAqBA,EAAqBO,QAAa,GAAK,UAK5DP,EAAqBA,EAAqBQ,YAAiB,GAAK,cAKhER,EAAqBA,EAAqBS,SAAc,GAAK,WAM7DT,EAAqBA,EAAqBU,QAAa,GAAK,UAI5DV,EAAqBA,EAAqBW,UAAe,GAAK,WACjE,CA/BD,CA+BGX,KAAyBA,GAAuB,KAkCnD,SAAWY,GAUPA,EAAkBA,EAAkBC,SAAc,GAAK,WAOvDD,EAAkBA,EAAkBpzb,KAAU,GAAK,OAMnDozb,EAAkBA,EAAkBE,UAAe,GAAK,WAC3D,CAxBD,CAwBGb,KAAwBA,GAAsB;;;;;;;;AAcjD,MAAMc,GAA4B,YAAcC,WAAe,KAAeA,mBAClE/se,OAAW,KAAeA,eAAmBh5H,OAAW,KAAeA,eACvEopO,KAAS,YAAsB48X,kBAAsB,KACzD58X,gBAAgB48X,mBAAqB58X,KAHX;;;;;;;;;;;;;;;AA4FlC,MAAM68X,GAAY,GACZC,GAAc,GAkBdC,GAAc5D,EAAuB,CAAE79mB,UAAM69mB,IAC7C6D,GAAa7D,EAAuB,CAAE9gnB,UAAM8gnB,IAC5C8D,GAAc9D,EAAuB,CAAE99M,WAAO89M,IAC9C+D,GAAa/D,EAAuB,CAAE3tnB,UAAM2tnB,IAC5CgE,GAAiBhE,EAAuB,CAAErxnB,UAAMqxnB,IAOhDiE,GAAgBjE,EAAuB,CAAEkE,kBAAmBlE;;;;;;;;;;;;;;;AAUlE,IAAImE,GAAoB,EAiBxB,SAASC,GAAkBC,GACvB,OAAO/B,GAAc,KAIjB,MAAMj4mB,EAAOg6mB,EAAoBh6mB,KAC3BmuZ,GAAgD,IAAnC6rN,EAAoB7rN,WACjC8rN,EAAiB,GACjBlgX,EAAM,CACR/5P,KAAMA,EACNk6mB,kBAAmB,KACnBp2mB,MAAOk2mB,EAAoBl2mB,MAC3Bq2mB,KAAMH,EAAoBG,KAC1B11nB,QAAS,KACTmvB,SAAUommB,EAAoBpmmB,UAAY,KAC1CwmmB,OAAQJ,EAAoBI,QAAU,KACtCninB,mBAAoB+hnB,EAAoB/hnB,mBACxCgpgB,aAAc+4G,EAAoB/4G,cAAgB,KAClDo5G,SAAUL,EAAoBK,UAAY,EAC1CC,UAAWN,EAAoBM,WAAa,KAC5C31N,eAAgBq1N,EAAoBr1N,gBAAkB,KACtDs1N,eAAgBA,EAChBxoZ,OAAQ,KACR8oZ,QAAS,KACTC,SAAUR,EAAoBQ,UAAY,KAC1CC,OAAQT,EAAoBU,kBAAoBxC,GAAwBM,OACxEmC,cAAe,KACfC,SAAU,KACVzsN,aACA0sN,aAAc1sN,GAAc6rN,EAAoBa,cAAgB,KAChEC,sBAAuB,KACvBhmnB,UAAWklnB,EAAoBllnB,WAAawknB,GAC5Cxsa,UAAWkta,EAAoBlta,WAAa,KAC5C3pE,SAAU62e,EAAoB72e,UAAY,KAC1CriI,KAAMk5mB,EAAoBl5mB,MAAQ,GAClC9G,cAAeggnB,EAAoBhgnB,eAAiBo+mB,GAAoBY,SACxEvvmB,GAAK,IAAGqwmB,KACR7mmB,OAAQ+mmB,EAAoB/mmB,QAAUqmmB,GACtC54c,EAAG,KACHq6c,SAAU,KACVC,QAAShB,EAAoBgB,SAAW,KACxCC,MAAO,MAELJ,EAAeb,EAAoBa,aACnCK,GAAUlB,EAAoB72e,SACpC42H,SAAItoC,OAAS0pZ,GAAanB,EAAoBvoZ,OAAQwoZ,GAClDlgX,EAAIwgX,QAAUY,GAAanB,EAAoBO,SAC/CW,IAAWA,GAAQlpnB,QAAS+f,IAAOA,GAAGgoP,IAC1CA,EAAI4gX,cAAgBE,EACf,KAA+B,mBAAjBA,EAA8BA,IAAiBA,GACzDj4nB,IAAIw4nB,IACJvknB,OAAOwknB,IACZ,KACJthX,EAAI6gX,SAAWC,EACV,KAA+B,mBAAjBA,EAA8BA,IAAiBA,GACzDj4nB,IAAI04nB,IACJzknB,OAAOwknB,IACZ,KACGthX,GAEd,CAUD,SAASwhX,GAAoBv7mB,EAAMw7mB,EAAYC,GAC3C,MAAM1hX,EAAM/5P,EAAKlI,UACjBiiQ,EAAI4gX,cAAgB,KAA6B,mBAAfa,EAA4BA,IAAeA,GAAY54nB,IAAIw4nB,IAC7FrhX,EAAI6gX,SAAW,KAAwB,mBAAVa,EAAuBA,IAAUA,GAAO74nB,IAAI04nB,GAC5E,CACD,SAASF,GAAoBp7mB,GACzB,OAAO07mB,GAAgB17mB,IAAS27mB,GAAgB37mB,EACnD,CACD,SAASq7mB,GAAQ5xnB,GACb,OAAiB,OAAVA,CACV,CAID,SAASmynB,GAAiB7hX,GACtB,OAAOk+W,GAAc,MAEbj4mB,KAAM+5P,EAAI/5P,KACV67mB,UAAW9hX,EAAI8hX,WAAavC,GAC5BwC,aAAc/hX,EAAI+hX,cAAgBxC,GAClCrpd,QAAS8pG,EAAI9pG,SAAWqpd,GACxBjlM,QAASt6K,EAAIs6K,SAAWilM,GACxByC,wBAAyB,KACzBf,QAASjhX,EAAIihX,SAAW,KACxBvxmB,GAAIswP,EAAItwP,IAAM,OAIzB,CAWD,SAASuymB,GAAmBh8mB,EAAMgzJ,GAC9B,OAAOild,GAAc,KACjB,MAAMgE,EAAcC,GAAel8mB,GAAM,GACzCi8mB,EAAYH,aAAe9od,EAAM8od,cAAgBxC,GACjD2C,EAAYhsd,QAAU+C,EAAM/C,SAAWqpd,GACvC2C,EAAY5nM,QAAUrhR,EAAMqhR,SAAWilM,IAE9C,CAwDD,SAAS6B,GAAa7mmB,EAAK6nmB,GACvB,GAAW,MAAP7nmB,EACA,OAAO+kmB,GACX,MAAM+C,EAAY,GAClB,UAAWC,KAAe/nmB,EACtB,GAAIA,EAAI3wB,eAAe04nB,GAAc,CACjC,IAAIC,EAAahomB,EAAI+nmB,GACjBE,EAAeD,EACf55nB,MAAMkuB,QAAQ0rmB,KACdC,EAAeD,EAAW,GAC1BA,EAAaA,EAAW,IAE5BF,EAAUE,GAAcD,EACpBF,IACCA,EAAUG,GAAcC,EAEhC,CAEL,OAAOH,CACV,CAiBD,MAAMI,GAAoBzC,GAiB1B,SAAS0C,GAAaC,GAClB,MAAO,CACH18mB,KAAM08mB,EAAQ18mB,KACdhX,KAAM0znB,EAAQ1znB,KACdvE,QAAS,KACTqza,MAAuB,IAAjB4kN,EAAQ5kN,KACd3J,YAAmC,IAAvBuuN,EAAQvuN,WACpBw/L,UAAW+uB,EAAQ18mB,KAAKrd,UAAUyP,aAAe,KAExD,CAMD,SAASspnB,GAAgB17mB,GACrB,OAAOA,EAAKu5mB,KAAgB,IAC/B,CACD,SAASoC,GAAgB37mB,GACrB,OAAOA,EAAKw5mB,KAAe,IAC9B,CACD,SAAS8B,GAAat7mB,GAClB,OAAOA,EAAKy5mB,KAAgB,IAC/B,CACD,SAASkD,GAAa38mB,GAClB,MAAM+5P,EAAM2hX,GAAgB17mB,IAAS27mB,GAAgB37mB,IAASs7mB,GAAat7mB,GAC3E,OAAe,OAAR+5P,GAAeA,EAAIo0J,UAC7B,CACD,SAAS+tN,GAAel8mB,EAAM48mB,GAC1B,MAAMX,EAAcj8mB,EAAK05mB,KAAe,KACxC,IAAKuC,IAAiC,IAAlBW,EAChB,MAAM,IAAI96nB,MAAO,QAAOgkP,GAAU9lO,0CAEtC,OAAOi8mB,CACV;;;;;;;;;;;;;;;AAgHD,SAASY,GAAQpznB,GACb,OAAO/G,MAAMkuB,QAAQnnB,IAAiC,iBAAhBA,EA7C7B,EA8CZ,CAKD,SAASqznB,GAAarznB,GAClB,OAAO/G,MAAMkuB,QAAQnnB,KAA0B,IAAhBA,EApDtB,EAqDZ,CACD,SAASsznB,GAAmBC,GACxB,OAA8D,IAAxC,EAAdA,EAAM3sT,MACjB,CACD,SAAS4sT,GAAgBD,GACrB,OAA8D,IAAxC,EAAdA,EAAM3sT,MACjB,CACD,SAAS6sT,GAAgBF,GACrB,OAA8D,IAAxC,EAAdA,EAAM3sT,MACjB,CACD,SAAS8sT,GAAepjX,GACpB,OAAwB,OAAjBA,EAAInmP,QACd,CACD,SAASwpmB,GAAWh/mB,GAChB,OAAyD,IAAjC,IAAhBA,EAzHE,GA0Hb;;;;;;;;;;;;;;;AAoID,SAASi/mB,GAAcr9mB,EAAM48mB,GAKzB,OAJsB58mB,EAAKrc,eAAeg2nB,IAInB35mB,EAAK25mB,IAAkB,IACjD;;;;;;;OAkBD,MAAMl/d,GACFp5J,YAAY8J,EAAegX,EAAci/M,GACrC7/N,KAAK4J,cAAgBA,EACrB5J,KAAK4gB,aAAeA,EACpB5gB,KAAK6/N,YAAcA,CACtB,CAIDlvD,gBACI,OAAO3wK,KAAK6/N,WACf;;;;;;;OAgCL,SAASk8Z,KACL,OAAOC,EACV,CACD,SAASA,GAAuB3xiB,GAC5B,OAAIA,EAAW5rE,KAAKrd,UAAUiP,cAC1Bg6E,EAAWmviB,SAAWyC,IAEnBC,EACV,CAgBD,SAASA,KACL,MAAMC,EAAqBC,GAAsBp8nB,MAC3CqV,EAAU8mnB,GAAoB9mnB,QACpC,GAAIA,EAAS,CACT,MAAMsyH,EAAWw0f,EAAmBx0f,SACpC,GAAIA,IAAamwf,GACbqE,EAAmBx0f,SAAWtyH,OAK9B,QAASukB,KAAOvkB,EACZsyH,EAAS/tG,GAAOvkB,EAAQukB,GAGhCuimB,EAAmB9mnB,QAAU,KAC7BrV,KAAKqQ,YAAYgF,EACpB,CACJ,CACD,SAAS4mnB,GAAoBv7mB,EAAUxY,EAAO6ynB,EAAYsB,GACtD,MAAMF,EAAqBC,GAAsB17mB,IAarD,SAAS47mB,GAAsB57mB,EAAU44I,GACrC,OAAO54I,EAAS67mB,IAAwBjje,CAC3C;;;;;;;OAdOgje,CAAsB57mB,EAAU,CAAEinH,SAAUmwf,GAAWzinB,QAAS,OAC9DA,EAAU8mnB,EAAmB9mnB,UAAY8mnB,EAAmB9mnB,QAAU,IACtEsyH,GAAWw0f,EAAmBx0f,SAC9Bqzf,GAAeh7nB,KAAK04nB,eAAeqC,GACnCyB,GAAiB70f,GAASqzf,IAChC3lnB,EAAQ2lnB,IAAgB,IAAI9he,GAAasje,IAAkBA,GAAe57mB,aAAc1Y,EAAOy/H,KAAamwf,IAC5Gp3mB,EAAS27mB,GAAen0nB,CAC3B,CAvCD6znB,GAAqBU,WAAY,EAwCjC,MAAMF,GAAuB,sBAC7B,SAASH,GAAsB17mB,GAC3B,OAAOA,EAAS67mB,KAAyB,IAC5C,CAYD,IAAIG,GAAmB,KAWvB,MAYMC,GAAW,SAAU3snB,EAAO0Q,EAAUk8mB,GAEpCF,KAAiB1snB,EAAO0Q,EAAUk8mB,EAEzC,EAWKC,GAAoB;;;;;;;;;;;;;;;AAmC1B,SAASC,GAAY50nB,GACjB,KAAO/G,MAAMkuB,QAAQnnB,IACjBA,EAAQA,EAldH,GAodT,OAAOA,CACV,CAiCD,SAAS60nB,GAAiBvwnB,EAAOwwnB,GAG7B,OAAOF,GAAYE,EAAMxwnB,GAC5B,CASD,SAASywnB,GAAiBxB,EAAOuB,GAI7B,OADaF,GAAYE,EAAMvB,EAAMjvnB,OAExC,CAmBD,SAAS0wnB,GAASxD,EAAOltnB,GAKrB,OAFcktnB,EAAMn6mB,KAAK/S,EAG5B,CAED,SAASutB,GAAKkiH,EAAMzvI,GAEhB,OAAOyvI,EAAKzvI,EACf,CACD,SAAS2wnB,GAAyB5ma,EAAWgrS,GAGzC,MAAM67H,EAAY77H,EAAShrS,GAE3B,OADc+ka,GAAQ8B,GAAaA,EAAYA,EA3iBtC,EA6iBZ,CAED,SAASC,GAAephf,GACpB,OAA2D,IAArC,EAAdA,EA9iBE,GA+iBb,CAOD,SAASqhf,GAA6Brhf,GAClC,OAAwD,KAAlC,GAAdA,EAvjBE,GAwjBb,CAKD,SAASshf,GAAY1E,EAAQrsnB,GACzB,OAAc,MAAVA,EACO,KAEJqsnB,EAAOrsnB,EACjB,CAKD,SAASgxnB,GAAuBR,GAC5BA,EAvjBwB,IAujBK,CAChC,CAQD,SAASS,GAA4BC,EAAY/1hB,GAC7C+1hB,EA/kBkC,IA+kBW/1hB,EAC7C,IAAIg2hB,EAAkBD,EAClB/lmB,EAAS+lmB,EAnlBF,GAolBX,KAAkB,OAAX/lmB,IACU,IAAXgwE,GAAmE,IAAnDg2hB,EAnlBY,KAolBd,IAAXh2hB,GAAoE,IAAnDg2hB,EAplBQ,KAqlB9BhmmB,EArlB8B,IAqlBWgwE,EACzCg2hB,EAAkBhmmB,EAClBA,EAASA,EAzlBF;;;;;;;OA2lBd,CASD,MAAMimmB,GAAmB,CACrBC,OAAQC,GAAa,MACrBC,iBAAiB,GA4BrB,SAASC,KACL,OAAOJ,GAAiBG,eAC3B,CAoBD,SAASE,KACLL,GAAiBG,iBAAkB,CACtC,CAoBD,SAASG,KACLN,GAAiBG,iBAAkB,CACtC,CAID,SAASI,KACL,OAAOP,GAAiBC,OAAOb,KAClC,CAID,SAASoB,KACL,OAAOR,GAAiBC,OAAOnE,KAClC,CAaD,SAAS2E,GAAcC,GACnBV,UAAiBC,OAAOU,aAAeD,EAChCA,EAtsBK,EAusBf,CAOD,SAASE,GAAYt2nB,GACjB01nB,UAAiBC,OAAOU,aAAe,KAChCr2nB,CACV,CACD,SAASu2nB,KACL,IAAIC,EAAeC,KACnB,KAAwB,OAAjBD,GAA+C,KAAtBA,EAAajgnB,MACzCignB,EAAeA,EAAa/mmB,OAEhC,OAAO+mmB,CACV,CACD,SAASC,KACL,OAAOf,GAAiBC,OAAOa,YAClC,CACD,SAASE,KACL,MAAMf,EAASD,GAAiBC,OAC1Ba,EAAeb,EAAOa,aAC5B,OAAOb,EAAOgB,SAAWH,EAAeA,EAAa/mmB,MACxD,CACD,SAASmnmB,GAAgBrD,EAAOoD,GAE5B,MAAMhB,EAASD,GAAiBC,OAChCA,EAAOa,aAAejD,EACtBoC,EAAOgB,SAAWA,CACrB,CACD,SAASE,KACL,OAAOnB,GAAiBC,OAAOgB,QAClC,CACD,SAASG,KACLpB,GAAiBC,OAAOgB,UAAW,CACtC,CAkBD,SAASI,KACL,MAAMpB,EAASD,GAAiBC,OAChC,IAAIrxnB,EAAQqxnB,EAAOqB,iBACnB,OAAc,IAAV1ynB,IACAA,EAAQqxnB,EAAOqB,iBAAmBrB,EAAOnE,MAAMyF,mBAE5C3ynB,CACV,CACD,SAAS4ynB,KACL,OAAOxB,GAAiBC,OAAOwB,YAClC,CACD,SAASC,GAAgBp3nB,GACrB,OAAO01nB,GAAiBC,OAAOwB,aAAen3nB,CACjD,CACD,SAASq3nB,KACL,OAAO3B,GAAiBC,OAAOwB,cAClC,CACD,SAASG,GAAsBhrlB,GAC3B,MAAMqplB,EAASD,GAAiBC,OAC1BrxnB,EAAQqxnB,EAAOwB,aACrBxB,SAAOwB,aAAexB,EAAOwB,aAAe7qlB,EACrChoC,CACV,CAID,SAASiznB,GAAeC,GACpB9B,GAAiBC,OAAO8B,OAASD,CACpC,CAYD,SAASE,GAA8BV,EAAkBW,GACrD,MAAMhC,EAASD,GAAiBC,OAChCA,EAAOwB,aAAexB,EAAOqB,iBAAmBA,EAChDY,GAAyBD,EAC5B,CAcD,SAASC,GAAyBD,GAC9BjC,GAAiBC,OAAOgC,sBAAwBA,CACnD,CAOD,SAASE,GAAuBC,GAC5B,MAAMH,EAAwBjC,GAAiBC,OAAOgC,sBACtD,OAAiC,IAA1BA,EAA+B,KAAOG,EAAMH,EACtD,CACD,SAASI,KACL,OAAOrC,GAAiBC,OAAOqC,iBAClC,CACD,SAASC,GAAqBj4nB,GAC1B01nB,GAAiBC,OAAOqC,kBAAoBh4nB,CAC/C,CAMD,SAASk4nB,GAAoBpD,GACzB,MAAMtD,EAAQsD,EAx1BJ,GA01BV,OAAmB,IAAftD,EAAMj7mB,KAECi7mB,EAAM2G,UAKE,IAAf3G,EAAMj7mB,KACCu+mB,EA71BA,GAg2BJ,IACV,CAcD,SAASsD,GAAQtD,EAAOvB,EAAO3sT,GAE3B,GAAIA,EAAQqnT,GAAYa,SAAU,CAE9B,IAAIuJ,EAAc9E,EACd+E,EAAcxD,EAClB,MAEIuD,EAAcA,EAAY5omB,OACN,OAAhB4omB,KAA0BzxT,EAAQqnT,GAAYW,SAC9CyJ,EAAcH,GAAoBI,KACd,OAAhBD,IAKJC,EAAcA,EAr3BL,IAy3Be,GAApBD,EAAY9hnB,UAQxB,GAAoB,OAAhB8hnB,EAEA,OAAO,EAGP9E,EAAQ8E,EACRvD,EAAQwD,CAEf,CAED,MAAM3C,EAASD,GAAiBC,OAAS4C,KACzC5C,SAAOa,aAAejD,EACtBoC,EAAOb,MAAQA,GACR,CACV,CAYD,SAAS0D,GAAUC,GAGf,MAAMC,EAAYH,KAYZ/G,EAAQiH,EAz7BJ,GA07BV/C,GAAiBC,OAAS+C,EAE1BA,EAAUlC,aAAehF,EAAMnnnB,WAC/BqunB,EAAU5D,MAAQ2D,EAClBC,EAAUlH,MAAQA,EAClBkH,EAAUrC,aAAeoC,EACzBC,EAAUvB,aAAe3F,EAAMyF,kBAC/ByB,EAAUjB,QAAS,CACtB,CAID,SAASc,KACL,MAAMI,EAAgBjD,GAAiBC,OACjCiD,EAAgC,OAAlBD,EAAyB,KAAOA,EAAcl6lB,MAElE,OADkC,OAAhBm6lB,EAAuBhD,GAAa+C,GAAiBC,CAE1E,CACD,SAAShD,GAAanmmB,GAClB,MAAMkmmB,EAAS,CACXa,aAAc,KACdG,UAAU,EACV7B,MAAO,KACPtD,MAAO,KACPvnb,eAAe,EACfosb,aAAc,KACdwC,kBAAmB,EACnBC,iBAAkB,KAClBnB,uBAAuB,EACvBX,kBAAkB,EAClBG,cAAc,EACda,kBAAmB,EACnBvomB,OAAQA,EACRgP,MAAO,KACPg5lB,QAAQ,GAEZhomB,OAAW,OAAXA,IAAoBA,EAAOgP,MAAQk3lB,GAC5BA,CACV,CAUD,SAASoD,KACL,MAAMC,EAAYtD,GAAiBC,OACnCD,UAAiBC,OAASqD,EAAUvpmB,OACpCupmB,EAAUxC,aAAe,KACzBwC,EAAUlE,MAAQ,KACXkE,CACV,CAOD,MAAMC,GAAUF,GAShB,SAASG,KACL,MAAMF,EAAYD,KAClBC,EAAUrC,UAAW,EACrBqC,EAAUxH,MAAQ,KAClBwH,EAAU/ub,eAAgB,EAC1B+ub,EAAU3C,aAAe,KACzB2C,EAAUH,kBAAoB,EAC9BG,EAAUrB,uBAAwB,EAClCqB,EAAUF,iBAAmB,KAC7BE,EAAUhC,kBAAmB,EAC7BgC,EAAU7B,cAAe,EACzB6B,EAAUhB,kBAAoB,CACjC,CACD,SAASmB,GAAgBvve,GAGrB,OAFqB8re,GAAiBC,OAAOU,aAIjD,SAAS+C,GAAYC,EAAcC,GAC/B,KAAOD,EAAe,GAGlBC,EAAcA,EAvgCG,IAwgCjBD,IAEJ,OAAOC,CACV,CAXOF,CAAYxve,EAAO8re,GAAiBC,OAAOU,eAxgCnC,EA0gCf,CAgBD,SAASkD,KACL,OAAO7D,GAAiBC,OAAO1rb,aAClC,CAUD,SAASuvb,GAAiBl1nB,GAKtBoxnB,GAAiBC,OAAO1rb,cAAgB3lM,CAC3C,CAID,SAASm1nB,KACL,MAAM9D,EAASD,GAAiBC,OAChC,OAAOX,GAASW,EAAOnE,MAAOmE,EAAO1rb,cACxC,CAMD,SAASyvb,KACLhE,GAAiBC,OAAOmD,iBAvpBN,KAwpBrB,CAMD,SAASa,KACLjE,GAAiBC,OAAOmD,iBAAmBnE,EAC9C,CAOD,SAASiF,MAOT,SAASC,KACLnE,GAAiBC,OAAOmD,iBAAmB,IAC9C,CARGe,EACH,CAkED,SAASC,GAAuBtI,EAAO+B,GAKnC,QAASjmnB,EAAIimnB,EAAMwG,eAAgBnnnB,EAAM2gnB,EAAMyG,aAAc1snB,EAAIsF,EAAKtF,IAAK,CAGvE,MAAM2snB,EAFezI,EAAMn6mB,KAAK/J,GAEIiJ,KAAKrd,WACjC0U,sBAAoBG,yBAAuBzF,mBAAiBG,sBAAoBE,gBAAgBsxnB,EACpGrsnB,KACC4jnB,EAAM0I,eAAiB1I,EAAM0I,aAAe,KAAKpmnB,MAAMxG,EAAGM,IAE3DG,MACCyjnB,EAAM0I,eAAiB1I,EAAM0I,aAAe,KAAKpmnB,KAAKxG,EAAGS,KACzDyjnB,EAAM2I,oBAAsB3I,EAAM2I,kBAAoB,KAAKrmnB,KAAKxG,EAAGS,KAEpEzF,KACCkpnB,EAAM4I,YAAc5I,EAAM4I,UAAY,KAAKtmnB,MAAMxG,EAAGhF,IAErDG,MACC+onB,EAAM4I,YAAc5I,EAAM4I,UAAY,KAAKtmnB,KAAKxG,EAAG7E,KACnD+onB,EAAM6I,iBAAmB7I,EAAM6I,eAAiB,KAAKvmnB,KAAKxG,EAAG7E,KAE/C,MAAfE,KACC6onB,EAAM8I,eAAiB9I,EAAM8I,aAAe,KAAKxmnB,KAAKxG,EAAG3E,GAEjE,CACJ,CAiCD,SAAS4xnB,GAAkBzF,EAAOplD,EAAOrhX,GACrCmsa,GAAU1F,EAAOplD,EAAO,EAA2CrhX,EACtE,CAcD,SAASosa,GAAyB3F,EAAOplD,EAAOgrD,EAAWrsa,IAGnC,EAAfyma,EApuCK,MAouCqD4F,GAC3DF,GAAU1F,EAAOplD,EAAOgrD,EAAWrsa,EAE1C,CACD,SAASssa,GAAwB7F,EAAO4F,GAGpC,IAAI9zT,EAAQkuT,EA3uCF,IA4uCG,EAARluT,KAAmD8zT,IACpD9zT,GAAS,KACTA,GAAS,EACTkuT,EA/uCM,GA+uCSluT,EAEtB,CAeD,SAAS4zT,GAAUlB,EAAapnmB,EAAKwomB,EAAWE,GAG5C,MAAM1hlB,OAAkCrsC,IAArB+tnB,EACqB,MAAnCtB,EAnvCmB,IAovCpB,EACEuB,EAAiBD,IAA8C,EAC/DjonB,GAAMuf,EAAI95B,OAAS,EACzB,IAAI0ioB,GAAqB,EACzB,QAASxtnB,GAAI4rC,EAAY5rC,GAAIqF,GAAKrF,KAE9B,GAAoB,iBADP4kB,EAAI5kB,GAAI,IAGjB,GADAwtnB,GAAqB5omB,EAAI5kB,IACD,MAApBstnB,GAA4BE,IAAsBF,EAClD,WAIe1omB,EAAI5kB,IAAK,IAExBgsnB,EAnwCY,KAmwCwB,QACpCwB,GAAqBD,IAAoC,GAAlBA,KACvCE,GAASzB,EAAaoB,EAAWxomB,EAAK5kB,IACtCgsnB,EAtwCY,KAuwC4B,WAAnCA,EAvwCO,KAuwC8FhsnB,GAClG,GAEZA,IAGX,CASD,SAASytnB,GAASzB,EAAaoB,EAAWxomB,EAAK5kB,GAC3C,MAAM0tnB,EAAa9omB,EAAI5kB,GAAK,EACtB2tnB,EAAO/omB,EAAI5kB,EAAI,GAEf4tnB,GAAY5B,EADK0B,GAAc9omB,EAAI5kB,GAAK4kB,EAAI5kB,IAElD,GAAI0tnB,GAGA,GAF8B1B,EA7yCxB,IA6yC8C,GAG/CA,EA/xCe,KA+xCqB,KACf,EAArBA,EAjzCC,MAizC+DoB,EAAW,CAC5EpB,EAlzCE,IAkzCoB,KACtB7E,GAAS,EAA0CyG,GAAWD,GAC9D,IACIA,EAAK7hoB,KAAK8hoB,GAIb,CAHA,QAEGzG,GAAS,EAAwCyG,GAAWD,EAC/D,CACJ,MAEA,CACDxG,GAAS,EAA0CyG,GAAWD,GAC9D,IACIA,EAAK7hoB,KAAK8hoB,GAIb,CAHA,QAEGzG,GAAS,EAAwCyG,GAAWD,EAC/D,CACJ,CACJ;;;;;;;OAwGD,MAAME,GACFvjoB,YAIAoD,EAIAogoB,EAAgBC,GACZvjoB,KAAKkD,QAAUA,EAKflD,KAAKwjoB,WAAY,EAGjBxjoB,KAAKyjoB,oBAAsBH,EAC3BtjoB,KAAK0joB,WAAaH,CACrB,EAiIL,SAASI,GAAgBh5nB,EAAUm2gB,EAAQl5b,GACvC,IAAIpyE,EAAI,EACR,KAAOA,EAAIoyE,EAAMtnF,QAAQ,CACrB,MAAM4H,EAAQ0/E,EAAMpyE,GACpB,GAAqB,iBAAVtN,EAAoB,CAG3B,GAAc,IAAVA,EACA,MAIJsN,IACA,MAAM8yE,EAAeV,EAAMpyE,KACrBkxP,GAAW9+K,EAAMpyE,KACjBounB,GAAUh8iB,EAAMpyE,KAEtB7K,EAASiF,aAAakxgB,EAAQp6Q,GAAUk9X,GAASt7iB,EACpD,KACI,CAED,MAAMo+K,EAAWx+P,EACX07nB,GAAUh8iB,IAAQpyE,GAGpBqunB,GAAgBn9X,GAChB/7P,EAASqD,YAAY8ygB,EAAQp6Q,EAAUk9X,IAGvCj5nB,EAASiF,aAAakxgB,EAAQp6Q,EAAUk9X,IAE5CpunB,GACH,CACJ,CAKD,OAAOA,CACV,CAQD,SAASsunB,GAA0BlzlB,GAC/B,OAAkB,IAAXA,GAA0D,IAAXA,GACvC,IAAXA,CACP,CACD,SAASizlB,GAAgBp8nB,GAIrB,OAA8B,KAAvBA,EAAKjG,WAAW,EAC1B,CASD,SAASuioB,GAAeC,EAAKj1iB,GACzB,GAAY,OAARA,GAA+B,IAAfA,EAAIzuF,OAGnB,GAAY,OAAR0joB,GAA+B,IAAfA,EAAI1joB,OAEzB0joB,EAAMj1iB,EAAIrtF,YAET,CACD,IAAIuioB,GAAY,EAChB,QAASzunB,EAAI,EAAGA,EAAIu5E,EAAIzuF,OAAQkV,IAAK,CACjC,MAAMgR,EAAOuoE,EAAIv5E,GACG,iBAATgR,EACPy9mB,EAAYz9mB,EAGM,IAAdy9mB,GAMAC,GAAmBF,EAAKC,EAAWz9mB,EAAM,MAHtB,IAAdy9mB,GACS,IAAdA,EAE+Cl1iB,IAAMv5E,GAIN,KAG1D,CACJ,CACD,OAAOwunB,CACV,CAUD,SAASE,GAAmBF,EAAKpzlB,EAAQuzlB,EAAMC,EAAMl8nB,GACjD,IAAIsN,EAAI,EAEJ6unB,GAAuBL,EAAI1joB,OAE/B,IAAe,IAAXswC,EACAyzlB,IAAuB,OAGvB,KAAO7unB,EAAIwunB,EAAI1joB,QAAQ,CACnB,MAAMgkoB,GAAWN,EAAIxunB,KACrB,GAAwB,iBAAb8unB,GAAa,CACpB,GAAIA,KAAa1zlB,EAAQ,CACrByzlB,IAAuB,EACvB,KACH,IACQC,GAAW1zlB,EAAQ,CAExByzlB,GAAuB7unB,EAAI,EAC3B,KACH,EAER,CAGL,KAAOA,EAAIwunB,EAAI1joB,QAAQ,CACnB,MAAMkmB,GAAOw9mB,EAAIxunB,GACjB,GAAoB,iBAATgR,GAGP,MAEC,GAAIA,KAAS29mB,GAEd,GAAa,OAATC,EAIA,YAHc,OAAVl8nB,IACA87nB,EAAIxunB,EAAI,GAAKtN,IAGpB,GACQk8nB,IAASJ,EAAIxunB,EAAI,GAEtB,YADAwunB,EAAIxunB,EAAI,GAAKtN,EAEhB,CAGLsN,IACa,OAAT4unB,GACA5unB,IACU,OAAVtN,GACAsN,GACP,EAE4B,IAAzB6unB,KACAL,EAAIn9kB,OAAOw9kB,GAAsB,EAAGzzlB,GACpCp7B,EAAI6unB,GAAuB,GAE/BL,EAAIn9kB,OAAOrxC,IAAK,EAAG2unB,GACN,OAATC,GACAJ,EAAIn9kB,OAAOrxC,IAAK,EAAG4unB,GAET,OAAVl8nB,GACA87nB,EAAIn9kB,OAAOrxC,IAAK,EAAGtN,EAE1B;;;;;;;OAUD,SAASq8nB,GAAkBC,GACvB,OA1auB,IA0ahBA,CACV,CACD,SAASC,GAAuBD,GAM5B,OAAwB,MAAjBA,CACV,CAaD,SAASE,GAAsB1goB,EAAU2goB,GACrC,IAAIr+c,EAbR,SAASs+c,GAA4BJ,GACjC,OAAOA,GAAkB,EAC5B,CAWoBI,CAA4B5goB,GACzC6goB,EAAaF,EAKjB,KAAOr+c,EAAa,GAChBu+c,EAAaA,EAxwDI,IAywDjBv+c,IAEJ,OAAOu+c,CACV;;;;;;;OA6CD,IAAIC,IAAuB,EAC3B,SAASC,GAAwBlta,GAC7B,MAAMsiE,EAAW2qW,GACjBA,UAAuBjta,EAChBsiE,CACV,CAeD,IAAI6qW,GAAkB,EAEtB,MAAMC,GAAY,GA0ClB,SAASC,GAA+BzJ,EAAOuB,GAC3C,MAAMmI,EAAwBC,GAAiB3J,EAAOuB,GACtD,IAA8B,IAA1BmI,EACA,OAAOA,EAEX,MAAMzL,EAAQsD,EA74DJ,GA84DNtD,EAAM2L,kBACN5J,EAAM6J,cAAgBtI,EAAM18nB,OAC5BiloB,GAAY7L,EAAMn6mB,KAAMk8mB,GACxB8J,GAAYvI,EAAO,MACnBuI,GAAY7L,EAAM8L,UAAW,OAEjC,MAAMC,EAAYC,GAA0BjK,EAAOuB,GAC7CsI,EAAgB7J,EAAM6J,cAG5B,GAAIf,GAAkBkB,GAAY,CAC9B,MAAMjva,GAAciua,GAAuBgB,GACrCjF,GAAckE,GAAsBe,EAAWzI,GAC/C2I,GAAanF,GA35Db,GA25DgCjhnB,KAGtC,QAAS/J,GAAI,EAAGA,GAAI,EAAuCA,KACvDwnnB,EAAMsI,EAAgB9vnB,IAAKgrnB,GAAYhqa,GAAchhN,IAAKmwnB,GAAWnva,GAAchhN,GAE1F,CACDwnnB,SAAMsI,EAAgB,GAAqCG,EACpDH,CACV,CACD,SAASC,GAAYnrmB,EAAK6vO,GACtB7vO,EAAIpe,KAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGiuP,EACpC,CACD,SAASm7X,GAAiB3J,EAAOuB,GAC7B,OAA4B,IAAxBvB,EAAM6J,eAGL7J,EAAM9jmB,QAAU8jmB,EAAM9jmB,OAAO2tmB,gBAAkB7J,EAAM6J,eAGa,OAAnEtI,EAAMvB,EAAM6J,cAAgB,IACrB,EAIA7J,EAAM6J,aAEpB,CAQD,SAASI,GAA0BjK,EAAOuB,GACtC,GAAIvB,EAAM9jmB,SAAyC,IAA/B8jmB,EAAM9jmB,OAAO2tmB,cAG7B,OAAO7J,EAAM9jmB,OAAO2tmB,cAKxB,IAAIM,EAAwB,EACxBrF,EAAc,KACdsF,EAAc7I,EAIlB,KAAuB,OAAhB6I,GAAsB,CAEzB,GADAtF,EAAcuF,GAAkBD,GACZ,OAAhBtF,EAEA,OAloBe,EAwoBnB,GAFAqF,IACAC,EAAcA,EAv8DG,KAw8DiB,IAA9BtF,EAAY+E,cAEZ,OAAQ/E,EAAY+E,cACfM,GAAyB,EAErC,CACD,OA9oBuB,CA+oB1B,CAQD,SAASG,GAAmBT,EAAe5L,EAAO73nB,IA/HlD,SAASmkoB,GAASV,EAAe5L,EAAOj7mB,GAEpC,IAAIyJ,EACgB,iBAATzJ,EACPyJ,EAAKzJ,EAAKjd,WAAW,IAAM,EAEtBid,EAAKrc,eAAei2nB,MACzBnwmB,EAAKzJ,EAAK45mB,KAIJ,MAANnwmB,IACAA,EAAKzJ,EAAK45mB,IAAiB2M,MAI/B,MAAMiB,EApCS,IAoCG/9mB,EAIZ4gL,EAAO,GAAKm9b,EAIlBvM,EAAMn6mB,KAAK+lnB,GAAiBW,GArCN,KAqC0Cn9b,CACnE,CAuGGk9b,CAASV,EAAe5L,EAAO73nB,EAClC,CA2ED,SAASqkoB,GAAqBt6a,EAAe/pN,EAAOitU,GAChD,GAAIA,EAAQqnT,GAAYM,SACpB,OAAO7qa,EAGPspa,IAEP,CAUD,SAASiR,GAA+BnJ,EAAOn7nB,EAAOitU,EAAOljH,GAKzD,GAJIkjH,EAAQqnT,GAAYM,eAA8B1hnB,IAAlB62M,IAEhCA,EAAgB,MAEoC,IAAnDkjH,GAASqnT,GAAYY,KAAOZ,GAAYW,OAAc,CACvD,MAAMsP,EAAiBpJ,EAlkEZ,GAskELqJ,EAA+BhQ,QAAwBthnB,GAC7D,IACI,OAAIqxnB,EACOA,EAAermnB,IAAIle,EAAO+pN,EAAekjH,EAAQqnT,GAAYM,UAG7DF,GAAmB10nB,EAAO+pN,EAAekjH,EAAQqnT,GAAYM,SAK3E,CAHA,QAEGJ,GAAwBgQ,EAC3B,CACJ,CACD,OAAOH,GAAqBt6a,EAAe/pN,EAAOitU,EACrD,CAiBD,SAASw3T,GAAsB7K,EAAOuB,EAAOn7nB,EAAOitU,EAAQqnT,GAAY/vJ,QAASx6Q,GAC7E,GAAc,OAAV6va,EAAgB,CAGhB,GAAmB,KAAfuB,EAhnEE,GAgnE4D,CAC9D,MAAMuJ,GA4UlB,SAASC,GAAiC/K,EAAOuB,EAAOn7nB,EAAOitU,EAAOljH,GAClE,IAAI8ya,EAAejD,EACfgL,GAAezJ,EAOnB,KAAwB,OAAjB0B,GAA0C,OAAjB+H,IACL,KAAtBA,GAv8EK,MAw8EkB,IAAtBA,GAx8EI,KAw8EgD,CAKtD,MAAMC,GAAoBC,GAA6BjI,EAAc+H,GAAc5koB,EAAOitU,EAAQqnT,GAAYY,KAAMkO,IACpH,GAAIyB,KAAsBzB,GACtB,OAAOyB,GAGX,IAAInG,GAAc7B,EAAa/mmB,OAG/B,IAAK4omB,GAAa,CAEd,MAAMqG,GAAuBH,GAn8EV,IAo8EnB,GAAIG,GAAsB,CACtB,MAAMC,GAA4BD,GAAqB7mnB,IAAIle,EAAOojoB,GAAWn2T,GAC7E,GAAI+3T,KAA8B5B,GAC9B,OAAO4B,EAEd,CAEDtG,GAAcuF,GAAkBW,IAChCA,GAAeA,GAl9EF,GAm9EhB,CACD/H,EAAe6B,EAClB,CACD,OAAO30a,CACV,CApXyC46a,CAAiC/K,EAAOuB,EAAOn7nB,EAAOitU,EAAOm2T,IAC3F,GAAIsB,KAA0BtB,GAC1B,OAAOsB,EAEd,CAED,MAAMr+nB,EAAQy+nB,GAA6BlL,EAAOuB,EAAOn7nB,EAAOitU,EAAOm2T,IACvE,GAAI/8nB,IAAU+8nB,GACV,OAAO/8nB,CAEd,CAED,OAAOi+nB,GAA+BnJ,EAAOn7nB,EAAOitU,EAAOljH,EAC9D,CAWD,SAAS+6a,GAA6BlL,EAAOuB,EAAOn7nB,EAAOitU,EAAOljH,GAC9D,MAAMq6a,EA8MV,SAASa,GAAsBjloB,GAE3B,GAAqB,iBAAVA,EACP,OAAOA,EAAML,WAAW,IAAM,EAElC,MAAMuloB,EAENlloB,EAAMO,eAAei2nB,IAAiBx2nB,EAAMw2nB,SAAiBtjnB,EAE7D,MAAuB,iBAAZgynB,EACHA,GAAW,EAhhBJ,IAihBAA,EAKAC,GAIJD,CAEd,CApOqBD,CAAsBjloB,GAGxC,GAAyB,mBAAdokoB,EAA0B,CACjC,IAAK3F,GAAQtD,EAAOvB,EAAO3sT,GAGvB,OAAQA,EAAQqnT,GAAYW,KACxBoP,GAAqBt6a,EAAe/pN,EAAOitU,GAC3Cq3T,GAA+BnJ,EAAOn7nB,EAAOitU,EAAOljH,GAE5D,IACI,MAAM1jN,GAAQ+9nB,EAAUn3T,GACxB,GAAa,MAAT5mU,IAAmB4mU,EAAQqnT,GAAYM,SAIvC,OAAOvunB,GAHPgtnB,IAQP,CAHA,QAEGiM,IACH,CACJ,SAC6B,iBAAd8E,EAAwB,CAIpC,IAAIgB,GAAgB,KAChB3B,GAAgBF,GAAiB3J,EAAOuB,GACxCwH,IA11Be,EA21Bf0C,GAAmBp4T,EAAQqnT,GAAYW,KAAOkG,EA1pEvB,IAXpB,GAqqEuF,KAiB9F,MAdsB,IAAlBsI,IAAwBx2T,EAAQqnT,GAAYa,YAC5CwN,IAAmC,IAAlBc,GAAuBI,GAA0BjK,EAAOuB,GACrEA,EAAMsI,GAAgB,IAh2BX,IAi2BXd,IAA0C2C,GAAmBr4T,GAAO,IAIpEm4T,GAAgBjK,EAprElB,GAqrEEsI,GAAgBb,GAAuBD,IACvCxH,EAAQ0H,GAAsBF,GAAgBxH,IAL9CsI,IAAgB,IAUC,IAAlBA,IAAsB,CAGzB,MAAM5L,GAAQsD,EA9rEZ,GAisEF,GAAIoK,GAAcnB,EAAWX,GAAe5L,GAAMn6mB,MAAO,CAIrD,MAAMmB,GAAW2mnB,GAAuB/B,GAAetI,EAAOn7nB,EAAOoloB,GAAen4T,EAAOo4T,IAC3F,GAAIxmnB,KAAauknB,GACb,OAAOvknB,EAEd,CACD8jnB,GAAiBxH,EAAMsI,GAAgB,IA33BxB,IA43BXd,IACA2C,GAAmBr4T,EAAOkuT,EA5sE5B,GA4sEyCz9mB,KAAK+lnB,GAAgB,KAAsC4B,KAClGE,GAAcnB,EAAWX,GAAetI,IAGxCiK,GAAgBvN,GAChB4L,GAAgBb,GAAuBD,IACvCxH,EAAQ0H,GAAsBF,GAAgBxH,IAM9CsI,IAAgB,CAEvB,CACJ,CACD,OAAO15a,CACV,CACD,SAASy7a,GAAuB/B,EAAetI,EAAOn7nB,EAAOoloB,EAAen4T,EAAOo4T,GAC/E,MAAMI,GAAetK,EA/tEX,GAguEJvB,GAAQ6L,GAAa/nnB,KAAK+lnB,EAAgB,GAsB1CiC,GAAgBC,GAA0B/L,GAAO6L,GAAczloB,EAnBrB,MAAjBoloB,EAQ1BvL,GAAgBD,KAAUqJ,GAO1BmC,GAAiBK,IAA+D,IAAhC,EAAb7L,GAAMh9mB,MAGnBqwT,EAAQqnT,GAAYW,MAASoQ,IAAqBzL,IAE7E,OAAsB,OAAlB8L,GACOE,GAAkBzK,EAAOsK,GAAcC,GAAe9L,IAGtDwJ,EAEd,CAWD,SAASuC,GAA0B/L,EAAO/B,EAAO73nB,EAAO6loB,EAAwBC,GAC5E,MAAMC,EAAsBnM,EAAMoM,gBAC5BC,GAAepO,EAAMn6mB,KACrBwonB,GAAyC,QAAtBH,EACnBI,GAAkBvM,EAAMwG,eACxBC,GAAezG,EAAMyG,aACrB+F,GAAwBL,GAAuB,GAG/CvmlB,GAAWsmlB,EAAoBI,GAAmBE,GAAwB/F,GAChF,QAAS1snB,GAHakynB,EAAyBK,GAAmBA,GAAmBE,GAGzDzynB,GAAI6rC,GAAU7rC,KAAK,CAC3C,MAAM0ynB,GAAqBJ,GAAatynB,IACxC,GAAIA,GAAIwynB,IAAmBnmoB,IAAUqmoB,IACjC1ynB,IAAKwynB,IAAmBE,GAAmBzpnB,OAAS5c,EACpD,OAAO2T,EAEd,CACD,GAAImynB,EAAmB,CACnB,MAAMQ,GAASL,GAAaE,IAC5B,GAAIG,IAAUvM,GAAeuM,KAAWA,GAAO1pnB,OAAS5c,EACpD,OAAOmmoB,EAEd,CACD,OAAO,IACV,CAQD,SAASP,GAAkBzK,EAAOtD,EAAOltnB,EAAOivnB,GAC5C,IAAIvznB,EAAQ80nB,EAAMxwnB,GAClB,MAAMwznB,EAAQtG,EAAMn6mB,KACpB,GAv2BJ,SAAS6onB,GAAUr1mB,GACf,OAAOA,aAAeswmB,EACzB,CAq2BO+E,CAAUlgoB,GAAQ,CAClB,MAAMhF,GAAUgF,EACZhF,GAAQsgoB,WA3sGpB,SAAS6E,GAA2BxmoB,EAAO4tB,GACvC,MAAM64mB,EAAU74mB,EAAQ,sBAAqBA,EAAK9tB,KAAK,YAAYE,IAAU,GAC7E,MAAM,IAAIiznB,IAAa,IAAmD,0CAAyCjznB,IAAQymoB,IAC9H,CAysGWD,CAA2BpT,GAAkB+K,EAAMxznB,KAEvD,MAAM+7nB,GAA+BxD,GAAwB7hoB,GAAQugoB,qBACrEvgoB,GAAQsgoB,WAAY,EACpB,MAAM6C,GAA+BnjoB,GAAQwgoB,WAAarN,GAAwBnznB,GAAQwgoB,YAAc,KACxFpD,GAAQtD,EAAOvB,EAAOtF,GAAY/vJ,SAGlD,IACIl+d,EAAQ80nB,EAAMxwnB,GAAStJ,GAAQA,aAAQ6R,EAAWirnB,EAAOhD,EAAOvB,GAO5D/B,EAAM2L,iBAAmB74nB,GAASivnB,EAAMwG;;;;;;;;AA5sCxD,SAASuG,GAAsBC,EAAgBC,EAAchP,GAEzD,MAAQrpnB,cAAaf,WAAU04K,aAAc0gd,EAAajqnB,KAAKrd,UAC/D,GAAIiP,EAAa,CACb,MAAMs4nB,GAAmB3M,GAAuB0M,IAC/ChP,EAAMkP,gBAAkBlP,EAAMkP,cAAgB,KAAK5snB,KAAKysnB,EAAgBE,KACxEjP,EAAMmP,qBAAuBnP,EAAMmP,mBAAqB,KACpD7snB,KAAKysnB,EAAgBE,GAC7B,CACGr5nB,IACCoqnB,EAAMkP,gBAAkBlP,EAAMkP,cAAgB,KAAK5snB,KAAK,EAAIysnB,EAAgBn5nB,GAE7E04K,KACC0xc,EAAMkP,gBAAkBlP,EAAMkP,cAAgB,KAAK5snB,KAAKysnB,EAAgBzgd,IACxE0xc,EAAMmP,qBAAuBnP,EAAMmP,mBAAqB,KAAK7snB,KAAKysnB,EAAgBzgd,GAE1F,CA8rCewgd,CAAsBh8nB,EAAOwznB,EAAMxznB,GAAQktnB,EASlD,CAPA,QAEoC,OAAjC2M,IACIhQ,GAAwBgQ,IAC5BtB,GAAwBwD,IACxBrloB,GAAQsgoB,WAAY,EACpBrC,IACH,CACJ,CACD,OAAOj5nB,CACV,CAoCD,SAASk/nB,GAAcnB,EAAWX,EAAewD,GAI7C,MAAMhgc,EAAO,GAAKm9b,EAOlB,SAHc6C,EAAaxD,GAAiBW,GA9hBtB,IAiiBJn9b,EACrB,CAED,SAASq+b,GAAmBr4T,EAAOi6T,GAC/B,QAASj6T,EAAQqnT,GAAYY,MAAWjoT,EAAQqnT,GAAYW,MAAQiS,EACvE,CACD,MAAMC,GACFlpoB,YAAYmpoB,EAAQC,GAChBlpoB,KAAKipoB,OAASA,EACdjpoB,KAAKkpoB,OAASA,CACjB,CACDnpnB,IAAIle,EAAO+pN,EAAekjH,GACtB,OAAOw3T,GAAsBtmoB,KAAKipoB,OAAQjpoB,KAAKkpoB,OAAQrnoB,EAAOitU,EAAOljH,EACxE,EAGL,SAASo7a,KACL,OAAO,IAAIgC,GAAavK,KAAmBN,KAC9C,CAID,SAASgL,GAAsB1qnB,GAC3B,OAAOi4mB,GAAc,KACjB,MAAM0S,EAAiB3qnB,EAAKrd,UAAUtB,YAChCupoB,EAAaD,EAAehR,KAAmBkR,GAAaF,GAC5DG,EAAkBlqnB,OAAOje,UAC/B,IAAIu2B,EAAStY,OAAOo1R,eAAeh2R,EAAKrd,WAAWtB,YAEnD,KAAO63B,GAAUA,IAAW4xmB,GAAiB,CACzC,MAAMrmoB,EAAUy0B,EAAOygmB,KAAmBkR,GAAa3xmB,GAMvD,GAAIz0B,GAAWA,IAAYmmoB,EACvB,OAAOnmoB,EAEXy0B,EAAStY,OAAOo1R,eAAe98Q,EAClC,CAKD,OAAO5Z,GAAK,IAAIA,CAAJ,EAEnB,CACD,SAASurnB,GAAa7qnB,GAClB,OAAIo2mB,GAAap2mB,GACN,KACH,MAAMvb,EAAUomoB,GAAa1U,GAAkBn2mB,IAC/C,OAAOvb,GAAWA,GAAO,EAG1B44nB,GAAcr9mB,EACxB,CAqDD,SAASqnnB,GAAkB9I,GACvB,MAAMtD,EAAQsD,EAz+EJ,GA0+EJwM,EAAY9P,EAAMj7mB,KAExB,OAAkB,IAAd+qnB,EAEO9P,EAAM2G,UAEM,IAAdmJ,EAGExM,EA9+EA,GAg/EJ,IACV;;;;;;;OAcD,SAASyM,GAAkBC,GACvB,OA7fJ,SAASC,GAAoBlO,EAAOiO,GAGhC,GAAyB,UAArBA,EACA,OAAOjO,EAAM9unB,QAEjB,GAAyB,UAArB+8nB,EACA,OAAOjO,EAAM/pmB,OAEjB,MAAMk2D,EAAQ6ziB,EAAM7ziB,MACpB,GAAIA,EAAO,CACP,MAAMgijB,EAAchijB,EAAMtnF,OAC1B,IAAIkV,EAAI,EACR,KAAOA,EAAIo0nB,GAAa,CACpB,MAAM1hoB,EAAQ0/E,EAAMpyE,GAEpB,GAAIsunB,GAA0B57nB,GAC1B,MAEJ,GAAc,IAAVA,EAKAsN,GAAQ,UAEc,iBAAVtN,EAGZ,IADAsN,IACOA,EAAIo0nB,GAAmC,iBAAbhijB,EAAMpyE,IACnCA,QAGH,IAAItN,IAAUwhoB,EACf,OAAO9hjB,EAAMpyE,EAAI,GAGjBA,GAAQ,EAEf,CACJ,CACD,OAAO,IACV,CAmdUm0nB,CAAoBlL,KAAmBiL,EACjD;;;;;;;OASD,MAAMG,GAAc,kBACdC,GAAa,iBACbC,GAAgB,qBAItB,SAASC,GAAcvioB,EAAMszO,EAAOkvZ,EAAaC,EAAsBC,GACnE,OAAOzT,GAAc,KACjB,MAAM0T,EAAWC,GAAiBtvZ,GAClC,SAASuvZ,MAAoBlwnB,IACzB,GAAIpa,gBAAgBsqoB,GAChBF,SAAS9ooB,KAAKtB,QAASoa,IAChBpa,KAEX,MAAMuqoB,GAAqB,IAAID,MAAoBlwnB,IACnD,OAAO,SAAuB4vK,IAC1B,OAAImgd,GACAA,EAAOngd,MAAQ5vK,KAGC4vK,GAAI5nL,eAAeynoB,IACnC7/c,GAAI6/c,IACJxqnB,OAAOgyH,eAAe24C,GAAK6/c,GAAa,CAAE3hoB,MAAO,KAAM2hoB,KAC/C7tnB,KAAKuunB,IACbL,GACAA,EAAqBlgd,IAClBA,EACV,CACJ,CACD,OAAIigd,IACAK,GAAiBlpoB,UAAYie,OAAO8M,OAAO89mB,EAAY7ooB,YAE3DkpoB,GAAiBlpoB,UAAUopoB,eAAiB/ioB,EAC5C6ioB,GAAiBG,cAAgBH,GAC1BA,IAEd,CACD,SAASD,GAAiBtvZ,GACtB,OAAO,YAAiB3gO,GACpB,GAAI2gO,EAAO,CACP,MAAMjgN,EAASigN,KAAS3gO,GACxB,UAAWusR,KAAY7rQ,EACnB96B,KAAK2mS,GAAY7rQ,EAAO6rQ,EAE/B,CACJ,CACJ,CACD,SAAS+jW,GAAmBjjoB,EAAMszO,EAAOkvZ,GACrC,OAAOvT,GAAc,KACjB,MAAM0T,EAAWC,GAAiBtvZ,GAClC,SAAS4vZ,KAAyBvwnB,GAC9B,GAAIpa,gBAAgB2qoB,EAChBP,SAASj2mB,MAAMn0B,KAAMoa,GACdpa,KAEX,MAAMuqoB,GAAqB,IAAII,KAAyBvwnB,GACxDwwnB,UAAeC,WAAaN,GACrBK,GACP,SAASA,GAAe5gd,GAAK8gd,GAAWt+nB,IAGpC,MAAM4thB,GAAapwW,GAAI5nL,eAAe0noB,IAClC9/c,GAAI8/c,IACJzqnB,OAAOgyH,eAAe24C,GAAK8/c,GAAY,CAAE5hoB,MAAO,KAAM4hoB,IAG1D,KAAO1vG,GAAW95hB,QAAUkM,IACxB4thB,GAAWp+gB,KAAK,MAEpB,OAACo+gB,GAAW5thB,IAAS4thB,GAAW5thB,KAAU,IAAIwP,KAAKuunB,IAC5Cvgd,EACV,CACJ,CACD,OAAIigd,IACAU,EAAsBvpoB,UAAYie,OAAO8M,OAAO89mB,EAAY7ooB,YAEhEupoB,EAAsBvpoB,UAAUopoB,eAAiB/ioB,EACjDkjoB,EAAsBF,cAAgBE,EAC/BA,GAEd,CACD,SAASI,GAAkBtjoB,EAAMszO,EAAOkvZ,EAAaC,GACjD,OAAOxT,GAAc,KACjB,MAAM0T,EAAWC,GAAiBtvZ,GAClC,SAASiwZ,KAAwB5wnB,IAC7B,GAAIpa,gBAAgBgroB,EAChBZ,SAASj2mB,MAAMn0B,KAAMoa,IACdpa,KAEX,MAAMiroB,GAAoB,IAAID,KAAwB5wnB,IAatD,OAZA,SAAS8wnB,GAAcrunB,GAAQpV,IAC3B,MAAM3H,GAAc+c,GAAO/c,YAGrB21I,GAAO31I,GAAYsC,eAAe2noB,IACpCjqoB,GAAYiqoB,IACZ1qnB,OAAOgyH,eAAevxI,GAAaiqoB,GAAe,CAAE7hoB,MAAO,KAAM6hoB,IACrEt0f,GAAKhuI,IAAQguI,GAAKrzI,eAAeqF,KAASguI,GAAKhuI,KAAS,GACxDguI,GAAKhuI,IAAMq8D,QAAQmnkB,IACff,GACAA,EAAqBrtnB,GAAQpV,MAAS2S,GAC7C,CAEJ,CACD,OAAI6vnB,IACAe,EAAqB5poB,UAAYie,OAAO8M,OAAO89mB,EAAY7ooB,YAE/D4poB,EAAqB5poB,UAAUopoB,eAAiB/ioB,EAChDujoB,EAAqBP,cAAgBO,EAC9BA,GAEd;;;;;;;OAeD,MAAMhkY,GAAY0jY,GAAmB,YAAc96V,KAAqBA,gBAAe0oV,kBAAmB,IAAMmR,GAAkB75V;;;;;;;OAkDlI,MAAMhwS,GAOFE,YAAYqroB,EAAOnloB,GACfhG,KAAKmroB,MAAQA,EAEbnroB,KAAKwqoB,eAAiB,iBACtBxqoB,KAAKiD,gBAAQ8R,EACS,iBAAX/O,EAKPhG,KAAKs4nB,kBAAoBtynB,OAER+O,IAAZ/O,IACLhG,KAAKiD,WAAQ8jnB,GAAmB,CAC5BllnB,MAAO7B,KACPgnnB,WAAYhhnB,EAAQghnB,YAAc,OAClC9jnB,QAAS8C,EAAQ9C,UAG5B,CAIGoD,YACA,OAAOtG,IACV,CACDyB,WACI,MAAQ,kBAAiBzB,KAAKmroB,OACjC;;;;;;;OA+CgC,IAAIvroB,GAAe,6BAcxD,MAAMwroB,IASN,MAAMC,GAAkBN,GAAkB,kBAAmB,CAACpioB,EAAU4W,EAAO,OAC3E5W,WACAoN,OAAO,EACPu1nB,aAAa,EACbpya,aAAa,EACbqya,wBAzBwC,QA0BrChsnB,IACH6rnB,IASEI,GAAeT,GAAkB,eAAgB,CAACpioB,EAAU4W,EAAO,OAAU5W,WAAUoN,OAAO,EAAMu1nB,aAAa,EAAOpya,aAAa,KAAS35M,IAAS6rnB,IAOvJK,GAAeV,GAAkB,eAAgB,CAACpioB,EAAU4W,EAAO,OACrE5W,WACAoN,OAAO,EACPu1nB,aAAa,EACbpya,aAAa,EACbqya,wBAhDwC,QAiDrChsnB,IACH6rnB,IAOEM,GAAYX,GAAkB,YAAa,CAACpioB,EAAU4W,MAAY5W,WAAUoN,OAAO,EAAMu1nB,aAAa,EAAMpya,aAAa,KAAS35M,IAAS6rnB;;;;;;;OASjJ,IAAIO,GAQAC,GAMApU;;;;;;;;AAeJ,SAASqU,GAAkB/ooB,GACvB,MAAMgpoB,EAAWnU,GAAQoU,GACzB,GAAID,GAAYA,EAASE,qBACrB,OAAOF,EAASE,qBA2BhB,MAAM,IAAIzroB,MAAM,2BAEvB;;;;;;;QA5DD,SAAWoroB,GACPA,EAAcA,EAAcM,UAAe,GAAK,YAChDN,EAAcA,EAAcO,UAAe,GAAK,YAChDP,EAAcA,EAAcQ,WAAgB,GAAK,aACjDR,EAAcA,EAAcS,KAAU,GAAK,OAC3CT,EAAcA,EAAcU,SAAc,GAAK,UAClD,CAND,CAMGV,KAAkBA,GAAgB,KAErC,SAAWC,GACPA,EAAyBA,EAAyBK,UAAe,GAAK,YACtEL,EAAyBA,EAAyBQ,KAAU,GAAK,OACjER,EAAyBA,EAAyBS,SAAc,GAAK,UACxE,CAJD,CAIGT,KAA6BA,GAA2B,KAE3D,SAAWpU,GACPA,EAAkBA,EAAkBC,SAAc,GAAK,WAEvDD,EAAkBA,EAAkBpzb,KAAU,GAAK,OACnDozb,EAAkBA,EAAkBE,UAAe,GAAK,WAC3D,CALD,CAKGF,KAAsBA,GAAoB,KA4D7C,MAAM39R,GAAO36E,SACb,SAASssS,GAAO3zV,GACZ,MAAoB,mBAANA,CACjB;;;;;;;OA+CD,SAASimB,GAAQr+D,EAAMukd,QACPjvnB,IAARivnB,IACAA,EAAMvkd,GACV,QAASjqK,EAAI,EAAGA,EAAIiqK,EAAKn/K,OAAQkV,IAAK,CAClC,IAAIgR,EAAOi5J,EAAKjqK,GACZrU,MAAMkuB,QAAQ7I,IAEVw9mB,IAAQvkd,IAGRukd,EAAMvkd,EAAK/9K,MAAM,EAAG8T,IAExBsoO,GAAQt3N,EAAMw9mB,IAETA,IAAQvkd,GACbukd,EAAIhonB,KAAKwK,EAEhB,CACD,OAAOw9mB,CACV,CACD,SAASta,GAAYh5mB,EAAO8f,GACxB9f,EAAMD,QAAQvI,GAAS/G,MAAMkuB,QAAQnnB,GAASwhnB,GAAYxhnB,EAAOsoB,GAAMA,EAAGtoB,GAC7E,CACD,SAASokoB,GAAWlymB,EAAK5tB,EAAOtE,GAExBsE,GAAS4tB,EAAI95B,OACb85B,EAAIpe,KAAK9T,GAGTkyB,EAAIysB,OAAOr6C,EAAO,EAAGtE,EAE5B,CACD,SAASqkoB,GAAgBnymB,EAAK5tB,GAE1B,OAAIA,GAAS4tB,EAAI95B,OAAS,EACf85B,EAAIk2B,MAGJl2B,EAAIysB,OAAOr6C,EAAO,GAAG,EAEnC,CACD,SAASggoB,GAASv+nB,EAAM/F,GACpB,MAAMu3K,EAAO,GACb,QAASjqK,EAAI,EAAGA,EAAIvH,EAAMuH,IACtBiqK,EAAKzjK,KAAK9T,GAEd,OAAOu3K,CACV,CAiJD,SAASgtd,GAAiBC,EAAe9ymB,EAAK1xB,GAC1C,IAAIsE,EAAQmgoB,GAAqBD,EAAe9ymB,GAChD,OAAIptB,GAAS,EAETkgoB,EAAsB,EAARlgoB,GAAatE,GAG3BsE,GAASA,EA/FjB,SAASogoB,GAAa35mB,EAAOzmB,EAAOqzK,EAAQC,GAExC,IAAIhlK,EAAMmY,EAAM3yB,OAChB,GAAIwa,GAAOtO,EAEPymB,EAAMjX,KAAK6jK,EAAQC,QAAnB,GAEa,IAARhlK,EAELmY,EAAMjX,KAAK8jK,EAAQ7sJ,EAAM,IACzBA,EAAM,GAAK4sJ,MAEV,CAGD,IAFA/kK,IACAmY,EAAMjX,KAAKiX,EAAMnY,EAAM,GAAImY,EAAMnY,IAC1BA,EAAMtO,GAAO,CAChB,MAAMqgoB,EAAc/xnB,EAAM,EAC1BmY,EAAMnY,GAAOmY,EAAM45mB,GACnB/xnB,GACH,CACDmY,EAAMzmB,GAASqzK,EACf5sJ,EAAMzmB,EAAQ,GAAKszK,CACtB,CACJ,CAyEO8sd,CAAaF,EAAelgoB,EAAOotB,EAAK1xB,IAErCsE,CACV,CAQD,SAASsgoB,GAAiBJ,EAAe9ymB,GACrC,MAAMptB,EAAQmgoB,GAAqBD,EAAe9ymB,GAClD,GAAIptB,GAAS,EAET,OAAOkgoB,EAAsB,EAARlgoB,EAG5B,CAWD,SAASmgoB,GAAqBD,EAAe9ymB,GACzC,OAAOmzmB,GAAoBL,EAAe9ymB,EAAK,EAClD,CAoCD,SAASmzmB,GAAoB95mB,EAAO/qB,EAAO09C,GAEvC,IAAIjrC,EAAQ,EACRG,EAAMmY,EAAM3yB,QAAUslD,EAC1B,KAAO9qC,IAAQH,GAAO,CAClB,MAAMmR,EAASnR,GAAUG,EAAMH,GAAU,GACnCtF,GAAU4d,EAAMnH,GAAU85B,GAChC,GAAI19C,IAAUmN,GACV,OAAQyW,GAAU85B,EAEbvwC,GAAUnN,EACf4S,EAAMgR,EAGNnR,EAAQmR,EAAS,CAExB,CACD,QAAShR,GAAO8qC,EACnB;;;;;;;OAuCD,MAAMonlB,GAAoB,uGAEpBC,GAAyB,4CAKzBC,GAAmC,mEAKnCC,GAA4C,sGAclD,MAAMC,GACFttoB,YAAYutoB,GACRrtoB,KAAKstoB,SAAWD,GAAW1V,GAAQ4V,OACtC,CACDrqoB,QAAQ6a,GACJ,MAAO,IAAI3D,IAAS,IAAI2D,KAAK3D,EAChC,CAEDoznB,wBAAwBC,EAAYC,GAChC,IAAI97mB,EAEAA,EAAS46mB,UADFiB,EAAe,IACJC,EAAiBptoB,OAGjBmtoB,EAAWntoB,QAEjC,QAASkV,EAAI,EAAGA,EAAIoc,EAAOtxB,OAAQkV,WAIpBi4nB,EAAe,IACtB77mB,EAAOpc,GAAK,GAEPi4nB,EAAWj4nB,IAAMi4nB,EAAWj4nB,IAAM6J,OACvCuS,EAAOpc,GAAK,CAACi4nB,EAAWj4nB,IAGxBoc,EAAOpc,GAAK,GAEZk4nB,GAA2C,MAAvBA,EAAiBl4nB,KACrCoc,EAAOpc,GAAKoc,EAAOpc,GAAGsQ,OAAO4nnB,EAAiBl4nB,KAGtD,OAAOoc,CACV,CACD+7mB,eAAelvnB,EAAMmvnB,GASjB,GAjDR,SAASC,GAAeC,GACpB,OAAOd,GAAkBtooB,KAAKopoB,IAC1BX,GAA0CzooB,KAAKopoB,IAC9Cb,GAAuBvooB,KAAKopoB,KAAaZ,GAAiCxooB,KAAKopoB,EACvF,CA6CWD,CARYpvnB,EAAKhd,YASjB,OAAO,KAGX,GAAIgd,EAAK27gB,YAAc37gB,EAAK27gB,aAAewzG,EAAWxzG,WAClD,OAAO37gB,EAAK27gB,WAGhB,MAAM2zG,EAAoBtvnB,EAAKuvnB,eAC/B,GAAID,GAAqBA,IAAsBH,EAAWI,eAAgB,CAGtE,MAAMA,GAA8C,mBAAtBD,EAAmCA,IAAsBA,EACjFN,GAAaO,GAAe3soB,IAAK4soB,IAAcA,IAAaA,GAAUxvnB,MACtEivnB,GAAmBM,GAAe3soB,IAAK4soB,IAAcA,IAAaC,GAAoCD,GAAUE,aACtH,OAAOnuoB,KAAKwtoB,wBAAwBC,GAAYC,GACnD,CAED,MAAMA,EAAmBjvnB,EAAKrc,eAAe0noB,KAAerrnB,EAAKqrnB,IAC3D2D,GAAaztoB,KAAKstoB,UAAYttoB,KAAKstoB,SAASc,gBAC9CpuoB,KAAKstoB,SAASc,eAAe,oBAAqB3vnB,GACtD,OAAIgvnB,IAAcC,EACP1toB,KAAKwtoB,wBAAwBC,GAAYC,GAM7ClB,GAAS/tnB,EAAKne,OACxB,CACD85hB,WAAW37gB,GAGP,IAAK+siB,GAAO/siB,GACR,MAAO,GAEX,MAAMmvnB,EAAaS,GAAc5vnB,GACjC,IAAI27gB,EAAap6hB,KAAK2toB,eAAelvnB,EAAMmvnB,GAC3C,OAAKxzG,GAAcwzG,IAAevunB,SAC9B+6gB,EAAap6hB,KAAKo6hB,WAAWwzG,IAE1BxzG,GAAc,EACxB,CACDk0G,gBAAgBC,EAAYX,GAExB,GAAIW,EAAWC,aAAeD,EAAWC,cAAgBZ,EAAWY,YAAa,CAC7E,IAAIA,EAAcD,EAAWC,YAC7B,MAA2B,mBAAhBA,GAA8BA,EAAYA,cACjDA,EAAcA,EAAYA,aAEvBA,CACV,CAED,OAAID,EAAWJ,YAAcI,EAAWJ,aAAeP,EAAWO,WACvDD,GAAoCK,EAAWJ,YAGtDI,EAAWnsoB,eAAeynoB,IACnB0E,EAAW1E,IAEf,IACV,CACD2E,YAAYD,GACR,IAAK/iF,GAAO+iF,GACR,MAAO,GAEX,MAAMX,EAAaS,GAAcE,GAC3BE,EAAiBzuoB,KAAKsuoB,gBAAgBC,EAAYX,IAAe,GAEvE,OAD0BA,IAAevunB,OAASrf,KAAKwuoB,YAAYZ,GAAc,IACxD9nnB,OAAO2onB,EACnC,CACDC,iBAAiBH,EAAYX,GAEzB,GAAIW,EAAWI,cACXJ,EAAWI,eAAiBf,EAAWe,aAAc,CACrD,IAAIA,EAAeJ,EAAWI,aAC9B,MAA4B,mBAAjBA,GAA+BA,EAAaA,eACnDA,EAAeA,EAAaA,cAEzBA,CACV,CAED,GAAIJ,EAAWK,gBACXL,EAAWK,iBAAmBhB,EAAWgB,eAAgB,CACzD,MAAMA,EAAiBL,EAAWK,eAC5BD,EAAe,GACrBtvnB,cAAOsa,KAAKi1mB,GAAgBn+nB,QAAQgiK,IAChCk8d,EAAal8d,GAAQy7d,GAAoCU,EAAen8d,GAAhB,GAErDk8d,CACV,CAED,OAAIJ,EAAWnsoB,eAAe2noB,IACnBwE,EAAWxE,IAEf,IACV,CACD4E,aAAaJ,GACT,IAAK/iF,GAAO+iF,GACR,MAAO,GAEX,MAAMX,EAAaS,GAAcE,GAC3BI,EAAe,GACrB,GAAIf,IAAevunB,OAAQ,CACvB,MAAMwvnB,EAAqB7uoB,KAAK2uoB,aAAaf,GAC7CvunB,OAAOsa,KAAKk1mB,GAAoBp+nB,QAASk2R,KACrCgoW,EAAahoW,IAAYkoW,EAAmBloW,KAEnD,CACD,MAAMmoW,EAAkB9uoB,KAAK0uoB,iBAAiBH,EAAYX,GAC1D,OAAIkB,GACAzvnB,OAAOsa,KAAKm1mB,GAAiBr+nB,QAASk2R,IAClC,MAAMwnW,GAAa,GACfQ,EAAavsoB,eAAeukS,IAC5BwnW,GAAWnynB,QAAQ2ynB,EAAahoW,IAEpCwnW,GAAWnynB,QAAQ8ynB,EAAgBnoW,IACnCgoW,EAAahoW,GAAYwnW,KAG1BQ,CACV,CACDG,gBAAgBP,GACZ,OAAK/iF,GAAO+iF,IAGLvuoB,KAAK0uoB,iBAAiBH,EAAYF,GAAcE,KAF5C,EAGd,CACDQ,iBAAiBtwnB,EAAMuwnB,GACnB,OAAOvwnB,aAAgBo7U,IAAQm1S,KAAcvwnB,EAAKrd,SACrD,EAEL,SAAS8soB,GAAoCe,GACzC,OAAKA,EAGEA,EAAqB5toB,IAAI6toB,GAIrB,IAAIzE,EAHWyE,EAAoBzwnB,KACNgsnB,kBACbyE,EAAoB90nB,KAAO80nB,EAAoB90nB,KAAO,KALtE,EAQd,CACD,SAASi0nB,GAAcc,GACnB,MAAMC,EAAcD,EAAK/toB,UAAYie,OAAOo1R,eAAe06V,EAAK/toB,WAAa,KAI7E,OAHmBguoB,EAAcA,EAAYtvoB,YAAc,OAGtCuf,MACxB;;;;;;;OAUD,MAAMgwnB,GADsB,GAOtBC,GAAoB,iBACpBC,GAAqB,kBAErBC,GAAW,OAEXC,GAAS,WAOf,IAAIC,GACJ,SAASC,GAAmB9pd,GACxB,MAAM+pd,EAASF,GACfA,UAAmB7pd,EACZ+pd,CACV,CACD,SAASC,GAAmBhuoB,EAAOitU,EAAQqnT,GAAY/vJ,SACnD,QAAyBrxd,IAArB26nB,GACA,MAAM,IAAI5a,IAAa,KAAuDpR,GAG7E,OAAyB,OAArBgsB,GACEnZ,GAAmB10nB,OAAOkT,EAAW+5T,GAGrC4gU,GAAiB3vnB,IAAIle,EAAOitU,EAAQqnT,GAAYM,SAAW,UAAO1hnB,EAAW+5T,EAE3F,CACD,SAASo/R,GAASrsmB,EAAOitU,EAAQqnT,GAAY/vJ,SACzC,OAnpIJ,SAAS0pK,KACL,OAAO1Z,EACV,CAipIW0Z,IAA6BD,IAAoBjb,GAAkB/ynB,GAAQitU,EACtF,CAUD,SAASihU,GAAoBvjoB,GACzB,MAAM,IAAIsonB,GAAa,KAAuDpR,EAKjF,CAiED,SAASvtW,GAAOt0Q,EAAOitU,EAAQqnT,GAAY/vJ,SACvC,MAAqB,iBAAVt3J,IAIPA,EAAS,GACJA,EAAMhiT,UAAY,IAClBgiT,EAAM5qU,MAAQ,IACd4qU,EAAM7zE,MAAQ,IACd6zE,EAAMkhU,UAAY,IAEpB9hC,GAASrsmB,EAAOitU,EAC1B,CACD,SAASmhU,GAAW78jB,GAChB,MAAMh5D,EAAO,GACb,QAAS5E,EAAI,EAAGA,EAAI49D,EAAM9yE,OAAQkV,IAAK,CACnC,MAAMkwI,EAAMkve,GAAkBxhjB,EAAM59D,IACpC,GAAIrU,MAAMkuB,QAAQq2H,GAAM,CACpB,GAAmB,IAAfA,EAAIplJ,OACJ,MAAM,IAAIw0nB,GAAa,KAAiDpR,GAE5E,IAAIjlmB,EACAqwT,EAAQqnT,GAAY/vJ,QACxB,QAASp2b,GAAI,EAAGA,GAAI01G,EAAIplJ,OAAQ0vC,KAAK,CACjC,MAAMylG,GAAOiQ,EAAI11G,IACXwqH,GAAO01e,GAAcz6f,IACP,iBAAT+kB,IAEM,IAATA,GACA/7I,EAAOg3H,GAAK5zI,MAGZitU,GAASt0K,GAIb/7I,EAAOg3H,EAEd,CACDr7H,EAAK4B,KAAKkylB,GAASzvlB,EAAMqwT,GAC5B,MAEG10T,EAAK4B,KAAKkylB,GAASxod,GAE1B,CACD,OAAOtrI,CACV,CAWD,SAAS+1nB,GAAiBC,EAAW51e,GACjC41e,SAAUd,IAAqB90e,EAC/B41e,EAAUhvoB,UAAUkuoB,IAAqB90e,EAClC41e,CACV,CAMD,SAASF,GAAcruoB,GACnB,OAAOA,EAAMytoB,GAChB,CACD,SAASe,GAAmB5rnB,EAAG5iB,EAAOyuoB,EAAmB3/mB,GACrD,MAAM4/mB,EAAY9rnB,EAAE8qnB,IACpB,MAAI1toB,EAAM4toB,KACNc,EAAUzskB,QAAQjiE,EAAM4toB,KAE5BhrnB,EAAE5E,QAKN,SAASmphB,GAAY3whB,EAAM0a,EAAKu9mB,EAAmB3/mB,EAAS,MACxDtY,EAAOA,GAA2B,OAAnBA,EAAKtX,OAAO,IA9LX,UA8L0BsX,EAAKtX,OAAO,GAAoBsX,EAAK3W,MAAM,GAAK2W,EAC1F,IAAIZ,EAAU8sO,GAAUxxN,GACxB,GAAI5xB,MAAMkuB,QAAQ0D,GACdtb,EAAUsb,EAAI1xB,IAAIkjP,IAAW5iP,KAAK,aAAxB,GAEU,iBAARoxB,EAAkB,CAC9B,IAAIjxB,EAAQ,GACZ,QAAS83B,MAAO7G,EACZ,GAAIA,EAAI3wB,eAAew3B,IAAM,CACzB,IAAI1xB,GAAQ6qB,EAAI6G,IAChB93B,EAAMka,KAAK4d,GAAM,KAAwB,iBAAV1xB,GAAqBjG,KAAKsiP,UAAUr8O,IAASq8O,GAAUr8O,KACzF,CAELuP,EAAW,IAAG3V,EAAMH,KAAK,QAC5B,CACD,MAAQ,GAAE2uoB,IAAoB3/mB,EAAS,IAAMA,EAAS,IAAM,MAAMlZ,OAAaY,EAAKhY,QAAQmvoB,GAAU,SACzG;;;;;;;OAtBexmG,CAAY,KAAOvkhB,EAAE5E,QAAS0wnB,EAAWD,EAAmB3/mB,GACxElM,EAAE+rnB,YAAiBD,EACnB9rnB,EAAE8qnB,IAAsB,KAClB9qnB,CACT,CAiCD,MAAMgsnB,GAASN,GAGfzF,GAAmB,SAAW7ooB,KAAaA,YAAW,GAOhD40nB,EAGN0Z,GAAiBzF,GAAmB,YAAa,GAO3C3T,EAGNoZ,GAAiBzF,GAAmB,QAAS,GAOvC1T,GAGNmZ,GAAiBzF,GAAmB,YAAa,GAO3C5T,GAGNqZ,GAAiBzF,GAAmB,QAAS;;;;;;;OAS7C,IAAI4C,GAAW,KACf,SAASoD,KACL,OAAQpD,GAAWA,IAAY,IAAIF,EACtC,CACD,SAASuD,GAAoBlynB,GACzB,OAAOmynB,GAAoBF,KAAat2G,WAAW37gB,GACtD,CACD,SAASmynB,GAAoBnzO,GACzB,OAAOA,EAAKp8Z,IAAIwvoB,GAEpB,SAASC,GAAkBD,GACvB,MAAMp7f,EAAO,CACT5zI,MAAO,KACPwP,UAAW,KACXnN,MAAM,EACN4oB,UAAU,EACVmuO,MAAM,EACN+0Y,UAAU,GAEd,GAAI7uoB,MAAMkuB,QAAQwhnB,IAAQA,EAAIvwoB,OAAS,EACnC,QAAS0vC,EAAI,EAAGA,EAAI6gmB,EAAIvwoB,OAAQ0vC,IAAK,CACjC,MAAMonR,EAAQy5U,EAAI7gmB,GAClB,QAAcj7B,IAAVqiT,EAEA,SAEJ,MAAMl9R,EAAQ7a,OAAOo1R,eAAe2iB,GACpC,GAAIA,aAAiBq/T,GAAqC,aAAzBv8lB,EAAMswmB,eACnC/0f,EAAK3oH,UAAW,UAEXsqS,aAAiB4/T,IAAqC,aAAzB98lB,EAAMswmB,eACxC/0f,EAAKu6f,UAAW,UAEX54U,aAAiB2/T,GAAiC,SAAzB78lB,EAAMswmB,eACpC/0f,EAAKwlH,MAAO,UAEPm8D,aAAiB0/T,IAAiC,SAAzB58lB,EAAMswmB,eACpC/0f,EAAKvxI,MAAO,UAEPkzT,aAAiBq5U,GACtBh7f,EAAK5zI,MAAQu1T,EAAMv1T,cAEdu1T,aAAiBpwD,GAAW,CACjC,QAA4BjyP,IAAxBqiT,EAAMxnB,cACN,MAAM,IAAIklV,GAAa,KAAoDpR,GAE/Ejue,EAAKpkI,UAAY+lT,EAAMxnB,aAC1B,MAEGn6J,EAAK5zI,MAAQu1T,CAEpB,WAEYriT,IAAR87nB,GAAsB1voB,MAAMkuB,QAAQwhnB,IAAuB,IAAfA,EAAIvwoB,OACrDm1I,EAAK5zI,MAAQ,KAGb4zI,EAAK5zI,MAAQgvoB,EAEjB,OAAOp7f,CACV;;;;;;;OApD0Bq7f,CAAkBD,GAC5C,CAmID,IAAIE,GAAmC,IAAI//e,IAE3C,MAAMggf,GAAgC,IAAI11mB,IAU1C,SAAS21mB,GAAyBpwd,GAC9B,SAAWA,EAAUqwd,cAAgBrwd,EAAUz+K,eAAe,aAC1Dy+K,EAAUswd,WAAatwd,EAAUswd,UAAU7woB,OAClD;;;;;;;;AA+BD,MAAMsmI,GAAU,IAAIoqB,IAMpB,IA6DIprJ,EA2CAwroB,GAwHAC,GAhOAC,IAA6B,EAgBjC,SAASC,GAAqBC,EAActpnB,IAf5C,SAASupnB,GAAwBvpnB,EAAIzJ,EAAMiznB,GACvC,GAAIjznB,GAAQA,IAASiznB,GAAYJ,GAC7B,MAAM,IAAI/woB,MAAO,mCAAkC2nB,OAAQq8N,GAAU9lO,SAAY8lO,GAAU9lO,EAAKhX,QAEvG,EAaGgqoB,CAAwBvpnB,EADP0+G,GAAQ7mH,IAAImI,IAAO,KACEspnB,GACtC5qgB,GAAQrzG,IAAIrL,EAAIspnB,EACnB,CAiDD,SAASG,GAAYtuoB,GACjBuC,EAAWvC,CACd,CAOD,SAAS0zZ,KACL,YAAiBhiZ,IAAbnP,EACOA,SAEKvC,SAAa,IAClBA,cADN,CASR;;;;;;;OAkBD,SAASuuoB,KACL,QAAiB78nB,IAAbq8nB,KACAA,GAAW,KACPzZ,GAAQka,cACR,IACIT,GAAWzZ,GAAQka,aAAaC,aAAa,UAAW,CACpDC,WAAa/umB,GAAMA,EACnBgvmB,aAAehvmB,GAAMA,EACrBivmB,gBAAkBjvmB,GAAMA,GAQ/B,CANA,MAMA,CAGT,OAAOoumB,EACV,CAUD,SAASc,GAAsB3ggB,GAC3B,OAAOqggB,MAAeG,WAAWxggB,IAASA,CAC7C,CAwFD,SAAS4ggB,KACL,QAAep9nB,IAAXs8nB,KACAA,GAAS,KACL1Z,GAAQka,cACR,IACIR,GAAS1Z,GAAQka,aACZC,aAAa,wBAAyB,CACvCC,WAAa/umB,GAAMA,EACnBgvmB,aAAehvmB,GAAMA,EACrBivmB,gBAAkBjvmB,GAAMA,GAQ/B,CANA,MAMA,CAGT,OAAOqumB,EACV,CASD,SAASe,GAA4B7ggB,GACjC,OAAO4ggB,MAAaJ,WAAWxggB,IAASA,CAC3C,CASD,SAAS8ggB,GAA8BpnY,GACnC,OAAOknY,MAAaH,aAAa/mY,IAAWA,CAC/C,CASD,SAASqnY,GAAiCvuoB,GACtC,OAAOouoB,MAAaF,gBAAgBluoB,IAAQA,CAC/C;;;;;;;OASD,MAAMwuoB,GACFzyoB,YAAY0yoB,GACRxyoB,KAAKwyoB,sCAAwCA,CAChD,CACD/woB,WACI,MAAQ,0CAAyCzB,KAAKwyoB,0EAEzD,EAEL,MAAMC,WAAqBF,GACvBnxX,cACI,MAAO,MACV,EAEL,MAAMsxX,WAAsBH,GACxBnxX,cACI,MAAO,OACV,EAEL,MAAMuxX,WAAuBJ,GACzBnxX,cACI,MAAO,QACV,EAEL,MAAMwxX,WAAoBL,GACtBnxX,cACI,MAAO,KACV,EAEL,MAAMyxX,WAA4BN,GAC9BnxX,cACI,MAAO,aACV,EAEL,SAAS0xX,GAAgB5qoB,GACrB,OAAOA,aAAiBqqoB,GAAgBrqoB,EAAMsqoB,sCAC1CtqoB,CACP,CACD,SAAS6qoB,GAAgC7qoB,EAAOuW,GAC5C,MAAMu0nB,EASV,SAASC,GAA0B/qoB,GAC/B,OAAOA,aAAiBqqoB,IAAiBrqoB,EAAMk5Q,eAAiB,IACnE,CAXsB6xX,CAA0B/qoB,GAC7C,GAAkB,MAAd8qoB,GAAsBA,IAAev0nB,EAAM,CAE3C,GAAmB,gBAAfu0nB,GAAsE,QAATv0nB,EAC7D,OAAO,EACX,MAAM,IAAIle,MAAO,mBAAkBke,YAAeu0nB,uCACrD,CACD,OAAOA,IAAev0nB,CACzB,CAaD,SAASy0nB,GAA4BC,GACjC,OAAO,IAAIV,GAAaU,EAC3B,CAUD,SAASC,GAA6BC,GAClC,OAAO,IAAIX,GAAcW,EAC5B,CAUD,SAASC,GAA8BC,GACnC,OAAO,IAAIZ,GAAeY,EAC7B,CAUD,SAASC,GAA2BC,GAChC,OAAO,IAAIb,GAAYa,EAC1B,CAUD,SAASC,GAAmCC,GACxC,OAAO,IAAId,GAAoBc,EAClC;;;;;;;OAgBD,SAASC,GAAmBC,GACxB,MAAMC,EAAsB,IAAIC,GAAoBF,GACpD,OA4GJ,SAASG,KACL,IACI,SAAS,IAAIninB,OAAOw2D,WAAYG,gBAAgB0pjB,GAAsB,IAAK,YAI9E,CAHA,MAEG,OAAO,CACV,CACJ;;;;;;;OAnHU8B,GAAyB,IAAIC,GAAgBH,GAAuBA,CAC9E,CAKD,MAAMG,GACFn0oB,YAAYg0oB,GACR9zoB,KAAK8zoB,oBAAsBA,CAC9B,CACDI,oBAAoB3igB,GAKhBA,EAAO,0BAA4BA,EACnC,IACI,MAAMxmE,GAAO,IAAIl5C,OAAOw2D,WACnBG,gBAAgB0pjB,GAAsB3ggB,GAAO,aAC7CxmE,KACL,OAAa,OAATA,EAIO/qE,KAAK8zoB,oBAAoBI,oBAAoB3igB,IAExDxmE,EAAKn4D,YAAYm4D,EAAKx4D,YACfw4D,EAIV,CAHA,MAEG,OAAO,IACV,CACJ,EAOL,MAAMgpkB,GACFj0oB,YAAY+zoB,GAGR,GAFA7zoB,KAAK6zoB,WAAaA,EAClB7zoB,KAAKm0oB,cAAgBn0oB,KAAK6zoB,WAAWrimB,eAAeuzP,mBAAmB,sBACxC,MAA3B/kS,KAAKm0oB,cAAcppkB,KAAc,CAGjC,MAAMqpkB,EAAYp0oB,KAAKm0oB,cAAcpioB,cAAc,QACnD/R,KAAKm0oB,cAAcnioB,YAAYoioB,GAC/B,MAAMC,EAAmBr0oB,KAAKm0oB,cAAcpioB,cAAc,QAC1DqioB,EAAUpioB,YAAYqioB,EACzB,CACJ,CACDH,oBAAoB3igB,GAEhB,MAAM+igB,EAAat0oB,KAAKm0oB,cAAcpioB,cAAc,YACpD,GAAI,YAAauioB,EACbA,SAAWrsjB,UAAYiqjB,GAAsB3ggB,GACtC+igB,EASX,MAAMC,EAAYv0oB,KAAKm0oB,cAAcpioB,cAAc,QACnDwioB,SAAUtsjB,UAAYiqjB,GAAsB3ggB,GAGxCvxI,KAAK6zoB,WAAWl/f,cAChB30I,KAAKw0oB,mBAAmBD,GAErBA,CACV,CASDC,mBAAmB1roB,GACf,MAAM2roB,EAAU3roB,EAAGw9I,WAEnB,QAAS9wI,EAAIi/nB,EAAQn0oB,OAAS,EAAG,EAAIkV,EAAGA,IAAK,CAEzC,MAAMkxP,GADS+tY,EAAQjunB,KAAKhR,GACJ/N,MACP,cAAbi/P,IAAyD,IAA7BA,GAASzlQ,QAAQ,UAC7C6H,EAAGwI,gBAAgBo1P,GAE1B,CACD,IAAI19K,EAAYlgF,EAAGyJ,WACnB,KAAOy2E,GACCA,EAAUxgF,WAAasgF,KAAK6/N,cAC5B3oT,KAAKw0oB,mBAAmBxrjB,GAC5BA,EAAYA,EAAUwkL,WAE7B,EAmDL,MAAMknY,GAAmB,uEACzB,SAASC,GAAa5woB,GAElB,OADAA,EAAMrD,OAAOqD,IACL8uB,MAAM6hnB,IACH3woB,EAIJ,UAAYA,CACtB,CACD,SAAS6woB,GAAeC,GACpBA,SAASn0oB,OAAOm0oB,IACF9yoB,MAAM,KAAKV,IAAKwzoB,GAAWF,GAAaE,EAAO/ioB,SAASnQ,KAAK,KAC9E;;;;;;;OASD,SAASmzoB,GAAOtkZ,GACZ,MAAM81F,EAAM,GACZ,UAAWvoU,KAAKyyO,EAAKzuP,MAAM,KACvBukV,EAAIvoU,IAAK,EACb,OAAOuoU,CACV,CACD,SAASrpU,MAAS83nB,GACd,MAAMzuT,EAAM,GACZ,UAAWtjT,KAAK+xmB,EACZ,UAAWl9a,KAAK70L,EACRA,EAAE5gC,eAAey1N,KACjByuH,EAAIzuH,IAAK,GAGrB,OAAOyuH,CACV,CAMD,MAAM0uT,GAAgBF,GAAO,0BAGvBG,GAAkCH,GAAO,kDACzCI,GAAmCJ,GAAO,SAC1CK,GAA4Bl4nB,GAAMi4nB,GAAkCD,IAEpEG,GAAiBn4nB,GAAMg4nB,GAAiCH,GAAO,oMAI/DO,GAAkBp4nB,GAAMi4nB,GAAkCJ,GAAO,+LAGjEQ,GAAiBr4nB,GAAM+3nB,GAAeI,GAAgBC,GAAiBF,IAEvEI,GAAYT,GAAO,gEAEnBU,GAAeV,GAAO,UACtBW,GAAaX,GAAO,idAMpBY,GAAaZ,GAAO,4qBAapBa,GAAc14nB,GAAMs4nB,GAAWC,GAAcC,GAAYC,IAMzDE,GAA8Cd,GAAO,yBAK3D,MAAMe,GACF/1oB,cAGIE,KAAK81oB,oBAAqB,EAC1B91oB,KAAKk6U,IAAM,EACd,CACD67T,iBAAiBjtoB,GAIb,IAAIuM,EAAUvM,EAAGyJ,WACbyjoB,GAAkB,EACtB,KAAO3goB,GAWH,GAVIA,EAAQ7M,WAAasgF,KAAK6/N,aAC1BqtV,EAAkBh2oB,KAAKskH,aAAajvG,GAE/BA,EAAQ7M,WAAasgF,KAAKkgO,UAC/BhpT,KAAKg+jB,MAAM3ojB,EAAQy3P,WAInB9sQ,KAAK81oB,oBAAqB,EAE1BE,GAAmB3goB,EAAQ9C,WAC3B8C,EAAUA,EAAQ9C,gBAGtB,KAAO8C,GAAS,CAERA,EAAQ7M,WAAasgF,KAAK6/N,cAC1B3oT,KAAKi2oB,WAAW5goB,GAEpB,IAAIpQ,EAAOjF,KAAKk2oB,sBAAsB7goB,EAASA,EAAQm4P,aACvD,GAAIvoQ,EAAM,CACNoQ,EAAUpQ,EACV,KACH,CACDoQ,EAAUrV,KAAKk2oB,sBAAsB7goB,EAASA,EAAQnM,WACzD,CAEL,OAAOlJ,KAAKk6U,IAAIv4U,KAAK,GACxB,CASD2iH,aAAa57G,GACT,MAAM8G,EAAU9G,EAAQ2oO,SAASt2N,cACjC,IAAKu6nB,GAAelzoB,eAAeoN,GAC/B,YAAKsmoB,oBAAqB,GAClBF,GAA4CxzoB,eAAeoN,GAEvExP,KAAKk6U,IAAIl+T,KAAK,KACdhc,KAAKk6U,IAAIl+T,KAAKxM,GACd,MAAMiloB,EAAU/roB,EAAQ49I,WACxB,QAAS9wI,EAAI,EAAGA,EAAIi/nB,EAAQn0oB,OAAQkV,IAAK,CACrC,MAAM2goB,EAAS1B,EAAQjunB,KAAKhR,GACtBkxP,GAAWyvY,EAAO1uoB,KAClBskE,GAAQ26L,GAAS3rP,cACvB,IAAK46nB,GAAYvzoB,eAAe2pE,IAAQ,CACpC/rE,KAAK81oB,oBAAqB,EAC1B,QACH,CACD,IAAI5toB,GAAQiuoB,EAAOjuoB,MAEfqtoB,GAAUxpkB,MACV7jE,GAAQysoB,GAAazsoB,KACrBstoB,GAAazpkB,MACb7jE,GAAQ0soB,GAAe1soB,KAC3BlI,KAAKk6U,IAAIl+T,KAAK,IAAK0qP,GAAU,KAAM0vY,GAAeluoB,IAAQ,IAC7D,CACD,YAAKgyU,IAAIl+T,KAAK,MACP,CACV,CACDi6nB,WAAW5goB,GACP,MAAM7F,EAAU6F,EAAQg8N,SAASt2N,cAC7Bu6nB,GAAelzoB,eAAeoN,KAAawloB,GAAc5yoB,eAAeoN,KACxExP,KAAKk6U,IAAIl+T,KAAK,MACdhc,KAAKk6U,IAAIl+T,KAAKxM,GACdxP,KAAKk6U,IAAIl+T,KAAK,KAErB,CACDgijB,MAAMA,GACFh+jB,KAAKk6U,IAAIl+T,KAAKo6nB,GAAep4E,GAChC,CACDk4E,sBAAsBjtoB,EAAM45R,GACxB,GAAIA,IACC55R,EAAK8lQ,wBAAwB8zB,GAC1B/5M,KAAKutjB,kCAAoCvtjB,KAAKutjB,+BAClD,MAAM,IAAI91oB,MAAO,6DAA4D0I,EAAK03Q,aAEtF,OAAOkiB,CACV,EAGL,MAAMyzW,GAAwB,kCAExBC,GAA0B,gBAOhC,SAASH,GAAeluoB,GACpB,OAAOA,EAAM7H,QAAQ,KAAM,SACtBA,QAAQi2oB,GAAuB,SAAUzjnB,GAG1C,MAAO,MAAyB,MAFrBA,EAAMrxB,WAAW,GAEN,QADVqxB,EAAMrxB,WAAW,GACmB,OAAU,OAAW,GACxE,GACInB,QAAQk2oB,GAAyB,SAAU1jnB,GAC5C,MAAO,KAAOA,EAAMrxB,WAAW,GAAK,GACvC,GACInB,QAAQ,KAAM,QACdA,QAAQ,KAAM,OACtB,CACD,IAAIm2oB,GAKJ,SAASC,GAAc5C,EAAY6C,GAC/B,IAAIrC,EAAmB,KACvB,IACImC,GAAkBA,IAAmB5C,GAAmBC,GAExD,IAAI8C,EAAaD,EAAkBh2oB,OAAOg2oB,GAAmB,GAC7DrC,EAAmBmC,GAAgBtC,oBAAoByC,GAGvD,IAAIC,EAAe,EACfC,EAAaF,EACjB,EAAG,CACC,GAAqB,IAAjBC,EACA,MAAM,IAAIr2oB,MAAM,yDAEpBq2oB,IACAD,EAAaE,EACbA,EAAaxC,EAAiBpsjB,UAC9BosjB,EAAmBmC,GAAgBtC,oBAAoByC,EAC1D,OAAQA,IAAeE,GAMxB,OAAO3E,IALW,IAAI2D,IACKE,iBAAiBe,GAAmBzC,IAAqBA,GAcvF,CATA,QAGG,GAAIA,EAAkB,CAClB,MAAM18mB,EAASm/mB,GAAmBzC,IAAqBA,EACvD,KAAO18mB,EAAOplB,YACVolB,EAAO/kB,YAAY+kB,EAAOplB,WAEjC,CACJ,CACJ,CACD,SAASukoB,GAAmBhuoB,GACxB,MAAO,YAAaA,GAIxB,SAASiuoB,GAAkBjuoB,GACvB,OAAOA,EAAGN,WAAasgF,KAAK6/N,cAAgC,aAAhB7/S,EAAGuoO,QAClD;;;;;;;OAN+D0la,CAAkBjuoB,GAC1EA,EAAG2Y,QACH,IACP,CAqBD,IAAIo2Y;;;;;;;;AAgCJ,SAASm/O,GAAeL,GACpB,MAAMM,EAAYC,KAClB,OAAID,EACO7E,GAA4B6E,EAAUr/O,SAASC,GAAgBs/O,KAAMR,IAAe,IAE3F5D,GAAgC4D,EAAY,QACrCvE,GAA4BU,GAAgB6D,IAEhDF,GAAc1/O,KAAei+N,GAAgB2hB,GACvD,CAYD,SAASS,GAAgBC,GACrB,MAAMJ,EAAYC,KAClB,OAAID,EACOA,EAAUr/O,SAASC,GAAgBy/O,MAAOD,IAAgB,GAEjEtE,GAAgCsE,EAAa,SACtCvE,GAAgBuE,GAEpBriB,GAAgBqiB,EAC1B,CAiBD,SAASE,GAAcC,GACnB,MAAMP,EAAYC,KAClB,OAAID,EACOA,EAAUr/O,SAASC,GAAgB/zZ,IAAK0zoB,IAAc,GAE7DzE,GAAgCyE,EAAW,OACpC1E,GAAgB0E,GAEpB7C,GAAa3f,GAAgBwiB,GACvC,CAYD,SAASC,GAAsBC,GAC3B,MAAMT,EAAYC,KAClB,GAAID,EACA,OAAO3E,GAAiC2E,EAAUr/O,SAASC,GAAgB8/O,aAAcD,IAAsB,IAEnH,GAAI3E,GAAgC2E,EAAmB,eACnD,OAAOpF,GAAiCQ,GAAgB4E,IAE5D,MAAM,IAAI5iB,GAAa,KAAyDpR,EAEnF,CAaD,SAASk0B,GAAiBC,GACtB,MAAMZ,EAAYC,KAClB,GAAID,EACA,OAAO5E,GAA8B4E,EAAUr/O,SAASC,GAAgBigP,OAAQD,IAAiB,IAErG,GAAI9E,GAAgC8E,EAAc,UAC9C,OAAOxF,GAA8BS,GAAgB+E,IAEzD,MAAM,IAAI/iB,GAAa,KAAmDpR,EAC7E,CAcD,SAASq0B,GAAoBxmgB,GAUzB,OAAO2ggB,GAAsB3ggB,EAAK,GACrC,CAcD,SAASymgB,GAA2Bj0oB,GAUhC,OAv2BJ,SAASk0oB,GAA2Bl0oB,GAChC,OAAO6toB,MAAeK,gBAAgBluoB,IAAQA,CACjD,CAq2BUk0oB,CAA2Bl0oB,EAAI,GACzC,CAgCD,SAASm0oB,GAA2BV,EAAWpoZ,EAAK38E,GAChD,OAzBJ,SAAS0le,GAAgB/oZ,EAAK38E,GAC1B,MAAc,QAATA,IACQ,UAAR28E,GAA2B,UAARA,GAA2B,WAARA,GAA4B,UAARA,GAC/C,WAARA,IACM,SAAT38E,IAA4B,SAAR28E,GAA0B,SAARA,GAChCqoZ,GAEJF,EACV,CAiBUY,CAAgB/oZ,EAAK38E,EAArB0le,CAA2BX,EACrC,CAiBD,SAASN,KACL,MAAMla,EAAQmB,KACd,OAAOnB,GAASA,EA/gKF,GAghKjB;;;;;;;QA3OD,SAAWnlO,GACPA,EAAgBA,EAAgBppY,KAAU,GAAK,OAC/CopY,EAAgBA,EAAgBs/O,KAAU,GAAK,OAC/Ct/O,EAAgBA,EAAgBy/O,MAAW,GAAK,QAChDz/O,EAAgBA,EAAgBigP,OAAY,GAAK,SACjDjgP,EAAgBA,EAAgB/zZ,IAAS,GAAK,MAC9C+zZ,EAAgBA,EAAgB8/O,aAAkB,GAAK,cAC1D,CAPD,CAOG9/O,KAAoBA,GAAkB,KAmPzC,MAAMugP,GAA0B,IAAIx4oB,GAAe,2BAiB7Cy4oB,GAAW,IAAIz4oB,GAAe,YAGpC,GASM04oB,GAAqB,IAAI14oB,GAAe;;;;;;;;;;;;;;;AAS9C,MAAM24oB,GACFx4nB,IAAIle,EAAO+pN,EAAgByjb,IACvB,GAAIzjb,IAAkByjb,GAAoB,CACtC,MAAM1zmB,EAAQ,IAAIp7B,MAAO,sCAAqCgkP,GAAU1iP,OACxE85B,QAAMl0B,KAAO,oBACPk0B,CACT,CACD,OAAOiwL,CACV;;;;;;;;;;;;;;OA2DL,SAAS4sb,MAAuBz+T,GAC5B,MAAO,CAAE0+T,gBAAYC,IAA4B,EAAM3+T,GAC1D,CACD,SAAS2+T,GAA4BC,KAA0B5+T,GAC3D,MAAM6+T,EAAe,GACfC,EAAQ,IAAIv9mB,IAClB,IAAIw9mB,EACJpvB,UAAY3vS,EAASppT,IAQjB,MAAMoonB,GAAiBponB,EACnBqonB,GAAiBD,GAAgBH,EAAc,GAAIC,KACnDC,IAA+BA,EAA6B,IAC5DA,EAA2B98nB,KAAK+8nB,IAAhC,QAI2BhkoB,IAA/B+joB,GACAG,GAAkCH,EAA4BF,GAE3DA,CACV,CAKD,SAASK,GAAkCC,EAAoBN,GAC3D,QAASpjoB,EAAI,EAAGA,EAAI0joB,EAAmB54oB,OAAQkV,IAAK,CAChD,MAAQvP,WAAUC,aAAcgzoB,EAAmB1joB,GACnDk0mB,GAAYxjnB,EAAWizoB,IAEnBP,EAAa58nB,KAAKm9nB,EAAlB,EAEP,CACJ,CAUD,SAASH,GAAiBzwoB,EAAWqwoB,EAAc3kjB,EAAS4kjB,GAExD,KADAtwoB,EAAYqsnB,GAAkBrsnB,IAE1B,OAAO,EAGX,IAAI6woB,EAAU,KACVC,EAASvjB,GAAevtnB,GAC5B,MAAM+woB,IAAUD,GAAUlf,GAAgB5xnB,GAC1C,GAAK8woB,GAAWC,GAgBX,IAAIA,KAAWA,GAAO1sO,WACvB,OAAO,EAGPwsO,EAAU7woB,MApBU,CAMpB,MAAMtC,GAAWsC,EAAUtC,SAE3B,GADAozoB,EAASvjB,GAAe7vnB,KACpBozoB,EAKA,OAAO,EAJPD,EAAUnzoB,EAMjB,CAcD,MAAMszoB,GAAcV,EAAM59mB,IAAIm+mB,GAC9B,GAAIE,GAAQ,CACR,GAAIC,GAEA,OAAO,EAGX,GADAV,EAAM7soB,IAAIotoB,GACNE,GAAOhgB,aAAc,CACrB,MAAM77N,GAAsC,mBAAxB67O,GAAOhgB,aAA8BggB,GAAOhgB,eAAiBggB,GAAOhgB,aACxF,UAAWuX,MAAOpzO,GACdu7O,GAAiBnI,GAAK+H,EAAc3kjB,EAAS4kjB,EAEpD,CACJ,UACQQ,EA0DL,OAAO,EA1DM,CAEb,GAAsB,MAAlBA,EAAO3qe,UAAoB6qe,GAAa,CAMxC,IAAIC,GADJX,EAAM7soB,IAAIotoB,GAEV,IACI1vB,GAAY2vB,EAAO3qe,QAAS+qe,KACpBT,GAAiBS,GAAUb,EAAc3kjB,EAAS4kjB,KAClDW,KAA6BA,GAA2B,IAGxDA,GAAyBx9nB,KAAKy9nB,IAA9B,EAOX,CAJA,QAIA,MAIgC1koB,IAA7BykoB,IACAP,GAAkCO,GAA0BZ,EAEnE,CACD,IAAKW,GAAa,CAGd,MAAMr2oB,GAAU44nB,GAAcsd,IAAD,KAAoB,IAAIA,GAIrDR,EAAa58nB,KAEb,CAAE7V,QAASizoB,EAAS79e,WAAYr4J,GAASu6Z,KAAMs6N,IAE/C,CAAE5xnB,QAASmyoB,GAAoB9xoB,SAAU4yoB,EAAS9yoB,OAAO,GAEzD,CAAEH,QAASiyoB,GAAyB5xoB,SAAU,IAAM0nmB,GAASkrC,GAAU9yoB,OAAO,GAEjF,CAED,MAAMozoB,GAAeL,EAAOnzoB,UAC5B,GAAoB,MAAhBwzoB,KAAyBH,GAAa,CAEtC7vB,GAAYgwB,GAAcP,KAEtBP,EAAa58nB,KAAKm9nB,GAAlB,EAEP,CACJ,CAGU,CAEX,OAAQC,IAAY7woB,QACQwM,IAAxBxM,EAAUrC,SACjB,CAYD,MAAMyzoB,GAAcvlB,EAAuB,CAAEjunB,QAASzF,OAAQ8F,SAAU4tnB,IACxE,SAASwlB,GAAgB1xoB,GACrB,OAAiB,OAAVA,GAAkC,iBAATA,GAAqByxoB,MAAezxoB,CACvE,CACD,SAAS2xoB,GAAmB3xoB,GACxB,SAAUA,IAASA,EAAMgW,YAC5B,CACD,SAAS47nB,GAAkB5xoB,GACvB,SAAUA,IAASA,EAAMqzJ,WAC5B,CACD,SAASw+e,GAAe7xoB,GACpB,MAAwB,mBAAVA,CACjB;;;;;;;;AAiBD,MAAM8xoB,GAAiB,IAAIp6oB,GAAe,uBAYpCq6oB,GAAU,GAQVC,GAAW;;;;;;;OAIjB,IAAIC,GACJ,SAASC,KACL,YAAwBrloB,IAApBoloB,KACAA,GAAkB,IAAI5B,IAEnB4B,EACV,CAOD,MAAME,IAEN,MAAMC,WAAmBD,GACrBv6oB,YAAYoG,EAAWyxB,EAAQhH,EAAQ4pnB,GACnCt8nB,QACAje,KAAK23B,OAASA,EACd33B,KAAK2wB,OAASA,EACd3wB,KAAKu6oB,OAASA,EAMdv6oB,KAAKw6oB,QAAU,IAAIxpf,IAInBhxJ,KAAKy6oB,kBAAoB,IAAIn/mB,IAC7Bt7B,KAAK06oB,gBAAkB,GACvB16oB,KAAK+wG,YAAa,EAElB4piB,GAAsBz0oB,EAAWizoB,IAAYn5oB,KAAK46oB,gBAAgBzB,KAElEn5oB,KAAKw6oB,QAAQjnnB,IAAI8knB,GAAUwC,QAAW9loB,EAAW/U,OAE7Cu6oB,EAAOt/mB,IAAI,gBACXj7B,KAAKw6oB,QAAQjnnB,IAAI8mnB,GAAqBQ,QAAW9loB,EAAW/U,OAIhE,MAAMqoL,EAASroL,KAAKw6oB,QAAQz6nB,IAAIi6nB,IAClB,MAAV3xd,GAA0C,iBAAjBA,EAAOngL,OAChClI,KAAKu6oB,OAAOvuoB,IAAIq8K,EAAOngL,OAE3BlI,KAAK86oB,iBACD,IAAIx/mB,IAAIt7B,KAAK+f,IAAIu4nB,GAAmBhyoB,MAAOyxnB,GAAa5B,GAAYY,MAC3E,CAIGvyd,gBACA,OAAOxkK,KAAK+wG,UACf,CAOD5jF,UACIntB,KAAK+6oB,qBAEL/6oB,KAAK+wG,YAAa,EAClB,IAEI,UAAWnmG,KAAW5K,KAAKy6oB,kBACvB7voB,EAAQiG,cAEZ,UAAWsynB,KAAQnjoB,KAAK06oB,gBACpBvX,GASP,CAPA,QAGGnjoB,KAAKw6oB,QAAQr/mB,QACbn7B,KAAKy6oB,kBAAkBt/mB,QACvBn7B,KAAK86oB,iBAAiB3/mB,QACtBn7B,KAAK06oB,gBAAgBp6oB,OAAS,CACjC,CACJ,CACD8rmB,UAAU35lB,GACNzS,KAAK06oB,gBAAgB1+nB,KAAKvJ,EAC7B,CACDyziB,aAAa11hB,GACTxwB,KAAK+6oB,qBACL,MAAMC,EAAmBrL,GAAmB3voB,MACtCqmoB,EAA+BhQ,QAAwBthnB,GAC7D,IACI,OAAOyb,GAKV,CAJA,QAEGm/mB,GAAmBqL,GACnB3kB,GAAwBgQ,EAC3B,CACJ,CACDtmnB,IAAIle,EAAO+pN,EAAgByjb,GAAoBvgU,EAAQqnT,GAAY/vJ,SAC/Dpme,KAAK+6oB,qBAEL,MAAMC,EAAmBrL,GAAmB3voB,MACtCqmoB,EAA+BhQ,QAAwBthnB,GAC7D,IAEI,KAAM+5T,EAAQqnT,GAAYa,UAAW,CAEjC,IAAI3uc,GAASroL,KAAKw6oB,QAAQz6nB,IAAIle,GAC9B,QAAekT,IAAXszK,GAAsB,CAGtB,MAAMmwF,GAuP1B,SAASyiY,GAAsB/yoB,GAC3B,MAAyB,mBAAVA,GACO,iBAAVA,GAAsBA,aAAiBtI,EACtD,CA1P+Bq7oB,CAAsBp5oB,IAAU4znB,GAAiB5znB,GAIzDwmL,GAHAmwF,IAAOx4Q,KAAKk7oB,qBAAqB1iY,IAGxBqiY,GAAWM,GAAkCt5oB,GAAQo4oB,IAGrD,KAEbj6oB,KAAKw6oB,QAAQjnnB,IAAI1xB,EAAOwmL,GAC3B,CAED,GAAc,MAAVA,GACA,OAAOroL,KAAKo7oB,QAAQv5oB,EAAOwmL,GAElC,CAGD,MAAMgzd,GAAiBvsU,EAAQqnT,GAAYY,KAAsBqjB,KAAdp6oB,KAAK23B,OAGxDi0L,SAAiBkjH,EAAQqnT,GAAYM,UAAa7qa,IAAkByjb,GAChE,KACAzjb,EACGyvb,GAAat7nB,IAAIle,EAAO+pN,EAuBlC,CAtBA,MACMnnM,IACH,GAAe,sBAAXA,GAAEhd,KAA8B,CAGhC,IAFagd,GAAE8qnB,IAAsB9qnB,GAAE8qnB,KAAuB,IACzDzrkB,QAAQygL,GAAU1iP,IACnBm5oB,EAEA,MAAMv2nB,GAIN,OAAO4rnB,GAAmB5rnB,GAAG5iB,EAAO,kBAAmB7B,KAAK2wB,OAEnE,CAEG,MAAMlM,EAEb,SAGG4xmB,GAAwBgQ,GACxBsJ,GAAmBqL,EACtB,CACJ,CAEDM,8BACI,MAAMN,EAAmBrL,GAAmB3voB,MACtCqmoB,EAA+BhQ,QAAwBthnB,GAC7D,IACI,MAAMwmoB,EAAev7oB,KAAK+f,IAAIq4nB,GAAwB9xoB,MAAOyxnB,GAAa5B,GAAYY,MAOtF,UAAW1rZ,KAAekwa,EACtBlwa,GAMP,CAJA,QAEGska,GAAmBqL,GACnB3kB,GAAwBgQ,EAC3B,CACJ,CACD5koB,WACI,MAAMskQ,EAAS,GACTy0Y,EAAUx6oB,KAAKw6oB,QACrB,UAAW34oB,KAAS24oB,EAAQ7gnB,OACxBosO,EAAO/pP,KAAKuoO,GAAU1iP,IAE1B,MAAQ,cAAakkQ,EAAOpkQ,KAAK,QACpC,CACDo5oB,qBACI,GAAI/6oB,KAAK+wG,WACL,MAAM,IAAI+jhB,GAAa,KAAuDpR,EAErF,CAIDk3B,gBAAgBzB,GAIZ,IAAIt3oB,EAAQk4oB,GADZZ,EAAWvkB,GAAkBukB,IACUA,EAAWvkB,GAAkBukB,GAAYA,EAAShzoB,SAEzF,MAAMkiL,EA4Fd,SAASmzd,GAAiBrC,GACtB,GAAIS,GAAgBT,GAChB,OAAO0B,QAAW9loB,EAAWokoB,EAAS3yoB,UAItC,OAAOq0oB,GADSY,GAAkBtC,GACPc,GAElC,CApGsBuB,CAAiBrC,GAChC,GAAKY,GAAeZ,KAAgC,IAAnBA,EAAS7yoB,MAkBrC,CACgBtG,KAAKw6oB,QAAQz6nB,IAAIle,EAIrC,KAvByD,CAGtD,IAAI65oB,EAAc17oB,KAAKw6oB,QAAQz6nB,IAAIle,GAC/B65oB,IAOAA,EAAcb,QAAW9loB,EAAWkloB,IAAS,GAC7CyB,EAAYx4oB,QAAU,IAAM+soB,GAAWyL,EAAYp1oB,OACnDtG,KAAKw6oB,QAAQjnnB,IAAI1xB,EAAO65oB,IAE5B75oB,EAAQs3oB,EACRuC,EAAYp1oB,MAAM0V,KAAKm9nB,EAC1B,CAODn5oB,KAAKw6oB,QAAQjnnB,IAAI1xB,EAAOwmL,EAC3B,CACD+yd,QAAQv5oB,EAAOwmL,GAIN,OAAIA,EAAOngL,QAAU+xoB,KACtB5xd,EAAOngL,MAAQgyoB,GACf7xd,EAAOngL,MAAQmgL,EAAOnlL,WAEE,iBAAjBmlL,EAAOngL,OAAsBmgL,EAAOngL,OAoHvD,SAASyzoB,GAAazzoB,GAClB,OAAiB,OAAVA,GAAmC,iBAAVA,GACC,mBAAtBA,EAAM2I,WACpB,CAvH+D8qoB,CAAatzd,EAAOngL,QACxElI,KAAKy6oB,kBAAkBzuoB,IAAIq8K,EAAOngL,OAE/BmgL,EAAOngL,KACjB,CACDgzoB,qBAAqB1iY,GACjB,IAAKA,EAAIwuW,WACL,OAAO,EAEX,MAAMA,EAAa4N,GAAkBp8W,EAAIwuW,YACzC,MAA0B,iBAAfA,EACe,QAAfA,GAAyBhnnB,KAAKu6oB,OAAOt/mB,IAAI+rlB,GAGzChnnB,KAAK86oB,iBAAiB7/mB,IAAI+rlB,EAExC,EAEL,SAASm0B,GAAkCt5oB,GAEvC,MAAM20nB,EAAgBf,GAAiB5znB,GACjCqB,EAA4B,OAAlBsznB,EAAyBA,EAActznB,QAAU44nB,GAAcj6nB,GAC/E,GAAgB,OAAZqB,EACA,OAAOA,EAIX,GAAIrB,aAAiBjC,GACjB,MAAM,IAAIk1nB,GAAa,KAAoDpR,GAG/E,GAAI7hnB,aAAiBq9Q,SACjB,OAKR,SAAS08X,GAAgC/5oB,GAErC,MAAMg6oB,EAAch6oB,EAAMvB,OAC1B,GAAIu7oB,EAAc,EAAG,CACJrP,GAASqP,EAAa,KACnC,MAAM,IAAI/mB,GAAa,KAAoDpR,EAC9E,CAMD,MAAMo4B,EAh2MV,SAASC,GAA0Bt9nB,GAC/B,MAAM+5P,EAAM/5P,IAASA,EAAKk3mB,KAAgBl3mB,EAAKm3mB,KAC/C,GAAIp9W,EAAK,CACL,MAAMjS,EAYd,SAAS6a,GAAY3iQ,GAOjB,GAAIA,EAAKrc,eAAe,QACpB,OAAOqc,EAAKhX,KAEhB,MAAMorB,GAAS,GAAKpU,GAAMoU,MAAM,yBAChC,OAAiB,OAAVA,EAAiB,GAAKA,EAAM,EACtC,CAxBwBuuP,CAAY3iQ,GAG7BwZ,eAAQ80L,KAAM,4CAA2Cw5C,2KACyCA,aAC3FiS,CACV,CAEG,OAAO,IAEd,CAm1MkCujY,CAA0Bl6oB,GACzD,OAA+B,OAA3Bi6oB,EACO,IAAMA,EAAuB54oB,QAAQrB,GAGrC,IAAM,IAAIA,CAExB,CAxBc+5oB,CAAgC/5oB,GAG3C,MAAM,IAAIiznB,GAAa,KAAoDpR,EAC9E,CAmCD,SAAS+3B,GAAkBtC,EAAU3H,EAActroB,GAC/C,IAAIhD,EAIJ,GAAI62oB,GAAeZ,GAAW,CAC1B,MAAM6C,EAAoBpnB,GAAkBukB,GAC5C,OAAOrd,GAAckgB,IAAsBb,GAAkCa,EAChF,IAEOpC,GAAgBT,GAChBj2oB,EAAU,IAAM0xnB,GAAkBukB,EAAS3yoB,eAAV,GAE5BszoB,GAAkBX,GACvBj2oB,EAAU,IAAMi2oB,EAAS59e,cAAc00e,GAAWkJ,EAAS17O,MAAQ,UAAnD,GAEXo8O,GAAmBV,GACxBj2oB,EAAU,IAAMgrmB,GAAS0mB,GAAkBukB,EAASj7nB,kBAEnD,CACD,MAAM+9nB,EAAWrnB,GAAkBukB,IAC9BA,EAAS9yoB,UAAY8yoB,EAAShzoB,UAInC,IAiBZ,SAAS+1oB,GAAQh0oB,GACb,QAASA,EAAMu1Z,IAClB,CAnBey+O,CAAQ/C,GAIR,OAAOrd,GAAcmgB,IAAad,GAAkCc,GAHpE/4oB,EAAU,IAAM,IAAK+4oB,KAAahM,GAAWkJ,EAAS17O,MAK7D,CAEL,OAAOv6Z,CACV,CACD,SAAS23oB,GAAW33oB,EAASgF,EAAO5B,GAAQ,GACxC,MAAO,CACHpD,QAASA,EACTgF,MAAOA,EACP5B,MAAOA,EAAQ,QAAKyO,EAE3B,CAYD,SAASonoB,GAA4BhD,GACjC,QAASA,EAASV,eACrB,CACD,SAASkC,GAAsBz0oB,EAAWsqB,GACtC,UAAW2onB,KAAYjzoB,EACf/E,MAAMkuB,QAAQ8pnB,GACdwB,GAAsBxB,EAAU3onB,GAE3B2rnB,GAA4BhD,GACjCwB,GAAsBxB,EAASV,gBAAYjonB,GAG3CA,EAAG2onB,EAGd;;;;;;;OA8BD,MAAMiD;;;;;;;OAeN,MAAMC,GAAkB,cAIxB,MAAMC,GACFtwb,wBAAwBnrC,GACpB,MAXR,SAAS07d,GAAwB17d,GAC7B,MAAMllJ,EAAQp7B,MAAO,kCAAiCgkP,GAAU1jE,oDAChEllJ,SAAM0gnB,IAAmBx7d,EAClBllJ,CACV,CAOa4gnB,CAAwB17d,EACjC,EAiBL,MAAM27d,IA0BN,SAASC,GAAiBhhB,EAAOuB,GAC7B,OAAO,IAAIh7mB,GAAWi7mB,GAAiBxB,EAAOuB,GACjD,CA1BDwf,GAA2BE,KAAwB,IAAIJ,GA0CvD,MAAMt6nB,GACFliB,YAAYqM,GACRnM,KAAKmM,cAAgBA,CACxB,EAaL,SAASwwoB,GAAiBz0oB,GACtB,OAAOA,aAAiB8Z,GAAa9Z,EAAMiE,cAAgBjE,CAC9D;;;;;;;OATD8Z,GAAWs2mB;;;;;;;;AArCX,SAASskB,KACL,OAAOH,GAAiBhe,KAAmBN,KAC9C,EAqD4B,IAAIv+nB,GAAe,wBAMhD,MAAMi9oB,IAiBN,MAAM7vb,IAMNA,GAAUsra,kBAAoB,IAE9B,SAASwkB,KAGL,MAAM9f,EAAQmB,KAER4e,EAAc5f,GADNsB,KACqCjynB,MAAOwwnB,GAC1D,OAAQ1B,GAAQyhB,GAAeA,EAAc/f,GAv5LhC,GAw5LhB;;;;;;;OATmC8f,GAuBpC,MAAME,IAGNA,GAAU/5oB,WAAQ8jnB,GAAmB,CACjCllnB,MAAOm7oB,GACPh2B,WAAY,OACZ9jnB,QAAS,IAAM;;;;;;;;AAenB,MAAM2jnB,GACF/mnB,YAAY0J,GACRxJ,KAAKwJ,KAAOA,EACZxJ,KAAKi9oB,MAAQzzoB,EAAKzH,MAAM,KAAK,GAC7B/B,KAAKguH,MAAQxkH,EAAKzH,MAAM,KAAK,GAC7B/B,KAAK8wnB,MAAQtnnB,EAAKzH,MAAM,KAAKL,MAAM,GAAGC,KAAK,IAC9C,EAKL,MAAMw2iB,GAAU,IAAI0uE,GAAQ,UA0BtBq2B,EAAwC;;;;;;;;;;;;;;;AAiT9C,MAAMC,GAAuB,kBAO7B,SAASC,GAAiBzhnB,GACtB,OAAOA,EAAMwhnB,GAChB;;;;;;;OAkCD,MAAME,GACFv9oB,cAIIE,KAAKs9oB,SAAWrlnB,OACnB,CACDslnB,YAAY5hnB,GACR,MAAM6hnB,EAAgBx9oB,KAAKy9oB,mBAAmB9hnB,GAC9C37B,KAAKs9oB,SAAS3hnB,MAAM,QAASA,GACzB6hnB,GACAx9oB,KAAKs9oB,SAAS3hnB,MAAM,iBAAkB6hnB,EAE7C,CAEDC,mBAAmB9hnB,GACf,IAAIlX,EAAIkX,GAASyhnB,GAAiBzhnB,GAClC,KAAOlX,GAAK24nB,GAAiB34nB,IACzBA,EAAI24nB,GAAiB34nB,GAEzB,OAAOA,GAAK,IACf;;;;;;;OAeL,MAAMi5nB,GAAqB,6BAIrBC,GAAoB,QA6B1B,SAASC,GAAkB11oB,GACvB,OAAOA,EAAM7H,QAAQq9oB,GAAqBrloB,GAASA,EAAKhY,QAAQs9oB,GA7BlC,kBA8BjC;;;;;;;;;;;;;;;AAoCD,MAAME,GAAiB,IAAI7sf,IAE3B,IAAI8sf,GAAkB,EAWtB,SAASC,GAAa71nB,GAElB,OAAO21nB,GAAe99nB,IAAImI,IAAO,IACpC,CAiMD,MAAM81nB,GAAwB,gBAK9B,SAASC,GAAgBphoB,EAAQ0C,GAKzB+7mB,GAAQ/7mB,IACR1C,EAAOmhoB,IAAyBz+nB,EAznN7B,IAq6MX,SAAS2+nB,GAAclhB,GAEnB6gB,GAAetqnB,IAAIypmB,EAv6MZ,IAu6MuBA,EACjC,CAkNOkhB,CAAc3+nB,IAGd1C,EAAOmhoB,IAAyBz+nB,CAEvC,CAKD,SAAS4+nB,GAAgBthoB,GAErB,MAAM0C,EAAO1C,EAAOmhoB,IACpB,MAAwB,iBAATz+nB,EAAqBw+nB,GAAax+nB,GAAQA,GAAQ,IACpE,CACD,SAAS6+nB,GAAiBvhoB,GACtB,MAAM3U,EAAQi2oB,GAAgBthoB,GAC9B,OAAI3U,EACQoznB,GAAQpznB,GAASA,EAAQA,EAAM80nB,MAEpC,IACV;;;;;;;;AA0ID,SAASqhB,GAAgB31oB,GACrB,OAAOA,EAAQoiJ,cAAcooI,WAChC,CAKD,SAASorX,GAAkB51oB,GACvB,OAAOA,EAAQoiJ,aAClB,CAKD,SAASyzf,GAAc71oB,GACnB,OAAOA,EAAQoiJ,cAAc//E,IAChC,CAmBD,SAASyzkB,GAAct2oB,GACnB,OAAIA,aAAiBg3Q,SACVh3Q,IAGAA,CAEd;;;;;;;;;;;;;;;AA0GD,IAAIg7mB;;;;;;;;AAsBJ,IAAIu7B,GAIJ,SAASC,GAAoBC,EAAmB3hB,GAC5C,OAAOyhB,GAAqBE,EAAmB3hB,EAClD,EA3BD,SAAW9Z,GAOPA,EAAoBA,EAAoB07B,UAAe,GAAK,YAI5D17B,EAAoBA,EAAoB27B,SAAc,GAAK,UAC9D,CAZD,CAYG37B,KAAwBA,GAAsB;;;;;;;;AAgEjD,SAAS47B,GAAe9hB,GAEpB,MAAMrlmB,EAASqlmB,EA9gOJ,GA+gOX,OAAOzB,GAAa5jmB,GAAUA,EA/gOnB,GA+gOoCA,CAClD,CAgCD,SAASonnB,GAAmB/hB,GACxB,OAAOgiB,GAAqBhiB,EAviOb,IAwiOlB,CAID,SAASiiB,GAAkB12oB,GACvB,OAAOy2oB,GAAqBz2oB,EAtjOnB,GAujOZ,CACD,SAASy2oB,GAAqBrhB,GAC1B,KAA2B,OAApBA,IAA6BpC,GAAaoC,IAC7CA,EAAkBA,EA1jOb,GA4jOT,OAAOA,CACV;;;;;;;OAcD,SAASuhB,GAA0B5koB,EAAQ3P,EAAUgtB,EAAQwnnB,EAAeC,GAKxE,GAAqB,MAAjBD,EAAuB,CACvB,IAAIzhB,EACA2hB,IAAc,EAId9jB,GAAa4jB,GACbzhB,EAAayhB,EAER7jB,GAAQ6jB,KACbE,IAAc,EAEdF,EAAgBA,EAhmOf,IAkmOL,MAAMG,GAAQxiB,GAAYqiB,GACX,IAAX7koB,GAA4D,OAAXqd,EAC/B,MAAdynnB,EACAG,GAAkB50oB,EAAUgtB,EAAQ2nnB,IAGpCE,GAAmB70oB,EAAUgtB,EAAQ2nnB,GAAOF,GAAc,MAAM,GAGpD,IAAX9koB,GAA4D,OAAXqd,EACtD6nnB,GAAmB70oB,EAAUgtB,EAAQ2nnB,GAAOF,GAAc,MAAM,GAEhD,IAAX9koB,EACLmloB,GAAiB90oB,EAAU20oB,GAAOD,IAElB,IAAX/koB,GAEL3P,EAAS+0oB,YAAYJ,IAEP,MAAd5hB,GAywBZ,SAASiiB,GAAeh1oB,EAAU2P,EAAQojnB,EAAYkiB,EAAgBR,GAElE,MAAM59nB,EAASk8mB,EArzPJ,GAszPL58G,GAASg8G,GAAYY,GAOvBl8mB,IAAWs/f,IAKXo+H,GAA0B5koB,EAAQ3P,EAAUi1oB,EAAgBp+nB,EAAQ49nB,GAExE,QAAS5poB,GA3zPmB,GA2zPUA,GAAIkonB,EAAWp9nB,OAAQkV,KAAK,CAC9D,MAAMwnnB,GAAQU,EAAWlonB,IACzBqqoB,GAAU7iB,GAh5PJ,GAg5PkBA,GAAOrynB,EAAU2P,EAAQsloB,EAAgBp+nB,EACpE,CACJ,CA7xBWm+nB,CAAeh1oB,EAAU2P,EAAQojnB,EAAY/lmB,EAAQynnB,EAE5D,CACJ,CACD,SAASnxY,GAAetjQ,EAAUzC,GAG9B,OAAOyC,EAASwiN,WAAWjlN,EAC9B,CACD,SAAS43oB,GAAen1oB,EAAU20oB,EAAOp3oB,GAErCyC,EAASgyE,SAAS2ikB,EAAOp3oB,EAC5B,CACD,SAAS63oB,GAAkBp1oB,EAAUzC,GAEjC,OAAOyC,EAASq1oB,cAAcpC,GAAkB11oB,GACnD,CAQD,SAAS+3oB,GAAkBt1oB,EAAUlD,EAAMshQ,GAEvC,OAAOp+P,EAASoH,cAActK,EAAMshQ,EACvC,CA6GD,SAASm3Y,GAAWxmB,EAAOsD,EAAOU,EAAYlxnB,GAG1C,MAAM2zoB,EA7qOsB,GA6qOuB3zoB,EAC7C4zoB,EAAkB1iB,EAAWp9nB,OAC/BkM,EAAQ,IAERkxnB,EAAWyiB,EAAmB,GAjwOzB,GAiwOoCnjB,GAEzCxwnB,EAAQ4zoB,EAnrOgB,IAorOxBpjB,EApwOK,GAowOSU,EAAWyiB,GACzB7T,GAAW5O,EArrOa,GAqrOyBlxnB,EAAOwwnB,KAGxDU,EAAW1hnB,KAAKghnB,GAChBA,EAzwOK,GAywOS,MAElBA,EA5wOW,GA4wOKU,EAEhB,MAAM2iB,GAAwBrjB,EA/vOH,IAgwOG,OAA1BqjB,IAAkC3iB,IAAe2iB,IAezD,SAASC,GAAeC,EAAsBvjB,GAG1C,MAAMwjB,EAAaD,EAvtOH,GA0tOVE,EAFqBzjB,EAlyOhB,MAcoB,IAwxOAA,EAxxOA,MA0xOAyjB,IAI3BF,EAzuOuB,IAyuOwB,GAEhC,OAAfC,EACAD,EAruOY,GAquOwB,CAACvjB,GAGrCwjB,EAAWxkoB,KAAKghnB,EAEvB,CApCOsjB,CAAeD,GAAuBrjB,GAG1C,MAAM0jB,GAAW1jB,EAlwOL,IAmwOK,OAAb0jB,IACAA,GAASR,WAAWxmB,GAGxBsD,EAzxOU,IAyxOM,EACnB,CA4BD,SAAS2jB,GAAgBJ,EAAsBvjB,GAI3C,MAAMwjB,EAAaD,EA/uOH,GAgvOVK,EAAuBJ,EAAWv/oB,QAAQ+7nB,GAC1C6jB,EAAsB7jB,EA3zOjB,GAg0OQ,IAAfA,EAj0OM,KAk0ONA,EAl0OM,KAk0OU,IAChBS,GAA4BojB,GAAqB,IAErDL,EAAW35lB,OAAO+5lB,EAAsB,EAC3C,CAWD,SAASE,GAAWpjB,EAAYqjB,GAC5B,GAAIrjB,EAAWp9nB,QAhwOa,GAiwOxB,OACJ,MAAM6/oB,EAlwOsB,GAkwOuBY,EAC7CC,EAAetjB,EAAWyiB,GAChC,GAAIa,EAAc,CACd,MAAMX,EAAwBW,EAv0OP,IAw0OO,OAA1BX,GAAkCA,IAA0B3iB,GAC5DijB,GAAgBN,EAAuBW,GAEvCD,EAAc,IACdrjB,EAAWyiB,EAAmB,GA11O7B,GA01OwCa,EA11OxC,IA41OL,MAAMC,EAAe1U,GAAgB7O,EA5wOb,GA4wOmDqjB,IApMnF,SAASG,GAAwBxnB,EAAOsD,GAEpC6iB,GAAUnmB,EAAOsD,EADAA,EAlpOJ,IAmpOqB,EAAoC,KAAM,MAC5EA,EA/pOS,GA+pOK,KACdA,EA1pOW,GA0pOK,IACnB,CAgMOkkB,CAAwBF,EAh2OlB,GAg2OuCA,GAE7C,MAAMN,GAAWO,EA/0OT,IAg1OS,OAAbP,IACAA,GAASI,WAAWG,EAp2OlB,IAs2OND,EAp2OO,GAo2OgB,KACvBA,EAp2OK,GAo2OgB,KAErBA,EAx2OM,KAw2OiB,EAC1B,CACD,OAAOA,CACV,CAQD,SAASG,GAAaznB,EAAOsD,GACzB,KAAqB,IAAfA,EAp3OI,IAo3O4C,CAClD,MAAMrynB,EAAWqynB,EA52OR,IA62OLrynB,EAAS+0oB,aACTG,GAAUnmB,EAAOsD,EAAOrynB,EAAU,EAAqC,KAAM,MA9KzF,SAASy2oB,GAAgBC,GAErB,IAAIC,EAAoBD,EAhsOT,IAisOf,IAAKC,EACD,OAAOC,GAAYF,EA9sOb,GA8sO8BA,GAExC,KAAOC,GAAmB,CACtB,IAAIr8oB,EAAO,KACX,GAAIq2nB,GAAQgmB,GAERr8oB,EAAOq8oB,EAxsOA,QA0sON,CAGD,MAAME,EAAYF,EAtoOE,IAuoOhBE,IACAv8oB,EAAOu8oB,EACd,CACD,IAAKv8oB,EAAM,CAGP,KAAOq8oB,IAAsBA,EA7tO5B,IA6tOuDA,IAAsBD,GACtE/lB,GAAQgmB,IACRC,GAAYD,EAluOlB,GAkuO4CA,GAE1CA,EAAoBA,EAluOrB,GAouOuB,OAAtBA,IACAA,EAAoBD,GACpB/lB,GAAQgmB,IACRC,GAAYD,EAzuOd,GAyuOwCA,GAE1Cr8oB,EAAOq8oB,GAAqBA,EAxuO3B,EAyuOJ,CACDA,EAAoBr8oB,CACvB,CACJ,CA2IOm8oB,CAAgBpkB,EACnB,CACJ,CASD,SAASukB,GAAY7nB,EAAOsD,GACxB,KAAqB,IAAfA,EAr4OI,IAq4O4C,CAGlDA,EAx4OM,KAw4OU,GAMhBA,EA94OM,IA84OU,IA4ExB,SAASykB,GAAkB/nB,EAAOsD,GAC9B,IAAIwF,EACJ,GAAa,MAAT9I,GAAwD,OAAtC8I,EAAe9I,EAAM8I,cACvC,QAAShtnB,EAAI,EAAGA,EAAIgtnB,EAAalioB,OAAQkV,GAAK,EAAG,CAC7C,MAAMiC,EAAUulnB,EAAMwF,EAAahtnB,IAEnC,KAAMiC,aAAmB4rnB,IAAsB,CAC3C,MAAMqe,EAASlf,EAAahtnB,EAAI,GAChC,GAAIrU,MAAMkuB,QAAQqynB,GACd,QAAS1xmB,GAAI,EAAGA,GAAI0xmB,EAAOphpB,OAAQ0vC,IAAK,EAAG,CACvC,MAAM2xmB,GAAclqoB,EAAQiqoB,EAAO1xmB,KAC7BmzlB,GAAOue,EAAO1xmB,GAAI,GACxB2slB,GAAS,EAA0CglB,GAAaxe,IAChE,IACIA,GAAK7hoB,KAAKqgpB,GAIb,CAHA,QAEGhlB,GAAS,EAAwCglB,GAAaxe,GACjE,CACJ,KAEA,CACDxG,GAAS,EAA0CllnB,EAASiqoB,GAC5D,IACIA,EAAOpgpB,KAAKmW,EAIf,CAHA,QAEGklnB,GAAS,EAAwCllnB,EAASiqoB,EAC7D,CACJ,CACJ,CACJ,CAER,CA5GOD,CAAkB/nB,EAAOsD,GAyBjC,SAAS4kB,GAAgBloB,EAAOsD,GAC5B,MAAM6kB,EAAWnoB,EAAMr+Q,QACjBymS,EAAW9kB,EAr6OL,GAy6OZ,IAAI+kB,GAAoB,EACxB,GAAiB,OAAbF,EACA,QAASrsoB,EAAI,EAAGA,EAAIqsoB,EAASvhpB,OAAS,EAAGkV,GAAK,EAC1C,GAA2B,iBAAhBqsoB,EAASrsoB,GAAiB,CAEjC,MAAMwsoB,GAAoBH,EAASrsoB,EAAI,GACjCqH,GAAsC,mBAAtBmloB,GAClBA,GAAkBhlB,GAClBF,GAAYE,EAAMglB,KAChBz+R,GAAWu+R,EAASC,EAAoBF,EAASrsoB,EAAI,IACrDysoB,GAAqBJ,EAASrsoB,EAAI,GACN,kBAAvBysoB,GAEPploB,GAAOka,oBAAoB8qnB,EAASrsoB,GAAI+tW,GAAU0+R,IAG9CA,IAAsB,EAEtBH,EAASC,EAAoBE,MAI7BH,EAASC,GAAqBE,IAAoBhxoB,cAG1DuE,GAAK,CACR,KACI,CAED,MAAMiC,GAAUqqoB,EAASC,EAAoBF,EAASrsoB,EAAI,IAC1DqsoB,EAASrsoB,GAAGlU,KAAKmW,GACpB,CAGT,GAAiB,OAAbqqoB,EAAmB,CACnB,QAAStsoB,EAAIusoB,EAAoB,EAAGvsoB,EAAIssoB,EAASxhpB,OAAQkV,IAAK,EAG1D0soB,EAF0BJ,EAAStsoB,KAGtC,CACDwnnB,EAj9OQ,GAi9OS,IACpB,CACJ,CAxEO4kB,CAAgBloB,EAAOsD,GAEG,IAAtBA,EAn5OE,GAm5OWv+mB,MAEbu+mB,EA34OK,IA24OW7vmB,UAEpB,MAAMoznB,EAAuBvjB,EAt4ON,IAw4OvB,GAA6B,OAAzBujB,GAAiChlB,GAAayB,EAv5O3C,IAu5O2D,CAE1DujB,IAAyBvjB,EAz5O1B,IA05OC2jB,GAAgBJ,EAAsBvjB,GAG1C,MAAM0jB,EAAW1jB,EA54Ob,IA64Oa,OAAb0jB,GACAA,EAASI,WAAWpnB,EAE3B,EAh+BT,SAASyoB,GAAgBnlB,GAErB6gB,GAAe3inB,OAAO8hmB,EAj7Mf,IAk7MV;;;;;;;OA+9BOmlB,CAAgBnlB,EACnB,CACJ,CAsGD,SAASolB,GAAkB1oB,EAAO+B,EAAOuB,GACrC,OAAOqlB,GAAmB3oB,EAAO+B,EAAM9jmB,OAAQqlmB,EAClD,CAgBD,SAASqlB,GAAmB3oB,EAAO+B,EAAOuB,GACtC,IAAIuD,EAAc9E,EAGlB,KAAuB,OAAhB8E,GACkB,GAApBA,EAAY9hnB,MAEb8hnB,GADA9E,EAAQ8E,GACY5omB,OAIxB,GAAoB,OAAhB4omB,EAGA,OAAOvD,EA9iPF,GAkjPL,GAAwB,EAApBuD,EAAYzxT,MAA4C,CAExD,MAAMr2T,EAAgBihnB,EAAMn6mB,KAAKghnB,EAAY0B,gBAAgBxpnB,cAO7D,GAAIA,IAAkBo+mB,GAAoBzyb,MACtC3rL,IAAkBo+mB,GAAoBY,SACtC,OAAO,IAEd,CACD,OAAOwF,GAAiBsD,EAAavD,EAE5C,CAKD,SAASwiB,GAAmB70oB,EAAUgtB,EAAQgP,EAAOy4mB,EAAYkD,GAE7D33oB,EAAS6H,aAAamlB,EAAQgP,EAAOy4mB,EAAYkD,EACpD,CACD,SAAS/C,GAAkB50oB,EAAUgtB,EAAQgP,GAGzCh8B,EAASqH,YAAY2lB,EAAQgP,EAChC,CACD,SAAS47mB,GAA2B53oB,EAAUgtB,EAAQgP,EAAOy4mB,EAAYkD,GAClD,OAAflD,EACAI,GAAmB70oB,EAAUgtB,EAAQgP,EAAOy4mB,EAAYkD,GAGxD/C,GAAkB50oB,EAAUgtB,EAAQgP,EAE3C,CAYD,SAAS67mB,GAAiB73oB,EAAU1B,GAChC,OAAO0B,EAASzB,WAAWD,EAC9B,CAiBD,SAASw5oB,GAAwBliB,EAAa7B,EAAc1B,GACxD,OAAO0lB,GAAiCniB,EAAa7B,EAAc1B,EACtE,CAYD,SAAS2lB,GAAkCpiB,EAAa7B,EAAc1B,GAClE,OAAwB,GAApBuD,EAAY9hnB,KACLw+mB,GAAiBsD,EAAavD,GAElC,IACV,CAMD,IAMI4lB,GANAF,GAAmCC,GAOvC,SAASE,GAAgBC,EAAiCC,GACtDL,GAAmCI,EACnCF,GAA2BG,CAC9B,CASD,SAAS/woB,GAAY0nnB,EAAOsD,EAAOgmB,EAAYC,GAC3C,MAAMC,EAAcd,GAAkB1oB,EAAOupB,EAAYjmB,GACnDrynB,EAAWqynB,EAzpPJ,IA2pPP5jW,GAAaqpX,GADCQ,EAAWtrnB,QAAUqlmB,EA/pP9B,GAgqP6CimB,EAAYjmB,GACpE,GAAmB,MAAfkmB,EACA,GAAI/hpB,MAAMkuB,QAAQ2znB,GACd,QAASxtoB,GAAI,EAAGA,GAAIwtoB,EAAW1ipB,OAAQkV,KACnC+soB,GAA2B53oB,EAAUu4oB,EAAaF,EAAWxtoB,IAAI4jR,IAAY,QAIjFmpX,GAA2B53oB,EAAUu4oB,EAAaF,EAAY5pX,IAAY,QAGrDrkR,IAA7B6toB,IACIA,GAAyBj4oB,EAAUs4oB,EAAYjmB,EAAOgmB,EAAYE,EACzE,CAMD,SAASC,GAAmBnmB,EAAOvB,GAC/B,GAAc,OAAVA,EAAgB,CAGhB,MAAM2nB,EAAY3nB,EAAMh9mB,KACxB,GAAgB,EAAZ2koB,EACA,OAAOnmB,GAAiBxB,EAAOuB,GAE9B,GAAgB,EAAZomB,EACL,OAAOC,IAAqB,EAAIrmB,EAAMvB,EAAMjvnB,QAE3C,GAAgB,EAAZ42oB,EAAgD,CACrD,MAAME,EAAsB7nB,EAAM90lB,MAClC,GAA4B,OAAxB28mB,EACA,OAAOH,GAAmBnmB,EAAOsmB,GAEhC,CACD,MAAMC,EAAoBvmB,EAAMvB,EAAMjvnB,OACtC,OAAI+unB,GAAagoB,GACNF,IAAqB,EAAIE,GAGzBzmB,GAAYymB,EAE1B,CACJ,CACI,GAAgB,GAAZH,EAIL,OAHgB1E,GAAoBjjB,EAAOuB,EAA3B0hB,IAGA5hB,GAAYE,EAAMvB,EAAMjvnB,QAEvC,CACD,MAAMg3oB,EAAkBC,GAAmBzmB,EAAOvB,GAClD,GAAwB,OAApB+nB,EAA0B,CAC1B,GAAIripB,MAAMkuB,QAAQm0nB,GACd,OAAOA,EAAgB,GAI3B,OAAOL,GAFYrE,GAAe9hB,EA9sPf,KAgtPmBwmB,EACzC,CAEG,OAAOL,GAAmBnmB,EAAOvB,EAAMx2nB,KAE9C,CACJ,CACD,OAAO,IACV,CACD,SAASw+oB,GAAmBzmB,EAAOvB,GAC/B,GAAc,OAAVA,EAAgB,CAEhB,MAAMioB,EADgB1mB,EA3tPK,IAXpB,GAwuPD2mB,EAAUloB,EAAMmoB,WAEtB,OAAOF,EAAcE,WAAWD,EACnC,CACD,OAAO,IACV,CACD,SAASN,GAAqBQ,EAAsBnmB,GAChD,MAAMomB,EAjqPsB,GAiqPoBD,EAAuB,EACvE,GAAIC,EAAgBpmB,EAAWp9nB,OAAQ,CACnC,MAAM08nB,EAAQU,EAAWomB,GACnBC,EAAmB/mB,EAvvPnB,GAuvPgCzqnB,WACtC,GAAyB,OAArBwxoB,EACA,OAAOZ,GAAmBnmB,EAAO+mB,EAExC,CACD,OAAOrmB,EAlrPI,EAmrPd,CAUD,SAAS+hB,GAAiB90oB,EAAU20oB,EAAO0E,GAEvC,MAAMC,EAAezB,GAAiB73oB,EAAU20oB,GAC5C2E,GAlLR,SAASC,GAAkBv5oB,EAAUgtB,EAAQgP,EAAOq9mB,GAChDr5oB,EAASiI,YAAY+kB,EAAQgP,EAAOq9mB,EACvC,CAiLOE,CAAkBv5oB,EAAUs5oB,EAAc3E,EAAO0E,EAExD,CAKD,SAASG,GAAWx5oB,EAAU2P,EAAQmhnB,EAAOuB,EAAO4iB,EAAgBR,EAAYgF,IAC5E,KAAgB,MAAT3oB,GAAe,CAIlB,MAAM4oB,GAAernB,EAAMvB,EAAMjvnB,OAC3B42oB,GAAY3nB,EAAMh9mB,KAOxB,GANI2loB,IACe,IAAX9poB,IACA+poB,IAAgBpG,GAAgBnhB,GAAYunB,IAAernB,GAC3DvB,EAAM3sT,OAAS,GAGgC,KAApC,GAAd2sT,EAAM3sT,OACP,GAAgB,EAAZs0U,GACAe,GAAWx5oB,EAAU2P,EAAQmhnB,EAAM90lB,MAAOq2lB,EAAO4iB,EAAgBR,GAAY,GAC7EF,GAA0B5koB,EAAQ3P,EAAUi1oB,EAAgByE,GAAcjF,QAAjD,GAER,GAAZgE,GAAoC,CACzC,MAAMkB,GAAY5F,GAAoBjjB,EAAOuB,GAC7C,IAAIsiB,GACJ,KAAOA,GAAQgF,MACXpF,GAA0B5koB,EAAQ3P,EAAUi1oB,EAAgBN,GAAOF,GAEvEF,GAA0B5koB,EAAQ3P,EAAUi1oB,EAAgByE,GAAcjF,EAC7E,MACoB,GAAZgE,GACLmB,GAAyB55oB,EAAU2P,EAAQ0inB,EAAOvB,EAAOmkB,EAAgBR,GAIzEF,GAA0B5koB,EAAQ3P,EAAUi1oB,EAAgByE,GAAcjF,GAGlF3jB,EAAQ2oB,GAAe3oB,EAAM+oB,eAAiB/oB,EAAMx2nB,IACvD,CACJ,CACD,SAAS46oB,GAAUnmB,EAAOsD,EAAOrynB,EAAU2P,EAAQsloB,EAAgBR,GAC/D+E,GAAWx5oB,EAAU2P,EAAQo/mB,EAAMnnnB,WAAYyqnB,EAAO4iB,EAAgBR,GAAY,EACrF,CAgCD,SAASmF,GAAyB55oB,EAAU2P,EAAQ0inB,EAAOynB,EAAiB7E,EAAgBR,GACxF,MAAMsF,GAAiB1nB,EA10PQ,IA80PzB2nB,GAHgBD,GAt1PX,GAy1PiCd,WAAWa,EAAgBb,YACvE,GAAIzipB,MAAMkuB,QAAQs1nB,IAMd,QAASnvoB,GAAI,EAAGA,GAAImvoB,GAAsBrkpB,OAAQkV,KAAK,CAEnD0poB,GAA0B5koB,EAAQ3P,EAAUi1oB,EAD9B+E,GAAsBnvoB,IAC+B4poB,EACtE,KAEA,CAGD+E,GAAWx5oB,EAAU2P,EAFDqqoB,GACYD,GA12PzB,GA22P8D9E,EAAgBR,GAAY,EACpG,CACJ,CAwFD,SAASwF,GAAiBj6oB,EAAUjC,EAASmB,GAEzCc,EAASiF,aAAalH,EAAS,QAASmB,EAE3C,CAWD,SAASg7oB,GAAiBl6oB,EAAUjC,EAASmB,GAExB,KAAbA,EAEAc,EAAS2G,gBAAgB5I,EAAS,SAGlCiC,EAASiF,aAAalH,EAAS,QAASmB,EAG/C;;;;;;;OAmBD,SAASi7oB,GAAa/xoB,EAAWgyoB,EAAeC,GAE5C,IAAIlqoB,EAAM/H,EAAUzS,OACpB,OAAa,CACT,MAAM2kpB,EAAalyoB,EAAU9R,QAAQ8jpB,EAAeC,GACpD,IAAmB,IAAfC,EACA,OAAOA,EACX,GAAmB,IAAfA,GAAoBlyoB,EAAUvR,WAAWyjpB,EAAa,IAAM,GAAyB,CAErF,MAAM3kpB,EAASykpB,EAAczkpB,OAC7B,GAAI2kpB,EAAa3kpB,IAAWwa,GACxB/H,EAAUvR,WAAWyjpB,EAAa3kpB,IAAW,GAE7C,OAAO2kpB,CAEd,CAEDD,EAAgBC,EAAa,CAChC,CACJ;;;;;;;OASD,MACMC,GAAuB,cAS7B,SAASC,GAAmBv9jB,EAAOw9jB,EAAiBC,GAOhD,IAAI7voB,EAAI,EACR,KAAOA,EAAIoyE,EAAMtnF,QAAQ,CACrB,IAAIkmB,EAAOohE,EAAMpyE,KACjB,GAAI6voB,GAA6B,UAAT7+nB,GAEpB,GADAA,EAAOohE,EAAMpyE,IACgD,IAAzDsvoB,GAAat+nB,EAAKzL,cAAeqqoB,EAAiB,GAClD,OAAO,UAGG,IAAT5+nB,EAA0C,CAE/C,KAAOhR,EAAIoyE,EAAMtnF,QAAwC,iBAAtBkmB,EAAOohE,EAAMpyE,OAE5C,GAAIgR,EAAKzL,gBAAkBqqoB,EACvB,OAAO,EAEf,OAAO,CACV,CACJ,CACD,OAAO,CACV,CAMD,SAASE,GAAiB7pB,GACtB,OAAsB,IAAfA,EAAMh9mB,MAAwCg9mB,EAAMvznB,QAAUg9oB,EACxE,CAYD,SAASK,GAAmB9pB,EAAO+pB,EAAiBH,GAEhD,OAAOG,KADiC,IAAf/pB,EAAMh9mB,MAAyC4moB,EAA0C5pB,EAAMvznB,MAA7Bg9oB,GAE9F,CAUD,SAASO,GAAuBhqB,EAAO9ynB,EAAU08oB,GAE7C,IAAI/jhB,EAAO,EACX,MAAMu/K,EAAY46U,EAAM7ziB,OAAS,GAE3B89jB,EA0KV,SAASC,GAAuB9kW,GAC5B,QAASrrS,EAAI,EAAGA,EAAIqrS,EAAUvgT,OAAQkV,IAAK,CAEvC,GAAIsunB,GADajjV,EAAUrrS,IAEvB,OAAOA,CAEd,CACD,OAAOqrS,EAAUvgT,MACpB,CAlL6BqlpB,CAAuB9kW,GAGjD,IAAI+kW,IAAqB,EACzB,QAASpwoB,GAAI,EAAGA,GAAI7M,EAASrI,OAAQkV,KAAK,CACtC,MAAMH,GAAU1M,EAAS6M,IACzB,GAAuB,iBAAZH,IAaX,IAAIuwoB,GAEJ,GAAW,EAAPtkhB,GAEA,GADAA,EAAO,EAAyC,EAAPA,EACzB,KAAZjsH,KAAmBkwoB,GAAmB9pB,EAAOpmnB,GAASgwoB,IAC1C,KAAZhwoB,IAAsC,IAApB1M,EAASrI,OAAc,CACzC,GAAIulpB,GAAWvkhB,GACX,OAAO,EACXskhB,IAAqB,CACxB,MAEA,CACD,MAAME,GAA2B,EAAPxkhB,EAAqCjsH,GAAU1M,IAAW6M,IAGpF,GAAY,EAAP8rH,GAAuD,OAAhBm6f,EAAM7ziB,MAAgB,CAC9D,IAAKu9jB,GAAmB1pB,EAAM7ziB,MAAOk+jB,GAAmBT,GAAmB,CACvE,GAAIQ,GAAWvkhB,GACX,OAAO,EACXskhB,IAAqB,CACxB,CACD,QACH,CACD,MACMG,GAAkBC,GADC,EAAP1khB,EAAsC,QAAUjsH,GACZwrS,EAAWykW,GAAiB7pB,GAAQ4pB,GAC1F,IAAwB,IAApBU,GAAwB,CACxB,GAAIF,GAAWvkhB,GACX,OAAO,EACXskhB,IAAqB,EACrB,QACH,CACD,GAA0B,KAAtBE,GAA0B,CAC1B,IAAIG,GAEAA,GADAF,GAAkBL,EACF,GAQA7kW,EAAUklW,GAAkB,GAAGhroB,cAEnD,MAAMmroB,GAAiC,EAAP5khB,EAAqC2khB,GAAgB,KACrF,GAAIC,KACgE,IAAhEpB,GAAaoB,GAAyBJ,GAAmB,IAClD,EAAPxkhB,GAA0CwkhB,KAAsBG,GAAe,CAC/E,GAAIJ,GAAWvkhB,GACX,OAAO,EACXskhB,IAAqB,CACxB,CACJ,CACJ,MAlED,CAEI,IAAKA,KAAuBC,GAAWvkhB,KAAUukhB,GAAWxwoB,IACxD,OAAO,EAIX,GAAIuwoB,IAAsBC,GAAWxwoB,IACjC,SACJuwoB,IAAqB,EACrBtkhB,EAAOjsH,GAAkB,EAAPisH,CAErB,CAuDJ,CACD,OAAOukhB,GAAWvkhB,IAASskhB,EAC9B,CACD,SAASC,GAAWvkhB,GAChB,OAA8C,IAA/B,EAAPA,EACX,CA8BD,SAAS0khB,GAAoBv+oB,EAAMmgF,EAAO09jB,EAAkBD,GACxD,GAAc,OAAVz9jB,EACA,OAAO,EACX,IAAIpyE,EAAI,EACR,GAAI6voB,IAAqBC,EAAkB,CACvC,IAAIa,GAAe,EACnB,KAAO3woB,EAAIoyE,EAAMtnF,QAAQ,CACrB,MAAM8lpB,GAAgBx+jB,EAAMpyE,GAC5B,GAAI4woB,KAAkB3+oB,EAClB,OAAO+N,EAEN,GAAsB,IAAlB4woB,IAAwE,IAAlBA,GAC3DD,GAAe,UAEQ,IAAlBC,IAAuE,IAAlBA,GAAkD,CAC5G,IAAIl+oB,GAAQ0/E,IAAQpyE,GAGpB,KAAwB,iBAAVtN,IACVA,GAAQ0/E,IAAQpyE,GAEpB,QACH,CACI,GAAsB,IAAlB4woB,GAEL,MAEC,GAAsB,IAAlBA,GAAwD,CAE7D5woB,GAAK,EACL,QACH,EAEDA,GAAK2woB,EAAe,EAAI,CAC3B,CAED,OAAO,CACV,CAEG,OAgCR,SAASE,GAAuBz+jB,EAAOngF,GACnC,IAAI+N,EAAIoyE,EAAM3mF,QAAQ,GACtB,GAAIuU,GAAI,EAEJ,IADAA,IACOA,EAAIoyE,EAAMtnF,QAAQ,CACrB,MAAMopF,EAAO9B,EAAMpyE,GAGnB,GAAoB,iBAATk0E,EACP,OAAO,EACX,GAAIA,IAASjiF,EACT,OAAO+N,EACXA,GACH,CAEL,OAAO,CACV,CAhDc6woB,CAAuBz+jB,EAAOngF,EAE5C,CACD,SAAS6+oB,GAA2B7qB,EAAO9ynB,EAAU08oB,GAAmB,GACpE,QAAS7voB,EAAI,EAAGA,EAAI7M,EAASrI,OAAQkV,IACjC,GAAIiwoB,GAAuBhqB,EAAO9ynB,EAAS6M,GAAI6voB,GAC3C,OAAO,EAGf,OAAO,CACV,CA4CD,SAASkB,GAAyB59oB,EAAU82K,GACxC+me,EAAkB,QAAShxoB,EAAI,EAAGA,EAAIiqK,EAAKn/K,OAAQkV,IAAK,CACpD,MAAMixoB,EAAwBhne,EAAKjqK,GACnC,GAAI7M,EAASrI,SAAWmmpB,EAAsBnmpB,OAG9C,SAAS0vC,EAAI,EAAGA,EAAIrnC,EAASrI,OAAQ0vC,IACjC,GAAIrnC,EAASqnC,KAAOy2mB,EAAsBz2mB,GACtC,SAASw2mB,EAGjB,OAAO,EACV,CACD,OAAO,CACV,CACD,SAASE,GAAuBC,EAAgBjsU,GAC5C,OAAOisU,EAAiB,QAAUjsU,EAAM5oU,OAAS,IAAM4oU,CAC1D,CACD,SAASksU,GAAqBj+oB,GAC1B,IAAIipB,EAASjpB,EAAS,GAClB6M,EAAI,EACJ8rH,EAAO,EACPulhB,EAAe,GACfF,GAAiB,EACrB,KAAOnxoB,EAAI7M,EAASrI,QAAQ,CACxB,IAAIwmpB,GAAgBn+oB,EAAS6M,GAC7B,GAA6B,iBAAlBsxoB,GACP,GAAW,EAAPxlhB,EAAwC,CACxC,MAAMylhB,GAAYp+oB,IAAW6M,GAC7BqxoB,GACI,IAAMC,IAAiBC,GAAUzmpB,OAAS,EAAI,KAAOympB,GAAY,IAAM,IAAM,GACpF,MACe,EAAPzlhB,EACLulhB,GAAgB,IAAMC,GAEV,EAAPxlhB,IACLulhB,GAAgB,IAAMC,QAqBL,KAAjBD,IAAwBhB,GAAWiB,MACnCl1nB,GAAU80nB,GAAuBC,EAAgBE,GACjDA,EAAe,IAEnBvlhB,EAAOwlhB,GAGPH,EAAiBA,IAAmBd,GAAWvkhB,GAEnD9rH,GACH,CACD,MAAqB,KAAjBqxoB,IACAj1nB,GAAU80nB,GAAuBC,EAAgBE,IAE9Cj1nB,CACV;;;;;;;;AAgED,MAAMo1nB,GAA2F;;;;;;;OAgCjG,SAASC,GAAU1ynB,GAEf2ynB,GAAoB9oB,KAAYD,KAAYsD,KAAqBltmB,GAAO,EAC3E,CACD,SAAS2ynB,GAAoBxtB,EAAOsD,EAAOxwnB,EAAO26oB,GAI9C,IAAKA,EAED,GAD2F,IAA3C,EAAfnqB,EAn9Q3B,IAo9QuB,CACzB,MAAM6L,EAAqBnP,EAAMmP,mBACN,OAAvBA,GACApG,GAAkBzF,EAAO6L,EAAoBr8nB,EAEpD,KACI,CACD,MAAMo8nB,EAAgBlP,EAAMkP,cACN,OAAlBA,GACAjG,GAAyB3F,EAAO4L,EAAe,EAA2Cp8nB,EAEjG,CAMLk1nB,GAAiBl1nB,EACpB;;;;;;;OAcD,MAAM46oB,GAAmB,CACrB,6BAAsBrgC,GACtB,2BAAoByO,GACpB,mBAAYtnB,GACZ,8BAAuB6hC,GACvBnb,kBAAqBA;;;;;;;OAczB,SAASyyB,GAAkB5ooB,EAAMg3H,GAC7B,IAAIwgf,EAAkB,KAClBqxB,EAAe,KAEd7ooB,EAAKrc,eAAeuznB,KACrBt2mB,OAAOgyH,eAAe5yH,EAAMk3mB,GAAa,CACrC51mB,IAAK,KACuB,OAApBk2mB,IAEAA,EADiB4V,KACUwb,kBAAkBD,GAAmB,SAAQ3ooB,EAAKhX,qBAwCjG,SAAS8/oB,GAAsB9ooB,EAAM+ooB,GAEjC,MAAM/xgB,EAAO+xgB,GAAW,CAAExgC,WAAY,MAChCygC,EAAe,CACjBhgpB,KAAMgX,EAAKhX,KACXgX,KAAMA,EACNipoB,kBAAmB,EACnB1gC,WAAYvxe,EAAKuxe,YAErB,OAAK2gC,GAAmBlygB,IAASmygB,GAAqBnygB,UAAwB1gI,IAAd0gI,EAAKgoR,OACjEgqP,EAAahqP,KAAOmzO,GAAoBn7f,EAAKgoR,OAG7CkqP,GAAmBlygB,GACnBgygB,EAAaphpB,SAAWovI,EAAKpvI,SAvBrC,SAASwhpB,GAAmBpygB,GACxB,OAAOqygB,MAAarygB,CACvB,CAuBYoygB,CAAmBpygB,GACxBgygB,EAAajhpB,SAAWivI,EAAKjvI,SAExBohpB,GAAqBnygB,GAC1BgygB,EAAalsf,WAAa9lB,EAAK8lB,WAvBvC,SAASwsf,GAAsBtygB,GAC3B,YAA4B1gI,IAArB0gI,EAAKv3H,WACf,CAuBY6poB,CAAsBtygB,KAC3BgygB,EAAavpoB,YAAcu3H,EAAKv3H,aAE7BupoB;;;;;;;OACV,CAlEiHF,CAAsB9ooB,EAAMg3H,KAEvHwgf,KAKdx3mB,EAAKrc,eAAeg2nB,KACrB/4mB,OAAOgyH,eAAe5yH,EAAM25mB,GAAgB,CACxCr4mB,IAAK,KACD,GAAqB,OAAjBunoB,EAAuB,CACvB,MAAMU,EAAWnc,KACjByb,EAAeU,EAASC,eAAeb,GAAmB,SAAQ3ooB,EAAKhX,oBAAgB,CACnFA,KAAMgX,EAAKhX,KACXgX,OACAipoB,kBAAmB,EACnBjqP,KAAMkzO,GAAoBlynB,GAC1B5B,OAAQmroB,EAASrc,cAAcQ,YAEtC,CACD,OAAOmb,GAGXhkW,cAAc,GAGzB,CACD,MAAMwkW,GAAY1zB,EAAuB,CAAEjunB,QAASzF,OAAQ8F,SAAU4tnB,IACtE,SAASuzB,GAAmBlygB,GACxB,YAAyB1gI,IAAlB0gI,EAAKpvI,QACf,CAID,SAASuhpB,GAAqBnygB,GAC1B,YAA2B1gI,IAApB0gI,EAAK8lB,UACf,CA6CD,MAAM4we,GAAanC,GAAc,kBAAcj1nB,OAAWA,OAAWA,EAAW,CAAC0J,EAAMg3H,IAAS4xgB,GAAkB5ooB,EAAMg3H;;;;;;;OAcxH,SAASyygB,GAAe9O,EAASzhnB,EAAS,KAAMwwnB,EAAsB,KAAM1gpB,GACxE,MAAMo+K,EAAWuie,GAAuChP,EAASzhnB,EAAQwwnB,EAAqB1gpB,GAC9Fo+K,SAASy1d,8BACFz1d,CACV,CAMD,SAASuie,GAAuChP,EAASzhnB,EAAS,KAAMwwnB,EAAsB,KAAM1gpB,EAAM8yoB,EAAS,IAAIj/mB,KACnH,MAAMp1B,EAAY,CACdiipB,GAAuBpwB,GACvBygB,GAAoBY,IAExB3xoB,SAAOA,IAA4B,iBAAZ2xoB,OAAuBrkoB,EAAYwvO,GAAU60Z,IAC7D,IAAIkB,GAAWp0oB,EAAWyxB,GAAUyinB,KAAmB3yoB,GAAQ,KAAM8yoB;;;;;;;OAC/E,CAiCD,MAAMruB,GACWnmnB,cAACC,EAAS2xB,GACnB,GAAIx2B,MAAMkuB,QAAQrpB,GACd,OAAOkipB,GAAe,CAAEzgpB,KAAM,IAAMkwB,EAAQ3xB,EAAS,IAEpD,CACD,MAAMyB,EAAOzB,EAAQyB,MAAQ,GAC7B,OAAOygpB,GAAe,CAAEzgpB,QAAQzB,EAAQ2xB,OAAQ3xB,EAAQE,UAAWuB,EACtE,CACJ,EAkCL,SAAS4gpB,GAAuB1unB,GAC5B,GAAIA,EAAKr5B,OAAS,EAAG,CAGjB,MAAO;;;;;;;;AAff,SAASgopB,GAAqB3unB,GAC1B,MAAM2sT,EAAM,GACZ,QAAS9wU,EAAI,EAAGA,EAAImkB,EAAKr5B,SAAUkV,EAAG,CAClC,GAAI8wU,EAAIrlV,QAAQ04B,EAAKnkB,KAAM,EACvB8wU,SAAItqU,KAAK2d,EAAKnkB,IACP8wU,EAEXA,EAAItqU,KAAK2d,EAAKnkB,GACjB,CACD,OAAO8wU,CACV,CAGwBgiU,CAAqB3unB,EAAKj4B,QAAQ0zC,WACxB/zC,IAAIq4M,GAAK6qC,GAAU7qC,EAAE73M,QACxBF,KAAK,QAAU,GAC1C,CACD,MAAO,EACV,CACD,SAAS4mpB,GAAe1ie,EAAUjsJ,EAAK4unB,EAA2BhL,GAC9D,MAAM7jnB,EAAO,CAACC,GACR6unB,EAASD,EAA0B7unB,GACnCgC,GAAS6hnB,EA57EnB,SAASkL,GAAa7ooB,EAAS29nB,GAC3B,MAAMr/T,EAAO,GAAEt+T,gBAAsB29nB,aAAyBj9oB,MAAQi9oB,EAAc39nB,QAAU29nB,IACxF7hnB,EAAQp7B,MAAM49U,GACpBxiT,SAAMwhnB,IAAwBK,EACvB7hnB,CACV,CAu7EkC+snB,CAAaD,EAAQjL,GAAiBj9oB,MAAMkopB,GAC3E9snB,UAAMgtnB,OAASA,GACfhtnB,GAAMhC,KAAOA,EACbgC,GAAMitnB,UAAY,CAAC/ie,GACnBlqJ,GAAM6snB,0BAA4BA,EAClC7snB,GAAMwhnB,IAAwBK,EACvB7hnB,EACV,CACD,SAASgtnB,GAAO9ie,EAAUjsJ,GACtB55B,KAAK4opB,UAAU5soB,KAAK6pK,GACpB7lL,KAAK25B,KAAK3d,KAAK4d,GAEf55B,KAAK6f,QAAU7f,KAAKwopB,0BAA0BxopB,KAAK25B,KACtD,CAyHD,SAASkvnB,GAAkBta,EAAYhmR,GACnC,MAAM+H,EAAY,GAClB,QAAS96W,EAAI,EAAGmskB,EAAKp5N,EAAOjoX,OAAQkV,EAAImskB,EAAInskB,IAAK,CAC7C,MAAMszoB,EAAYvgS,EAAO/yW,GACpBszoB,GAAiC,GAApBA,EAAUxopB,OAIxBgwX,EAAUt0W,KAAK8soB,EAAUznpB,IAAIkjP,IAAW5iP,KAAK,MAH7C2uX,EAAUt0W,KAAK,IAKtB,CACD,OAAOzb,MAAM,sCAAyCgkP,GAAUgqZ,GAAc,KAC1Ej+Q,EAAU3uX,KAAK,MAAQ,2GAEvB4iP,GAAUgqZ,GAAc,kCAC/B,CAiCD,SAASwa,GAA8CC,EAAWC,GAC9D,OAAO1opB,MAAO,0DAAyDyopB,KAAaC,IACvF;;;;;;;OAnOD/8B,GAASmjB,mBAAqBA,GAC9BnjB,GAASwwB,KAAwB,IAAInE,GAErCrsB,GAASjpnB,WAAQ8jnB,GAAmB,CAChCllnB,MAAOqqnB,GACPlF,WAAY,MACZ9jnB,QAAS,IAAMgrmB,GAASmqC,MAM5BnsB,GAASoM,mBAAoB,EAkP7B,MAAM4wB,GAIFpppB,YAAY+B,EAAOqmB,GAGf,GAFAloB,KAAK6B,MAAQA,EACb7B,KAAKkoB,GAAKA,GACLrmB,EACD,MAAM,IAAIiznB,GAAa,KAAoDpR,GAE/E1jnB,KAAKqjY,YAAc9+I,GAAUvkP,KAAK6B,MACrC,CAISkE,WAAClE,GACP,OAAOsnpB,GAAmBppoB,IAAI60mB,GAAkB/ynB,GACnD,CAIUunpB,0BACP,OAAOD,GAAmBC,YAC7B,EAoBL,MAAMD,GAAqB,IAlB3B,MAAME,GACFvppB,cACIE,KAAKsppB,SAAW,IAAIt4f,GACvB,CACDjxI,IAAIle,GACA,GAAIA,aAAiBqnpB,GACjB,OAAOrnpB,EACX,GAAI7B,KAAKsppB,SAASrunB,IAAIp5B,GAClB,OAAO7B,KAAKsppB,SAASvpoB,IAAIle,GAE7B,MAAMm5P,EAAS,IAAIkuZ,GAAcrnpB,EAAOqnpB,GAAcE,cACtD,YAAKE,SAAS/1nB,IAAI1xB,EAAOm5P,GAClBA,CACV,CACGouZ,mBACA,OAAOpppB,KAAKsppB,SAASr7oB,IACxB;;;;;;;OAeL,MAAMs7oB,GACFzppB,YAAY85B,EAAK9M,EAAUqyF,GACvBn/G,KAAK45B,IAAMA,EACX55B,KAAK8sB,SAAWA,EAChB9sB,KAAKm/G,WAAaA,CACrB,CACap5G,eAAC6zB,GACX,OAAO,IAAI2vnB,GAAqB3vnB,GAAK,EAAO,KAC/C,EAEL,MAAM4vnB,GAAc,GACpB,MAAMC,GACF3ppB,YAAY85B,EAAK8vnB,EAAmBC,GAChC3ppB,KAAK45B,IAAMA,EACX55B,KAAK0ppB,kBAAoBA,EACzB1ppB,KAAK2ppB,cAAgBA,EACrB3ppB,KAAK4ppB,gBAAkB5ppB,KAAK0ppB,kBAAkB,EACjD,EAML,MAAMG,GACF/ppB,YAIAoD,EAIAo2nB,GACIt5nB,KAAKkD,QAAUA,EACflD,KAAKs5nB,aAAeA,CACvB,EAKL,SAASwwB,GAAyB3Q,GAC9B,IAAI4Q,EACAC,EACJ,GAAI7Q,EAAS9yoB,SAAU,CACnB,MAAMA,EAAWuunB,GAAkBukB,EAAS9yoB,UAC5C0jpB,EAAYrZ,KAAaxtoB,QAAQmD,GACjC2jpB,EAAeC,GAAiB5jpB,EACnC,MACQ8yoB,EAASj7nB,aACd6roB,EAAaG,GAAkBA,EAC/BF,EAAe,CAACT,GAAqBY,QAAQjB,GAAcnpoB,IAAIo5nB,EAASj7nB,gBAEnEi7nB,EAAS59e,YACdwuf,EAAY5Q,EAAS59e,WACrByuf,EA6ER,SAASI,GAAsB7b,EAAYjV,GACvC,GAAKA,EAGA,CACD,MAAM/wQ,EAAS+wQ,EAAaj4nB,IAAI0c,GAAK,CAACA,IACtC,OAAOu7mB,EAAaj4nB,IAAI0c,GAAKssoB,GAAc9b,EAAYxwnB,EAAGwqW,GAC7D,CALG,OAAO0hS,GAAiB1b,EAM/B,CArFsB6b,CAAsBjR,EAAS59e,WAAY49e,EAAS17O,QAGnEssP,EAAY,IAAM5Q,EAAS3yoB,SAC3BwjpB,EAAeR,IAEnB,OAAO,IAAIK,GAA0BE,EAAWC,EACnD,CAOD,SAASM,GAA0BnR,GAC/B,OAAO,IAAIsQ,GAA4BP,GAAcnpoB,IAAIo5nB,EAAShzoB,SAAU,CAAC2jpB,GAAyB3Q,IAAYA,EAAS7yoB,QAAS,EACvI,CAID,SAASikpB,GAA2BrkpB,GAEhC,MACMskpB,EAOV,SAASC,GAAiCvkpB,EAAWwkpB,GACjD,QAASl1oB,EAAI,EAAGA,EAAItP,EAAU5F,OAAQkV,IAAK,CACvC,MAAM2joB,EAAWjzoB,EAAUsP,GACrByjiB,EAAWyxG,EAAuB3qoB,IAAIo5nB,EAASv/mB,IAAI1R,IACzD,GAAI+whB,EAAU,CACV,GAAIkgG,EAASwQ,gBAAkB1wG,EAAS0wG,cACpC,MAAMZ,GAA8C9vG,EAAUkgG,GAElE,GAAIA,EAASwQ,cACT,QAAS35mB,EAAI,EAAGA,EAAImpmB,EAASuQ,kBAAkBpppB,OAAQ0vC,IACnDipgB,EAASywG,kBAAkB1toB,KAAKm9nB,EAASuQ,kBAAkB15mB,SAI/D06mB,EAAuBn3nB,IAAI4lnB,EAASv/mB,IAAI1R,GAAIixnB,EAEnD,KACI,CACD,IAAIwR,EAEAA,EADAxR,EAASwQ,cACU,IAAIF,GAA4BtQ,EAASv/mB,IAAKu/mB,EAASuQ,kBAAkBhopB,QAASy3oB,EAASwQ,eAG3FxQ,EAEvBuR,EAAuBn3nB,IAAI4lnB,EAASv/mB,IAAI1R,GAAIyioB,EAC/C,CACJ,CACD,OAAOD,CACV,CApC+BD,CAFTG,GAAoB1kpB,EAAW,IACtB7E,IAAIippB,IACuC,IAAIt5f,KAC3E,OAAO7vJ,MAAMqE,KAAKglpB,EAAoB1vnB,SACzC,CAmCD,SAAS8vnB,GAAoB1kpB,EAAWogV,GACpCpgV,SAAUuK,QAAQsnB,IACd,GAAIA,aAAa8hU,GACbvT,EAAItqU,KAAK,CAAE7V,QAAS4xB,EAAG1xB,SAAU0xB,SAAjC,GAEKA,GAAiB,iBAALA,QAA+BhjB,IAAdgjB,EAAE5xB,QACpCmgV,EAAItqU,KAAK+b,OAAT,KAEK52B,MAAMkuB,QAAQ0I,GAInB,MApSZ,SAAS8ynB,GAAqB1R,GAC1B,OAAO54oB,MAAO,4EAA2E44oB,IAC5F,CAkSiB0R,CAAqB9ynB,GAH3B6ynB,GAAoB7ynB,EAAGuuT,EAGG,IAG3BA,CACV,CAUD,SAAS2jU,GAAiB1b,GACtB,MAAMhmR,EAASmoR,KAAat2G,WAAWm0G,GACvC,IAAKhmR,EACD,MAAO,GACX,GAAIA,EAAO/sS,KAAKt6C,GAAU,MAALA,GACjB,MAAM2nnB,GAAkBta,EAAYhmR,GAExC,OAAOA,EAAOlnX,IAAI6/B,GAAKmpnB,GAAc9b,EAAYrtmB,EAAGqnV,GACvD,CACD,SAAS8hS,GAAc9b,EAAY51P,EAAUpwB,GACzC,IAAI1mX,EAAQ,KACRirB,GAAW,EACf,IAAK3rB,MAAMkuB,QAAQspX,GACf,OACWmyQ,GADPnyQ,aAAoB83P,GACK93P,EAAS92Y,MAGT82Y,EAHgB7rX,EAAU,MAM3D,IAAIqyF,EAAa,KACjB,QAAS3pG,GAAI,EAAGA,GAAImjY,EAASr4Y,SAAUkV,GAAG,CACtC,MAAMu1oB,GAAgBpyQ,EAASnjY,IAC3Bu1oB,cAAyBlxT,GACzBh4V,EAAQkppB,GAEHA,cAAyBta,GAC9B5uoB,EAAQkppB,GAAclppB,MAEjBkppB,cAAyBt0B,EAC9B3pmB,GAAW,EAENi+nB,cAAyBh0B,GAAQg0B,cAAyB/zB,GAC/D73gB,EAAa4riB,GAERA,cAAyBnrpB,KAC9BiC,EAAQkppB,GAEf,CAED,GADAlppB,EAAQ+ynB,GAAkB/ynB,GACb,MAATA,EACA,OAAOippB,GAAkBjppB,EAAOirB,EAAUqyF,GAG1C,MAAM0piB,GAAkBta,EAAYhmR,EAE3C,CACD,SAASuiS,GAAkBjppB,EAAOirB,EAAUqyF,GACxC,OAAO,IAAIoqiB,GAAqBL,GAAcnpoB,IAAIle,GAAQirB,EAAUqyF,EACvE;;;;;;;OAUD,MAAM+8P,GAAY,GAwClB,MAAM8uS,GAkCYjlpB,eAACG,GACX,OAAOqkpB,GAA2BrkpB,EACrC,CAwBsBH,wBAACG,EAAWyxB,GAC/B,MAAMsznB,EAA8BD,GAAmBhjpB,QAAQ9B,GAC/D,OAAO8kpB,GAAmBE,sBAAsBD,EAA6BtznB,EAChF,CAwB2B5xB,6BAACG,EAAWyxB,GACpC,OAAO,IAAIwznB,GAAoBjlpB,EAAWyxB,EAC7C,EAEL,MAAMwznB,GAIFrrpB,YAAYsrpB,EAAY/kY,GAEpBrmR,KAAKqrpB,qBAAuB,EAC5BrrpB,KAAKorpB,WAAaA,EAClBprpB,KAAK23B,OAAS0uP,GAAW,KACzB,MAAMgO,EAAM+2X,EAAW9qpB,OACvBN,KAAKsrpB,OAAS,GACdtrpB,KAAKurpB,KAAO,GACZ,QAAS/1oB,EAAI,EAAGA,EAAI6+Q,EAAK7+Q,IACrBxV,KAAKsrpB,OAAO91oB,GAAK41oB,EAAW51oB,GAAGokB,IAAI1R,GACnCloB,KAAKurpB,KAAK/1oB,GAAK0mW,EAEtB,CACDn8V,IAAIle,EAAO+pN,EAAgByjb,IACvB,OAAOrvoB,KAAKwrpB,UAAUtC,GAAcnpoB,IAAIle,GAAQ,KAAM+pN,EACzD,CACD6/b,sBAAsBvlpB,GAClB,MAAM+kpB,EAA8BD,GAAmBhjpB,QAAQ9B,GAC/D,OAAOlG,KAAK0rpB,wBAAwBT,EACvC,CACDS,wBAAwBxlpB,GACpB,MAAMylpB,EAAM,IAAIR,GAAoBjlpB,GACpCylpB,SAAIh0nB,OAAS33B,KACN2rpB,CACV,CACDC,sBAAsBzS,GAClB,OAAOn5oB,KAAK6rpB,oBAAoBb,GAAmBhjpB,QAAQ,CAACmxoB,IAAW,GAC1E,CACD0S,oBAAoB1S,GAChB,OAAOn5oB,KAAK8rpB,qBAAqB3S,EACpC,CACD4S,mBAAmBv/oB,GACf,GAAIA,EAAQ,GAAKA,GAASxM,KAAKorpB,WAAW9qpB,OACtC,MArdZ,SAAS0rpB,GAAiBx/oB,GACtB,OAAOjM,MAAO,SAAQiM,sBACzB,CAmdiBw/oB,CAAiBx/oB,GAE3B,OAAOxM,KAAKorpB,WAAW5+oB,EAC1B,CAEDy/oB,KAAK9S,GACD,GAAIn5oB,KAAKqrpB,uBAAyBrrpB,KAAKkspB,yBACnC,MA7kBZ,SAASC,GAAsBtme,EAAUjsJ,GACrC,OAAO2unB,GAAe1ie,EAAUjsJ,EAAK,SAAUD,GAC3C,MAAQ,wCAAuC0unB,GAAuB1unB,IACzE,EACJ,CAykBiBwynB,CAAsBnspB,KAAMm5oB,EAASv/mB,KAE/C,OAAO55B,KAAK8rpB,qBAAqB3S,EACpC,CACD+S,yBACI,OAAOlspB,KAAKurpB,KAAKjrpB,MACpB,CACDwrpB,qBAAqB3S,GACjB,GAAIA,EAASwQ,cAAe,CACxB,MAAMrjU,EAAM,GACZ,QAAS9wU,EAAI,EAAGA,EAAI2joB,EAASuQ,kBAAkBpppB,SAAUkV,EACrD8wU,EAAI9wU,GAAKxV,KAAKospB,aAAajT,EAAUA,EAASuQ,kBAAkBl0oB,IAEpE,OAAO8wU,CACV,CAEG,OAAOtmV,KAAKospB,aAAajT,EAAUA,EAASuQ,kBAAkB,GAErE,CACD0C,aAAajT,EAAU0Q,GACnB,MAAM3mpB,EAAU2mpB,EAA0B3mpB,QAC1C,IAAIu6Z,EAWA1qY,EAVJ,IACI0qY,EACIosP,EAA0BvwB,aAAaj4nB,IAAIwvoB,IAAO7woB,KAAKqspB,2BAA2Bxb,IAOzF,CANA,MACMpsnB,IACH,MAAIA,GAAEkkoB,QACFlkoB,GAAEkkoB,OAAO3opB,KAAMm5oB,EAASv/mB,KAEtBnV,EACT,CAED,IACIsO,EAAM7vB,KAAWu6Z,EAIpB,CAHA,MACMh5Y,IACH,MAllBZ,SAAS6noB,GAAmBzme,EAAU0me,EAAmBC,EAAe5ynB,GACpE,OAAO2unB,GAAe1ie,EAAUjsJ,EAAK,SAAUD,GAC3C,MAAM5jB,EAAQwuO,GAAU5qN,EAAK,GAAG93B,OAChC,MAAQ,GAAE0qpB,EAAkB1soB,0CAA0C9J,KAASsyoB,GAAuB1unB,KACzG,EAAE4ynB,EACN,CA6kBiBD,CAAmBtspB,KAAMykB,GAAGA,GAAEo4C,MAAOs8kB,EAASv/mB,IACvD,CACD,OAAO7G,CACV,CACDs5nB,2BAA2Bxb,GACvB,OAAO7woB,KAAKwrpB,UAAU3a,EAAIj3mB,IAAKi3mB,EAAI1xhB,WAAY0xhB,EAAI/jnB,SAAW,KAAOuinB,GACxE,CACDmc,UAAU5xnB,EAAKulF,EAAYysG,GACvB,OAAIhyL,IAAQuxnB,GAAoBsB,aACrBzspB,KAEPm/G,aAAsB43gB,EACf/2nB,KAAK0spB,cAAc9ynB,EAAKgyL,GAGxB5rN,KAAK2spB,iBAAiB/ynB,EAAKgyL,EAAezsG,EAExD,CACDytiB,eAAeC,GACX,QAASr3oB,EAAI,EAAGA,EAAIxV,KAAKsrpB,OAAOhrpB,OAAQkV,IACpC,GAAIxV,KAAKsrpB,OAAO91oB,KAAOq3oB,EACnB,OAAI7spB,KAAKurpB,KAAK/1oB,KAAO0mW,KACjBl8W,KAAKurpB,KAAK/1oB,GAAKxV,KAAKispB,KAAKjspB,KAAKorpB,WAAW51oB,KAEtCxV,KAAKurpB,KAAK/1oB,GAGzB,OAAO0mW,EACV,CAED4wS,aAAalznB,EAAKgyL,GACd,GAAIA,IAAkByjb,GAClB,OAAOzjb,EAGP,MA5qBZ,SAASmhc,GAAgBlne,EAAUjsJ,GAC/B,OAAO2unB,GAAe1ie,EAAUjsJ,EAAK,SAAUD,GAE3C,MAAQ,mBADM4qN,GAAU5qN,EAAK,GAAG93B,UACGwmpB,GAAuB1unB,IAC7D,EACJ,CAuqBiBoznB,CAAgB/spB,KAAM45B,EAEnC,CAED8ynB,cAAc9ynB,EAAKgyL,GACf,MAAM74L,EAAM/yB,KAAK4spB,eAAehznB,EAAI1R,IACpC,OAAQ6K,IAAQmpV,GAAanpV,EAAM/yB,KAAK8spB,aAAalznB,EAAKgyL,EAC7D,CAED+gc,iBAAiB/ynB,EAAKgyL,EAAezsG,GACjC,IAAIwsiB,EAOJ,IALIA,EADAxsiB,aAAsB63gB,GAChBh3nB,KAAK23B,OAGL33B,KAEH2rpB,aAAeR,IAAqB,CACvC,MAAM6B,EAAOrB,EACP54nB,GAAMi6nB,EAAKJ,eAAehznB,EAAI1R,IACpC,GAAI6K,KAAQmpV,GACR,OAAOnpV,GACX44nB,EAAMqB,EAAKr1nB,MACd,CACD,OAAY,OAARg0nB,EACOA,EAAI5roB,IAAI6Z,EAAI/3B,MAAO+pN,GAGnB5rN,KAAK8spB,aAAalznB,EAAKgyL,EAErC,CACGy3K,kBAGA,MAAQ,kCAOhB,SAAS4pR,GAAcpne,EAAUr1J,GAC7B,MAAM81T,EAAM,GACZ,QAAS9wU,EAAI,EAAGA,EAAIqwK,EAASule,WAAW9qpB,SAAUkV,EAC9C8wU,EAAI9wU,GAAKgb,EAAGq1J,EAASkme,mBAAmBv2oB,IAE5C,OAAO8wU,CACV;;;;;;;;;;;;;;;;;;;;;OAfyB2mU,CAAcjtpB,KAAO+3B,GAAM,KAAOA,EAAE6B,IAAIypW,YAAc,MACnE1hY,KAAK,SAEb,CACDF,WACI,OAAOzB,KAAKqjY,WACf,EAkCL,SAAS6pR,GAAkBrrpB,EAAOitU,EAAQqnT,GAAY/vJ,SAClD,MAAM42J,EAAQmB,KAGd,GAAc,OAAVnB,EAGA,OAAO9uB,GAASrsmB,EAAOitU,GAG3B,OAAOw3T,GADO7H,KACsBzB,EAAOpI,GAAkB/ynB,GAAQitU,EACxE,CAaD,SAASq+U,KAEL,MAAM,IAAI5spB,MADiF,UAE9F;;;;;;;;;;;;;;;AA+CD,SAAS6spB,GAAgBh3d,EAAMnxL,GAG3B,OAAQmxL,GAAQ,GAAmCnxL,GAAQ,CAC9D,CACD,SAASoopB,GAAqBC,GAE1B,OAAQA,GAAiB,GAAoC,KAChE,CACD,SAASC,GAA8BD,GAEnC,OACI,IADoB,EAAhBA,EAEX,CAOD,SAASE,GAA8BF,GAEnC,OAAwB,EAAhBA,CACX,CACD,SAASG,GAAqBH,GAE1B,OAAwB,OAAhBA,IAAwD,CACnE,CACD,SAASI,GAAqBJ,EAAeropB,GAGzC,OAAyB,OAAhBqopB,EACLropB,GAAQ,CACf,CACD,SAAS0opB,GAA8BL,GAEnC,OACI,IADoB,EAAhBA,EAEX,CACD,SAASM,GAA8BN,GAEnC,OAAwB,EAAhBA,CACX,CApJDnC,GAAoBsB,aAAgCvD,GAAcnpoB,IAAImsmB,IA84BtE,SAAS2hC,GAAsBn0B,EAAOsD,GAClC,MAAM55N,EAAiBs2N,EAAMt2N,eAC7B,GAAuB,OAAnBA,EACA,QAAS5tZ,EAAI,EAAGA,EAAI4tZ,EAAe9ia,OAAQkV,GAAK,EAAG,CAC/C,MAAMs4oB,EAAgB1qP,EAAe5tZ,GAC/Bu4oB,EAAkB3qP,EAAe5tZ,EAAI,GAC3C,IAAwB,IAApBu4oB,EAAwB,CACxB,MAAMrlB,GAAehP,EAAMn6mB,KAAKwuoB,GAIhC5tB,GAAqB2tB,GACrBplB,GAAatlO,eAAe,EAA4B45N,EAAM+wB,GAAkBA,EACnF,CACJ,CAER,CAaD,SAASC,GAAYxtB,EAAa9G,EAAOjinB,EAASq3T,EAAO5qU,EAAM+ppB,EAAWC,GAAiBvjpB,GAAUssoB,GAAWpxd,GAAU+gd,IACtH,MAAM5J,GAA4DtD,EAAM8L,UAAU9joB,QAClFs7nB,UAv3US,GAu3UK94nB,EACd84nB,GAt3UU,GAs3Ua,GAARluT,GACc,OAAzB83T,IACCpG,GAAqC,KAArBA,EAx3UX,MAy3UNxD,GAz3UM,IAy3UU,MAEpBQ,GAAuBR,IAEvBA,GA53UW,GA43UKA,GA/2UK,IA+2UqBwD,EAC1CxD,GAx3UY,GAw3UKvlnB,EACjBulnB,GAv3UqB,IAu3UMkxB,IAAmB1tB,GAAeA,EAv3UxC,IAy3UrBxD,GAx3Ua,IAw3UMrynB,IAAY61nB,GAAeA,EAx3UjC,IA03UbxD,GAz3Uc,IAy3UKia,IAAazW,GAAeA,EAz3UjC,KAy3U2D,KACzExD,GA73Ue,GA63UKn3c,IAAY26c,GAAeA,EA73UhC,IA63U2D,KAC1ExD,GAj4UW,GAi4UKixB,EAChBjxB,GAn3UO,IAi6MX,SAASmxB,KACL,OAAOrQ,IACV,CAg9HeqQ,GACZnxB,GAn3U2B,IAm3UK4J,GAGhC5J,GA33U+B,IA43Ub,GAAdtD,EAAMj7mB,KAAqC+hnB,EA53UhB,IA43U0DxD,GAElFA,EACV,CACD,SAASoxB,GAAiB10B,EAAOltnB,EAAOiS,EAAMhX,EAAMmgF,GAMhD,IAAI6ziB,EAAQ/B,EAAMn6mB,KAAK/S,GACvB,GAAc,OAAVivnB,EACAA,EAAQ4yB,GAAmB30B,EAAOltnB,EAAOiS,EAAMhX,EAAMmgF,GA5nT7D,SAAS83iB,KACL,OAAO9B,GAAiBC,OAAO8B,MAClC,CA2nTWD,KAKAjE,EAAM3sT,OAAS,YAGD,GAAb2sT,EAAMh9mB,KAAuC,CAClDg9mB,EAAMh9mB,KAAOA,EACbg9mB,EAAMvznB,MAAQT,EACdg0nB,EAAM7ziB,MAAQA,EACd,MAAMjwD,GAASinmB,KACfnD,EAAM6J,cAA2B,OAAX3tmB,IAAkB,EAAKA,GAAO2tmB,aAGvD,CACDxG,UAAgBrD,GAAO,GAChBA,CACV,CACD,SAAS4yB,GAAmB30B,EAAOltnB,EAAOiS,EAAMhX,EAAMmgF,GAClD,MAAM82iB,EAAeC,KACfE,GAAWE,KACXpnmB,GAASknmB,GAAWH,EAAeA,GAAgBA,EAAa/mmB,OAEhE8jmB,GAAQ/B,EAAMn6mB,KAAK/S,GA4e7B,SAAS8hpB,GAAY50B,EAAO60B,EAAS9voB,EAAMjS,EAAOtE,EAAO0/E,GAOrD,IAAI09iB,GAAgBipB,EAAUA,EAAQjpB,eAAgB,EAyEtD,MAvCI,CACI7mnB,OACAjS,QACAgipB,kBAAmB,KACnBlpB,iBACArD,gBAAgB,EAChBC,cAAc,EACdusB,sBAAsB,EACtBC,iBAAkB,KAClB5/U,MAAO,EACP+4T,gBAAiB,EACjB3/nB,MAAOA,EACP0/E,MAAOA,EACP+mkB,YAAa,KACbC,WAAY,KACZC,mBAAe95oB,EACfm7N,OAAQ,KACR8oZ,QAAS,KACT81B,OAAQ,KACR7ppB,KAAM,KACNu/oB,eAAgB,KAChB79mB,MAAO,KACPhP,OAAQ42nB,EACR3K,WAAY,KACZlynB,OAAQ,KACRq9nB,kBAAmB,KACnBC,oBAAgBj6oB,EAChBpI,QAAS,KACTsipB,mBAAoB,KACpBC,qBAAiBn6oB,EACjBo6oB,cAAe,EACfC,cAAe,EAS1B,CA5jBOd,CAAY50B,EAAO/hmB,GAAQlZ,EAAMjS,EAAO/E,EAAMmgF,GAIlD,OAAyB,OAArB8xiB,EAAMnnnB,aACNmnnB,EAAMnnnB,WAAakpnB,IAEF,OAAjBiD,IACIG,GAE0B,MAAtBH,EAAa/3lB,OAAkC,OAAjB80lB,GAAM9jmB,SAEpC+mmB,EAAa/3lB,MAAQ80lB,IAIC,OAAtBiD,EAAaz5nB,OAGby5nB,EAAaz5nB,KAAOw2nB,KAIzBA,EACV,CAWD,SAAS4zB,GAAa31B,EAAOsD,EAAOsyB,EAAiB96lB,GACjD,GAAwB,IAApB86lB,EACA,OAAO,EAQX,MAAMC,EAAWvyB,EAAM18nB,OACvB,QAASkV,EAAI,EAAGA,EAAI85oB,EAAiB95oB,IACjCwnnB,EAAMhhnB,KAAKw4C,GACXklkB,EAAM8L,UAAUxpnB,KAAKw4C,GACrBklkB,EAAMn6mB,KAAKvD,KAAK,MAEpB,OAAOuzoB,CACV,CAWD,SAASC,GAAW91B,EAAOsD,EAAOvlnB,GAE9BipnB,GAAU1D,GACV,IACI,MAAMzxa,EAAYmua,EAAMnua,UACN,OAAdA,GACAkkc,GAAmB,EAA4Blkc,EAAW9zM,GAI9D,MAAMi4oB,EAAah2B,EAAMrnmB,SACN,OAAfq9nB,GACAC,GAAgBj2B,EAAOsD,EAAO0yB,EAAY,EAA4Bj4oB,GAOtEiinB,EAAM2L,kBACN3L,EAAM2L,iBAAkB,GAKxB3L,EAAMk2B,sBACN/B,GAAsBn0B,EAAOsD,GAK7BtD,EAAMm2B,mBACNJ,GAAmB,EAA4B/1B,EAAMnua,UAAW9zM,GAGpE,MAAMoqf,EAAa63H,EAAM73H,WACN,OAAfA,GAvKZ,SAASiuJ,GAAsBC,EAAWluJ,GACtC,QAASrsf,EAAI,EAAGA,EAAIqsf,EAAWvhgB,OAAQkV,IACnCw6oB,GAAgBD,EAAWluJ,EAAWrsf,GAE7C,CAoKWs6oB,CAAsB9yB,EAAOn7H,EAepC,CAbA,MACMlme,GAGH,MAAI+9lB,EAAM2L,kBACN3L,EAAMu2B,qBAAsB,EAC5Bv2B,EAAM2L,iBAAkB,GAEtB1pmB,CACT,SAEGqhmB,EAniVM,KAmiVU,EAChBoE,IACH,CACJ,CASD,SAAS8uB,GAAYx2B,EAAOsD,EAAO0yB,EAAYj4oB,GAE3C,MAAMq3T,EAAQkuT,EAjjVJ,GAkjVV,GAAiD,MAApC,IAARluT,GACD,OACJ4xT,GAAU1D,GAIV,IACIQ,GAAuBR,GACvBsC,GAAgB5F,EAAMyF,mBACH,OAAfuwB,GACAC,GAAgBj2B,EAAOsD,EAAO0yB,EAAY,EAA4Bj4oB,GAE1E,MAAM04oB,GAA8E,IAA3C,EAARrhV,GAI7B,GAAIqhV,GAAyB,CACzB,MAAMtnB,GAAqBnP,EAAMmP,mBACN,OAAvBA,IACApG,GAAkBzF,EAAO6L,GAAoB,KAEpD,KACI,CACD,MAAMD,GAAgBlP,EAAMkP,cACN,OAAlBA,IACAjG,GAAyB3F,EAAO4L,GAAe,EAA2C,MAE9F/F,GAAwB7F,EAAO,EAClC,CAcD,GAogCZ,SAASozB,GAAgCpzB,GACrC,QAASU,EAAaqhB,GAAmB/hB,GAAuB,OAAfU,EAAqBA,EAAauhB,GAAkBvhB,GAAa,CAC9G,IAAKA,EA9hXkB,GA+hXnB,SACJ,MAAM8iB,EAAa9iB,EAzhXP,GA2hXZ,QAASlonB,EAAI,EAAGA,EAAIgroB,EAAWlgpB,OAAQkV,IAAK,CACxC,MAAM66oB,EAAa7P,EAAWhroB,GACxBqroB,EAAsBwP,EAvmXzB,GA2mXwE,IAAlD,IAApBA,EA5mXH,KA6mXE5yB,GAA4BojB,EAAqB,GAMrDwP,EAnnXE,IAmnXmB,GACxB,CACJ,CACJ,CAniCOD,CAAgCpzB,GA4/BxC,SAASszB,GAAqBtzB,GAC1B,QAASU,EAAaqhB,GAAmB/hB,GAAuB,OAAfU,EAAqBA,EAAauhB,GAAkBvhB,GACjG,QAASlonB,EA//We,GA+/WcA,EAAIkonB,EAAWp9nB,OAAQkV,IAAK,CAC9D,MAAM+6oB,EAAgB7yB,EAAWlonB,GAC3Bg7oB,EAAgBD,EAplXpB,GAslXEjzB,GAA6BizB,IAC7BL,GAAYM,EAAeD,EAAeC,EAAcn+nB,SAAUk+nB,EAhlXlE,GAklXP,CAER,CAtgCOD,CAAqBtzB,GAEQ,OAAzBtD,EAAMt2N,gBACNyqP,GAAsBn0B,EAAOsD,GAKzBmzB,GAAyB,CACzB,MAAM9tB,GAAoB3I,EAAM2I,kBACN,OAAtBA,IACAI,GAAkBzF,EAAOqF,GAEhC,KACI,CACD,MAAMD,GAAe1I,EAAM0I,aACN,OAAjBA,IACAO,GAAyB3F,EAAOoF,GAAc,GAElDS,GAAwB7F,EAAO,EAClC;;;;;;;;AA7Sb,SAASyzB,GAA0B/2B,EAAOsD,GACtC,MAAM0zB,EAAqBh3B,EAAMg3B,mBACjC,GAA2B,OAAvBA,EAEJ,IACI,QAASl7oB,EAAI,EAAGA,EAAIk7oB,EAAmBpwpB,OAAQkV,IAAK,CAChD,MAAMm7oB,EAASD,EAAmBl7oB,GAClC,GAAIm7oB,EAAS,EAETjvB,IAAkBivB,OAEjB,CAED,MAAMC,EAAeD,EACfE,GAAkBH,IAAqBl7oB,GACvCs7oB,GAAgBJ,IAAqBl7oB,GAC3CoqnB,GAA8BixB,GAAiBD,GAE/CE,GAAc,EADE9zB,EAAM4zB,GAEzB,CACJ,CAIJ,CAHA,QAEGlvB,IAAiB,EACpB,CACJ,CAsRO+uB,CAA0B/2B,EAAOsD,GAEjC,MAAMn7H,GAAa63H,EAAM73H,WACN,OAAfA,IArQZ,SAASkvJ,GAAuBhB,EAAWluJ,GACvC,QAASrsf,EAAI,EAAGA,EAAIqsf,EAAWvhgB,OAAQkV,IACnCw7oB,GAAiBjB,EAAWluJ,EAAWrsf,GAE9C,CAkQWu7oB,CAAuB/zB,EAAOn7H,IAKlC,MAAMt2S,GAAYmua,EAAMnua,UAOpB,GANc,OAAdA,IACAkkc,GAAmB,EAA4Blkc,GAAW9zM,GAKtD04oB,GAAyB,CACzB,MAAM5tB,GAAiB7I,EAAM6I,eACN,OAAnBA,IACAE,GAAkBzF,EAAOuF,GAEhC,KACI,CACD,MAAMD,GAAY5I,EAAM4I,UACN,OAAdA,IACAK,GAAyB3F,EAAOsF,GAAW,GAE/CO,GAAwB7F,EAAO,EAClC,EAEyB,IAA1BtD,EAAMu3B,kBAONv3B,EAAMu3B,iBAAkB,GASxBj0B,EAxpVE,KAwpVc,GAED,IAAfA,EA1pVE,KA2pVFA,EA3pVE,KA2pVc,IAChBS,GAA4BT,EA3pVzB,IA2pVwC,GAKlD,CAHA,QAEGoE,IACH,CACJ,CACD,SAAS8vB,GAA0Bx3B,EAAOsD,EAAO0yB,EAAYj4oB,GACzD,MAAMy2oB,EAAkBlxB,EA5pVH,IAiqVfm0B,GAAuB9zB,GAAeL,GAC5C,KACgCm0B,IAAwBjD,EAAgB7hd,OAChE6hd,EAAgB7hd,QAEhB8kd,IACA3B,GAAW91B,EAAOsD,EAAOvlnB,GAE7By4oB,GAAYx2B,EAAOsD,EAAO0yB,EAAYj4oB,EAMzC,CALA,SAE+B05oB,IAAwBjD,EAAgBpzoB,KAChEozoB,EAAgBpzoB,KAEvB,CACJ,CACD,SAAS60oB,GAAgBj2B,EAAOsD,EAAO0yB,EAAY0B,EAAI35oB,GACnD,MAAM45oB,EAAoB5vB,KACpB6vB,GAAqB,EAALF,EACtB,IACI1vB,IAAiB,GACb4vB,IAAiBt0B,EAAM18nB,OAlqVb,IAqqVV4mpB,GAAoBxtB,EAAOsD,EArqVjB,IAqqVuC,GAGrDL,GADoB20B,GAAgB,EAA4C,EAC1D75oB,GACtBi4oB,EAAW0B,EAAI35oB,EAMlB,CALA,QAEGiqnB,GAAiB2vB,GAEjB10B,GADqB20B,GAAgB,EAA0C,EACxD75oB,EAC1B,CACJ,CAID,SAAS85oB,GAAsB73B,EAAO+B,EAAOuB,GACzC,GAAIxB,GAAmBC,GAAQ,CAC3B,MAAM9gnB,EAAQ8gnB,EAAMwG,eACdnnnB,EAAM2gnB,EAAMyG,aAClB,QAASuG,EAAiB9tnB,EAAO8tnB,EAAiB3tnB,EAAK2tnB,IAAkB,CACrE,MAAMjwX,GAAMkhX,EAAMn6mB,KAAKkpnB,GACnBjwX,GAAI4qJ,gBACJ5qJ,GAAI4qJ,eAAe,EAA4B45N,EAAMyL,GAAiBA,EAE7E,CACJ,CACJ,CAID,SAAS+oB,GAA0B93B,EAAOsD,EAAOvB,IACxCuC,OAmjBT,SAASyzB,GAAyB/3B,EAAOsD,EAAOvB,EAAO36G,GACnD,MAAMnmgB,EAAQ8gnB,EAAMwG,eACdnnnB,EAAM2gnB,EAAMyG,aACbxI,EAAM2L,iBACPH,GAA+BzJ,EAAOuB,GAE1CihB,GAAgBn9H,EAAQk8G,GACxB,MAAM6xB,GAAgBpzB,EAAMozB,cAC5B,QAASr5oB,GAAImF,EAAOnF,GAAIsF,EAAKtF,KAAK,CAC9B,MAAMgjQ,GAAMkhX,EAAMn6mB,KAAK/J,IACjB6poB,GAAczjB,GAAepjX,IAC/B6mY,IAEAqS,GAAkB10B,EAAOvB,EAAOjjX,IAEpC,MAAM4qX,GAAYqE,GAAkBzK,EAAOtD,EAAOlknB,GAAGimnB,GAKrD,GAJAwiB,GAAgB7a,GAAWpG,GACL,OAAlB6xB,IACA8C,GAAmB30B,EAAOxnnB,GAAImF,EAAOyonB,GAAW5qX,GAAKijX,EAAOozB,IAE5DxP,GAAa,CACSliB,GAAyB1B,EAAMjvnB,MAAOwwnB,GAlyWxD,GAmyWqBoG,EAC5B,CACJ,CACJ,CA1kBGquB,CAAyB/3B,EAAOsD,EAAOvB,EAAOwB,GAAiBxB,EAAOuB,IACT,MAA1C,IAAdvB,EAAM3sT,QA0kBf,SAAS8iV,GAA6Bl4B,EAAOsD,EAAOvB,GAChD,MAAM9gnB,EAAQ8gnB,EAAMwG,eACdnnnB,EAAM2gnB,EAAMyG,aACZ7vR,EAAeopR,EAAMjvnB,MACrBqznB,GA3/UV,SAASgyB,KACL,OAAOj0B,GAAiBC,OAAOgC,qBAClC,CAy/UiCgyB,GAC9B,IACInwB,GAAiBrvR,GACjB,QAAS77V,GAAWmE,EAAOnE,GAAWsE,EAAKtE,KAAY,CACnD,MAAMgiQ,GAAMkhX,EAAMn6mB,KAAK/I,IACjB4snB,GAAYpG,EAAMxmnB,IACxBspnB,GAAyBtpnB,KACA,OAArBgiQ,GAAIknQ,cAA0C,IAAjBlnQ,GAAIsgX,UAAoC,OAAlBtgX,GAAIugX,YACvD+4B,GAAiCt5Y,GAAK4qX,GAE7C,CAKJ,CAJA,QAEG1B,IAAiB,GACjB5B,GAAyBD,GAC5B,CACJ,CA7lBO+xB,CAA6Bl4B,EAAOsD,EAAOvB,GAElD,CAKD,SAASs2B,GAAyB14K,EAAUoiJ,EAAOu2B,EAAoB/0B,IACnE,MAAM2xB,EAAanzB,EAAMmzB,WACzB,GAAmB,OAAfA,EAAqB,CACrB,IAAIqD,EAAax2B,EAAMjvnB,MAAQ,EAC/B,QAASgJ,EAAI,EAAGA,EAAIo5oB,EAAWtupB,OAAQkV,GAAK,EAAG,CAC3C,MAAMhJ,GAAQoipB,EAAWp5oB,EAAI,GACvBtN,IAAkB,IAAVsE,GACVwlpB,EAAkBv2B,EAAOpiJ,GACzBA,EAAS7se,IACb6se,EAAS44K,KAAgB/ppB,EAC5B,CACJ,CACJ,CAQD,SAASgqpB,GAA0B15Y,GAC/B,MAAMkhX,EAAQlhX,EAAIkhX,MAGlB,OAAc,OAAVA,GAAkBA,EAAMu2B,oBAIjBz3Y,EAAIkhX,MAAQy4B,GAAY,EAA6B9xB,KAAW7nX,EAAInmP,SAAUmmP,EAAIj2P,MAAOi2P,EAAIogX,KAAMpgX,EAAI4gX,cAAe5gX,EAAI6gX,SAAU7gX,EAAIjtD,UAAWitD,EAAIihX,QAASjhX,EAAIqgX,QAExKa,CACV,CAcD,SAASy4B,GAAY1zoB,EAAM4hnB,EAAWqvB,EAAYntoB,EAAOq2mB,EAAMqB,EAAYC,GAAO3ua,GAAWkua,GAAS24B,IAElG,MAAMjzB,GA9vVY,GA8vVwB58mB,EAIpC8voB,GAAoBlzB,GAAoBvG,EACxC4M,GA6EV,SAAS8sB,GAAoBnzB,EAAmBkzB,GAC5C,MAAM7sB,EAA+C,GACrD,QAAShwnB,EAAI,EAAGA,EAAI68oB,EAAmB78oB,IACnCgwnB,EAAUxpnB,KAAKxG,EAAI2pnB,EAAoB,KAAO6nB,IAElD,OAAOxhB,CACV,CAnFqB8sB,CAAoBnzB,GAAmBkzB,IACnDx5B,GAAoC,mBAApBu5B,GAAiCA,KAAoBA,GA0E3E,OAzEc5sB,GAlyVJ,GAq0VN,CACI/mnB,KAAMA,EACN+mnB,UAAWA,GACXnzmB,SAAUq9nB,EACV6C,QAAS,KACThnc,UAAWA,GACX80a,UAAWA,EACX9gnB,KAAMimnB,GAAU9joB,QAAQ2lC,KAAK,KAAM83lB,IACnCA,kBAAmBA,GACnBqzB,kBAAmBH,GACnB3B,mBAAoB,KACpBrrB,iBAAiB,EACjB4rB,iBAAiB,EACjBpB,mBAAmB,EACnBD,sBAAsB,EACtBhnB,cAAe,KACfC,mBAAoB,KACpBzG,aAAc,KACdC,kBAAmB,KACnBC,UAAW,KACXC,eAAgB,KAChBC,aAAc,KACdnnR,QAAS,KACT+nD,eAAgB,KAChBy+F,WAAY,KACZ4wJ,kBAAyC,mBAAfx4B,EAA4BA,IAAeA,EACrEy4B,aAA+B,mBAAVx4B,GAAuBA,KAAUA,GACtD3nnB,WAAY,KACZknnB,QAASA,GACTZ,OAAQA,GACRo3B,qBAAqB,EAShC,CAiCD,SAAS0C,GAAwBj5B,EAAOsD,EAAOvlnB,EAASm7oB,GACpD,MAAM9Q,EAAW+Q,GAAwB71B,GACzB,OAAZvlnB,EAMAqqoB,EAAS9loB,KAAK42oB,IAGd9Q,EAAS9loB,KAAKvE,GACViinB,EAAM2L,iBACNytB,GAAwBp5B,GAAO19mB,KAAK42oB,EAAW9Q,EAASxhpB,OAAS,GAG5E,CAmFD,SAASyypB,GAAwBC,EAAejF,EAAiBkF,GAC7D,QAASl4B,KAAci4B,EACnB,GAAIA,EAAc5wpB,eAAe24nB,GAAa,CAC1Ck4B,EAA0B,OAAdA,EAAqB,GAAKA,EACtC,MAAMC,EAAeF,EAAcj4B,GAC/Bk4B,EAAU7wpB,eAAe24nB,GACzBk4B,EAAUl4B,GAAY/+mB,KAAK+xoB,EAAiBmF,GAG3CD,EAAUl4B,GAAc,CAACgzB,EAAiBmF,EAElD,CAEL,OAAOD,CACV,CAKD,SAASE,GAAgCz5B,EAAO+B,GAE5C,MAAM9gnB,EAAQ8gnB,EAAMwG,eACdnnnB,EAAM2gnB,EAAMyG,aACZkxB,EAAY15B,EAAMn6mB,KAClB8zoB,EAAa53B,EAAM7ziB,MACnB0rkB,GAAyD,GAC/D,IAAIC,GAAc,KACdC,GAAe,KACnB,QAASh+oB,GAAImF,EAAOnF,GAAIsF,EAAKtF,KAAK,CAC9B,MAAMkznB,GAAe0qB,EAAU59oB,IACzBi+oB,GAAkB/qB,GAAax4Z,OAK/B2+a,GAAgC,OAAfwE,GAAwB/N,GAAiB7pB,GAE5D,KADAi4B,GAAsBD,GAAiBJ,GAE3CC,GAAgBt3oB,KAAK6yoB,IACrB0E,GAAcR,GAAwBU,GAAiBj+oB,GAAG+9oB,IAC1DC,GAAeT,GAAwBrqB,GAAa1P,QAASxjnB,GAAGg+oB,GACnE,CACmB,OAAhBD,KACIA,GAAYnxpB,eAAe,WAC3Bq5nB,EAAM3sT,OAAS,IAEfykV,GAAYnxpB,eAAe,WAC3Bq5nB,EAAM3sT,OAAS,KAGvB2sT,EAAMozB,cAAgByE,GACtB73B,EAAMvrZ,OAASqjb,GACf93B,EAAMzC,QAAUw6B,EACnB,CA0BD,SAASG,GAAwBj6B,EAAO+B,EAAOuB,EAAOr2V,EAAUz+R,EAAOyC,EAAUssoB,GAAW2c,IAExF,MAAMlrpB,GAAUu0nB,GAAiBxB,EAAOuB,GACxC,IACI62B,GADAvxS,GAAYm5Q,EAAMvrZ,QAEjB0jb,IAA2B,MAAbtxS,KAAsBuxS,GAAYvxS,GAAU37E,KAC3DmtX,GAAqBp6B,EAAOsD,EAAO62B,GAAWltX,EAAUz+R,GACpDwznB,GAAgBD,IAChBs4B,GAAkB/2B,EAAOvB,EAAMjvnB,QAKjB,EAAbivnB,EAAMh9mB,MACXkoR,EA7BR,SAASqtX,GAAYvspB,GACjB,MAAa,UAATA,EACO,YACE,QAATA,EACO,UACE,eAATA,EACO,aACE,cAATA,EACO,YACE,aAATA,EACO,WACE,aAATA,EACO,WACJA,CACV,CAekBuspB,CAAYrtX,GAUvBz+R,EAAqB,MAAb+uoB,GAAoBA,GAAU/uoB,EAAOuznB,EAAMvznB,OAAS,GAAIy+R,GAAYz+R,EAC5EyC,EAASqD,YAAYtF,GAASi+R,EAAUz+R,IAEnCuznB,EAAMh9mB,IAOlB,CAED,SAASs1oB,GAAkB/2B,EAAOi3B,GAE9B,MAAMC,EAAsB/2B,GAAyB82B,EAAWj3B,GAC7B,GAA7Bk3B,EArmWI,KAsmWNA,EAtmWM,IAsmWwB,GAErC,CA0DD,SAASC,GAAkBz6B,EAAOsD,EAAOvB,EAAO24B,GAI5C,IAAIC,GAAgB,EACpB,GAAIr2B,KAAsB,CACtB,MAAM5E,EAyKd,SAASk7B,GAAwB56B,EAAOrgJ,EAAUoiJ,GAG9C,MAAMj9hB,EAAWk7hB,EAAM+4B,kBACvB,IAAI7ppB,EAAU,KACd,GAAI41F,EACA,QAAShpF,EAAI,EAAGA,EAAIgpF,EAASl+F,OAAQkV,IAAK,CACtC,MAAMgjQ,GAAMh6K,EAAShpF,GACjB8woB,GAA2B7qB,EAAOjjX,GAAIjlQ,WAAkC,KACxE3K,IAAYA,EAA2C,IACvDm9nB,GAAmBb,GAA+BzJ,EAAOpiJ,GAAWqgJ,EAAOlhX,GAAI/5P,MAC3Em9mB,GAAepjX,KAUf+7Y,GAAoB76B,EAAO+B,GAE3B7ynB,EAAQk7D,QAAQ00M,KAGhB5vQ,EAAQoT,KAAKw8P,IAGxB,CAEL,OAAO5vQ,CACV,CAzM6B0rpB,CAAwB56B,EAAOsD,EAAOvB,GACtD+4B,GAA2B,OAAdJ,EAAqB,KAAO,CAAE,IAAI,GACrD,GAAsB,OAAlBh7B,EAAwB,CACxBi7B,GAAgB,EAChBI,GAAeh5B,EAAO/B,EAAMn6mB,KAAKjf,OAAQ84nB,EAAc94nB,QAOvD,QAASkV,GAAI,EAAGA,GAAI4jnB,EAAc94nB,OAAQkV,KAAK,CAC3C,MAAMgjQ,GAAM4gX,EAAc5jnB,IACtBgjQ,GAAImgX,mBACJngX,GAAImgX,kBAAkBngX,GAC7B,CACD,IAAIk8Y,IAAqB,EACrBC,IAA0B,EAC1B/D,GAAevB,GAAa31B,EAAOsD,EAAO5D,EAAc94nB,OAAQ,MAGpE,QAASkV,GAAI,EAAGA,GAAI4jnB,EAAc94nB,OAAQkV,KAAK,CAC3C,MAAMgjQ,GAAM4gX,EAAc5jnB,IAG1BimnB,EAAMkzB,YAAc5qB,GAAetI,EAAMkzB,YAAan2Y,GAAIugX,WAC1D67B,GAA2Bl7B,EAAO+B,EAAOuB,EAAO4zB,GAAcp4Y,IAC9Dq8Y,GAAoBjE,GAAcp4Y,GAAKg8Y,IACZ,OAAvBh8Y,GAAI4qJ,iBACJq4N,EAAM3sT,OAAS,IACM,OAArBt2D,GAAIknQ,cAA2C,OAAlBlnQ,GAAIugX,WAAuC,IAAjBvgX,GAAIsgX,YAC3D2C,EAAM3sT,OAAS,KACnB,MAAMgmV,GAAiBt8Y,GAAI/5P,KAAKrd,WAG3BszpB,KACAI,GAAezkpB,aAAeykpB,GAAexlpB,UAAYwlpB,GAAe9se,cAIxE0xc,EAAMkP,gBAAkBlP,EAAMkP,cAAgB,KAAK5snB,KAAKy/mB,EAAMjvnB,OAC/DkopB,IAAqB,IAEpBC,KAA4BG,GAAezkpB,aAAeykpB,GAAe9se,cACzE0xc,EAAMmP,qBAAuBnP,EAAMmP,mBAAqB,KAAK7snB,KAAKy/mB,EAAMjvnB,OACzEmopB,IAA0B,GAE9B/D,IACH,CACDuC,GAAgCz5B,EAAO+B,EAC1C,CACG+4B,IAmKZ,SAASO,GAAwBt5B,EAAO24B,EAAWI,GAC/C,GAAIJ,EAAW,CACX,MAAMxF,EAAanzB,EAAMmzB,WAAiD,GAI1E,QAASp5oB,EAAI,EAAGA,EAAI4+oB,EAAU9zpB,OAAQkV,GAAK,EAAG,CAC1C,MAAMhJ,EAAQgopB,EAAWJ,EAAU5+oB,EAAI,IACvC,GAAa,MAAThJ,EACA,MAAM,IAAIsonB,IAAa,KAA8CpR,GACzEkrC,EAAW5yoB,KAAKo4oB,EAAU5+oB,GAAIhJ,EACjC,CACJ,CACJ,CA/KWuopB,CAAwBt5B,EAAO24B,EAAWI,GACjD,CAED/4B,SAAMkzB,YAAc5qB,GAAetI,EAAMkzB,YAAalzB,EAAM7ziB,OACrDyskB,CACV,CAWD,SAASW,GAA2Bt7B,EAAO+B,EAAOuB,EAAO4zB,EAAcqE,EAAkBz8Y,GAErF,MAAMknQ,GAAelnQ,EAAIknQ,aACzB,GAAIA,GAAc,CACd,IAAIgxI,GAAqBh3B,EAAMg3B,mBACJ,OAAvBA,KACAA,GAAqBh3B,EAAMg3B,mBAAqB,IAEpD,MAAMwE,IAAez5B,EAAMjvnB,OAkBnC,SAAS2opB,GAAuBzE,GAC5B,IAAIl7oB,EAAIk7oB,EAAmBpwpB,OAC3B,KAAOkV,EAAI,GAAG,CACV,MAAMtN,EAAQwopB,IAAqBl7oB,GACnC,GAAqB,iBAAVtN,GAAsBA,EAAQ,EACrC,OAAOA,CAEd,CACD,OAAO,CACV,EA1BWitpB,CAAuBzE,KAAuBwE,IAI9CxE,GAAmB10oB,KAAKk5oB,IAE5BxE,GAAmB10oB,KAAK40oB,EAAcqE,EAAkBv1I,GAC3D,CACJ,CA2ED,SAASoyI,GAAiCt5Y,EAAK4qX,GAClB,OAArB5qX,EAAIknQ,cACJlnQ,EAAIknQ,aAAa,EAA4B0jH,EAEpD,CA2CD,SAASmxB,GAAoB76B,EAAO07B,GAEhCA,EAAUtmV,OAAS,GAClB4qT,EAAM73H,aAAe63H,EAAM73H,WAAiD,KACxE7lf,KAAKo5oB,EAAU5opB,MACvB,CAoBD,SAASqopB,GAAoBjE,EAAcp4Y,EAAKg8Y,GAC5C,GAAIA,EAAY,CACZ,GAAIh8Y,EAAIygX,SACJ,QAASzjnB,EAAI,EAAGA,EAAIgjQ,EAAIygX,SAAS34nB,OAAQkV,IACrCg/oB,EAAWh8Y,EAAIygX,SAASzjnB,IAAMo7oB,EAGlCh1B,GAAepjX,KACfg8Y,EAAW,IAAM5D,EACxB,CACJ,CAMD,SAAS6D,GAAeh5B,EAAOjvnB,EAAO6opB,GAGlC55B,EAAM3sT,OAAS,EAEf2sT,EAAMwG,eAAiBz1nB,EACvBivnB,EAAMyG,aAAe11nB,EAAQ6opB,EAC7B55B,EAAMoM,gBAAkBr7nB,CAC3B,CAaD,SAASoopB,GAA2Bl7B,EAAO+B,EAAOuB,EAAOyL,EAAgBjwX,GAGrEkhX,EAAMn6mB,KAAKkpnB,GAAkBjwX,EAC7B,MAAM88Y,EAAmB98Y,EAAIt1Q,UAAYs1Q,EAAIt1Q,QAAU44nB,GAActjX,EAAI/5P,OAInE82oB,GAAsB,IAAIlyB,GAAoBiyB,EAAkB15B,GAAepjX,GAAM00Y,IAC3FxzB,EAAM8L,UAAUiD,GAAkB8sB,GAClCv4B,EAAMyL,GAAkB8sB,GACxBP,GAA2Bt7B,EAAO+B,EAAOuB,EAAOyL,EAAgB4mB,GAAa31B,EAAOsD,EAAOxkX,EAAIsgX,SAAUkuB,IAAYxuY,EACxH,CACD,SAASk5Y,GAAkB10B,EAAOo4B,EAAW58Y,GACzC,MAAMsoQ,EAASm8G,GAAiBm4B,EAAWp4B,GACrCtD,EAAQw4B,GAA0B15Y,GAGlC01Y,EAAkBlxB,EA/7WH,IAg8Wfw4B,GAAgBC,GAAcz4B,EAAOgxB,GAAYhxB,EAAOtD,EAAO,KAAMlhX,EAAI0gX,OAAS,GAA4B,GAAiCp4G,EAAQs0I,EAAWlH,EAAiBA,EAAgBwH,eAAe50I,EAAQtoQ,GAAM,KAAM,KAAM,OAGlPwkX,EAAMo4B,EAAU5opB,OAASgppB,EAC5B,CACD,SAASG,GAAyBl6B,EAAOuB,EAAOv1nB,EAAMS,EAAO+uoB,EAAWluY,GAOpE,MAAMrgQ,GAAUu0nB,GAAiBxB,EAAOuB,GACxC44B,GAAoB54B,EA58WP,IA48WwBt0nB,GAASqgQ,EAAW0yX,EAAMvznB,MAAOT,EAAMS,EAAO+uoB,EACtF,CACD,SAAS2e,GAAoBjrpB,EAAUjC,EAASqgQ,EAAWv5P,EAAS/H,EAAMS,EAAO+uoB,IAC7E,GAAa,MAAT/uoB,EAEAyC,EAAS2G,gBAAgB5I,EAASjB,EAAMshQ,OAEvC,CAED,MAAM8sZ,GAAwB,MAAb5e,GAAoBjiB,GAAgB9snB,GAAS+uoB,GAAU/uoB,EAAOsH,GAAW,GAAI/H,GAC9FkD,EAASiF,aAAalH,EAASjB,EAAMoupB,GAAU9sZ,EAClD,CACJ,CAUD,SAAS4oZ,GAAmB30B,EAAOyL,EAAgB/nnB,EAAU83P,EAAKijX,EAAOq6B,GACrE,MAAMjH,GAAgBiH,EAAiBrtB,GACvC,GAAsB,OAAlBomB,GAAwB,CACxB,MAAMr1B,GAAWhhX,EAAIghX,SACrB,QAAShknB,GAAI,EAAGA,GAAIq5oB,GAAcvupB,QAAS,CACvC,MAAMy6nB,GAAa8zB,GAAcr5oB,MAC3B6mnB,GAAcwyB,GAAcr5oB,MAC5BtN,GAAQ2mpB,GAAcr5oB,MACX,OAAbgknB,GACAhhX,EAAIghX,SAAS94mB,EAAUxY,GAAO6ynB,GAAYsB,IAG1C37mB,EAAS27mB,IAAen0nB,EAM/B,CACJ,CACJ,CAeD,SAASwrpB,GAAsBxjb,EAAQtoJ,GACnC,IAAImukB,EAAgB,KAChBvgpB,EAAI,EACR,KAAOA,EAAIoyE,EAAMtnF,QAAQ,CACrB,MAAMomQ,EAAW9+K,EAAMpyE,GACvB,GAAiB,IAAbkxP,EAIH,GACqB,IAAbA,EADR,CAOD,GAAwB,iBAAbA,EACP,MACAx2B,EAAO9tO,eAAeskQ,KACA,OAAlBqvZ,IACAA,EAAgB,IACpBA,EAAc/5oB,KAAK0qP,EAAUx2B,EAAOw2B,GAAW9+K,EAAMpyE,EAAI,KAE7DA,GAAK,CATJ,MAFGA,GAAK,OALLA,GAAK,CAiBZ,CACD,OAAOugpB,CACV,CAiBD,SAASC,GAAiBC,EAAYz0B,EAAa1gH,EAAQ26G,GAgBvD,OAbmB,IAAmCt6nB,MAAO80pB,GAC7D,GACA,EACAz0B,EACA,KACA,EACA/F,EACA36G,EACA,KACA,KAKH,CAmDD,SAASkwI,GAAiBjB,EAAWmG,GAEjC,MAAMV,EAAgBr4B,GAAyB+4B,EAAkBnG,GAEjE,GAAIzyB,GAA6Bk4B,GAAgB,CAC7C,MAAM97B,EAAQ87B,EAnoXR,GAooXsB,GAAxBA,EAnoXE,GAooXFtF,GAAYx2B,EAAO87B,EAAe97B,EAAMrnmB,SAAUmjoB,EA9nX9C,IAgoXCA,EAnoXqB,GAmoX0B,GAEpDW,GAAyBX,EAEhC,CACJ,CAOD,SAASW,GAAyBn5B,GAC9B,QAASU,EAAaqhB,GAAmB/hB,GAAuB,OAAfU,EAAqBA,EAAauhB,GAAkBvhB,GACjG,QAASlonB,EAlkXe,GAkkXcA,EAAIkonB,EAAWp9nB,OAAQkV,IAAK,CAC9D,MAAM+6oB,EAAgB7yB,EAAWlonB,GACjC,GAAI8nnB,GAA6BizB,GAC7B,GAA2B,IAAvBA,EAvpXN,GAupX2E,CACrE,MAAMC,GAAgBD,EAzpX5B,GA2pXML,GAAYM,GAAeD,EAAeC,GAAcn+nB,SAAUk+nB,EAppXtE,GAqpXC,MACQA,EAzpXa,GAypXkC,GACpD4F,GAAyB5F,EAGpC,CAIL,MAAM1uJ,EAFQm7H,EAnqXJ,GAqqXen7H,WACzB,GAAmB,OAAfA,EACA,QAASrsf,EAAI,EAAGA,EAAIqsf,EAAWvhgB,OAAQkV,IAAK,CACxC,MAAMggpB,EAAgBr4B,GAAyBt7H,EAAWrsf,GAAIwnnB,GAE1DM,GAA6Bk4B,IAC7BA,EAvqXsB,GAuqXyB,GAC/CW,GAAyBX,EAEhC,CAER,CACD,SAASxF,GAAgBD,EAAWmG,GAEhC,MAAMV,EAAgBr4B,GAAyB+4B,EAAkBnG,GAC3DqG,EAAiBZ,EAprXb,IAmtXd,SAASa,GAAsB38B,EAAOsD,GAClC,QAASxnnB,EAAIwnnB,EAAM18nB,OAAQkV,EAAIkknB,EAAM8L,UAAUlloB,OAAQkV,IACnDwnnB,EAAMhhnB,KAAK09mB,EAAM8L,UAAUhwnB,GAElC,EAlCG6gpB,CAAsBD,EAAgBZ,GACtChG,GAAW4G,EAAgBZ,EAAeA,EA/qX9B,GAgrXf,CA4CD,SAASC,GAAcz4B,EAAOskB,GAK1B,OAAItkB,EA5tXW,IA6tXXA,EA5tXW,IAVN,GAsuXqBskB,EAG1BtkB,EAhuXW,IAguXSskB,EAExBtkB,EAjuXe,IAiuXKskB,EACbA,CACV,CAeD,SAASgV,GAAct5B,GACnB,KAAOA,GAAO,CACVA,EAhwXM,IAgwXU,GAChB,MAAMrlmB,EAASmnnB,GAAe9hB,GAE9B,GAAInB,GAAWmB,KAAWrlmB,EACtB,OAAOqlmB,EAGXA,EAAQrlmB,CACX,CACD,OAAO,IACV,CAYD,SAAS4+nB,GAAsB78B,EAAOsD,EAAOvlnB,GACzC,MAAMy2oB,EAAkBlxB,EA/wXH,IAgxXjBkxB,EAAgB7hd,OAChB6hd,EAAgB7hd,QACpB,IACI6jd,GAAYx2B,EAAOsD,EAAOtD,EAAMrnmB,SAAU5a,EAS7C,CARA,MACMkkB,GACH4hnB,SAAYvgB,EAAOrhmB,GACbA,CACT,SAEOuynB,EAAgBpzoB,KAChBozoB,EAAgBpzoB,KACvB,CACJ,CAMD,SAAS07oB,GAAwBx5B,IAhCjC,SAASy5B,GAAgBC,GACrB,QAASlhpB,EAAI,EAAGA,EAAIkhpB,EAAY70J,WAAWvhgB,OAAQkV,IAAK,CACpD,MAAMmhpB,EAAgBD,EAAY70J,WAAWrsf,GACvCwnnB,EAAQohB,GAAiBuY,GAE/B,GAAc,OAAV35B,EAAgB,CAChB,MAAMtD,EAAQsD,EAlxXZ,GAmxXFk0B,GAA0Bx3B,EAAOsD,EAAOtD,EAAMrnmB,SAAUskoB,EAC3D,CACJ,CACJ,CAuBGF,CAAgBz5B,EAtyXJ,GAuyXf,CA4BD,SAASyyB,GAAmB3gV,EAAO8nV,EAAa/1e,GAE5Cs/c,GAAqB,GACrBy2B,EAAY9nV,EAAOjuJ,EACtB,CA0CD,SAASgye,GAAwB52gB,GAE7B,OAAOA,EAp3XK,KAo3XaA,EAp3Xb,GAo3X0D,GACzE,CACD,SAAS62gB,GAAwBp5B,GAC7B,OAAOA,EAAMr+Q,UAAYq+Q,EAAMr+Q,QAAuC,GACzE,CAKD,SAASw7S,GAAsBC,EAAYr7B,EAAOuB,GAO9C,OAAmB,OAAf85B,GAAuBl7B,GAAek7B,MACtC95B,EAl7WR,SAAS+5B,GAAY7upB,GACjB,KAAO/G,MAAMkuB,QAAQnnB,IAAQ,CAGzB,GAA2B,iBAAhBA,EAtaN,GAuaD,OAAOA,EACXA,EAAQA,EAheH,EAieR,CACD,OAAO,IACV,CAy6We6upB,CAAY/5B,EAAMvB,EAAMjvnB,SAE7BwwnB,EAn4XM,GAo4XhB,CAED,SAASugB,GAAYvgB,EAAOrhmB,GACxB,MAAMkqJ,EAAWm3c,EAz4XF,GA04XT/9f,EAAe4mD,EAAWA,EAAS9lK,IAAIs9nB,GAAc,MAAQ,KACnEp+gB,GAAgBA,EAAas+gB,YAAY5hnB,EAC5C,CAUD,SAASm4nB,GAAqBp6B,EAAOsD,EAAO9sZ,EAAQ6qZ,EAAY7ynB,GAC5D,QAASsN,EAAI,EAAGA,EAAI06N,EAAO5vO,QAAS,CAChC,MAAMkM,GAAQ0jO,EAAO16N,KACf6mnB,GAAcnsZ,EAAO16N,KACrBkL,GAAWs8mB,EAAMxwnB,IAEjBgsQ,GAAMkhX,EAAMn6mB,KAAK/S,IACF,OAAjBgsQ,GAAIghX,SACJhhX,GAAIghX,SAAS94mB,GAAUxY,EAAO6ynB,EAAYsB,IAG1C37mB,GAAS27mB,IAAen0nB,CAE/B,CACJ,CAID,SAAS8upB,GAAoBh6B,EAAOxwnB,EAAOtE,GAIvC,MAAMQ,EAAUq0nB,GAAiBvwnB,EAAOwwnB,GAExC8iB,GAAe9iB,EA56XF,IA46XmBt0nB,EAASR,EAC5C;;;;;;;OAoBD,SAAS+upB,GAAqBx7B,EAAO7ziB,EAAOsvkB,GAGxC,IAAIxloB,EAASwloB,EAAcz7B,EAAM/pmB,OAAS,KACtC/kB,EAAUuqpB,EAAcz7B,EAAM9unB,QAAU,KACxC20H,EAAO,EACX,GAAc,OAAV15C,EACA,QAASpyE,GAAI,EAAGA,GAAIoyE,EAAMtnF,OAAQkV,KAAK,CACnC,MAAMtN,GAAQ0/E,EAAMpyE,IACpB,GAAqB,iBAAVtN,GACPo5H,EAAOp5H,WAEM,GAARo5H,EACL30H,EAAU8nnB,GAAuB9nnB,EAASzE,SAAV,GAEnB,GAARo5H,EAAwC,CAG7C5vG,EAAS+imB,GAAuB/imB,EAFlBxpB,GAEkC,KAD7B0/E,IAAQpyE,IACyC,IACvE,CACJ,CAEL0hpB,EAAcz7B,EAAM/pmB,OAASA,EAAS+pmB,EAAMszB,kBAAoBr9nB,EAChEwloB,EAAcz7B,EAAM9unB,QAAUA,EAAU8unB,EAAMwzB,mBAAqBtipB,CACtE;;;;;;;OASD,SAASwqpB,GAAmBz9B,EAAOsD,EAAOvB,EAAO7pmB,EAAQwynB,GAAe,GACpE,KAAiB,OAAV3oB,GAAgB,CAGnB,MAAM27B,EAAQp6B,EAAMvB,EAAMjvnB,OAO1B,GANc,OAAV4qpB,GACAxloB,EAAO5V,KAAK8gnB,GAAYs6B,IAKxB77B,GAAa67B,GACb,QAAS5hpB,GAr6XW,GAq6XkBA,GAAI4hpB,EAAM92pB,OAAQkV,KAAK,CACzD,MAAM6hpB,GAAoBD,EAAM5hpB,IAC1B8hpB,GAAuBD,GA1/X/B,GA0/XwD9kpB,WACzB,OAAzB+kpB,IACAH,GAAmBE,GA5/XzB,GA4/XmDA,GAAmBC,GAAsB1loB,EAE7F,CAEL,MAAMwxnB,GAAY3nB,EAAMh9mB,KACxB,GAAgB,EAAZ2koB,GACA+T,GAAmBz9B,EAAOsD,EAAOvB,EAAM90lB,MAAO/U,QAA5B,GAED,GAAZwxnB,GAAoC,CACzC,MAAMkB,GAAY5F,GAAoBjjB,EAAOuB,GAC7C,IAAIsiB,GACJ,KAAOA,GAAQgF,MACX1ynB,EAAO5V,KAAKsjoB,GAEnB,SACoB,GAAZ8D,GAA2C,CAChD,MAAMmU,GAAc9T,GAAmBzmB,EAAOvB,GAC9C,GAAIt6nB,MAAMkuB,QAAQkooB,IACd3loB,EAAO5V,QAAQu7oB,QAEd,CACD,MAAM1yB,GAAaia,GAAe9hB,EAjgYf,KAmgYnBm6B,GAAmBtyB,GAnhYrB,GAmhYwCA,GAAY0yB,GAAa3loB,GAAQ,EAC1E,CACJ,CACD6pmB,EAAQ2oB,EAAe3oB,EAAM+oB,eAAiB/oB,EAAMx2nB,IACvD,CACD,OAAO2sB,CACV;;;;;;;OASD,MAAM4loB,GACF13pB,YAYAopoB,EAOAuuB,GACIz3pB,KAAKkpoB,OAASA,EACdlpoB,KAAKy3pB,oBAAsBA,EAC3Bz3pB,KAAK03pB,QAAU,KACf13pB,KAAK23pB,0BAA2B,CACnC,CACGj8S,gBACA,MAAMshR,EAAQh9nB,KAAKkpoB,OACbxP,EAAQsD,EA9jYR,GA+jYN,OAAOm6B,GAAmBz9B,EAAOsD,EAAOtD,EAAMnnnB,WAAY,GAC7D,CACGkF,cACA,OAAOzX,KAAKkpoB,OA3jYJ,EA4jYX,CACGzxnB,YAAQvP,GACRlI,KAAKkpoB,OA9jYG,GA8jYehhoB,CAC1B,CACGs8J,gBACA,OAAiE,MAApC,IAArBxkK,KAAKkpoB,OAvkYP,GAwkYT,CACD/7mB,UACI,GAAIntB,KAAK03pB,QACL13pB,KAAK03pB,QAAQ5W,WAAW9gpB,WAAxB,GAEKA,KAAK23pB,yBAA0B,CACpC,MAAMhgoB,EAAS33B,KAAKkpoB,OA7kYjB,GA8kYH,GAAI3N,GAAa5jmB,GAAS,CACtB,MAAMigoB,EAAWjgoB,EAtgYf,GAugYInrB,EAAQorpB,EAAWA,EAAS32pB,QAAQjB,OAAQ,EAC9CwM,GAAQ,IAGRs0oB,GAAWnpnB,EAAQnrB,GACnB+/nB,GAAgBqrB,EAAUprpB,GAEjC,CACDxM,KAAK23pB,0BAA2B,CACnC,CACDxW,GAAanhpB,KAAKkpoB,OA5lYZ,GA4lY2BlpoB,KAAKkpoB,OACzC,CACD98B,UAAU35lB,GACNkgpB,GAAwB3ypB,KAAKkpoB,OA/lYvB,GA+lYsClpoB,KAAKkpoB,OAAQ,KAAMz2nB,EAClE,CAgCDmL,eACI04oB,GAAct2pB,KAAKy3pB,qBAAuBz3pB,KAAKkpoB,OAClD,CAsDD2uB,SACI73pB,KAAKkpoB,OAxrYC,KAwrYgB,EACzB,CAyDD4uB,WACI93pB,KAAKkpoB,OAnvYC,IAmvYgB,EACzB,CAsBD/hnB,gBACIovoB,GAAsBv2pB,KAAKkpoB,OA5wYrB,GA4wYoClpoB,KAAKkpoB,OAAQlpoB,KAAKyX,QAC/D,CAODsgpB,iBAIC,CACDC,2BACI,GAAIh4pB,KAAK03pB,QACL,MAAM,IAAI5iC,GAAa,KAAkDpR,GAE7E1jnB,KAAK23pB,0BAA2B,CACnC,CACDM,mBACIj4pB,KAAK03pB,QAAU,KAtmKvB,SAASQ,GAAiBx+B,EAAOsD,GAC7B6iB,GAAUnmB,EAAOsD,EAAOA,EAjrOX,IAirO4B,EAAoC,KAAM,KACtF,CAqmKOk7B,CAAiBl4pB,KAAKkpoB,OAjyYhB,GAiyY+BlpoB,KAAKkpoB,OAC7C,CACDivB,eAAe92J,GACX,GAAIrhgB,KAAK23pB,yBACL,MAAM,IAAI7iC,GAAa,KAAkDpR,GAE7E1jnB,KAAK03pB,QAAUr2J,CAClB,EAGL,MAAM+2J,WAAoBZ,GACtB13pB,YAAY87I,GACR39H,MAAM29H,GACN57I,KAAK47I,MAAQA,CAChB,CACDz0H,gBACIqvoB,GAAwBx2pB,KAAK47I,MAChC,CACDm8gB,iBAIC,CACGtgpB,cACA,OAAO,IACV;;;;;;;OAUL,MAAM4gpB,WAAiC7b,GAInC18oB,YAAYmG,GACRgY,QACAje,KAAKiG,SAAWA,CACnB,CACD+lN,wBAAwBnrC,GAEpB,MAAMy3e,EAAen+B,GAAgBt5c,GACrC,OAAO,IAAI03e,GAAiBD,EAAct4pB,KAAKiG,SAClD,EAEL,SAASuypB,GAAWn3pB,GAChB,MAAM4xB,EAAQ,GACd,QAASwloB,KAAep3pB,EACpB,GAAIA,EAAIe,eAAeq2pB,GAAc,CACjC,MAAMC,EAAWr3pB,EAAIo3pB,GACrBxloB,EAAMjX,KAAK,CAAE2qR,SAAU+xX,EAAUC,aAAcF,GAClD,CAEL,OAAOxloB,CACV,CASD,MAAM2loB,GACF94pB,YAAY+lL,EAAU8lC,GAClB3rN,KAAK6lL,SAAWA,EAChB7lL,KAAK2rN,eAAiBA,CACzB,CACD5rM,IAAIle,EAAO+pN,EAAekjH,GACtB,MAAM5mU,EAAQlI,KAAK6lL,SAAS9lK,IAAIle,EAAOq7oB,EAAuCpuU,GAC9E,OAAI5mU,IAAUg1oB,GACVtxb,IAAkBsxb,EAMXh1oB,EAEJlI,KAAK2rN,eAAe5rM,IAAIle,EAAO+pN,EAAekjH,EACxD,EAKL,MAAMypV,WAAyBnc,GAK3Bt8oB,YAAYw4pB,EAAcrypB,GACtBgY,QACAje,KAAKs4pB,aAAeA,EACpBt4pB,KAAKiG,SAAWA,EAChBjG,KAAK0J,cAAgB4upB,EAAa75oB,KAClCze,KAAK2I,SA5gIb,SAASkwpB,GAAyBC,GAC9B,OAAOA,EAAaz3pB,IAAIulpB,IAAsBjlpB,KAAK,IACtD,CA0gIuBk3pB,CAAyBP,EAAa/kpB,WACtDvT,KAAK0W,mBACD4hpB,EAAa5hpB,mBAAqB4hpB,EAAa5hpB,mBAAqB,GACxE1W,KAAK+4pB,kBAAoB9ypB,CAC5B,CACGiqO,aACA,OAAOsob,GAAWx4pB,KAAKs4pB,aAAapob,OACvC,CACG8oZ,cACA,OAAOw/B,GAAWx4pB,KAAKs4pB,aAAat/B,QACvC,CACD7smB,OAAO05J,EAAUs5b,EAAkB65C,EAAoBC,GAEnD,IAAIC,GADJD,EAAsBA,GAAuBj5pB,KAAKiG,oBACWo0oB,GACzD4e,EACAA,GAAqBpze,SACrBqze,GAAuE,OAA5Cl5pB,KAAKs4pB,aAAa/+B,wBAC7C2/B,EAA0Bl5pB,KAAKs4pB,aAAa/+B,sBAAsB2/B,IAC9DA,GAER,MAAMC,GAAmBD,EAA0B,IAAIN,GAAgB/ye,EAAUqze,GAA2Brze,EACtGqoe,GAAkBiL,GAAiBp5oB,IAAI88nB,GAAkB,MAC/D,GAAwB,OAApBqR,GACA,MAAM,IAAIp5B,GAAa,KAA+CpR,GAK1E,MAAMuzB,GAAYkiB,GAAiBp5oB,IAAIi9nB,GAAW,MAC5Coc,GAAelL,GAAgBwH,eAAe,KAAM11pB,KAAKs4pB,cAGzDe,GAAcr5pB,KAAKs4pB,aAAa/kpB,UAAU,GAAG,IAAM,MACnD+lpB,GAAYN,EAviD1B,SAASO,GAAkB5upB,EAAU6upB,EAAmB/gpB,GAEpD,MAAMghpB,EAAkBhhpB,IAAkBo+mB,GAAoBa,UAC9D,OAAO/snB,EAAS+upB,kBAAkBF,EAAmBC,EACxD,CAoiDWF,CAAkBH,GAAcJ,EAAoBh5pB,KAAKs4pB,aAAa7/oB,eACtEwnoB,GAAkBiO,GAAgBwH,eAAe,KAAM11pB,KAAKs4pB,cAAee,GA3EvF,SAASM,GAAaN,GAClB,MAAM5xpB,EAAO4xpB,EAAYt+oB,cACzB,MAAgB,QAATtT,EAp7XW,MAo7XgC,SAATA,EAAkBo1nB,GAAoB,IAClF,CAwEmG88B,CAAaN,KACnGO,GAAY55pB,KAAKs4pB,aAAap/B,OAAS,IACzC,IACEw9B,GAqMH,CAAE70J,WAAY,IAnMXg4J,GAAY1H,GAAY,EAAwB,KAAM,KAAM,EAAG,EAAG,KAAM,KAAM,KAAM,KAAM,MAC1F2H,GAAY9L,GAAY,KAAM6L,GAAWnD,GAAakD,GAAW,KAAM,KAAM1L,GAAiBkL,GAAcniB,GAAWkiB,GAAkB,MAO/I,IAAIt4e,GACAk5e,GAFJr5B,GAAUo5B,IAGV,IACI,MAAMtE,GAqHlB,SAASwE,GAAwB1a,EAAO9mY,EAAK6oY,EAAU6M,EAAiBkL,EAAcniB,GAClF,MAAMvd,GAAQ2nB,EA7iZJ,GA8iZJ70oB,GAjhZY,GAmhZlB60oB,EAAS70oB,IAAS8yoB,EAIlB,MAAM7jB,GAAQ2yB,GAAiB10B,GAAOltnB,GAAO,EAA2B,QAAS,MAC3EmipB,GAAclzB,GAAMkzB,YAAcn2Y,EAAIugX,UACxB,OAAhB41B,KACAsI,GAAqBx7B,GAAOkzB,IAAa,GAC3B,OAAVrP,IACA3b,GAAgBy1B,EAAc9Z,EAAOqP,IACf,OAAlBlzB,GAAM9unB,SACNk4oB,GAAiBuU,EAAc9Z,EAAO7jB,GAAM9unB,SAE3B,OAAjB8unB,GAAM/pmB,QACNkznB,GAAiBwU,EAAc9Z,EAAO7jB,GAAM/pmB,UAIxD,MAAMuooB,GAAe/L,EAAgBwH,eAAepW,EAAO9mY,GACrDg9Y,GAAgBxH,GAAY3M,EAAU6Q,GAA0B15Y,GAAM,KAAMA,EAAI0gX,OAAS,GAA4B,GAAiCmoB,EAAS70oB,IAAQivnB,GAAOyyB,EAAiB+L,GAAchjB,GAAa,KAAM,KAAM,MAC5O,OAAIvd,GAAM2L,kBACNU,GAAmBb,GAA+BzJ,GAAO4lB,GAAW3nB,GAAOlhX,EAAI/5P,MAC/E81oB,GAAoB76B,GAAO+B,IAC3Bg5B,GAAeh5B,GAAO4lB,EAAS/gpB,OAAQ,IAE3Cm1pB,GAAcpU,EAAUmU,IAEjBnU,EAAS70oB,IAASgppB,EAC5B,CArJiCwE,CAAwBV,GAAWt5pB,KAAKs4pB,aAAcwB,GAAW5L,GAAiBkL,IACxG,GAAIE,GACA,GAAIN,EACAr1B,GAAgBy1B,GAAcE,GAAW,CAAC,aAAcnhH,GAAQ3uiB,WAE/D,CAID,MAAQo+E,SAAOj7E,YA3jInC,SAASutpB,GAAmCvxpB,GACxC,MAAMi/E,EAAQ,GACRj7E,EAAU,GAChB,IAAI6I,EAAI,EACJ8rH,EAAO,EACX,KAAO9rH,EAAI7M,EAASrI,QAAQ,CACxB,IAAIwmpB,EAAgBn+oB,EAAS6M,GAC7B,GAA6B,iBAAlBsxoB,EACM,IAATxlhB,EACsB,KAAlBwlhB,GACAl/jB,EAAM5rE,KAAK8qoB,EAAen+oB,IAAW6M,IAG3B,IAAT8rH,GACL30H,EAAQqP,KAAK8qoB,OAGhB,CAID,IAAKjB,GAAWvkhB,GACZ,MACJA,EAAOwlhB,CACV,CACDtxoB,GACH,CACD,MAAO,CAAEoyE,QAAOj7E,UACnB,CA+hI8CutpB,CAAmCl6pB,KAAKs4pB,aAAa/kpB,UAAU,IACtFq0E,IACA+7iB,GAAgBy1B,GAAcE,GAAW1xkB,IAEzCj7E,IAAWA,GAAQrM,OAAS,GAC5BukpB,GAAiBuU,GAAcE,GAAW3spB,GAAQhL,KAAK,KAE9D,CAGL,GADAo4pB,GAAe78B,GAAS28B,GA56Yd,SA66Ye9kpB,IAArBoqmB,EAAgC,CAChC,MAAMykC,GAAamW,GAAanW,WAAa,GAC7C,QAASpuoB,GAAI,EAAGA,GAAIxV,KAAK0W,mBAAmBpW,OAAQkV,KAAK,CACrD,MAAM2kpB,GAAeh7C,EAAiB3pmB,IAMtCouoB,GAAW5noB,KAAqB,MAAhBm+oB,GAAuBh5pB,MAAMqE,KAAK20pB,IAAgB,KACrE,CACJ,CAIDt5e,GAwHZ,SAASu5e,GAAoB5E,EAAe8C,EAAcwB,EAAWpD,EAAa2D,GAC9E,MAAM3gC,EAAQogC,EAllZJ,GAolZJj5e,GAv8CV,SAASy5e,GAAyB5gC,EAAOsD,EAAOxkX,GAC5C,MAAM+hZ,EAAY97B,KACd/E,EAAM2L,kBACF7sX,EAAImgX,mBACJngX,EAAImgX,kBAAkBngX,GAI1Bo8Y,GAA2Bl7B,EAAO6gC,EAAWv9B,EAHtBqyB,GAAa31B,EAAOsD,EAAO,EAAG,MAGexkX,GACpE26Y,GAAgCz5B,EAAO6gC,IAE3C,MAAMn3B,EAAYqE,GAAkBzK,EAAOtD,EAAO6gC,EAAUt4B,eAAgBs4B,GAC5Etc,GAAgB7a,EAAWpG,GAC3B,MAAMl8G,EAASm8G,GAAiBs9B,EAAWv9B,GAC3C,OAAIl8G,GACAm9H,GAAgBn9H,EAAQk8G,GAErBoG,CACV,CAq7CqBk3B,CAAyB5gC,EAAOogC,EAAWxB,GAG7D,GAFA5B,EAAY70J,WAAW7lf,KAAK6kK,IAC5B20e,EA/kZY,GA+kZa30e,GACJ,OAAjBw5e,EACA,UAAW1gC,MAAW0gC,EAClB1gC,GAAQ94c,GAAWy3e,GAK3B,GAAIA,EAAal1P,eAAgB,CAC7B,MAAMq4N,GAAQgD,KAEd65B,EAAal1P,eAAe,EAA4BviP,GAAW46c,GAAMwG,eAC5E,CACD,MAAMs4B,GAAY97B,KAElB,GAAI/E,EAAM2L,kBACyB,OAA9BizB,EAAa54I,cAAoD,OAA3B44I,EAAav/B,WAAqB,CACzE2I,GAAiB64B,GAAU/tpB,OAE3BwopB,GADkB8E,EAxmZZ,GAymZgCS,GAAWT,EAAWS,GAAUt4B,eAAgBs4B,GAAUr4B,aAAco2B,GAC9GxG,GAAiCwG,EAAcz3e,GAClD,CACD,OAAOA,EACV,CApJuBu5e,CAAoB5E,GAAex1pB,KAAKs4pB,aAAcwB,GAAWpD,GAAa,CAAC8D,IAC3FhL,GAAWqK,GAAWC,GAAW,KAIpC,CAHA,QAEG14B,IACH,CACD,OAAO,IAAIq5B,GAAaz6pB,KAAK0J,cAAem3K,GAAW47d,GAAiBsd,GAAcD,IAAYA,GAAWC,GAChH,EAE4B,IAAI1B,GAmBrC,MAAMoC,WArvNN,MAAMC,KAsvNF56pB,YAAY4J,EAAegX,EAAU1c,EAAU22pB,EAAY1xB,GACvDhrnB,QACAje,KAAKgE,SAAWA,EAChBhE,KAAK26pB,WAAaA,EAClB36pB,KAAKipoB,OAASA,EACdjpoB,KAAK0gB,SAAWA,EAChB1gB,KAAKuhgB,SAAWvhgB,KAAKo7J,kBAAoB,IAAIg9f,GAAYuC,GACzD36pB,KAAK0J,cAAgBA,CACxB,CACD8vnB,SAAS/xnB,EAAMS,GACX,MAAMo6W,EAAYtiX,KAAKipoB,OAAO/4Z,OAC9B,IAAI2jb,EACJ,GAAkB,OAAdvxS,IAAuBuxS,EAAYvxS,EAAU76W,IAAQ,CACrD,MAAMu1nB,EAAQh9nB,KAAK26pB,WACnB7G,GAAqB92B,EApgZnB,GAogZiCA,EAAO62B,EAAWpspB,EAAMS,GAC3D6rpB,GAAkB/2B,EAAOh9nB,KAAKipoB,OAAOz8nB,MACxC,CASJ,CACGq5K,eACA,OAAO,IAAImjd,GAAahpoB,KAAKipoB,OAAQjpoB,KAAK26pB,WAC7C,CACDxtoB,UACIntB,KAAKuhgB,SAASp0e,SACjB,CACDi/kB,UAAU35lB,GACNzS,KAAKuhgB,SAAS6qG,UAAU35lB,EAC3B,EAsGL,SAAS+npB,IACL,MAAM/+B,EAAQgD,KAEduD,GAAuB7D,KAjoZb,GAioZgC1C,EAC7C;;;;;;;OASD,SAASm/B,EAAan8oB,GAClB,OAAOY,OAAOo1R,eAAeh2R,EAAKrd,WAAWtB,WAChD,CAOD,SAAS+6pB,GAA2BxwkB,GAChC,IAAIywkB,EAAYF,EAAavwkB,EAAW5rE,MACpCs8oB,GAAsB,EAC1B,MAAMC,EAAmB,CAAC3wkB,GAC1B,KAAOywkB,GAAW,CACd,IAAIG,EACJ,GAAIr/B,GAAevxiB,GAEf4wkB,EAAWH,EAAUvkpB,WAAQukpB,EAAUxnpB,cAEtC,CACD,GAAIwnpB,EAAUvkpB,UACV,MAAM,IAAIu+mB,GAAa,KAAgDpR,GAI3Eu3C,EAAWH,EAAUxnpB,SACxB,CACD,GAAI2npB,EAAU,CACV,GAAIF,EAAqB,CACrBC,EAAiBh/oB,KAAKi/oB,GAGtB,MAAMC,GAAe7wkB,EACrB6wkB,GAAahrb,OAASirb,GAAiB9wkB,EAAW6lJ,QAClDgrb,GAAaxiC,eAAiByiC,GAAiB9wkB,EAAWquiB,gBAC1DwiC,GAAaliC,QAAUmiC,GAAiB9wkB,EAAW2uiB,SAEnD,MAAMoiC,GAAoBH,EAASv7I,aACnC07I,IAAqBC,GAAoBhxkB,EAAY+wkB,IAErD,MAAME,GAAiBL,EAAS1vc,UAC1Bgwc,GAAsBN,EAAS73P,eASrC,GARAk4P,IAAkBE,GAAiBnxkB,EAAYixkB,IAC/CC,IAAuBE,GAAsBpxkB,EAAYkxkB,IAEzDjnC,GAAejqiB,EAAW6lJ,OAAQ+qb,EAAS/qb,QAC3CokZ,GAAejqiB,EAAWquiB,eAAgBuiC,EAASviC,gBACnDpE,GAAejqiB,EAAW2uiB,QAASiiC,EAASjiC,SAGxC4C,GAAeq/B,IAAaA,EAAS17oB,KAAKoL,UAAW,CAGrD,MAAM+woB,GAAUrxkB,EAAW9qE,KAC3Bm8oB,GAAQ/woB,WAAa+woB,GAAQ/woB,WAAa,IAAI7E,OAAOm1oB,EAAS17oB,KAAKoL,UACtE,CACJ,CAED,MAAMi3H,EAAWq5gB,EAASr5gB,SAC1B,GAAIA,EACA,QAASpsI,GAAI,EAAGA,GAAIosI,EAASthJ,OAAQkV,KAAK,CACtC,MAAMmknB,GAAU/3e,EAASpsI,IACrBmknB,IAAWA,GAAQ8C,WACnB9C,GAAQtviB,GASRsviB,KAAYkhC,KACZE,GAAsB,EAE7B,CAER,CACDD,EAAYz7oB,OAAOo1R,eAAeqmX,EACrC,EAUL,SAASa,GAAgCX,GACrC,IAAIliC,EAAW,EACXC,EAAY,KAEhB,QAASvjnB,EAAIwlpB,EAAiB16pB,OAAS,EAAGkV,GAAK,EAAGA,IAAK,CACnD,MAAMgjQ,EAAMwiZ,EAAiBxlpB,GAE7BgjQ,EAAIsgX,SAAYA,GAAYtgX,EAAIsgX,SAEhCtgX,EAAIugX,UACAgL,GAAevrX,EAAIugX,UAAWA,EAAYgL,GAAehL,EAAWvgX,EAAIugX,WAC/E,CACJ,CArBG4iC,CAAgCX,EACnC,CAqBD,SAASG,GAAiBjzpB,GACtB,OAAIA,IAAU4vnB,GACH,GAEF5vnB,IAAU6vnB,GACR,GAGA7vnB,CAEd,CACD,SAASszpB,GAAiBnxkB,EAAYixkB,GAClC,MAAMM,EAAgBvxkB,EAAWkhI,UAE7BlhI,EAAWkhI,UADXqwc,EACuB,CAACxK,EAAI59oB,KACxB8npB,EAAelK,EAAI59oB,GACnBoopB,EAAcxK,EAAI59oB,EAAL,EAIM8npB,CAE9B,CACD,SAASG,GAAsBpxkB,EAAYkxkB,GACvC,MAAMM,EAAqBxxkB,EAAW+4U,eAElC/4U,EAAW+4U,eADXy4P,EAC4B,CAACzK,EAAI59oB,EAAKi1nB,KAClC8yB,EAAoBnK,EAAI59oB,EAAKi1nB,GAC7BozB,EAAmBzK,EAAI59oB,EAAKi1nB,EAAV,EAIM8yB,CAEnC,CACD,SAASF,GAAoBhxkB,EAAY+wkB,GACrC,MAAMU,EAAmBzxkB,EAAWq1b,aAEhCr1b,EAAWq1b,aADXo8I,EAC0B,CAAC1K,EAAI59oB,KAC3B4npB,EAAkBhK,EAAI59oB,GACtBsopB,EAAiB1K,EAAI59oB,EAAL,EAIM4npB,CAEjC;;;;;;;OAaD,MAAMW,GAAwB,CAE1B,qBAWEC,GAAwB,CAG1B,WACA,QACA,SACA,OACA,SACA,qBAEA,SACA,gBAEA,WAkBJ,SAASC,GAAwB5xkB,GAC7B,IACI4wkB,EADAH,EAAYF,EAAavwkB,EAAW5rE,MAIpCw8oB,EAFAr/B,GAAevxiB,GAEJywkB,EAAUvkpB,UAIVukpB,EAAUxnpB,UAGzB,MAAM4opB,EAAS7xkB,EAEf,UAAW74D,KAASuqoB,GAChBG,EAAO1qoB,GAASypoB,EAASzpoB,GAE7B,GAAIoqmB,GAAeq/B,GAEf,UAAWzpoB,KAASwqoB,GAChBE,EAAO1qoB,GAASypoB,EAASzpoB,EAGpC;;;;;;;OASD,IAAI2qoB,GAAkB,KACtB,SAAShyD,KACL,IAAKgyD,GAAiB,CAClB,MAAMvoU,EAAS+jS,GAAQ/jS,OACvB,GAAIA,GAAUA,EAAOyiD,SACjB8lR,GAAkBvoU,EAAOyiD,aAExB,CAED,MAAM18W,EAAOta,OAAOk3X,oBAAoBvlP,IAAI5vJ,WAC5C,QAASoU,EAAI,EAAGA,EAAImkB,EAAKr5B,SAAUkV,EAAG,CAClC,MAAMokB,EAAMD,EAAKnkB,GACL,YAARokB,GAA6B,SAARA,GACrBo3H,IAAI5vJ,UAAUw4B,KAASo3H,IAAI5vJ,UAAUo1Y,UACrC2lR,GAAkBvioB,EAEzB,CACJ,CACJ,CACD,OAAOuioB,EACV;;;;;;;OAYD,SAASC,GAAmBrpoB,GACxB,QAAKspoB,GAAWtpoB,KAET5xB,MAAMkuB,QAAQ0D,MACdA,aAAei+H,MACdm5c,OAAuBp3kB,EAClC,CA6BD,SAASspoB,GAAWzsc,GAChB,OAAa,OAANA,IAA4B,mBAANA,GAAiC,iBAANA,EAC3D;;;;;;;;;;;;;;;AAoCD,SAAS0sc,GAAct/B,EAAOqC,EAAcn3nB,GACxC,OAAO80nB,EAAMqC,GAAgBn3nB,CAChC,CAED,SAASq0pB,GAAWv/B,EAAOqC,GAIvB,OAAOrC,EAAMqC,EAChB,CAcD,SAASm9B,GAAex/B,EAAOqC,EAAcn3nB,GAIzC,MAAMiyR,EAAW6iW,EAAMqC,GACvB,OAAIhgnB,OAAOm4G,GAAG2iK,EAAUjyR,KAkBpB80nB,EAAMqC,GAAgBn3nB,GACf,EAEd,CAED,SAASu0pB,GAAgBz/B,EAAOqC,EAAcq9B,EAAMC,GAChD,MAAMC,EAAYJ,GAAex/B,EAAOqC,EAAcq9B,GACtD,OAAOF,GAAex/B,EAAOqC,EAAe,EAAGs9B,IAASC,CAC3D,CAED,SAASC,GAAgB7/B,EAAOqC,EAAcq9B,EAAMC,EAAMG,GACtD,MAAMF,EAAYH,GAAgBz/B,EAAOqC,EAAcq9B,EAAMC,GAC7D,OAAOH,GAAex/B,EAAOqC,EAAe,EAAGy9B,IAASF,CAC3D,CAED,SAASG,GAAgB//B,EAAOqC,EAAcq9B,EAAMC,EAAMG,EAAME,GAC5D,MAAMJ,GAAYH,GAAgBz/B,EAAOqC,EAAcq9B,EAAMC,GAC7D,OAAOF,GAAgBz/B,EAAOqC,EAAe,EAAGy9B,EAAME,IAASJ,EAClE;;;;;;;OAsBD,SAASK,GAAYx1pB,EAAMS,EAAO+uoB,EAAWluY,GACzC,MAAMi0X,EAAQmB,KAEd,GAAIq+B,GAAex/B,EADEuC,KACmBr3nB,GAAQ,CAC9Bk2nB,KAEdu3B,GADch0B,KACkB3E,EAAOv1nB,EAAMS,EAAO+uoB,EAAWluY,EAElE,CACD,OAAOk0Z,EACV;;;;;;;OAqBD,SAASC,GAAelgC,EAAOlimB,GAG3B,IAAIqioB,GAAmB,EACnB99B,EAAeD,KACnB,QAAS5pnB,EAAI,EAAGA,EAAIslB,EAAOx6B,OAAQkV,GAAK,EAEpC2npB,EAAmBX,GAAex/B,EAAOqC,IAAgBvkmB,EAAOtlB,KAAO2npB,EAG3E,GADA79B,GAAgBD,IACX89B,EACD,OAAOnW,GAGX,IAAIvloB,EAAUqZ,EAAO,GACrB,QAAStlB,EAAI,EAAGA,EAAIslB,EAAOx6B,OAAQkV,GAAK,EACpCiM,GAAWuzmB,GAAgBl6lB,EAAOtlB,IAAMslB,EAAOtlB,EAAI,GAEvD,OAAOiM,CACV,CAQD,SAAS27oB,GAAepgC,EAAO3nf,EAAQgohB,EAAI12d,GAEvC,OADkB61d,GAAex/B,EAAOuC,KAAoB89B,GACzChohB,EAAS2/e,GAAgBqoC,GAAM12d,EAASqgd,EAC9D,CAID,SAASsW,GAAetgC,EAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,GAC/C,MACMi2d,GAAYH,GAAgBz/B,EADboC,KACkCi+B,EAAIE,GAC3D/9B,UAAsB,GACfo9B,GAAYvnhB,EAAS2/e,GAAgBqoC,GAAMr6pB,EAAKgynB,GAAgBuoC,GAAM52d,EAASqgd,EACzF,CAID,SAASwW,GAAexgC,EAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAI92d,IACvD,MACMi2d,GAAYC,GAAgB7/B,EADboC,KACkCi+B,EAAIE,EAAIE,IAC/Dj+B,UAAsB,GACfo9B,GACHvnhB,EAAS2/e,GAAgBqoC,GAAMr6pB,EAAKgynB,GAAgBuoC,GAAMlqpB,EAAK2hnB,GAAgByoC,IAAM92d,GACrFqgd,EACP,CAID,SAAS0W,GAAe1gC,EAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAIh3d,IAC/D,MACMi2d,GAAYG,GAAgB//B,EADboC,KACkCi+B,EAAIE,EAAIE,GAAIE,IACnEn+B,UAAsB,GACfo9B,GAAYvnhB,EAAS2/e,GAAgBqoC,GAAMr6pB,EAAKgynB,GAAgBuoC,GAAMlqpB,EACzE2hnB,GAAgByoC,IAAMjlpB,GAAKw8mB,GAAgB2oC,IAAMh3d,GACjDqgd,EACP,CAID,SAAS4W,GAAe5gC,EAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,IACvE,MAAM04b,GAAeD,KACrB,IAAIw9B,GAAYG,GAAgB//B,EAAOqC,GAAcg+B,EAAIE,EAAIE,GAAIE,IACjEf,UAAYJ,GAAex/B,EAAOqC,GAAe,EAAGw+B,KAAOjB,GAC3Dp9B,GAAsB,GACfo9B,GAAYvnhB,EAAS2/e,GAAgBqoC,GAAMr6pB,EAAKgynB,GAAgBuoC,GAAMlqpB,EACzE2hnB,GAAgByoC,IAAMjlpB,GAAKw8mB,GAAgB2oC,IAAM97oB,GAAKmzmB,GAAgB6oC,IAAMl3d,GAC5Eqgd,EACP,CAID,SAAS8W,GAAe9gC,EAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,IAC/E,MAAM04b,GAAeD,KACrB,IAAIw9B,GAAYG,GAAgB//B,EAAOqC,GAAcg+B,EAAIE,EAAIE,GAAIE,IACjEf,UAAYH,GAAgBz/B,EAAOqC,GAAe,EAAGw+B,GAAIE,KAAOnB,GAChEp9B,GAAsB,GACfo9B,GACHvnhB,EAAS2/e,GAAgBqoC,GAAMr6pB,EAAKgynB,GAAgBuoC,GAAMlqpB,EAAK2hnB,GAAgByoC,IAAMjlpB,GACjFw8mB,GAAgB2oC,IAAM97oB,GAAKmzmB,GAAgB6oC,IAAMvwoB,GAAK0nmB,GAAgB+oC,IAAMp3d,GAChFqgd,EACP,CAID,SAASgX,GAAehhC,EAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,IACvF,MAAM04b,GAAeD,KACrB,IAAIw9B,GAAYG,GAAgB//B,EAAOqC,GAAcg+B,EAAIE,EAAIE,GAAIE,IACjEf,UAAYC,GAAgB7/B,EAAOqC,GAAe,EAAGw+B,GAAIE,GAAIE,KAAOrB,GACpEp9B,GAAsB,GACfo9B,GAAYvnhB,EAAS2/e,GAAgBqoC,GAAMr6pB,EAAKgynB,GAAgBuoC,GAAMlqpB,EACzE2hnB,GAAgByoC,IAAMjlpB,GAAKw8mB,GAAgB2oC,IAAM97oB,GAAKmzmB,GAAgB6oC,IAAMvwoB,GAC5E0nmB,GAAgB+oC,IAAM/ye,GAAKgqc,GAAgBipC,IAAMt3d,GACjDqgd,EACP,CAID,SAASkX,GAAelhC,EAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,IAC/F,MAAM04b,GAAeD,KACrB,IAAIw9B,GAAYG,GAAgB//B,EAAOqC,GAAcg+B,EAAIE,EAAIE,GAAIE,IACjEf,UAAYG,GAAgB//B,EAAOqC,GAAe,EAAGw+B,GAAIE,GAAIE,GAAIE,KAAOvB,GACxEp9B,GAAsB,GACfo9B,GAAYvnhB,EAAS2/e,GAAgBqoC,GAAMr6pB,EAAKgynB,GAAgBuoC,GAAMlqpB,EACzE2hnB,GAAgByoC,IAAMjlpB,GAAKw8mB,GAAgB2oC,IAAM97oB,GAAKmzmB,GAAgB6oC,IAAMvwoB,GAC5E0nmB,GAAgB+oC,IAAM/ye,GAAKgqc,GAAgBipC,IAAM92c,GAAK6ta,GAAgBmpC,IAAMx3d,GAC5Eqgd,EACP,CA0BD,SAASoX,GAAwB13Z,EAAUrxH,EAAQgohB,EAAI12d,EAAQswc,EAAWluY,GACtE,MAAMi0X,GAAQmB,KACRkgC,GAAoBjB,GAAepgC,GAAO3nf,EAAQgohB,EAAI12d,GAC5D,GAAI03d,KAAsBrX,GAAW,CAEjC2O,GADch0B,KACkB3E,GAAOt2X,EAAU23Z,GAAmBpnB,EAAWluY,EAGlF,CACD,OAAOq1Z,EACV,CA2BD,SAASE,GAAwB53Z,EAAUrxH,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,EAAQswc,GAAWluY,IAC9E,MAAMi0X,GAAQmB,KACRkgC,GAAoBf,GAAetgC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,GACpE,GAAI03d,KAAsBrX,GAAW,CAEjC2O,GADch0B,KACkB3E,GAAOt2X,EAAU23Z,GAAmBpnB,GAAWluY,GAGlF,CACD,OAAOu1Z,EACV,CA8BD,SAASC,GAAwB73Z,EAAUrxH,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAI92d,GAAQswc,GAAWluY,IACtF,MAAMi0X,GAAQmB,KACRkgC,GAAoBb,GAAexgC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAI92d,IAC5E,GAAI03d,KAAsBrX,GAAW,CAEjC2O,GADch0B,KACkB3E,GAAOt2X,EAAU23Z,GAAmBpnB,GAAWluY,GAGlF,CACD,OAAOw1Z,EACV,CAgCD,SAASC,GAAwB93Z,EAAUrxH,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAIh3d,GAAQswc,GAAWluY,IAC9F,MAAMi0X,GAAQmB,KACRkgC,GAAoBX,GAAe1gC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAIh3d,IACpF,GAAI03d,KAAsBrX,GAAW,CAEjC2O,GADch0B,KACkB3E,GAAOt2X,EAAU23Z,GAAmBpnB,GAAWluY,GAGlF,CACD,OAAOy1Z,EACV,CAkCD,SAASC,GAAwB/3Z,EAAUrxH,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,GAAQswc,GAAWluY,IACtG,MAAMi0X,GAAQmB,KACRkgC,GAAoBT,GAAe5gC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,IAC5F,GAAI03d,KAAsBrX,GAAW,CAEjC2O,GADch0B,KACkB3E,GAAOt2X,EAAU23Z,GAAmBpnB,GAAWluY,GAGlF,CACD,OAAO01Z,EACV,CAoCD,SAASC,GAAwBh4Z,EAAUrxH,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,GAAQswc,GAAWluY,IAC9G,MAAMi0X,GAAQmB,KACRkgC,GAAoBP,GAAe9gC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,IACpG,GAAI03d,KAAsBrX,GAAW,CAEjC2O,GADch0B,KACkB3E,GAAOt2X,EAAU23Z,GAAmBpnB,GAAWluY,GAGlF,CACD,OAAO21Z,EACV,CAsCD,SAASC,GAAwBj4Z,EAAUrxH,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,GAAQswc,GAAWluY,IACtH,MAAMi0X,GAAQmB,KACRkgC,GAAoBL,GAAehhC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,IAC5G,GAAI03d,KAAsBrX,GAAW,CAEjC2O,GADch0B,KACkB3E,GAAOt2X,EAAU23Z,GAAmBpnB,GAAWluY,GAGlF,CACD,OAAO41Z,EACV,CAwCD,SAASC,GAAwBl4Z,EAAUrxH,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,GAAQswc,GAAWluY,IAC9H,MAAMi0X,GAAQmB,KACRkgC,GAAoBH,GAAelhC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,IACpH,GAAI03d,KAAsBrX,GAAW,CAEjC2O,GADch0B,KACkB3E,GAAOt2X,EAAU23Z,GAAmBpnB,GAAWluY,GAGlF,CACD,OAAO61Z,EACV,CA2BD,SAASC,GAAwBn4Z,EAAU5rO,EAAQm8mB,EAAWluY,GAC1D,MAAMi0X,EAAQmB,KACR2gC,EAAe5B,GAAelgC,EAAOlimB,GAC3C,GAAIgkoB,IAAiB9X,GAAW,CAE5B2O,GADch0B,KACkB3E,EAAOt2X,EAAUo4Z,EAAc7nB,EAAWluY,EAQ7E,CACD,OAAO81Z,EACV;;;;;;;OA8DD,SAASE,GAAWvypB,EAAOkjpB,EAAYntoB,EAAOq2mB,EAAMppnB,EAASwvpB,EAAYC,GAAgBjN,IACrF,MAAMh1B,GAAQmB,KACRzE,GAAQ0E,KACR8gC,GAAgB1ypB,EA3mbJ,GA4mbZivnB,GAAQ/B,GAAM2L;;;;;;;;AAtCxB,SAAS85B,GAAwB3ypB,EAAOktnB,EAAOsD,EAAO0yB,EAAYntoB,EAAOq2mB,EAAMppnB,GAASwvpB,GAAYC,IAGhG,MAAMG,GAAc1lC,EAAMb,OAEpB4C,GAAQ2yB,GAAiB10B,EAAOltnB,EAAO,EAA6BgD,IAAW,KAAM+tnB,GAAY6hC,GAAaJ,KACpH7K,GAAkBz6B,EAAOsD,EAAOvB,GAAO8B,GAAY6hC,GAAaH,KAChEj9B,GAAuBtI,EAAO+B,IAC9B,MAAM+0B,GAAgB/0B,GAAMqzB,OAASqD,GAAY,EAA4B12B,GAAOi0B,EAAYntoB,EAAOq2mB,EAAMc,EAAM+4B,kBAAmB/4B,EAAMg5B,aAAc,KAAMh5B,EAAMD,QAAS2lC,IAC/K,OAAsB,OAAlB1lC,EAAM64B,UACN74B,EAAM64B,QAAQlgoB,SAASqnmB,EAAO+B,IAC9B+0B,GAAc+B,QAAU74B,EAAM64B,QAAQ/B,cAAc/0B,KAEjDA,EACV,CAwByC0jC,CAAwBD,GAAexlC,GAAOsD,GAAO0yB,EAAYntoB,EAAOq2mB,EAAMppnB,EAASwvpB,EAAYC,IACrIvlC,GAAMn6mB,KAAK2/oB,IACfpgC,GAAgBrD,IAAO,GACvB,MAAMx5S,GAAU+6S,GAlobH,IAkobmBgjB,cAAwC,IACxEhuoB,GAAY0nnB,GAAOsD,GAAO/6S,GAASw5S,IACnCwiB,GAAgBh8T,GAAS+6S,IACzBy4B,GAAcz4B,GAAOA,GAAMkiC,IAAiBlJ,GAAiB/zU,GAAS+6S,GAAO/6S,GAASw5S,KAClFE,GAAgBF,KAChB+1B,GAA0B93B,GAAOsD,GAAOvB,IAEtB,MAAlBwjC,IACAlN,GAAyB/0B,GAAOvB,GAAOu2B,GAE9C;;;;;;;OA6BD,SAASqN,GAAY7ypB,GAEjB,OAAOutB,GA97ZX,SAASuloB,KAGL,OAFqB1hC,GAAiBC,OAAOU,YAGhD,CAy7ZwB+gC,GAvpbH,GAwpbwB9ypB,EAC7C;;;;;;;OA2BD,SAAS+ypB,GAAW54X,EAAUz+R,EAAO+uoB,GACjC,MAAMja,EAAQmB,KAEd,GAAIq+B,GAAex/B,EADEuC,KACmBr3nB,GAAQ,CAG5CyrpB,GAFcv1B,KACAuD,KACwB3E,EAAOr2V,EAAUz+R,EAAO80nB,EA7sbrD,IA6sbsEia,GAAW,EAE7F,CACD,OAAOsoB,EACV,CAKD,SAASC,GAAsC9lC,EAAO+B,EAAOuB,EAAO90nB,EAAOu3pB,GACvE,MACM7uoB,GAAW6uoB,EAAe,QAAU,QAE1C3L,GAAqBp6B,EAAOsD,EAHbvB,EAAMvrZ,OAGqBt/M,IAAWA,GAAU1oB,EAClE;;;;;;;OA6CD,SAASw3pB,GAAelzpB,EAAO/E,EAAMu3pB,EAAYC,GAC7C,MAAMjiC,EAAQmB,KACRzE,EAAQ0E,KACR8gC,GAxvbY,GAwvboB1ypB,EAIhC7B,GAAWqynB,EA/wbJ,IAgxbPl8G,GAASk8G,EAAMkiC,IAAiBjf,GAAkBt1oB,GAAUlD,EA/rZtE,SAASk4pB,KACL,OAAO/hC,GAAiBC,OAAOmD,gBAClC,CA6rZ2E2+B,IAClElkC,GAAQ/B,EAAM2L,gBA7CxB,SAASu6B,GAA4BpzpB,EAAOktnB,EAAOsD,EAAOl8G,EAAQr5gB,EAAMu3pB,EAAYC,IAGhF,MAAMG,GAAc1lC,EAAMb,OAEpB4C,GAAQ2yB,GAAiB10B,EAAOltnB,EAAO,EAA2B/E,EAD1D81nB,GAAY6hC,GAAaJ,IAMvC,OAJsB7K,GAAkBz6B,EAAOsD,EAAOvB,GAAO8B,GAAY6hC,GAAaH,KAIlE,OAAhBxjC,GAAM7ziB,OACNqvkB,GAAqBx7B,GAAOA,GAAM7ziB,OAAO,GAEnB,OAAtB6ziB,GAAMkzB,aACNsI,GAAqBx7B,GAAOA,GAAMkzB,aAAa,GAE7B,OAAlBj1B,EAAM64B,SACN74B,EAAM64B,QAAQvlnB,aAAa0slB,EAAO+B,IAE/BA,EACV,CA0BOmkC,CAA4BV,GAAexlC,EAAOsD,EAAOl8G,EAAQr5gB,EAAMu3pB,EAAYC,GACnFvlC,EAAMn6mB,KAAK2/oB,IACfpgC,GAAgBrD,IAAO,GACvB,MAAMkzB,GAAclzB,GAAMkzB,YACN,OAAhBA,IACAhrB,GAAgBh5nB,GAAUm2gB,GAAQ6tI,IAEtC,MAAMhipB,GAAU8unB,GAAM9unB,QACN,OAAZA,IACAk4oB,GAAiBl6oB,GAAUm2gB,GAAQn0gB,IAEvC,MAAM+kB,GAAS+pmB,GAAM/pmB,OACrB,OAAe,OAAXA,IACAkznB,GAAiBj6oB,GAAUm2gB,GAAQpvf,IAEgB,KAApC,GAAd+pmB,GAAM3sT,QAGP98T,GAAY0nnB,EAAOsD,EAAOl8G,GAAQ26G,IAKP,IAxranC,SAASokC,KACL,OAAOjiC,GAAiBC,OAAOkD,iBAClC,CAsraO8+B,IACA5hB,GAAgBn9H,GAAQk8G,GAtrahC,SAAS8iC,KACLliC,GAAiBC,OAAOkD,mBAC3B,CAsraG++B,GACInkC,GAAgBF,MAChB+1B,GAA0B93B,EAAOsD,EAAOvB,IACxC81B,GAAsB73B,EAAO+B,GAAOuB,IAEjB,OAAnBiiC,GACAlN,GAAyB/0B,EAAOvB,IAE7BikC,EACV,CAOD,SAASK,KACL,IAAIrhC,EAAeD,KAEfM,KACAC,MAIAN,EAAeA,EAAa/mmB,OAC5BmnmB,GAAgBJ,GAAc,IAElC,MAAMjD,EAAQiD,GAhtalB,SAASshC,KACLpiC,GAAiBC,OAAOkD,mBAC3B,CAgtaGi/B,GACA,MAAMtmC,EAAQ0E,KACd,OAAI1E,EAAM2L,kBACNrD,GAAuBtI,EAAOgF,GAC1BlD,GAAmBkD,IACnBhF,EAAM64B,QAAQ0N,WAAWvhC,IAGD,MAA5BjD,EAAMwzB,oBAz2Yd,SAASiR,GAAczkC,GACnB,OAA6D,IAAvC,GAAdA,EAAM3sT,MACjB,CAu2Y2CoxV,CAAczkC,IAClD+jC,GAAsC9lC,EAAO+B,EAAO0C,KAAY1C,EAAMwzB,oBAAoB,GAE/D,MAA3BxzB,EAAMszB,mBAp1Yd,SAASoR,GAAc1kC,GACnB,OAA6D,IAAvC,GAAdA,EAAM3sT,MACjB;;;;;;;OAk1Y0CqxV,CAAc1kC,IACjD+jC,GAAsC9lC,EAAO+B,EAAO0C,KAAY1C,EAAMszB,mBAAmB,GAEtFgR,EACV,CAYD,SAASK,GAAU5zpB,EAAO/E,EAAMu3pB,EAAYC,GACxCS,UAAelzpB,EAAO/E,EAAMu3pB,EAAYC,GACxCc,KACOK;;;;;;;OACV,CAyCD,SAASC,GAAwB7zpB,EAAOwypB,EAAYC,GAChD,MAAMjiC,EAAQmB,KACRzE,EAAQ0E,KACR8gC,EAAgB1ypB,EAj4bJ,GAq4bZivnB,GAAQ/B,EAAM2L,gBAvCxB,SAASi7B,GAAqC9zpB,EAAOktnB,EAAOsD,EAAOgiC,EAAYC,GAE3E,MAAMG,EAAc1lC,EAAMb,OACpBjxiB,GAAQ21iB,GAAY6hC,EAAaJ,GACjCvjC,GAAQ2yB,GAAiB10B,EAAOltnB,EAAO,EAAoC,eAAgBo7E,IAOjGuskB,OAJc,OAAVvskB,IACAqvkB,GAAqBx7B,GAAO7ziB,IAAO,GAGvCuskB,GAAkBz6B,EAAOsD,EAAOvB,GADd8B,GAAY6hC,EAAaH,IAErB,OAAlBvlC,EAAM64B,SACN74B,EAAM64B,QAAQvlnB,aAAa0slB,EAAO+B,IAE/BA,EACV,CAwBO6kC,CAAqCpB,EAAexlC,EAAOsD,EAAOgiC,EAAYC,GAC9EvlC,EAAMn6mB,KAAK2/oB,GACfpgC,GAAgBrD,IAAO,GAEvB,MAAM36G,GAASk8G,EAAMkiC,GACjBliC,EA95bS,IA85bOgjB,cAA2C,IAC/DhuoB,UAAY0nnB,EAAOsD,EAAOl8G,GAAQ26G,IAClCwiB,GAAgBn9H,GAAQk8G,GACpBrB,GAAgBF,MAChB+1B,GAA0B93B,EAAOsD,EAAOvB,IACxC81B,GAAsB73B,EAAO+B,GAAOuB,IAElB,MAAlBiiC,GACAlN,GAAyB/0B,EAAOvB,IAE7B4kC,EACV,CAOD,SAASE,KACL,IAAI7hC,EAAeD,KACnB,MAAM/E,EAAQ0E,KACd,OAAIW,KACAC,MAIAN,EAAeA,EAAa/mmB,OAC5BmnmB,GAAgBJ,GAAc,IAG9BhF,EAAM2L,kBACNrD,GAAuBtI,EAAOgF,GAC1BlD,GAAmBkD,IACnBhF,EAAM64B,QAAQ0N,WAAWvhC,IAG1B6hC,EACV,CAYD,SAASC,GAAmBh0pB,EAAOwypB,EAAYC,GAC3CoB,UAAwB7zpB,EAAOwypB,EAAYC,GAC3CsB,KACOC,EACV,CAWD,SAASC,KACL,OAAOtiC,IACV;;;;;;;OAYD,SAAS77B,GAAUvvkB,GAGf,QAASA,GAA2B,mBAAbA,EAAI1qB,IAC9B,CAID,SAASq4pB,GAAe3toB,GACpB,QAASA,GAAgC,mBAAlBA,EAAI7mB,SAC9B,CAUD,MAAMy0pB,GAAeD;;;;;;;OAuBrB,SAASE,GAAW9qoB,EAAW+qoB,EAAYhrhB,EAAYirhB,GACnD,MAAM9jC,EAAQmB,KACRzE,EAAQ0E,KACR3C,GAAQgD,KACdsiC,UAAiBrnC,EAAOsD,EAAOA,EA3hclB,IA2hcmCvB,GAAO3lmB,EAAW+qoB,IAAchrhB,EAAYirhB,GACrFF,EACV,CAsBD,SAASI,GAAwBlroB,EAAW+qoB,GACxC,MAAMplC,EAAQgD,KACRzB,EAAQmB,KACRzE,EAAQ0E,KAGd2iC,UAAiBrnC,EAAOsD,EADP65B,GADE92B,GAAuBrG,EAAMn6mB,MACGk8mB,EAAOuB,GACjBvB,EAAO3lmB,EAAW+qoB,GAAY,GAChEG,EACV,CA+BD,SAASD,GAAiBrnC,EAAOsD,EAAOrynB,EAAU8wnB,EAAO3lmB,EAAW+qoB,EAAYhrhB,GAAYirhB,IACxF,MAAMG,GAAuBtlC,GAAgBF,GAEvComB,GADkBnoB,EAAM2L,iBACMytB,GAAwBp5B,GACtDjinB,GAAUulnB,EAjmcJ,GAqmcN8kB,GAAW+Q,GAAwB71B,GAEzC,IAAIkkC,IAAiB,EAKrB,GAAkB,EAAbzlC,EAAMh9mB,MAAsCqipB,GAAqB,CAClE,MAAMhgJ,GAASm8G,GAAiBxB,EAAOuB,GACjCngnB,GAASikpB,GAAsBA,GAAoBhgJ,IAAUA,GAC7DqgJ,GAAgBrf,GAASxhpB,OACzB0hpB,GAAoB8e,GACrB53B,IAAW43B,GAAoBhkC,GAAYoM,GAAOzN,EAAMjvnB,SACzDivnB,EAAMjvnB,MAaV,IAAI40pB,GAAmB,KAUvB,IAHKN,IAAuBG,KACxBG,GAnEZ,SAASC,GAAqB3nC,EAAOsD,EAAOlnmB,EAAWwroB,GACnD,MAAMzf,EAAWnoB,EAAMr+Q,QACvB,GAAgB,MAAZwmS,EACA,QAASrsoB,EAAI,EAAGA,EAAIqsoB,EAASvhpB,OAAS,EAAGkV,GAAK,EAAG,CAC7C,MAAM+rpB,GAAmB1f,EAASrsoB,GAClC,GAAI+rpB,KAAqBzroB,GAAa+rnB,EAASrsoB,EAAI,KAAO8rpB,EAAU,CAIhE,MAAMxf,GAAW9kB,EA9kcjB,GA+kcMwkC,GAAwB3f,EAASrsoB,EAAI,GAC3C,OAAOssoB,GAASxhpB,OAASkhqB,GAAwB1f,GAAS0f,IAAyB,IACtF,CAM+B,iBAArBD,KACP/rpB,GAAK,EAEZ,CAEL,OAAO,IACV,CA2C8B6rpB,CAAqB3nC,EAAOsD,EAAOlnmB,EAAW2lmB,EAAMjvnB,QAElD,OAArB40pB,GAA2B,EAKJA,GAAiBK,sBAAwBL,IACjDM,qBAAuBb,EACtCO,GAAiBK,qBAAuBZ,EACxCK,IAAiB,CACpB,KACI,CACDL,EAAac,GAAalmC,EAAOuB,EAAOvlnB,GAASoppB,GAAY,GAC7D,MAAMjO,GAAYjopB,EAASmF,OAAO+M,GAAQiZ,EAAW+qoB,GAErD/e,GAAS9loB,KAAK6kpB,EAAYjO,IAC1B/Q,IAAYA,GAAS7loB,KAAK8Z,EAAWksnB,GAAmBmf,GAAeA,GAAgB,EAC1F,CACJ,MAIGN,EAAac,GAAalmC,EAAOuB,EAAOvlnB,GAASoppB,GAAY,GAGjE,MAAM7nC,GAAUyC,EAAMzC,QACtB,IAAIj+Y,GACJ,GAAImmb,IAA8B,OAAZloC,KAAqBj+Y,GAAQi+Y,GAAQljmB,IAAa,CACpE,MAAMwviB,GAAcvqV,GAAMz6O,OAC1B,GAAIglkB,GACA,QAAS9vjB,GAAI,EAAGA,GAAI8vjB,GAAa9vjB,IAAK,EAAG,CACrC,MAAMhJ,GAAQuuO,GAAMvlO,IAEdospB,GAAe7mb,GAAMvlO,GAAI,GAMzBukJ,GALoBije,EAAMxwnB,IACCo1pB,IAIL11pB,UAAU20pB,GAChC//pB,GAAMghpB,GAASxhpB,OACrBwhpB,GAAS9loB,KAAK6kpB,EAAY9mgB,IAC1B8nf,IAAYA,GAAS7loB,KAAK8Z,EAAW2lmB,EAAMjvnB,MAAO1L,KAAOA,GAAM,GAClE,CAER,CACJ,CACD,SAAS+gqB,GAAiC7kC,EAAOvlnB,EAASoppB,EAAYp8oB,GAClE,IACIk4mB,UAAS,EAAmCllnB,EAASoppB,IAE5B,IAAlBA,EAAWp8oB,EAQrB,CAPA,MACMkX,GACH4hnB,UAAYvgB,EAAOrhmB,IACZ,CACV,SAEGghmB,GAAS,EAAiCllnB,EAASoppB,EACtD,CACJ,CAWD,SAASc,GAAalmC,EAAOuB,EAAOvlnB,EAASoppB,EAAYiB,GAGrD,OAAO,SAASC,EAA0Ct9oB,IAGtD,GAAIA,KAAMy6P,SACN,OAAO2hZ,EAOXvK,GAHgC,EAAd76B,EAAM3sT,MACpBquT,GAAyB1B,EAAMjvnB,MAAOwwnB,GACtCA,GAEJ,IAAIprmB,GAASiwoB,GAAiC7kC,EAAOvlnB,EAASoppB,EAAYp8oB,IAGtEu9oB,GAAiBD,EAA0CL,qBAC/D,KAAOM,IAEHpwoB,GAASiwoB,GAAiC7kC,EAAOvlnB,EAASuqpB,GAAgBv9oB,KAAMmN,GAChFowoB,GAAiBA,GAAeN,qBAEpC,OAAII,IAAqC,IAAXlwoB,KAC1BnN,GAAE5Q,iBAEF4Q,GAAEokL,aAAc,GAEbj3K,EACV,CACJ;;;;;;;;;;;;;;OA6BD,SAASqwoB,GAAcnwgB,EAAQ,GAC3B,OAAOuve,GAAgBvve,EAC1B;;;;;;;OAiBD,SAASowgB,GAA4BzmC,EAAO0mC,GACxC,IAAIC,EAAyB,KAC7B,MAAMC,EA/iMV,SAASC,GAAsB7mC,GAC3B,MAAM56U,EAAY46U,EAAM7ziB,MACxB,GAAiB,MAAbi5N,EAAmB,CACnB,MAAM0hX,EAAqB1hX,EAAU5/S,QAAQ,GAG7C,GAAiC,IAAP,EAArBshqB,GACD,OAAO1hX,EAAU0hX,EAAqB,EAE7C,CACD,OAAO,IACV,CAoiM8BD,CAAsB7mC,GACjD,QAASjmnB,EAAI,EAAGA,EAAI2spB,EAAgB7hqB,OAAQkV,IAAK,CAC7C,MAAM4nnB,EAAY+kC,EAAgB3spB,GAGlC,GAAkB,MAAd4nnB,GAMJ,GAA2B,OAAvBilC,EACA/b,GAA2B7qB,EAAO2B,GAAkC,GACpEmpB,GAAyB8b,EAAoBjlC,GAC7C,OAAO5nnB,OARP4spB,EAAyB5spB,CAUhC,CACD,OAAO4spB,CACV,CA0BD,SAASI,GAAgBL,GACrB,MAAMM,EAAgBtkC,KAp0cS,IAXpB,GAg1cX,IAAKskC,EAAc7e,WAAY,CAG3B,MAAM8e,EAAqBP,EAAkBA,EAAgB7hqB,OAAS,EAChEqiqB,EAAkBF,EAAc7e,WAClCpX,GAASk2B,EAAoB,MAC3BE,EAAQD,EAAgBjhqB,QAC9B,IAAImhqB,EAAiBJ,EAAc97nB,MACnC,KAA0B,OAAnBk8nB,GAAyB,CAC5B,MAAMC,GAAYX,EAAkBD,GAA4BW,EAAgBV,GAAmB,EACjF,OAAdW,KACIF,EAAME,IACNF,EAAME,IAAWte,eAAiBqe,EAGlCF,EAAgBG,IAAaD,EAEjCD,EAAME,IAAaD,GAEvBA,EAAiBA,EAAe59pB,IACnC,CACJ,CACJ,CAYD,SAAS89pB,GAAaxsc,EAAWysc,EAAgB,EAAGp7kB,GAChD,MAAMo1iB,EAAQmB,KACRzE,EAAQ0E,KACRqmB,EAAkB2J,GAAiB10B,EA71cvB,GA61c8Cnja,EAAW,GAA+B,KAAM3uI,GAAS,MAEtF,OAA/B68jB,EAAgBb,aAChBa,EAAgBb,WAAaof,GAEjChkC,KACiE,KAApC,GAAxBylB,EAAgB31U,QA5jNzB,SAASm0V,GAAgBvpC,EAAOsD,EAAOynB,GAKnCF,GAJiBvnB,EA3zPJ,IA+zPsB,EAAoCA,EAAOynB,EAH1DrC,GAAkB1oB,EAAO+qB,EAAiBznB,GAE7CylB,GADGgC,EAAgB9snB,QAAUqlmB,EAl0PnC,GAm0P2CynB,EAAiBznB,GAE1E,CAwjNOimC,CAAgBvpC,EAAOsD,EAAOynB,EAErC,CA+BD,SAASye,GAAsBv8X,EAAU02X,EAAIpmB,GACzCksB,UAAuBx8X,EAAU,GAAI02X,EAAI,GAAIpmB,GACtCisB,EACV,CA6BD,SAASC,GAAuBx8X,EAAUtxJ,EAAQgohB,EAAI12d,EAAQswc,GAC1D,MAAMja,EAAQmB,KACRkgC,GAAoBjB,GAAepgC,EAAO3nf,EAAQgohB,EAAI12d,GAC5D,GAAI03d,KAAsBrX,GAAW,CAGjC2M,GAFcv1B,KACAuD,KACwB3E,EAAOr2V,EAAU03X,GAAmBrhC,EA/7cjE,IA+7ckFia,GAAW,EAGzG,CACD,OAAOksB,EACV,CA+BD,SAASC,GAAuBz8X,EAAUtxJ,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,EAAQswc,IAClE,MAAMja,GAAQmB,KACRkgC,GAAoBf,GAAetgC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,GACpE,GAAI03d,KAAsBrX,GAAW,CAGjC2M,GAFcv1B,KACAuD,KACwB3E,GAAOr2V,EAAU03X,GAAmBrhC,GAz+cjE,IAy+ckFia,IAAW,EAGzG,CACD,OAAOmsB,EACV,CAkCD,SAASC,GAAuB18X,EAAUtxJ,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAI92d,GAAQswc,IAC1E,MAAMja,GAAQmB,KACRkgC,GAAoBb,GAAexgC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAI92d,IAC5E,GAAI03d,KAAsBrX,GAAW,CAGjC2M,GAFcv1B,KACAuD,KACwB3E,GAAOr2V,EAAU03X,GAAmBrhC,GAthdjE,IAshdkFia,IAAW,EAGzG,CACD,OAAOosB,EACV,CAoCD,SAASC,GAAuB38X,EAAUtxJ,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAIh3d,GAAQswc,IAClF,MAAMja,GAAQmB,KACRkgC,GAAoBX,GAAe1gC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAIh3d,IACpF,GAAI03d,KAAsBrX,GAAW,CAGjC2M,GAFcv1B,KACAuD,KACwB3E,GAAOr2V,EAAU03X,GAAmBrhC,GArkdjE,IAqkdkFia,IAAW,EAGzG,CACD,OAAOqsB,EACV,CAsCD,SAASC,GAAuB58X,EAAUtxJ,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,GAAQswc,IAC1F,MAAMja,GAAQmB,KACRkgC,GAAoBT,GAAe5gC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,IAC5F,GAAI03d,KAAsBrX,GAAW,CAGjC2M,GAFcv1B,KACAuD,KACwB3E,GAAOr2V,EAAU03X,GAAmBrhC,GAtndjE,IAsndkFia,IAAW,EAGzG,CACD,OAAOssB,EACV,CAwCD,SAASC,GAAuB78X,EAAUtxJ,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,GAAQswc,IAClG,MAAMja,GAAQmB,KACRkgC,GAAoBP,GAAe9gC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,IACpG,GAAI03d,KAAsBrX,GAAW,CAGjC2M,GAFcv1B,KACAuD,KACwB3E,GAAOr2V,EAAU03X,GAAmBrhC,GAzqdjE,IAyqdkFia,IAAW,EAGzG,CACD,OAAOusB,EACV,CA0CD,SAASC,GAAuB98X,EAAUtxJ,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,GAAQswc,IAC1G,MAAMja,GAAQmB,KACRkgC,GAAoBL,GAAehhC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,IAC5G,GAAI03d,KAAsBrX,GAAW,CAGjC2M,GAFcv1B,KACAuD,KACwB3E,GAAOr2V,EAAU03X,GAAmBrhC,GA9tdjE,IA8tdkFia,IAAW,EAGzG,CACD,OAAOwsB,EACV,CA4CD,SAASC,GAAuB/8X,EAAUtxJ,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,GAAQswc,IAClH,MAAMja,GAAQmB,KACRkgC,GAAoBH,GAAelhC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,IACpH,GAAI03d,KAAsBrX,GAAW,CAGjC2M,GAFcv1B,KACAuD,KACwB3E,GAAOr2V,EAAU03X,GAAmBrhC,GArxdjE,IAqxdkFia,IAAW,EAGzG,CACD,OAAOysB,EACV,CA+BD,SAASC,GAAuBh9X,EAAU7rQ,EAAQm8mB,GAC9C,MAAMja,EAAQmB,KACRkgC,EAAoBnB,GAAelgC,EAAOlimB,GAChD,GAAIujoB,IAAsBrX,GAAW,CAGjC2M,GAFcv1B,KACAuD,KACwB3E,EAAOr2V,EAAU03X,EAAmBrhC,EA/zdjE,IA+zdkFia,GAAW,EAQzG,CACD,OAAO0sB,EACV;;;;;;;OAuLD,SAASC,GAAsB5jC,EAAOvE,EAAOooC,EAAuBr3pB,EAAOs3pB,EAAeC,GAEtF,IAAIC,GAAYD,EAAiBtoC,EAAM0zB,cAAgB1zB,EAAM2zB,cACzD6U,GAAW5W,GAAqB2W,IAChCE,GAAWzW,GAAqBuW,IACpChkC,EAAMxznB,GAASq3pB,EACf,IACIM,GADAC,IAAyB,EAE7B,GAAIjjqB,MAAMkuB,QAAQw0oB,GAAwB,CAEtC,MAAMQ,GAAsBR,EAC5BM,GAAcE,GAAoB,IAEd,OAAhBF,IACAx3B,GAAqB03B,GAAqBF,IAAe,KAEzDC,IAAyB,EAEhC,MAEGD,GAAcN,EAElB,GAAIC,EAMA,GAHyC,IAAbI,GAGH,CAErB,MAAMI,GAAejX,GAAqBrtB,EAAMikC,GAAW,IAC3DjkC,EAAMxznB,EAAQ,GAAK4gpB,GAAgBkX,GAAcL,IAG5B,IAAjBK,KAEAtkC,EAAMskC,GAAe,GACjB5W,GAAqB1tB,EAAMskC,GAAe,GAAI93pB,IAGtDwznB,EAAMikC,GAAW,GAj/K7B,SAASM,GAAqBjX,EAAe3lhB,GAGzC,OAAyB,OAAhB2lhB,EACJ3lhB,GAAY,EACpB,CA4+KiC48hB,CAAqBvkC,EAAMikC,GAAW,GAAIz3pB,EACnE,MAEGwznB,EAAMxznB,EAAQ,GAAK4gpB,GAAgB6W,GAAU,GAG5B,IAAbA,KAEAjkC,EAAMikC,GAAW,GAAKvW,GAAqB1tB,EAAMikC,GAAW,GAAIz3pB,IAGpEy3pB,GAAWz3pB,OAMfwznB,EAAMxznB,EAAQ,GAAK4gpB,GAAgB8W,GAAU,GAG5B,IAAbD,GACAA,GAAWz3pB,EAIXwznB,EAAMkkC,GAAW,GAAKxW,GAAqB1tB,EAAMkkC,GAAW,GAAI13pB,GAEpE03pB,GAAW13pB,EAIX43pB,KACApkC,EAAMxznB,EAAQ,GAAKghpB,GAA8BxtB,EAAMxznB,EAAQ,KAEnEg4pB,GAAexkC,EAAOmkC,GAAa33pB,GAAO,EAAMu3pB,GAChDS,GAAexkC,EAAOmkC,GAAa33pB,GAAO,EAAOu3pB,GAoBrD,SAASU,GAA+BhpC,EAAO0oC,EAAankC,EAAOxznB,EAAOu3pB,GACtE,MAAMW,EAAWX,EAAiBtoC,EAAMyzB,gBAAkBzzB,EAAMuzB,eAChD,MAAZ0V,GAA6D,iBAAfP,GAC9Cx3B,GAAqB+3B,EAAUP,IAAgB,IAE/CnkC,EAAMxznB,EAAQ,GAAKohpB,GAA8B5tB,EAAMxznB,EAAQ,IAEtE,CA1BGi4pB,CAA+BhpC,EAAO0oC,GAAankC,EAAOxznB,EAAOu3pB,GACjEC,GAAY5W,GAAgB6W,GAAUC,IAClCH,EACAtoC,EAAM0zB,cAAgB6U,GAGtBvoC,EAAM2zB,cAAgB4U,EAE7B,CA2ED,SAASQ,GAAexkC,EAAOmkC,EAAa33pB,EAAOm4pB,EAAWZ,GAC1D,MAAMa,EAAkB5kC,EAAMxznB,EAAQ,GAChC41iB,GAAwB,OAAhB+hH,EACd,IAAIl7nB,GAAS07nB,EAAYtX,GAAqBuX,GAAmBnX,GAAqBmX,GAClFC,IAAiB,EAMrB,KAAkB,IAAX57nB,MAAoC,IAAnB47nB,IAA4BziH,KAAQ,CAExD,MAAM0iH,GAAwB9kC,EAAM/2lB,IAC9B87nB,GAAsB/kC,EAAM/2lB,GAAS,GACvC+7nB,GAAeF,GAAuBX,KACtCU,IAAiB,EACjB7kC,EAAM/2lB,GAAS,GAAK07nB,EAAY/W,GAA8BmX,IAC1DvX,GAA8BuX,KAEtC97nB,GAAS07nB,EAAYtX,GAAqB0X,IACtCtX,GAAqBsX,GAC5B,CACGF,KAEA7kC,EAAMxznB,EAAQ,GAAKm4pB,EAAYnX,GAA8BoX,GACzDhX,GAA8BgX,GAEzC,CAmBD,SAASI,GAAeC,EAAmBd,GAGvC,OAA0B,OAAtBc,GAEe,MAAfd,IAEChjqB,MAAMkuB,QAAQ41oB,GAAqBA,EAAkB,GAAKA,KACvDd,MAIChjqB,MAAMkuB,QAAQ41oB,IAA6C,iBAAhBd,IAGzCx3B,GAAqBs4B,EAAmBd,IAC3C,CAGX;;;;;;;OAUD,MAAMe,GAAc,CAChBC,QAAS,EACTvroB,IAAK,EACLwroB,OAAQ,EACRl9pB,MAAO,EACPu8C,SAAU,GAMd,SAAS4gnB,GAAiBhtpB,GACtB,OAAOA,EAAK65B,UAAUgznB,GAAYtroB,IAAKsroB,GAAYE,OACtD,CAKD,SAASE,GAAmBjtpB,GACxB,OAAOA,EAAK65B,UAAUgznB,GAAYh9pB,MAAOg9pB,GAAYzgnB,SACxD,CAiCD,SAAS8gnB,GAAmBltpB,EAAM7L,GAC9B,MAAMsO,EAAMoqpB,GAAYC,QACxB,OAAIrqpB,IAAQtO,GACD,GAEXA,EAAQ04pB,GAAYE,OAmFxB,SAASI,GAAkBntpB,EAAM+oC,EAAYC,GACzC,KAAOD,EAAaC,GAAYhpC,EAAK7W,WAAW4/C,GAAc,IAC1DA,IAEJ,OAAOA,CACV,CAxFgCoknB,CAAkBntpB,EAAM6spB,GAAYtroB,IAAMptB,EAAOsO,GACvE2qpB,GAAkBptpB,EAAM7L,EAAOsO,GACzC,CAkCD,SAAS4qpB,GAAertpB,EAAM+oC,GAC1B,MAAMtmC,EAAMoqpB,GAAYC,QACxB,IAAI34pB,EAAQ04pB,GAAYtroB,IAAM6roB,GAAkBptpB,EAAM+oC,EAAYtmC,GAClE,OAAIA,IAAQtO,GAED,GAEXA,EAAQ04pB,GAAYE,OAsDxB,SAASO,GAAgBttpB,EAAM+oC,EAAYC,GACvC,IAAIq3R,EACJ,KAAOt3R,EAAaC,IACwB,MAAtCq3R,EAAKrgU,EAAK7W,WAAW4/C,KAAkD,KAAPs3R,KACvD,GAALA,IAAuC,MAA6B,GAALA,IAAuC,IACvGA,GAAM,IAA0BA,GAAM,KAC3Ct3R,IAEJ,OAAOA,CACV,CA/DgCuknB,CAAgBttpB,EAAM7L,EAAOsO,GAC1DtO,EAAQo5pB,GAAiBvtpB,EAAM7L,EAAOsO,EAAK,IAC3CtO,EAAQ04pB,GAAYh9pB,MAAQu9pB,GAAkBptpB,EAAM7L,EAAOsO,GAC3DtO,EAAQ04pB,GAAYzgnB,SAuFxB,SAASohnB,GAAkBxtpB,EAAM+oC,EAAYC,GACzC,IAAIyknB,GAAM,EACNC,GAAM,EACNC,GAAM,EACNxwpB,GAAI4rC,EACJ6knB,GAAczwpB,GAClB,KAAOA,GAAI6rC,GAAU,CACjB,MAAMq3R,GAAKrgU,EAAK7W,WAAWgU,MAC3B,GAAW,KAAPkjU,GACA,OAAOutV,GAEK,KAAPvtV,IAAgD,KAAPA,GAC9CutV,GAAczwpB,GAAI0wpB,GAAkB7tpB,EAAMqgU,GAAIljU,GAAG6rC,GAE5CD,IACL5rC,GAAI,GACI,KAARwwpB,GACQ,KAARD,GAAuC,KAARD,GAAsC,KAAPptV,GAC9DutV,GAAczwpB,GAAI0wpB,GAAkB7tpB,EAAM,GAA+B7C,GAAG6rC,GAEvEq3R,GAAK,KAEVutV,GAAczwpB,IAElBwwpB,EAAMD,EACNA,EAAMD,EACNA,GAAW,GAALptV,EACT,CACD,OAAOutV,EACV,CApHkCJ,CAAkBxtpB,EAAM7L,EAAOsO,GACvD8qpB,GAAiBvtpB,EAAM7L,EAAOsO,EAAK,IAC7C,CAKD,SAASqrpB,GAAiB9tpB,GACtB6spB,GAAYtroB,IAAM,EAClBsroB,GAAYE,OAAS,EACrBF,GAAYh9pB,MAAQ,EACpBg9pB,GAAYzgnB,SAAW,EACvBygnB,GAAYC,QAAU9spB,EAAK/X,MAC9B,CAUD,SAASmlqB,GAAkBptpB,EAAM+oC,EAAYC,GACzC,KAAOD,EAAaC,GAAYhpC,EAAK7W,WAAW4/C,IAAe,IAC3DA,IAEJ,OAAOA,CACV,CAyCD,SAASwknB,GAAiBvtpB,EAAM+oC,EAAYC,EAAU61F,GAClD91F,SAAaqknB,GAAkBptpB,EAAM+oC,EAAYC,IAChCA,GAIbD,IAEGA,CACV,CAgDD,SAAS8knB,GAAkB7tpB,EAAM+tpB,EAAehlnB,EAAYC,GACxD,IAAIyknB,GAAM,EACNt5pB,EAAQ40C,EACZ,KAAO50C,EAAQ60C,GAAU,CACrB,MAAMq3R,GAAKrgU,EAAK7W,WAAWgL,KAC3B,GAAIksU,IAAM0tV,GAAyB,KAARN,EACvB,OAAOt5pB,EAKPs5pB,EAHM,IAANptV,IAA8C,KAARotV,EAGhC,EAGAptV,EAEb,CACD,MACI,IAAIn4U,KACX;;;;;;;;AAkCD,SAAS8lqB,GAAY5zf,EAAMvqK,EAAOy+L,GAC9B2/d,UAAqB7zf,EAAMvqK,EAAOy+L,GAAQ,GACnC0/d,EACV,CAgBD,SAASE,GAAYxzpB,EAAW7K,GAC5Bo+pB,UAAqBvzpB,EAAW7K,EAAO,MAAM,GACtCq+pB,EACV,CAoBD,SAASC,GAAW90oB,GAChB+0oB,GAAgBC,GAAuBC,GAAmBj1oB,GAAQ,EACrE,CAUD,SAASi1oB,GAAkBj6B,EAAer0nB,GACtC,QAAS7C,EAvQb,SAASo4S,GAAWv1S,GAChB8tpB,UAAiB9tpB,GACVqtpB,GAAertpB,EAAMotpB,GAAkBptpB,EAAM,EAAG6spB,GAAYC,SACtE,CAoQgBv3W,CAAWv1S,GAAO7C,GAAK,EAAGA,EAAIkwpB,GAAertpB,EAAM7C,GAC5DkxpB,GAAsBh6B,EAAe24B,GAAiBhtpB,GAAOitpB,GAAmBjtpB,GAEvF,CAmBD,SAASuupB,GAAWj6pB,GAChB85pB,GAAgBh6B,GAAkBo6B,GAAmBl6pB,GAAS,EACjE,CAUD,SAASk6pB,GAAkBn6B,EAAer0nB,GACtC,QAAS7C,EAnVb,SAASsxpB,GAAezupB,GACpB8tpB,UAAiB9tpB,GACVktpB,GAAmBltpB,EAAMotpB,GAAkBptpB,EAAM,EAAG6spB,GAAYC,SAC1E,CAgVgB2B,CAAezupB,GAAO7C,GAAK,EAAGA,EAAI+vpB,GAAmBltpB,EAAM7C,GACpEi3nB,GAAiBC,EAAe24B,GAAiBhtpB,IAAO,EAE/D,CASD,SAASiupB,GAAqB7zf,EAAMvqK,EAAOy+L,EAAQ84d,GAC/C,MAAMziC,EAAQmB,KACRzE,EAAQ0E,KAIRiB,GAAeG,GAAsB,GAI3C,GAHI9F,EAAMu3B,iBACN8V,GAAuBrtC,EAAOjnd,EAAM4sd,GAAcogC,GAElDv3pB,IAAU8+oB,IAAawV,GAAex/B,EAAOqC,GAAcn3nB,GAAQ,CAEnE8+pB,GAActtC,EADAA,EAAMn6mB,KAAKkinB,MACGzE,EAAOA,EAvnf1B,IAunf2Cvqd,EAAMuqd,EAAMqC,GAAe,GAmmBvF,SAAS4nC,GAAgB/+pB,EAAOy+L,GAC5B,OAAa,MAATz+L,IAGuB,iBAAXy+L,EACZz+L,GAAgBy+L,EAEM,iBAAVz+L,IACZA,EAAQq8O,GAAUuuZ,GAAgB5qoB,MAE/BA,CACV,CA9mB2F++pB,CAAgB/+pB,EAAOy+L,GAAS84d,EAAcpgC,GACrI,CACJ,CAWD,SAASonC,GAAgBh6B,EAAkBy6B,EAAch/pB,EAAOu3pB,GAC5D,MAAM/lC,EAAQ0E,KACRiB,EAAeG,GAAsB,GACvC9F,EAAMu3B,iBACN8V,GAAuBrtC,EAAO,KAAM2F,EAAcogC,GAEtD,MAAMziC,GAAQmB,KACd,GAAIj2nB,IAAU8+oB,IAAawV,GAAex/B,GAAOqC,EAAcn3nB,GAAQ,CAGnE,MAAMuznB,GAAQ/B,EAAMn6mB,KAAKkinB,MACzB,GAAI0lC,GAAsB1rC,GAAOgkC,KAAkB2H,GAAiB1tC,EAAO2F,GAAe,CActF,IAAIgoC,GAAe5H,EAAehkC,GAAMwzB,mBAAqBxzB,GAAMszB,kBAG9C,OAAjBsY,KAEAn/pB,EAAQusnB,GAAuB4yC,GAAcn/pB,GAAgB,KAIjEs3pB,GAAsC9lC,EAAO+B,GAAOuB,GAAO90nB,EAAOu3pB,EACrE,MAwXT,SAAS6H,GAAiB5tC,EAAO+B,EAAOuB,EAAOrynB,EAAU48pB,EAAkBC,EAAkB/H,GAAcpgC,IACnGkoC,IAAqBvgB,KAErBugB,EAAmBxvC,IAEvB,IAAIxqb,GAAW,EACXy/B,GAAW,EACXy6b,GAAS,EAAIF,EAAiBjnqB,OAASinqB,EAAiB,GAAK,KAC7Dvsa,GAAS,EAAIwsa,EAAiBlnqB,OAASknqB,EAAiB,GAAK,KACjE,KAAkB,OAAXC,IAA8B,OAAXzsa,IAAiB,CAGvC,MAAMm/B,GAAW5sF,GAAWg6d,EAAiBjnqB,OAASinqB,EAAiBh6d,GAAW,QAAKx4L,EACjFlL,GAAWmjO,GAAWw6b,EAAiBlnqB,OAASknqB,EAAiBx6b,GAAW,QAAKj4N,EACvF,IACI4nE,GADA+qlB,GAAS,KAETD,KAAWzsa,IAEXztD,IAAY,EACZy/B,IAAY,EACRmtD,KAAatwR,KACb69pB,GAAS1sa,GACTr+K,GAAW9yE,KAGC,OAAXmxP,IAA8B,OAAXysa,IAAmBA,GAASzsa,IAKpDztD,IAAY,EACZm6d,GAASD,KAOTz6b,IAAY,EACZ06b,GAAS1sa,GACTr+K,GAAW9yE,IAEA,OAAX69pB,IACAV,GAActtC,EAAO+B,EAAOuB,EAAOrynB,EAAU+8pB,GAAQ/qlB,GAAU8ilB,GAAcpgC,IAEjFooC,GAASl6d,GAAWg6d,EAAiBjnqB,OAASinqB,EAAiBh6d,IAAY,KAC3EytD,GAAShuB,GAAWw6b,EAAiBlnqB,OAASknqB,EAAiBx6b,IAAY,IAC9E,CACJ,CAtaWs6b,CAAiB5tC,EAAO+B,GAAOuB,GAAOA,GAzqfjC,IAyqfkDA,GAAMqC,EAAe,GAAIrC,GAAMqC,EAAe,GA8TjH,SAASsoC,GAAuBl7B,EAAkBy6B,EAAch/pB,GAC5D,GAAa,MAATA,GAAuD,KAAVA,EAC7C,OAAO6vnB,GACX,MAAM6vC,EAAqB,GACrBC,EAAiB/0B,GAAgB5qoB,GACvC,GAAI/G,MAAMkuB,QAAQw4oB,GACd,QAASrypB,EAAI,EAAGA,EAAIqypB,EAAevnqB,OAAQkV,IACvCi3nB,EAAiBm7B,EAAoBC,EAAerypB,IAAI,QAAxC,GAGW,iBAAnBqypB,EACZ,UAAWjuoB,KAAOiuoB,EACVA,EAAezlqB,eAAew3B,IAC9B6ymB,EAAiBm7B,EAAoBhuoB,EAAKiuoB,EAAejuoB,QAIlC,iBAAnBiuoB,GACZX,EAAaU,EAAoBC,GAMrC,OAAOD,CACV,CAvVqHD,CAAuBl7B,EAAkBy6B,EAAch/pB,GAAQu3pB,EAAcpgC,EAE9L,CACJ,CAOD,SAAS+nC,GAAiB1tC,EAAO2F,GAE7B,OAAOA,GAAgB3F,EAAM84B,iBAChC,CAUD,SAASuU,GAAuBrtC,EAAOyqC,EAAa9kC,EAAcogC,GAE9D,MAAMz/B,EAAQtG,EAAMn6mB,KACpB,GAAgC,OAA5BygnB,EAAMX,EAAe,GAAa,CAMlC,MAAM5D,EAAQuE,EAAMyB,MAEdqmC,GAAiBV,GAAiB1tC,EAAO2F,GAC3C8nC,GAAsB1rC,EAAOgkC,IAAiC,OAAhB0E,IAAyB2D,KAKvE3D,GAAc,GAElBA,EAkBR,SAAS4D,GAAuB/nC,EAAOvE,EAAOusC,EAAYvI,GACtD,MAAMwI,EAAmBloC,GAAuBC,GAChD,IAAI0kC,EAAWjF,EAAehkC,EAAMyzB,gBAAkBzzB,EAAMuzB,eAC5D,GAAyB,OAArBiZ,EAK2G,KAA9DxI,EAAehkC,EAAM0zB,cAAgB1zB,EAAM2zB,iBAMpF4Y,EAAaE,GADbF,EAAaG,GAA6B,KAAMnoC,EAAOvE,EAAOusC,EAAYvI,GACxBhkC,EAAM7ziB,MAAO63kB,GAE/DiF,EAAW,UAGd,CAGD,MAAMjW,GAAuBhzB,EAAMgzB,qBAEnC,IADwE,IAAzBA,IAA+BzuB,EAAMyuB,MAA0BwZ,EAI1G,GAFAD,EACIG,GAA6BF,EAAkBjoC,EAAOvE,EAAOusC,EAAYvI,GAC5D,OAAbiF,EAAmB,CAOnB,IAAI0D,GAuCpB,SAASC,GAA2BroC,EAAOvE,EAAOgkC,GAC9C,MAAM5vY,EAAW4vY,EAAehkC,EAAM0zB,cAAgB1zB,EAAM2zB,cAC5D,GAAuC,IAAnC3B,GAAqB59X,GAIzB,OAAOmwW,EAAMqtB,GAAqBx9X,GACrC,CA9CwCw4Y,CAA2BroC,EAAOvE,EAAOgkC,QACvC1qpB,IAAvBqzpB,IAAoCjnqB,MAAMkuB,QAAQ+4oB,MAIlDA,GAAqBD,GAA6B,KAAMnoC,EAAOvE,EAAO2sC,GAAmB,GAAkC3I,GAC3H2I,GACIF,GAAyBE,GAAoB3sC,EAAM7ziB,MAAO63kB,GA4FlF,SAAS6I,GAA2BtoC,EAAOvE,EAAOgkC,EAAc0E,GAC5D,MAAMt0Y,EAAW4vY,EAAehkC,EAAM0zB,cAAgB1zB,EAAM2zB,cAG5DpvB,EAAMqtB,GAAqBx9X,IAAas0Y,CAC3C,CAhGmBmE,CAA2BtoC,EAAOvE,EAAOgkC,EAAc2I,IAE9D,MAOG1D,EAkGhB,SAAS6D,GAAgBvoC,EAAOvE,EAAOgkC,GACnC,IAAIiF,EACJ,MAAMxiC,EAAezG,EAAMyG,aAK3B,QAAS1snB,EAAI,EAAIimnB,EAAMgzB,qBAAsBj5oB,EAAI0snB,EAAc1snB,IAAK,CAEhEkvpB,EAAWwD,GAAyBxD,EADtB1kC,EAAMxqnB,GAAGujnB,UAC8B0mC,EACxD,CACD,OAAOyI,GAAyBxD,EAAUjpC,EAAM7ziB,MAAO63kB,EAC1D,CA9G0B8I,CAAgBvoC,EAAOvE,EAAOgkC,EAGpD,CACD,YAAiB1qpB,IAAb2vpB,IACAjF,EAAgBhkC,EAAMyzB,gBAAkBwV,EAAajpC,EAAMuzB,eAAiB0V,GAEzEsD,CACV,CA7EqBD,CAAuB/nC,EAAOvE,EAAO0oC,EAAa1E,GAChEmE,GAAsB5jC,EAAOvE,EAAO0oC,EAAa9kC,EAAcyoC,GAAgBrI,EAClF,CACJ,CA6LD,SAAS0I,GAA6BF,EAAkBjoC,EAAOvE,EAAOusC,EAAYvI,GAG9E,IAAI+I,EAAmB,KACvB,MAAMtmC,GAAezG,EAAMyG,aAC3B,IAAIusB,GAAuBhzB,EAAMgzB,qBAOjC,KAN6B,IAAzBA,GACAA,GAAuBhzB,EAAMwG,eAG7BwsB,KAEGA,GAAuBvsB,KAC1BsmC,EAAmBxoC,EAAMyuB,IAEzBuZ,EAAaE,GAAyBF,EAAYQ,EAAiBzvC,UAAW0mC,GAC1E+I,IAAqBP,IAEzBxZ,KAEJ,OAAyB,OAArBwZ,IAIAxsC,EAAMgzB,qBAAuBA,IAE1BuZ,CACV,CAQD,SAASE,GAAyBF,EAAYpglB,EAAO63kB,GACjD,MAAMgJ,EAAgBhJ,EAAe,EAAkC,EACvE,IAAIiJ,GAAgB,EACpB,GAAc,OAAV9glB,EACA,QAASpyE,EAAI,EAAGA,EAAIoyE,EAAMtnF,OAAQkV,IAAK,CACnC,MAAMgR,GAAOohE,EAAMpyE,GACC,iBAATgR,GACPkipB,EAAgBlipB,GAGZkipB,IAAkBD,IACbtnqB,MAAMkuB,QAAQ24oB,KACfA,OAA4BjzpB,IAAfizpB,EAA2B,GAAK,CAAC,GAAIA,IAEtDv7B,GAAiBu7B,EAAYxhpB,KAAMi5oB,GAAsB73kB,IAAQpyE,IAG5E,CAEL,YAAsBT,IAAfizpB,EAA2B,KAAOA,CAC5C,CAgED,SAAStB,GAAsBh6B,EAAe9ymB,EAAK1xB,GAC/CukoB,GAAiBC,EAAe9ymB,EAAKk5mB,GAAgB5qoB,GACxD,CAqFD,SAAS8+pB,GAActtC,EAAO+B,EAAOuB,EAAOrynB,EAAU8nK,EAAMvqK,EAAOu3pB,GAAcpgC,IAC7E,KAAmB,EAAb5D,EAAMh9mB,MAGR,OAEJ,MAAMuhnB,GAAQtG,EAAMn6mB,KACdoppB,GAAS3oC,GAAMX,GAAe,GAIpC,IAAKupC,GAHuBjb,GAA8Bgb,IACtDE,GAAiB7oC,GAAOvE,EAAOuB,EAAOvqd,EAAMg7e,GAAqBkb,IAASlJ,SAC1E1qpB,GAC6C,CAExC6zpB,GAAsB1gqB,IAEnBqlpB,GAA8Bob,MAE9BzgqB,EAAQ2gqB,GAAiB7oC,GAAO,KAAMhD,EAAOvqd,EAAM4sd,GAAcogC,MA/tQjF,SAASqJ,GAAan+pB,EAAU80pB,EAAcngB,EAAO7se,EAAMvqK,GACvD,GAAIu3pB,EAEKv3pB,EAMDyC,EAASyH,SAASktoB,EAAO7se,GAJzB9nK,EAASqI,YAAYssoB,EAAO7se,OAO/B,CACD,IAAIq8J,GAA8B,IAAtBr8J,EAAKxxK,QAAQ,UAAc8T,EAAYmumB,GAAoB27B,SAC1D,MAAT32oB,EAEAyC,EAASsiL,YAAYqyd,EAAO7se,EAAMq8J,IAKG,iBAAV5mU,GAAqBA,EAAM2pI,SAAS,gBAG3D3pI,EAAQA,EAAMxG,MAAM,GAAG,IACvBotU,GAASo0S,GAAoB07B,WAGjCj0oB,EAASyf,SAASk1nB,EAAO7se,EAAMvqK,EAAO4mU,GAE7C,CACJ,CAosQOg6V,CAAan+pB,EAAU80pB,GADT1iC,GAAiB0E,KAAoBzE,GACPvqd,EAAMvqK,EACrD,CACJ,CA6BD,SAAS2gqB,GAAiB7oC,EAAOvE,EAAOuB,EAAOvqd,EAAMjmK,EAAOizpB,GAMxD,MAAMsJ,GAA4B,OAAVttC,EACxB,IAAIvznB,GACJ,KAAOsE,EAAQ,GAAG,CACd,MAAMw8pB,GAAShpC,EAAMxznB,GACfy8pB,GAAkB9nqB,MAAMkuB,QAAQ25oB,IAEhCpvoB,GAAMqvoB,GAAkBD,GAAO,GAAKA,GACpCE,GAAuB,OAARtvoB,GACrB,IAAIuvoB,GAAoBnsC,EAAMxwnB,EAAQ,GAClC28pB,KAAsBniB,KAQtBmiB,GAAoBD,GAAenxC,QAAchjnB,GAErD,IAAI6L,GAAesopB,GAAep8B,GAAiBq8B,GAAmB12f,GACjE74I,KAAQ64I,EAAO02f,QAAoBp0pB,EAIxC,GAHIk0pB,KAAoBL,GAAsBhopB,MAC1CA,GAAeksnB,GAAiBk8B,GAAQv2f,IAExCm2f,GAAsBhopB,MACtB1Y,GAAQ0Y,GACJmopB,IACA,OAAO7gqB,GAGf,MAAMygqB,GAAS3oC,EAAMxznB,EAAQ,GAC7BA,EAAQu8pB,GAAkB1b,GAAqBsb,IAAUlb,GAAqBkb,GACjF,CACD,GAAc,OAAVltC,EAAgB,CAGhB,IAAIipC,GAAWjF,EAAehkC,EAAMyzB,gBAAkBzzB,EAAMuzB,eAC5C,MAAZ0V,KACAx8pB,GAAQ4koB,GAAiB43B,GAAUjyf,GAE1C,CACD,OAAOvqK,EACV,CAOD,SAAS0gqB,GAAsB1gqB,GAK3B,YAAiB6M,IAAV7M,CACV,CA6BD,SAASi/pB,GAAsB1rC,EAAOgkC,GAClC,OAAkH,IAA1GhkC,EAAM3sT,OAAS2wV,EAAe,GAAoC,IAC7E;;;;;;;OAiBD,SAAS2J,GAAO58pB,EAAOtE,EAAQ,IAC3B,MAAM80nB,EAAQmB,KACRzE,EAAQ0E,KACR8gC,EAAgB1ypB,EAlvgBJ,GAsvgBZivnB,EAAQ/B,EAAM2L,gBAChB+oB,GAAiB10B,EAAOwlC,EAAe,EAAwBh3pB,EAAO,MACtEwxnB,EAAMn6mB,KAAK2/oB,GACTmK,GAAarsC,EAAMkiC,GAAiBjxZ,GAAe+uX,EA5wgB5C,IA4wgB6D90nB,GAC1E8J,GAAY0nnB,EAAOsD,EAAOqsC,GAAY5tC,GAEtCqD,GAAgBrD,GAAO,EAC1B;;;;;;;OA6BD,SAAS6tC,GAAkBjM,GACvBkM,UAAmB,GAAIlM,EAAI,IACpBiM,EACV,CAoBD,SAASC,GAAmBl0hB,EAAQgohB,EAAI12d,GACpC,MAAMq2b,EAAQmB,KACR2gC,EAAe1B,GAAepgC,EAAO3nf,EAAQgohB,EAAI12d,GACvD,OAAIm4d,IAAiB9X,IACjBgQ,GAAoBh6B,EAAOyE,KAAoBq9B,GAE5CyK,EACV,CAoBD,SAASC,GAAmBn0hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,GAC5C,MAAMq2b,EAAQmB,KACR2gC,GAAexB,GAAetgC,EAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,GAC/D,OAAIm4d,KAAiB9X,IACjBgQ,GAAoBh6B,EAAOyE,KAAoBq9B,IAE5C0K,EACV,CAqBD,SAASC,GAAmBp0hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAI92d,IACpD,MAAMq2b,GAAQmB,KACR2gC,GAAetB,GAAexgC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAI92d,IACvE,OAAIm4d,KAAiB9X,IACjBgQ,GAAoBh6B,GAAOyE,KAAoBq9B,IAE5C2K,EACV,CAqBD,SAASC,GAAmBr0hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAIh3d,IAC5D,MAAMq2b,GAAQmB,KACR2gC,GAAepB,GAAe1gC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAIh3d,IAC/E,OAAIm4d,KAAiB9X,IACjBgQ,GAAoBh6B,GAAOyE,KAAoBq9B,IAE5C4K,EACV,CAqBD,SAASC,GAAmBt0hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,IACpE,MAAMq2b,GAAQmB,KACR2gC,GAAelB,GAAe5gC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,IACvF,OAAIm4d,KAAiB9X,IACjBgQ,GAAoBh6B,GAAOyE,KAAoBq9B,IAE5C6K,EACV,CAuBD,SAASC,GAAmBv0hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,IAC5E,MAAMq2b,GAAQmB,KACR2gC,GAAehB,GAAe9gC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,IAC/F,OAAIm4d,KAAiB9X,IACjBgQ,GAAoBh6B,GAAOyE,KAAoBq9B,IAE5C8K,EACV,CAqBD,SAASC,GAAmBx0hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,IACpF,MAAMq2b,GAAQmB,KACR2gC,GAAed,GAAehhC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,IACvG,OAAIm4d,KAAiB9X,IACjBgQ,GAAoBh6B,GAAOyE,KAAoBq9B,IAE5C+K,EACV,CAqBD,SAASC,GAAmBz0hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,IAC5F,MAAMq2b,GAAQmB,KACR2gC,GAAeZ,GAAelhC,GAAO3nf,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,IAC/G,OAAIm4d,KAAiB9X,IACjBgQ,GAAoBh6B,GAAOyE,KAAoBq9B,IAE5CgL,EACV,CAyBD,SAASC,GAAmBjvoB,GACxB,MAAMkimB,EAAQmB,KACR2gC,EAAe5B,GAAelgC,EAAOlimB,GAC3C,OAAIgkoB,IAAiB9X,IACjBgQ,GAAoBh6B,EAAOyE,KAAoBq9B,GAE5CiL;;;;;;;OACV,CA8BD,SAASC,GAAuB30hB,EAAQgohB,EAAI12d,GAGxC8/d,GAAgBh6B,GAAkBo6B,GADRzJ,GADZj/B,KACkC9of,EAAQgohB,EAAI12d,IACY,EAC3E,CAwBD,SAASsje,GAAuB50hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,GAGhD8/d,GAAgBh6B,GAAkBo6B,GADRvJ,GADZn/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,IACI,EAC3E,CA2BD,SAASuje,GAAuB70hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAI92d,IAGxD8/d,GAAgBh6B,GAAkBo6B,GADRrJ,GADZr/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAI92d,KACJ,EAC3E,CA6BD,SAASwje,GAAuB90hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAIh3d,IAGhE8/d,GAAgBh6B,GAAkBo6B,GADRnJ,GADZv/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAIh3d,KACZ,EAC3E,CA+BD,SAASyje,GAAuB/0hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,IAGxE8/d,GAAgBh6B,GAAkBo6B,GADRjJ,GADZz/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,KACpB,EAC3E,CAiCD,SAAS0je,GAAuBh1hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,IAGhF8/d,GAAgBh6B,GAAkBo6B,GADR/I,GADZ3/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,KAC5B,EAC3E,CAmCD,SAAS2je,GAAuBj1hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,IAGxF8/d,GAAgBh6B,GAAkBo6B,GADR7I,GADZ7/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,KACpC,EAC3E,CAqCD,SAAS4je,GAAuBl1hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,IAGhG8/d,GAAgBh6B,GAAkBo6B,GADR3I,GADZ//B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,KAC5C,EAC3E,CAwBD,SAAS6je,GAAuB1voB,GAG5B2roB,GAAgBh6B,GAAkBo6B,GADR3J,GADZ/+B,KACkCrjmB,IACwB,EAC3E;;;;;;;OA8BD,SAAS2voB,GAAuBp1hB,EAAQgohB,EAAI12d,GAGxC6/d,GAD0BpJ,GADZj/B,KACkC9of,EAAQgohB,EAAI12d,GAE/D,CAwBD,SAAS+je,GAAuBr1hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,GAGhD6/d,GAD0BlJ,GADZn/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,GAEvE,CA2BD,SAASgke,GAAuBt1hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAI92d,IAGxD6/d,GAD0BhJ,GADZr/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAI92d,IAE/E,CA6BD,SAASike,GAAuBv1hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAIh3d,IAGhE6/d,GAD0B9I,GADZv/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAIh3d,IAEvF,CA+BD,SAASkke,GAAuBx1hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,IAGxE6/d,GAD0B5I,GADZz/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,IAE/F,CAmCD,SAASmke,GAAuBz1hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,IAGhF6/d,GAD0B1I,GADZ3/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,IAEvG,CAqCD,SAASoke,GAAuB11hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,IAGxF6/d,GAD0BxI,GADZ7/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,IAE/G,CAuCD,SAASqke,GAAuB31hB,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,IAGhG6/d,GAD0BtI,GADZ//B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,EAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,IAEvH,CAyBD,SAASske,GAAuBnwoB,GAG5B0roB,GAD0BtJ,GADZ/+B,KACkCrjmB,GAEnD;;;;;;;OAmCD,SAASowoB,GAAwBz4f,EAAMp9B,EAAQgohB,EAAI12d,EAAQwke,GAGvD7E,UAAqB7zf,EADK2qf,GADZj/B,KACkC9of,EAAQgohB,EAAI12d,GACdwke,GAAa,GACpDD,EACV,CA6BD,SAASE,GAAwB34f,EAAMp9B,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,EAAQwke,IAG/D7E,UAAqB7zf,EADK6qf,GADZn/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAI52d,GACtBwke,IAAa,GACpDC,EACV,CA+BD,SAASC,GAAwB54f,EAAMp9B,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAI92d,GAAQwke,IAGvE7E,UAAqB7zf,EADK+qf,GADZr/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAI92d,IAC9Bwke,IAAa,GACpDE,EACV,CAiCD,SAASC,GAAwB74f,EAAMp9B,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAIh3d,GAAQwke,IAG/E7E,UAAqB7zf,EADKirf,GADZv/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAIh3d,IACtCwke,IAAa,GACpDG,EACV,CAmCD,SAASC,GAAwB94f,EAAMp9B,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,GAAQwke,IAGvF7E,UAAqB7zf,EADKmrf,GADZz/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIl3d,IAC9Cwke,IAAa,GACpDI,EACV,CAqCD,SAASC,GAAwB/4f,EAAMp9B,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,GAAQwke,IAG/F7E,UAAqB7zf,EADKqrf,GADZ3/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAIp3d,IACtDwke,IAAa,GACpDK,EACV,CAwCD,SAASC,GAAwBh5f,EAAMp9B,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,GAAQwke,IAGvG7E,UAAqB7zf,EADKurf,GADZ7/B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAIt3d,IAC9Dwke,IAAa,GACpDM,EACV,CA0CD,SAASC,GAAwBj5f,EAAMp9B,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,GAAQwke,IAG/G7E,UAAqB7zf,EADKyrf,GADZ//B,KACkC9of,EAAQgohB,EAAIr6pB,EAAIu6pB,EAAIlqpB,EAAIoqpB,GAAIjlpB,GAAImlpB,GAAI97oB,GAAIg8oB,GAAIvwoB,GAAIywoB,GAAI/ye,GAAIize,GAAI92c,GAAIg3c,GAAIx3d,IACtEwke,IAAa,GACpDO,EACV,CA+BD,SAASC,GAAwBl5f,EAAM33I,EAAQqwoB,GAG3C7E,UAAqB7zf,EADKyqf,GADZ/+B,KACkCrjmB,GACFqwoB,GAAa,GACpDQ;;;;;;;OACV,CAuBD,SAASC,GAAejlY,EAAUz+R,EAAO+uoB,GACrC,MAAMja,EAAQmB,KAEd,GAAIq+B,GAAex/B,EADEuC,KACmBr3nB,GAAQ,CAG5CyrpB,GAFcv1B,KACAuD,KACwB3E,EAAOr2V,EAAUz+R,EAAO80nB,EA9hjBrD,IA8hjBsEia,GAAW,EAE7F,CACD,OAAO20B,EACV,CAsBD,SAASC,GAAwBllY,EAAUz+R,EAAO+uoB,GAC9C,MAAMja,EAAQmB,KAEd,GAAIq+B,GAAex/B,EADEuC,KACmBr3nB,GAAQ,CAC5C,MAAMwxnB,EAAQ0E,KACR3C,GAAQkG,KAGdgyB,GAAwBj6B,EAAO+B,GAAOuB,EAAOr2V,EAAUz+R,EADtC2upB,GADE92B,GAAuBrG,EAAMn6mB,MACGk8mB,GAAOuB,GACcia,GAAW,EAEtF,CACD,OAAO40B,EACV;;;;;;;;;;;;;;OAkCD,MAAM9jX,QAAIhzS,EAOV,IAAI+2pB,GAAW,CAAC,KAAM,CAAC,CAAC,IAAK,KAAM,CAAC,KAAM,MAAO/jX,IAAI,CAAC,CAAC,KAAM,MAAOA,GAAGA,IAAI,CAAC,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAAa,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQA,GAAG,CAAC,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,aAAcA,GAAG,CAAC,CAAC,IAAK,KAAM,CAAC,KAAM,MAAO,CAAC,gBAAiB,gBAAiB,EAAG,CAAC,EAAG,GAAI,CAAC,SAAU,WAAY,YAAa,mBAAoB,CAAC,SAAU,YAAa,cAAe,kBAAmB,CAAC,WAAYA,GAAG,eAAgBA,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAAK,SAAK,SAAK,MAAO,KAAM,CAAC,YAAa,SAAU,eAAa,OAAQ,MAAO,IAAK,YAAa,GAAI,MANl6B,SAAS+qR,GAAO/3X,GACZ,MAAevlM,EAAIkf,KAAKI,MAAMJ,KAAKsH,IAAI++K,IAAO8c,EAAI9c,EAAIt5M,WAAWpB,QAAQ,YAAa,IAAIC,OAC1F,OAAU,IAANkV,GAAiB,IAANqiN,EACJ,EACJ,CACV;;;;;;;OAaD,IAAIk0c,GAAc,GAQlB,SAASxvD,GAAmBh9lB,EAAMmnJ,EAAU81c,GAChB,iBAAb91c,IACP81c,EAAY91c,EACZA,EAAWnnJ,EAAKyspB,GAAgBC,WAEpCvlgB,EAAWA,EAAS3rJ,cAAc1a,QAAQ,KAAM,KAChD0rqB,GAAYrlgB,GAAYnnJ,EACpBi9lB,IACAuvD,GAAYrlgB,GAAUslgB,GAAgBE,WAAa1vD,EAE1D,CAQD,SAAS2vD,GAAen6nB,GACpB,MAAMo6nB,EAyFV,SAASjkF,GAAgBn2iB,GACrB,OAAOA,EAAOj3B,cAAc1a,QAAQ,KAAM,IAC7C;;;;;;;OA3F4B8nlB,CAAgBn2iB,GACzC,IAAInf,EAAQw5oB,GAAcD,GAC1B,GAAIv5oB,EACA,OAAOA,EAGX,MAAM81jB,EAAeyjF,EAAiBrqqB,MAAM,KAAK,GAEjD,GADA8wB,EAAQw5oB,GAAc1jF,GAClB91jB,EACA,OAAOA,EAEX,GAAqB,OAAjB81jB,EACA,OAAOmjF,GAEX,MAAM,IAAIh3C,GAAa,KAAgDpR,EAC1E,CAsBD,SAAS1P,GAAoBhikB,GAEzB,OADam6nB,GAAen6nB,GAChBg6nB,GAAgBM,WAC/B,CAKD,SAASD,GAAcD,GACnB,OAAMA,KAAoBL,KACtBA,GAAYK,GAAoBz0C,GAAQoU,IAAMpU,GAAQoU,GAAGwgC,QAAU50C,GAAQoU,GAAGwgC,OAAOxkF,SACjF4vC,GAAQoU,GAAGwgC,OAAOxkF,QAAQqkF,IAE3BL,GAAYK,EACtB,CAUD,IAAIJ,IACJ,SAAWA,GACPA,EAAgBA,EAAgBC,SAAc,GAAK,WACnDD,EAAgBA,EAAgBQ,iBAAsB,GAAK,mBAC3DR,EAAgBA,EAAgBS,qBAA0B,GAAK,uBAC/DT,EAAgBA,EAAgBU,WAAgB,GAAK,aACrDV,EAAgBA,EAAgBW,eAAoB,GAAK,iBACzDX,EAAgBA,EAAgBY,aAAkB,GAAK,eACvDZ,EAAgBA,EAAgBa,iBAAsB,GAAK,mBAC3Db,EAAgBA,EAAgBj2D,KAAU,GAAK,OAC/Ci2D,EAAgBA,EAAgBc,eAAoB,GAAK,iBACzDd,EAAgBA,EAAgBe,aAAkB,GAAK,eACvDf,EAAgBA,EAAgBgB,WAAgB,IAAM,aACtDhB,EAAgBA,EAAgBiB,WAAgB,IAAM,aACtDjB,EAAgBA,EAAgBkB,eAAoB,IAAM,iBAC1DlB,EAAgBA,EAAgBmB,cAAmB,IAAM,gBACzDnB,EAAgBA,EAAgBoB,cAAmB,IAAM,gBACzDpB,EAAgBA,EAAgBqB,aAAkB,IAAM,eACxDrB,EAAgBA,EAAgBsB,eAAoB,IAAM,iBAC1DtB,EAAgBA,EAAgBuB,aAAkB,IAAM,eACxDvB,EAAgBA,EAAgBwB,WAAgB,IAAM,aACtDxB,EAAgBA,EAAgByB,eAAoB,IAAM,iBAC1DzB,EAAgBA,EAAgBM,WAAgB,IAAM,aACtDN,EAAgBA,EAAgBE,UAAe,IAAM,WACxD,CAvBD,CAuBGF,KAAoBA,GAAkB,KAezC,MAAM0B,GAAgB,CAAC,OAAQ,MAAO,MAAO,MAAO,QAYpD,MAAMC,GAAoB,QAmBpBC,GAAiB,CACnBh9nB,OAAQ,WAONi9nB,GAAa,CACfj9nB,OAAQ;;;;;;;OAKZ,IAAIk9nB,IACJ,SAAWA,GAKPA,EAAiBA,EAAiB/1iB,MAAW,GAAK,QAIlD+1iB,EAAiBA,EAAiBC,eAAoB,GAAK,iBAI3DD,EAAiBA,EAAiB9rV,QAAa,GAAK,SACvD,CAdD,CAcG8rV,KAAqBA,GAAmB;;;;;;;;AAiB3C,IAAIE,GAAcL,GAQlB,SAASM,GAAYvngB,GACjB4ud,GAAc5ud,EAAW,mCACD,iBAAbA,IACPsngB,GAActngB,EAAS3rJ,cAAc1a,QAAQ,KAAM,KAE1D;;;;;;;;AA2BD,SAASyipB,GAAgCviB,EAAa7B,EAAc1B,GAChE,MAAMkxC,EAAyBxvC,EAAa8vB,kBACtCA,EAAoBrtpB,MAAMkuB,QAAQ6+oB,GAA0BA,EAAuB,GAAKA,EAC9F,OAA0B,OAAtB1f,EACO7L,GAAkCpiB,EAAa7B,EAAc1B,GAI7DF,GAAYE,EAAMwxB,GAEhC,CAMD,SAASzL,GAAwBp4oB,EAAUs4oB,EAAYjmB,EAAOgmB,EAAYpD,GACtE,MAAMsuB,EAAyBjrB,EAAWuL,kBAC1C,GAAIrtpB,MAAMkuB,QAAQ6+oB,GAAyB,CAOvC,IAAIC,GAAanrB,EACborB,GAAc,KAKlB,GAJwB,EAAlBnrB,EAAWxkoB,OACb2vpB,GAAcD,GACdA,GAAavuB,GAEE,OAAfuuB,IAAmF,IAAxC,EAAnBlrB,EAAWn0U,OACnC,QAASt5T,GAAI,EAAGA,GAAI04pB,EAAuB5tqB,OAAQkV,KAAK,CAIpDgqoB,GAAmB70oB,EAAUwjqB,GADXnxC,EAAMkxC,EAAuB14pB,KACK44pB,IAAa,EACpE,CAER,CACJ;;;;;;;OAuCD,SAASC,GAAmCC,EAAgBC,GAKxD,GADAD,EAAetypB,KAAKuypB,GAChBD,EAAehuqB,OAAS,EACxB,QAASkV,EAAI84pB,EAAehuqB,OAAS,EAAGkV,GAAK,EAAGA,IAAK,CACjD,MAAMg5pB,EAAgBF,EAAe94pB,GAGhCi5pB,GAAWD,IACRE,GAAwBF,EAAeD,IACC,OAAxCI,GAAqBH,IAGrBI,GAAqBJ,EAAeD,EAAS/hqB,MAGxD,CAER,CACD,SAASiiqB,GAAWhzC,GAChB,QAAsB,GAAbA,EAAMh9mB,KAClB,CACD,SAASiwpB,GAAwBF,EAAeD,GAC5C,OAAOE,GAAWF,IAAaC,EAAchiqB,MAAQ+hqB,EAAS/hqB,KACjE,CACD,SAASmiqB,GAAqBlzC,GAC1B,MAAMjvnB,EAAQivnB,EAAM+yB,kBACpB,OAAOrtpB,MAAMkuB,QAAQ7iB,GAASA,EAAM,GAAKA,CAC5C,CACD,SAASoiqB,GAAqBnzC,EAAOvznB,GACjC,MAAMsE,EAAQivnB,EAAM+yB,kBAChBrtpB,MAAMkuB,QAAQ7iB,GAEdA,EAAM,GAAKtE,GAGX26oB,GAAgBC,GAAiCC,IACjDtnB,EAAM+yB,kBAAoBtmpB,EAEjC;;;;;;;OAsBD,SAAS2mqB,GAAQn1C,EAAOltnB,GACpB,MAAMtE,EAAQwxnB,EAAMn6mB,KAAK/S,GACzB,OAAc,OAAVtE,GAAmC,iBAAVA,EAClB,KASEA,EAAM9F,eAAe,yBAA2B8F,EACzDA,EAAMA,KAGb,CAkDD,SAAS4mqB,GAAuBp1C,EAAO40C,EAAgB9hqB,GACnD,MAAMivnB,EAAQ4yB,GAAmB30B,EAAOltnB,EAAO,GAAgC,KAAM,MACrF6hqB,UAAmCC,EAAgB7yC,GAC5CA,CACV,CASD,SAASszC,GAAuBC,EAAMhyC,GAClC,MAAMiyC,EAAcjyC,EAAMgyC,EAAKE,uBAC/B,OAAuB,OAAhBD,EAAuBA,EAAeA,EAAc,GAAKA,EAAcA,CACjF,CACD,SAASE,GAA6BC,GAClC,OAAOA,IAAe,EACzB,CACD,SAASC,GAA0BD,GAC/B,OAAqB,OAAbA,KAAwD,CACnE;;;;;;;;AA8BD,IAAIE,GAAa,EAMbC,GAAoB,EAkExB,SAASC,GAAoB91C,EAAO+1C,EAAgBzyC,EAAOoxC,GAEvD,MAAMzjqB,EAAWqynB,EA3rkBJ,IA6rkBb,IAMI0yC,GANAC,EAAU,KAOd,QAASn6pB,GAAI,EAAGA,GAAIi6pB,EAAenvqB,OAAQkV,KAAK,CAC5C,MAAMm7oB,GAAS8e,EAAej6pB,IAC9B,GAAqB,iBAAVm7oB,GAAoB,CAC3B,MAAMif,GAAgBH,IAAiBj6pB,IACV,OAAzBwnnB,EAAM4yC,MAGN5yC,EAAM4yC,IAAiB3ha,GAAetjQ,EAAUgmpB,IAEvD,SACyB,iBAAVA,GACZ,OAAiB,EAATA,IAAS,KACR,EACD,MAAMkf,GAAYV,GAA6Bxe,IAQ/C,IAAImf,GACA5sB,GAUJ,GAlBgB,OAAZysB,IAIAA,EAAUE,GACVH,GAAYltB,GAAiB73oB,EAAUyjqB,IAIvCyB,KAAcF,GACdG,GAAkB1B,EAClBlrB,GAAcwsB,KAGdI,GAAkB,KAClB5sB,GAAcpmB,GAAYE,EAAM6yC,MAGhB,OAAhB3sB,GAAsB,CAMtB,MAAM6sB,GAASV,GAA0B1e,IAMzCnR,GAAmB70oB,EAAUu4oB,GAFflmB,EAAM+yC,IAE6BD,IAAiB,GAClE,MAAMd,GAAOH,GAAQn1C,EAAOq2C,IAC5B,GAAa,OAATf,IAAiC,iBAATA,GAAmB,CAI3C,MAAMgB,GAAYjB,GAAuBC,GAAMhyC,GAC7B,OAAdgzC,IACAR,GAAoB91C,EAAOs1C,GAAK7ipB,OAAO6jpB,IAAYhzC,EAAOA,EAAMgyC,GAAKiB,WAE5E,CACJ,CACD,WACC,EACD,MAAMC,GAAmBvf,KAAW,EAC9BjqZ,GAAW+oa,IAAiBj6pB,IAC5BuxoB,GAAY0oB,IAAiBj6pB,IAGnCogpB,GAAoBjrpB,EAAUoynB,GAAiBmzC,GAAkBlzC,GAAQ,KAAM,KAAMt2X,GAAUqgZ,GAAW,WASlH,OAAQ4J,SACCkd,GACD,MAAMsC,GAAeV,IAAiBj6pB,IAChC46pB,GAAmBX,IAAiBj6pB,IAC1C,GAAgC,OAA5BwnnB,EAAMozC,IAA4B,CAQlCnyB,GAHqBjhB,EAAMozC,IACvBrwB,GAAkBp1oB,EAAUwlqB,IAEFnzC,EACjC,CACD,WACC4wC,GACD,MAAMp+pB,GAAUigqB,IAAiBj6pB,IAC3B06pB,GAAmBT,IAAiBj6pB,IAC1C,GAAgC,OAA5BwnnB,EAAMkzC,IAA4B,CAQlCjyB,GAHqBjhB,EAAMkzC,IACvBjwB,GAAkBt1oB,EAAU6E,GAAS,MAEXwtnB,EACjC,EAOhB,CACJ,CAWD,SAASqzC,GAAmB32C,EAAOsD,EAAOszC,EAAeC,EAAoBjB,GACzE,QAAS95pB,EAAI,EAAGA,EAAI86pB,EAAchwqB,OAAQkV,IAAK,CAE3C,MAAMg7pB,GAAWF,EAAc96pB,GAEzBi7pB,GAAYH,IAAgB96pB,GAClC,GAAIg7pB,GAAWlB,EAAY,CAEvB,IAAIpnqB,GAAQ,GACZ,QAAS8nC,GAAIx6B,EAAI,EAAGw6B,IAAMx6B,EAAIi7pB,GAAYzgoB,KAAK,CAC3C,MAAM2gnB,GAAS2f,EAActgoB,IAC7B,GAAqB,iBAAV2gnB,GACPzopB,IAASyopB,WAEa,iBAAVA,GACZ,GAAIA,GAAS,EAETzopB,IAAS8snB,GAAgBgI,EAAMuzC,EAAqB5f,SAEnD,CACD,MAAMp6b,GAAao6b,KAAW,EAC9B,OAAiB,EAATA,IAAS,KACR,EACD,MAAMhqX,GAAW2pY,IAAgBtgoB,IAC3B0goB,GAAaJ,IAAgBtgoB,IAC7B2goB,GAAiBj3C,EAAMn6mB,KAAKg3M,IAEJ,iBAAnBo6c,GAIP/a,GAAoB54B,EAz1kBvC,IAy1kBwDA,EAAMzma,IAAY,KAAMo6c,GAAgBhqY,GAAUz+R,GAAOwoqB,IAG9F/c,GAAwBj6B,EAAOi3C,GAAgB3zC,EAAOr2V,GAAUz+R,GAAO80nB,EA51kB1F,IA41kB2G0zC,IAAY,GAExG,WACC,EACD,MAAME,GAAQ5zC,EAAMzma,IACV,OAAVq6c,IAAkB9wB,GAAe9iB,EAj2kBhD,IAi2kBiE4zC,GAAO1oqB,IACzD,WACC,EACD2oqB,GAAmBn3C,EAAOm1C,GAAQn1C,EAAOnja,IAAYyma,EAAO90nB,IAC5D,WACC,EACD4oqB,GAAmBp3C,EAAOm1C,GAAQn1C,EAAOnja,IAAYg6c,EAAoBvzC,GAGpF,CAER,CACJ,KACI,CACD,MAAM2zB,GAAS2f,EAAc96pB,EAAI,GACjC,GAAIm7oB,GAAS,GAAyD,IAA1C,EAATA,IAAuF,CAKtG,MACMqe,GAAOH,GAAQn1C,EADFi3B,KAAW,GAET3zB,EAAMgyC,GAAKE,uBACb,GACf4B,GAAmBp3C,EAAOs1C,GAAMuB,EAAoBvzC,EAE3D,CACJ,CACDxnnB,GAAKi7pB,EACR,CACJ,CASD,SAASK,GAAmBp3C,EAAOs1C,EAAMuB,EAAoBvzC,GAEzD,IAAI+zC,EAAkB/zC,EAAMgyC,EAAKE,uBACjC,GAAwB,OAApB6B,EAA0B,CAC1B,IAAIjoe,EAAOwme,GACPyB,EAAkB,IAGlBA,EAAkB/zC,EAAMgyC,EAAKE,wBAA0B6B,EAEvDjoe,GAAO,GAEXune,GAAmB32C,EAAOsD,EAAOgyC,EAAKpnmB,OAAOmpmB,GAAkBR,EAAoBzne,EACtF,CACJ,CAWD,SAAS+ne,GAAmBn3C,EAAOs1C,EAAMhyC,EAAO90nB,GAE5C,MAAM8nqB,EAgDV,SAASgB,GAAaC,EAAeC,GACjC,IAAI1kqB,EAAQykqB,EAAc70D,MAAMn7mB,QAAQiwqB,GACxC,IAAc,IAAV1kqB,EACA,OAAQykqB,EAAcxypB,WACb,EAAwB,CACzB,MAAM0ypB,EA5tBtB,SAASC,GAAclpqB,EAAO8pC,GAC1B,MAAM8giB,EAASkhC,GAAoBhikB,EAApBgikB,CAA4Bp9kB,SAAS1uB,EAAO,KACrD0pB,EAAS87oB,GAAc56F,GAC7B,YAAmB/9jB,IAAX6c,EAAwBA,EAAS,OAC5C,CAwtBoCw/oB,CAAcF,EAhoBnD,SAASn6D,KACL,OAAOi3D,EACV,CA8nBgEj3D,IACjDvqmB,EAAQykqB,EAAc70D,MAAMn7mB,QAAQkwqB,IACtB,IAAV3kqB,GAAiC,UAAjB2kqB,IAChB3kqB,EAAQykqB,EAAc70D,MAAMn7mB,QAAQ,UAExC,KACH,MACI,EACDuL,EAAQykqB,EAAc70D,MAAMn7mB,QAAQ,SAKhD,OAAiB,IAAVuL,EAAe,KAAOA,CAChC;;;;;;;OAnEqBwkqB,CAAahC,EAAM9mqB,GAErC,GADsB6mqB,GAAuBC,EAAMhyC,KAC3BgzC,IACpBqB,GAAyB33C,EAAOs1C,EAAMhyC,GACtCA,EAAMgyC,EAAKE,uBAAuC,OAAdc,EAAqB,MAAQA,EAC/C,OAAdA,GAAoB,CAEpB,MAAM5B,GAAcpxC,EAAMgyC,EAAKiB,WAC3B7B,IAEAoB,GAAoB91C,EAAOs1C,EAAK7ipB,OAAO6jpB,GAAYhzC,EAAOoxC,GAEjE,CAER,CAUD,SAASiD,GAAyB33C,EAAOs1C,EAAMhyC,GAC3C,IAAI+zC,EAAkBhC,GAAuBC,EAAMhyC,GACnD,GAAwB,OAApB+zC,EAA0B,CAC1B,MAAMO,EAActC,EAAKr3pB,OAAOo5pB,GAChC,QAASv7pB,EAAI,EAAGA,EAAI87pB,EAAYhxqB,OAAQkV,IAAK,CACzC,MAAM+7pB,GAAiBD,EAAY97pB,GACnC,GAAI+7pB,GAAiB,EAAG,CAEpB,MAAMjyB,GAAQviB,GAAiBw0C,GAAgBv0C,GACrC,OAAVsiB,IAAkBG,GAAiBziB,EAp8kBlC,IAo8kBmDsiB,GACvD,MAGG+xB,GAAyB33C,EAAOm1C,GAAQn1C,GAAQ63C,IAAiBv0C,EAExE,CACJ,CACJ,CAmCD,SAASw0C,KACL,MAAMC,EAAS,GACf,IACIvoC,EACAwoC,EAFA32oB,GAAS,EA2Bb,SAAS42oB,EAAS3C,GAAMhyC,IACpBjimB,EAAS,EACT,MAAMk0oB,GAAcF,GAAuBC,GAAMhyC,IAG7C00C,EAFgB,OAAhBzC,GAEWD,GAAKr3pB,OAAOs3pB,IAGZl3C,EAElB,CACD,SAAS65C,KACL,GAAI72oB,EAAS22oB,EAASpxqB,OAAQ,CAC1B,MAAMuxqB,GAAeH,EAAS32oB,KAE9B,GAAI82oB,GAAe,EAGf,OAFc3oC,EAAO2oC,IAIpB,CACDJ,EAAOz1pB,KAAK+e,EAAQ22oB,GAEpB,MAAMI,IAAaD,GAGnBF,SAFazoC,EA9ilBf,GA8ilB6B3pnB,KAAKuypB,IAEjB5oC,GACR0oC,IACV,CACJ,CAEG,OAAsB,IAAlBH,EAAOnxqB,OACA,MAGPoxqB,EAAWD,EAAOnhnB,MAClBv1B,EAAS02oB,EAAOnhnB,MACTshnB,KAGlB,CACD,OAjDA,SAASG,EAA0BpzB,GAAmB3hB,IAElD,IADAkM,EAASlM,GACFy0C,EAAOnxqB,QACVmxqB,EAAOnhnB,MAEXqhnB,SAAShzB,GAAkBz2oB,MAAO80nB,IAC3B40C,EACV,CA2CJ;;;;;;;;;;;;;;;AA8ND,MAAMI,GAAiB,2BACjBC,GAAa,uDACbC,GAAa,oBACbC,GAAmB,uDAEnBC,EAAqB,+BACrBC,EAAY,kCAQZC,EAAsB,UAkB5B,SAASC,EAAyB74C,EAAO84C,EAAkBx1C,EAAOxwnB,EAAOqT,EAAS4ypB,GAC9E,MAAMlY,GAAY37B,KACZ8zC,GAAgB,GAChBpC,GAAgB,GAChBqC,GAAqB,CAAC,IAK5B9ypB,EAiSJ,SAAS+ypB,GAA0B/ypB,EAAS4ypB,GACxC,GA9CJ,SAASI,GAAsBJ,GAC3B,OAA4B,IAArBA,CACV,CA4COI,CAAsBJ,GAEtB,OAAOK,GAA+BjzpB,GAErC,CAED,MAAMlF,EAAQkF,EAAQ5e,QAAS,IAAGwxqB,WAA+B,EAAIA,EAAiBhxqB,WAAWnB,OAC3Fwa,EAAM+E,EAAQolO,OAAO,IAAIxgP,OAAQ,oBAAsBguqB,YAC7D,OAAOK,GAA+BjzpB,EAAQqyB,UAAUv3B,EAAOG,GAClE,CACJ,CA5Sa83pB,CAA0B/ypB,EAAS4ypB,GAC7C,MAAMM,GA3BV,SAASC,EAAY9qqB,GACjB,OAAOA,EAAM7H,QAAQiyqB,EAAqB,IAC7C,CAyBoBU,CAAYnzpB,GAAS9d,MAAMswqB,GAC5C,QAAS78pB,GAAI,EAAGA,GAAIu9pB,GAASzyqB,OAAQkV,KAAK,CACtC,IAAItN,GAAQ6qqB,GAASv9pB,IACrB,GAAgB,IAAP,EAAJA,IAAc,CAEf,MAAM1T,GAAQmxqB,GAA6B/qqB,IAC3C,QAAS8nC,GAAI,EAAGA,GAAIluC,GAAMxB,OAAQ0vC,KAAK,CACnC,IAAI81J,GAAOhkM,GAAMkuC,IACjB,GAAgB,IAAP,EAAJA,IAAc,CAEf,MAAM33B,GAAOytL,GAEA,KAATztL,IACA66pB,EAAwCx5C,EAAO6gC,GAAWoY,GAAmB,GAAID,GAAepC,GAAetzC,EAAO3knB,GAE7H,KACI,CAED,MAAM44pB,GAAgBnre,GAOtB,GAA6B,iBAAlBmre,GACP,MAAM,IAAI1wqB,MAAO,sCAAqCsf,eAM1DszpB,GAASz5C,EAAOsD,EAAOszC,GAAekC,EAAkBvB,GAJ9BmC,EAAwB15C,EAAO6gC,GAAWoY,GAAmB,GAAI31C,EAAO01C,GAAyE,IAAI,GACxIlmqB,MAI1C,CACJ,CACJ,KACI,CAGD,MAAM6mqB,GAAoC,KAAxBnrqB,GAAM1G,WAAW,GAG7BgL,IAFOtE,GAAM1G,WAAW6xqB,GAAY,EAAI,GAn1lBpC,GAq1lBoB9kpB,OAAOqI,SAAS1uB,GAAMgqC,UAAWmhoB,GAAY,EAAI,KAC/E,GAAIA,GACAV,GAAmB/snB,QACnBk5kB,GAAgBF,MAAyB,OAExC,CACD,MAAMnD,GAAQqzC,GAAuBp1C,EAAOi5C,GAAmB,GAAInmqB,IACnEmmqB,GAAmB7umB,QAAQ,IAC3Bg7jB,GAAgBrD,IAAO,EAC1B,CACJ,CACJ,CACD/B,EAAMn6mB,KAAK/S,GAAS,CAChB2f,OAAQumpB,GACR9qmB,OAAQ0omB,GAEf,CAaD,SAAS8C,EAAwB15C,EAAO6gC,EAAW+Y,EAAgBt2C,EAAO01C,EAAer6pB,EAAMk7pB,IAC3F,MAAMC,GAAcnkB,GAAa31B,EAAOsD,EAAO,EAAG,MAClD,IAAI2zB,GAAS6iB,IAAe1F,GAAiB/1iB,MACzCwogB,GAAc3B,KACd27B,IAAch6B,KAIdA,GAAc,MAEE,OAAhBA,KAKAowB,IAAUmd,GAAiBC,gBAE3BwF,KACA5iB,IAAUmd,GAAiB9rV,QA77XnC,SAASyxV,GAAgC32O,QACR/nb,IAAzB0poB,KAGAA,GAAuB3hN,IAE9B;;;;;;;OAw7XO22O,CAAgCjC,KAEpCkB,EAAc12pB,KAAK20oB,GAAiB,OAATt4oB,EAAgB,GAAKA,GAGhD,MAAMojnB,GAAQ4yB,GAAmB30B,EAAO85C,GAAaD,GAAQ,GAAyB,EAAiC,OAATl7pB,EAAuC,GAAMA,EAAM,MACjKg2pB,GAAmCiF,EAAgB73C,IACnD,MAAM6lC,GAAW7lC,GAAMjvnB,MACvBsynB,UAAgBrD,IAAO,GACH,OAAhB8E,IAAwBg6B,IAAch6B,IAt3B9C,SAASmzC,GAA0Bj4C,EAAOjvnB,GAEtC,IAAIgipB,EAAoB/yB,EAAM+yB,kBACJ,OAAtBA,GACA3L,GAAgBC,GAAiCC,IACjDyL,EAAoB/yB,EAAM+yB,kBACtB,CAAC,KAA2ChipB,KAGhD4onB,GAAYj0nB,MAAMkuB,QAAQm/nB,IAAoB,EAAM,wBACpDA,EAAkBxyoB,KAAKxP,GAE9B,CA62BOknqB,CAA0BnzC,GAAa+gC,IAEpC7lC,EACV,CAoBD,SAASy3C,EAAwCx5C,EAAO6gC,EAAW+Y,EAAgBZ,EAAepC,EAAetzC,EAAO3knB,IACpH,MAAMs7pB,GAAat7pB,GAAKwa,MAAMm/oB,IACxBv2C,GAAQ23C,EAAwB15C,EAAO6gC,EAAW+Y,EAAgBt2C,EAAO01C,EAAeiB,GAAa,KAAOt7pB,IAAM,GACpHs7pB,IACAC,EAA6BtD,EAAej4pB,GAAMojnB,GAAMjvnB,MAAO,KAAM,EAAG,KAE/E,CA6CD,SAASonqB,EAA6BtD,EAAenwqB,EAAK0zqB,EAAiBnta,EAAUota,EAAcpD,GAG/F,MAAMqD,GAAYzD,EAAchwqB,OAC1B0zqB,GAAYD,GAAY,EAC9BzD,EAAct0pB,KAAK,KAAM,MACzB,MAAMolC,GAAa2ynB,GAAY,EAIzBE,GAAY9zqB,EAAI4B,MAAMiwqB,IAC5B,IAAIlpe,GAAO,EACX,QAAS94J,GAAI,EAAGA,GAAIikoB,GAAU3zqB,OAAQ0vC,KAAK,CACvC,MAAMkkoB,GAAYD,GAAUjkoB,IAC5B,GAAQ,EAAJA,GAAO,CAEP,MAAMqvlB,GAAey0C,EAAel9oB,SAASs9oB,GAAW,IACxD5D,EAAct0pB,MAAK,EAAKqjnB,IACxBv2b,IAAcqre,GAAU90C,GAC3B,KACsB,KAAd60C,IAEL5D,EAAct0pB,KAAKk4pB,GAE1B,CACD5D,SAAct0pB,KAAK63pB,GAAmB,GACjCnta,EAAW,EAAgC,IAC5CA,GACA4pa,EAAct0pB,KAAK0qP,EAAUgqa,GAEjCJ,EAAcyD,IAAajre,GAC3Bwne,EAAc0D,IAAa1D,EAAchwqB,OAAS8gD,GAC3C0nJ,EACV,CAYD,SAASsre,GAAcC,GACnB,IAAI7/nB,EAAQ,EACZ,QAASh/B,EAAI,EAAGA,EAAI6+pB,EAAQ/zqB,OAAQkV,IAAK,CACrC,MAAMm7oB,EAAS0jB,EAAQ7+pB,GAED,iBAAXm7oB,GAAuBA,EAAS,GACvCn8mB,GAEP,CACD,OAAOA,CACV,CASD,SAAS2/nB,GAAU90C,GACf,OAAO,GAAK3qmB,KAAK9Z,IAAIyknB,EAAc,GACtC,CAOD,SAASyzC,GAA+BjzpB,GACpC,IAAIgT,EAIAyhpB,EAHAhuV,EAAM,GACN95U,EAAQ,EACR+nqB,GAAa,EAEjB,KAAsD,QAA9C1hpB,EAAQu/oB,EAAmBh9mB,KAAKv1C,KAC/B00pB,EAMG1hpB,EAAM,KAAQ,WAAayhpB,YAC3B9nqB,EAAQqmB,EAAMrmB,MACd+nqB,GAAa,IAPjBjuV,GAAOzmU,EAAQqyB,UAAU1lC,EAAOqmB,EAAMrmB,MAAQqmB,EAAM,GAAGvyB,QACvDg0qB,EAAazhpB,EAAM,GACnB0hpB,GAAa,GAWrBjuV,UAAOzmU,EAAQne,MAAM8K,GACd85U,CACV,CAoCD,SAAS6sV,GAASz5C,EAAOsD,EAAOszC,EAAeT,EAAWoB,EAAehB,GAErE,IAAIuE,GAAc,EAClB,MAAMxF,GAAO,CACTvwpB,KAAMwypB,EAAcxypB,KACpBywpB,sBAAuB7f,GAAa31B,EAAOsD,EAAO,EAAG,MACrDizC,YACA7zD,MAAO,GACPjwlB,OAAQ,GACRxU,OAAQ,GACRiwD,OAAQ,KAqOhB,SAAS6smB,GAAmB7smB,EAAQqpmB,EAAezkqB,GAC/Co7D,EAAO5rD,KAAKm4pB,GAAUlD,EAAcyD,aAAc,GAAG,EAAKzD,EAAcyD,YAAaloqB,GAAS,EAAqC,EACtI,EArOGioqB,CAAmBnE,EAAeW,EAAehB,GApmCrD,SAAS0E,GAAQj7C,EAAOltnB,EAAOwiqB,GAC3B,MAAMvzC,EAAQ/B,EAAMn6mB,KAAK/S,GAGX,OAAVivnB,EACA/B,EAAMn6mB,KAAK/S,GAASwiqB,EAIpBvzC,EAAMvznB,MAAQ8mqB,CAErB,CA0lCG2F,CAAQj7C,EAAOu2C,EAAWjB,IAC1B,MAAMl0oB,GAASm2oB,EAAcn2oB,OAC7B,QAAStlB,GAAI,EAAGA,GAAIslB,GAAOx6B,OAAQkV,KAAK,CAEpC,MAAMo/pB,GAAW95oB,GAAOtlB,IAClBq/pB,GAAa,GACnB,QAAS7koB,GAAI,EAAGA,GAAI4koB,GAASt0qB,OAAQ0vC,KAAK,CACtC,MAAM9nC,GAAQ0sqB,GAAS5koB,IACvB,GAAqB,iBAAV9nC,GAAoB,CAE3B,MAAM4sqB,GAAWD,GAAW74pB,KAAK9T,IAAS,EAE1C0sqB,GAAS5koB,IAAM,gBAAO8koB,gBACzB,CACJ,CACDN,GAAcO,GAAar7C,EAAOs1C,GAAMhyC,EAAOszC,EAAeT,EAAWoB,EAAc70D,MAAM5mmB,IAAIo/pB,GAASjzqB,KAAK,IAAKkzqB,IAChHL,EACP,CACGA,IAmNR,SAASQ,GAAmBptmB,EAAQ4smB,EAAahoqB,GAC7Co7D,EAAO5rD,KAAKw4pB,EAAa,EAAGhoqB,GAAS,EAAqC,EAC7E,CApNOwoqB,CAAmB1E,EAAekE,GAAavE,EAEtD,CAQD,SAASgF,GAAc3jjB,GACnB,MAAM8qf,EAAQ,GACRthlB,EAAS,GACf,IAAIo6oB,EAAU,EACVR,EAAc,EAWlB,MAAM5yqB,EAAQmxqB,GAVd3hjB,EAAUA,EAAQjxH,QAAQ8xqB,GAAkB,SAAUhyqB,GAAK4hjB,GAAStjiB,IAChE,OACIy2pB,EADS,WAATz2pB,GACU,EAGA,EAEdi2pB,EAAc99oB,SAASmrhB,GAAQrgjB,MAAM,GAAI,IAClC,EACV,IAGD,QAAS6kC,GAAM,EAAGA,GAAMzkC,EAAMxB,QAAS,CACnC,IAAIs5B,GAAM93B,EAAMykC,MAAOz0B,OACP,IAAZojqB,IAEAt7oB,GAAMA,GAAIv5B,QAAQ,oBAAqB,OAEvCu5B,GAAIt5B,QACJ87mB,EAAMpgmB,KAAK4d,IAEf,MAAM0uG,GAAS2qiB,GAA6BnxqB,EAAMykC,OAC9C61kB,EAAM97mB,OAASw6B,EAAOx6B,QACtBw6B,EAAO9e,KAAKssH,GAEnB,CAED,MAAO,CAAE7pH,KAAMy2pB,EAASR,YAAaA,EAAat4D,QAAOthlB,SAC5D,CAWD,SAASm4oB,GAA6B3hjB,GAClC,IAAKA,EACD,MAAO,GAEX,IAAI6jjB,EAAU,EACd,MAAMC,EAAa,GACb7iT,EAAU,GACV8iT,EAAS,QAGf,IAAIxipB,EACJ,IAFAwipB,EAAOl/pB,UAAY,EAEZ0c,EAAQwipB,EAAOjgnB,KAAKk8D,IAAU,CACjC,MAAM/qF,GAAM1T,EAAMrmB,MAClB,GAAgB,KAAZqmB,EAAM,IAEN,GADAuipB,EAAW9knB,MACc,GAArB8knB,EAAW90qB,OAAa,CAExB,MAAMqpI,GAAQrY,EAAQp/E,UAAUijoB,EAAS5uoB,IACrC4roB,GAAiBztqB,KAAKilI,IACtB4oP,EAAQv2W,KAAKi5pB,GAActriB,KAG3B4oP,EAAQv2W,KAAK2tH,IAEjBwriB,EAAU5uoB,GAAM,CACnB,MAEA,CACD,GAAyB,GAArB6uoB,EAAW90qB,OAAa,CACxB,MAAM4xC,GAAYo/E,EAAQp/E,UAAUijoB,EAAS5uoB,IAC7CgsV,EAAQv2W,KAAKk2B,IACbijoB,EAAU5uoB,GAAM,CACnB,CACD6uoB,EAAWp5pB,KAAK,IACnB,CACJ,CACD,MAAMk2B,GAAYo/E,EAAQp/E,UAAUijoB,GACpC5iT,SAAQv2W,KAAKk2B,IACNqgV,CACV,CAKD,SAASwiT,GAAar7C,EAAOs1C,EAAMhyC,EAAOszC,EAAeT,EAAWyF,EAAUC,GAAgBV,IAC1F,MAAM1opB,GAAS,GACTxU,GAAS,GACTiwD,GAAS,GAMfonmB,EAAK5yD,MAAMpgmB,KAAKs5pB,GAChBtG,EAAK7ipB,OAAOnQ,KAAKmQ,IACjB6ipB,EAAKr3pB,OAAOqE,KAAKrE,IACjBq3pB,EAAKpnmB,OAAO5rD,KAAK4rD,IAEjB,MAAMyskB,GADkBT,GAAmB78O,MACFm9O,oBAAoBqhC,IAEvDC,GAAgB1+B,GAAmBzC,KAAqBA,GAC9D,OAAImhC,GACOC,GAAY/7C,EAAOs1C,EAAMhyC,EAAOszC,EAAenkpB,GAAQxU,GAAQiwD,GAAQ4tmB,GAAe3F,EAAWgF,GAAY,GAG7G,CAEd,CACD,SAASY,GAAY/7C,EAAOs1C,EAAMhyC,EAAO04C,EAAqBvppB,EAAQxU,EAAQiwD,GAAQ1+D,GAAY2mqB,GAAWgF,GAAYp7oB,IACrH,IAAI+6oB,GAAc,EACdn6c,GAAcnxN,GAAWqJ,WAC7B,KAAO8nN,IAAa,CAChB,MAAM2S,GAAWqib,GAAa31B,EAAOsD,EAAO,EAAG,MAC/C,OAAQ3ia,GAAY7xN,eACXsgF,KAAK6/N,aACN,MAAMjgT,GAAU2xN,GACV7qN,GAAU9G,GAAQ8G,QAAQuL,cAChC,GAAIu6nB,GAAelzoB,eAAeoN,IAAU,CACxCmmqB,GAAuBxppB,EAAQyhpB,GAAgBp+pB,GAASqgqB,GAAW7ic,IACnE0sZ,EAAMn6mB,KAAKytN,IAAYx9N,GACvB,MAAMiloB,GAAU/roB,GAAQ49I,WACxB,QAAS9wI,GAAI,EAAGA,GAAIi/nB,GAAQn0oB,OAAQkV,KAAK,CACrC,MAAMk0E,GAAO+qjB,GAAQjunB,KAAKhR,IACpBogqB,GAAgBlslB,GAAKjiF,KAAKsT,cACX2uE,GAAKxhF,MAAM2qB,MAAMm/oB,IAG9Br8B,GAAYvzoB,eAAewzqB,MACvBrgC,GAAUqgC,IACVhC,EAA6BhsmB,GAAQ8hB,GAAKxhF,MAAO8kO,GAAUtjJ,GAAKjiF,KAAM,EAAGktoB,IAEpEa,GAAaogC,IAClBhC,EAA6BhsmB,GAAQ8hB,GAAKxhF,MAAO8kO,GAAUtjJ,GAAKjiF,KAAM,EAAGmtoB,IAGzEg/B,EAA6BhsmB,GAAQ8hB,GAAKxhF,MAAO8kO,GAAUtjJ,GAAKjiF,KAAM,EAAG,OAWjFouqB,GAAmB1ppB,EAAQ6gN,GAAUtjJ,GAE5C,CAED8qlB,GAAciB,GAAY/7C,EAAOs1C,EAAMhyC,EAAO04C,EAAqBvppB,EAAQxU,EAAQiwD,GAAQyyJ,GAAa2S,GAAU6nc,GAAYp7oB,GAAQ,GAClI+6oB,GACJsB,GAAcn+pB,EAAQq1N,GAAUvzM,GACnC,CACD,WACCqvD,KAAKkgO,UACN,MAAM9gT,GAAQmyN,GAAYxoN,aAAe,GACnC8hqB,GAAazrqB,GAAM2qB,MAAMm/oB,IAC/B2D,GAAuBxppB,EAAQ,KAAMwnpB,GAAa,GAAKzrqB,GAAO2nqB,GAAW7ic,IACzE8oc,GAAcn+pB,EAAQq1N,GAAUvzM,IAC5Bk6oB,KACAa,GACIZ,EAA6BhsmB,GAAQ1/D,GAAO8kO,GAAU,KAAM,EAAG,MAAQwnc,IAE/E,WACC1rlB,KAAKigO,aAEN,MAAMgtX,GAAc7D,GAAW98mB,KAAKilK,GAAYxoN,aAAe,IAC/D,GAAIkkqB,GAAa,CACb,MACM9E,GAAgB4D,GADCj+oB,SAASm/oB,GAAY,GAAI,KAGhDJ,GAAuBxppB,EAAQ0hpB,GAAyD,GAAIgC,GAAW7ic,IACvGmmc,GAASz5C,EAAOsD,EAAO04C,EAAqB7F,GAAWoB,GAAejkc,IACtEgpc,GAAmBr+pB,EAAQq1N,GAAUvzM,GACxC,EAGT4gM,GAAcA,GAAYmzC,WAC7B,CACD,OAAOgna,EACV,CACD,SAASsB,GAAcn+pB,EAAQnL,EAAOitB,GACpB,IAAVA,GACA9hB,EAAOqE,KAAKxP,EAEnB,CACD,SAASwpqB,GAAmBr+pB,EAAQnL,EAAOitB,GACzB,IAAVA,IACA9hB,EAAOqE,MAAMxP,GACbmL,EAAOqE,KAAKxP,GAEnB,CAOD,SAASmpqB,GAAuBxppB,EAAQykB,EAAQv4B,EAAM49pB,EAAmBC,GACtD,OAAXtloB,GACAzkB,EAAOnQ,KAAK40B,GAEhBzkB,EAAOnQ,KAAK3D,EAAM69pB,EApxCtB,SAASC,GAAgBxlB,EAAQkf,EAAWE,GAGxC,OAAOpf,EAASkf,GAAa,GAAwCE,GAAU,CAClF,CAgxCkCoG,CAAgB,EAAqCF,EAAmBC,GAC1G,CACD,SAASL,GAAmB1ppB,EAAQ6gN,EAAUtjJ,GAC1Cv9D,EAAOnQ,KAAKgxN,GAAY,EAAoC,EAA8BtjJ,EAAKjiF,KAAMiiF,EAAKxhF,MAC7G;;;;;;;OAUD,MACMkuqB,GAAqC,yBACrCC,GAAyB,qDACzBC,GAAqB,4CACrBC,GAA6B,kBAC7BC,GAAiB,qCACjBC,GAA2B,OAC3BC,GAAwB;;;;;;;;AA0I9B,SAASC,GAAYnqqB,EAAOoqqB,EAAcnE,GAAmB,GACzD,MAAM/4C,EAAQ0E,KACRpB,EAAQmB,KACR+gC,EA1/mBY,GA0/mBoB1ypB,EAEhCqT,GAAU09mB,GAAY7D,EAAMb,OAAQ+9C,GACpCr2C,GAAc3B,KAChBlF,EAAM2L,iBACNktC,EAAyB74C,EAAuB,OAAhB6G,GAAuB,EAAIA,GAAY/znB,MAAOwwnB,EAAOkiC,EAAer/oB,GAAS4ypB,GAEjH,MAAMoE,GAAQn9C,EAAMn6mB,KAAK2/oB,GAEnBhc,GAAcb,GAAmB3oB,EADX6G,KAAgBvD,EA1hnBjC,GA0hnBiD,KAAOuD,GACAvD,GAG7D8yC,GAAkBvvC,IAAmC,EAAnBA,GAAY9hnB,KAChDu+mB,EAAMuD,GAAY/znB,OAClB,MA93CR,SAASsqqB,GAAmB95C,EAAO01C,EAAexvB,EAAa4sB,GAC3D,MAAMnlqB,EAAWqynB,EA9pkBJ,IA+pkBb,QAASxnnB,EAAI,EAAGA,EAAIk9pB,EAAcpyqB,OAAQkV,IAAK,CAC3C,MAAMm7oB,GAAS+hB,EAAcl9pB,KACvB6C,GAAOq6pB,EAAcl9pB,GACrBuhqB,IAAapmB,GAASmd,GAAiB9rV,WAAa8rV,GAAiB9rV,QACrEg1V,IAAarmB,GAASmd,GAAiBC,kBAAoBD,GAAiBC,eAC5EvhqB,GAAQmkpB,KAAWmd,GAAiB/1iB,MAC1C,IAAIunhB,GAAQtiB,EAAMxwnB,IACJ,OAAV8yoB,KAGAA,GAAQtiB,EAAMxwnB,IACVuqqB,GAAYpsqB,EAASq1oB,cAAc3noB,IAAQ41P,GAAetjQ,EAAU0N,KAExE2+pB,IAA6B,OAAhB9zB,GACb1D,GAAmB70oB,EAAUu4oB,EAAa5D,GAAOwwB,GAAiB,EAEzE,CACJ,EA42CGgH,CAAmB95C,EAAO65C,GAAM1qpB,OAAQ+2nB,GAAa4sB,IACrDrwC,IAAe,EAClB,CAOD,SAASw3C,KACLx3C,IAAe,EAClB,CA2BD,SAASy3C,GAAO1qqB,EAAOoqqB,EAAcnE,GACjCkE,GAAYnqqB,EAAOoqqB,EAAcnE,GACjCwE,IACH,CASD,SAASE,GAAiB3qqB,EAAOwypB,GAC7B,MAAMtlC,EAAQ0E,MA1oBlB,SAASg5C,EAAwB19C,EAAOltnB,EAAOsuB,GAE3C,MAAMu8oB,EADkB54C,KACqBjynB,MACvC8jqB,EAAgB,GAItB,GAAI52C,EAAM2L,iBAAyC,OAAtB3L,EAAMn6mB,KAAK/S,GAAiB,CACrD,QAASgJ,GAAI,EAAGA,GAAIslB,EAAOx6B,OAAQkV,IAAK,EAAG,CACvC,MAAMkxP,GAAW5rO,EAAOtlB,IAClBqK,GAAUib,EAAOtlB,GAAI,GAC3B,GAAgB,KAAZqK,GAAgB,CAMhB,GAAIoypB,GAAWvtqB,KAAKmb,IAChB,MAAM,IAAItf,MAAO,8DAA6Dsf,QAMlF+zpB,EAA6BtD,EAAezwpB,GAASw3pB,EAAsB3wa,GAAU0ta,GAAc9D,GAAgB,KACtH,CACJ,CACD52C,EAAMn6mB,KAAK/S,GAAS8jqB,CACvB,CACJ,CAgnBG8G,CAAwB19C,EAAOltnB,EA/jnBb,GA8jnBJ+wnB,GAAY7D,EAAMb,OAAQmmC,GAE3C,CAWD,SAASsY,GAAUpvqB,GAEfqvqB,OAj+CJ,SAASA,GAAWh4f,GACZA,IACA+vf,IAA2B,GAAK56oB,KAAK9Z,IAAI20pB,GAAmB,KAEhEA,IACH,CA49CGgI,CAAW/a,GADGr+B,KACmBoB,KAAoBr3nB,IAC9CovqB,EACV,CASD,SAASE,GAAYhrqB,IAt+CrB,SAASirqB,GAAU/9C,EAAOsD,EAAOxwnB,GAC7B,GAAI+iqB,GAAoB,EAAG,CAEvB,MAAMsH,EAAQn9C,EAAMn6mB,KAAK/S,GAIzB6jqB,GAAmB32C,EAAOsD,EAFJ77nB,MAAMkuB,QAAQwnpB,GAASA,EAAQA,EAAMjvmB,OAChCw3jB,KAAoBmwC,GAAoB,EACCD,GACvE,CAEDA,GAAa,EACbC,GAAoB,CACvB,CA29CGkI,CAAUr5C,KAAYD,KAAY3xnB,EAzlnBhB,GA0lnBrB,CAqBD,SAASkrqB,GAAkB73pB,EAAS83pB,EAAe,IAC/C,OA9OJ,SAASC,GAAgB/3pB,EAAS83pB,EAAe,IAW7C,IAAI/lpB,EAAS/R,EACb,GAAIu2pB,GAAmC1xqB,KAAKmb,GAAU,CAClD,MAAMjX,EAAU,GACVivqB,EAAmB,CA1CR,GA2CjBjmpB,EAASA,EAAOvxB,QAAQg2qB,GAAwB,CAACjxe,EAAG0ye,GAAKp+nB,MACrD,MAAMj4B,GAAUq2pB,IAAOp+nB,GACjBq+nB,GAAenvqB,EAAQ6Y,KAAY,GAUzC,GATKs2pB,GAAaz3qB,SACdmhB,GAAQ1f,MAAM,KAAK0O,QAAS84L,KACxB,MAAM12K,GAAQ02K,GAAY12K,MAAM6jpB,IAC1BsB,GAAanlpB,GAAQ+D,SAAS/D,GAAM,GAAI,IAjDzC,EAkDColpB,GAAqBxB,GAAyB/xqB,KAAK6kM,IACzDwue,GAAa/7pB,KAAK,CAACg8pB,GAAYC,GAAoB1ue,IAAnD,GAEJ3gM,EAAQ6Y,IAAWs2pB,KAElBA,GAAaz3qB,OACd,MAAM,IAAIC,MAAO,6CAA4CkhB,MAEjE,MAAMy2pB,GAAoBL,EAAiBA,EAAiBv3qB,OAAS,GACrE,IAAIQ,GAAM,EAEV,QAAS0U,GAAI,EAAGA,GAAIuiqB,GAAaz3qB,OAAQkV,KACrC,GAAIuiqB,GAAaviqB,IAAG,KAAO0iqB,GAAmB,CAC1Cp3qB,GAAM0U,GACN,KACH,CAGL,MAAOwiqB,GAAYC,GAAoB1ue,IAAewue,GAAaj3qB,IACnE,OAAIm3qB,GACAJ,EAAiBvnnB,MAEZ4nnB,KAAsBF,IAC3BH,EAAiB77pB,KAAKg8pB,IAG1BD,GAAalxnB,OAAO/lD,GAAK,GAClByoM,IAEd,CAED,OAAKlqL,OAAOsa,KAAKg+oB,GAAcr3qB,SAM/BsxB,EAASA,EAAOvxB,QAAQi2qB,GAAoB,CAACzjpB,EAAOlY,EAAOif,EAAKioK,GAAOs2e,GAAMr9pB,KAClE68pB,EAAav1qB,eAAew3B,GAAQ,GAAEjf,IAAQg9pB,EAAa/9oB,KAAO9e,KAAQ+X,GAKrFjB,EAASA,EAAOvxB,QAAQk2qB,GAA4B,CAAC1jpB,EAAO+G,IACjD+9oB,EAAav1qB,eAAew3B,GAAO+9oB,EAAa/9oB,GAAO/G,GAMlEjB,EAASA,EAAOvxB,QAAQm2qB,GAAgB,CAAC3jpB,EAAO+G,KAC5C,GAAI+9oB,EAAav1qB,eAAew3B,GAAM,CAClC,MAAM6lJ,EAAOk4f,EAAa/9oB,GAC1B,IAAK6lJ,EAAKn/K,OACN,MAAM,IAAIC,MAAO,qCAAoCsyB,eAAmB+G,KAE5E,OAAO6lJ,EAAK75H,OACf,CACD,OAAO/yB,KAEJjB,CACV,CA2JUgmpB,CAAgB/3pB,EAAS83pB,EACnC;;;;;;;;;;;;;;OAgDD,SAASS,GAAgBj/B,EAAUrR,EAAcuwC,EAAuBh5B,EAAa/b,GAEjF,GADA6V,EAAWvkB,GAAkBukB,GACzBh4oB,MAAMkuB,QAAQ8pnB,GAId,QAAS3joB,EAAI,EAAGA,EAAI2joB,EAAS74oB,OAAQkV,IACjC4iqB,GAAgBj/B,EAAS3joB,GAAIsynB,EAAcuwC,EAAuBh5B,EAAa/b,OAGlF,CACD,MAAM5J,EAAQ0E,KACRpB,GAAQmB,KACd,IAAIt8nB,GAAQk4oB,GAAeZ,GAAYA,EAAWvkB,GAAkBukB,EAAShzoB,SACzEmyqB,GAAkB78B,GAAkBtC,GACxC,MAAM1d,GAAQgD,KACR85C,GAAqC,QAAxB98C,GAAMoM,gBACnBxmlB,GAAWo6kB,GAAMwG,eACjBgG,GAAwBxM,GAAMoM,iBAAmB,GACvD,GAAIkS,GAAeZ,KAAcA,EAAS7yoB,MAAO,CAE7C,MAAMpD,GAAU,IAAImgoB,GAAoBi1C,GAAiBh1C,EAAgB4pB,IACnEsrB,GAAuBv3qB,GAAQY,GAAOimoB,EAAcxE,EAAiBi1C,GAAaA,GAAatwC,GAAuB5mlB,KAC/F,IAAzBm3nB,IACAzyC,GAAmBb,GAA+BzJ,GAAOuB,IAAQtD,EAAO73nB,IACxE42qB,GAAgC/+C,EAAOyf,EAAUrR,EAAaxnoB,QAC9DwnoB,EAAa9rnB,KAAKna,IAClB45nB,GAAMwG,iBACNxG,GAAMyG,eACFoB,IACA7H,GAAMoM,iBAAmB,SAE7BwwC,EAAsBr8pB,KAAK9Y,IAC3B85nB,GAAMhhnB,KAAK9Y,MAGXm1qB,EAAsBG,IAAwBt1qB,GAC9C85nB,GAAMw7C,IAAwBt1qB,GAErC,KACI,CAqBD,MAAMw1qB,GAAgCz3qB,GAAQY,GAAOimoB,EAAcywC,GAAatwC,GAAuB5mlB,IACjGs3nB,GAAoC13qB,GAAQY,GAAOimoB,EAAcywC,GAAYA,GAAatwC,IAC1F2wC,GAA4BF,IAAiC,GAC/DL,EAAsBK,IACpBG,GAAgCF,IAAqC,GACvEN,EAAsBM,IAC1B,GAAIr1C,IAAmBu1C,KAClBv1C,IAAmBs1C,GAA2B,CAE/C7yC,GAAmBb,GAA+BzJ,GAAOuB,IAAQtD,EAAO73nB,IACxE,MAAMqB,GAgItB,SAAS41qB,GAAa/uB,EAAWv9oB,EAAO82nB,EAAgB+b,EAAaj3oB,GACjE,MAAMlF,EAAU,IAAImgoB,GAAoB0mB,EAAWzmB,EAAgB4pB,IACnEhqpB,SAAQoD,MAAQ,GAChBpD,EAAQsJ,MAAQA,EAChBtJ,EAAQ61qB,mBAAqB,EAC7BC,GAAgB91qB,EAASkF,EAAGi3oB,IAAgB/b,GACrCpgoB,CACV,CAvI+B41qB,CAAax1C,EAAiB21C,GAAoCC,GAA+Bb,EAAsB/3qB,OAAQgjoB,EAAgB+b,EAAai5B,KACvKh1C,GAAkBu1C,KACnBR,EAAsBM,IAAmCL,gBAAkBp1qB,IAE/Eu1qB,GAAgC/+C,EAAOyf,EAAUrR,EAAaxnoB,OAAQ,GACtEwnoB,EAAa9rnB,KAAKna,IAClB45nB,GAAMwG,iBACNxG,GAAMyG,eACFoB,IACA7H,GAAMoM,iBAAmB,SAE7BwwC,EAAsBr8pB,KAAK9Y,IAC3B85nB,GAAMhhnB,KAAK9Y,GACd,KACI,CAIDu1qB,GAAgC/+C,EAAOyf,EAAUu/B,IAAgC,EAAKA,GAClFC,GAHmBK,GAAgBX,EAAsB/0C,EAAiBq1C,GAC1ED,IAAgCJ,IAAkBh1C,GAAkB+b,GAG3E,EACI/b,GAAkB+b,GAAew5B,IAClCR,EAAsBM,IAAmCI,oBAEhE,CACJ,CACJ,CASD,SAASN,GAAgC/+C,EAAOyf,EAAUggC,EAAcC,GACpE,MAAMC,EAAyBt/B,GAAeZ,GACxCmgC,EA39cV,SAASC,GAAgBrxqB,GACrB,QAASA,EAAM7B,QAClB,CAy9cmCkzqB,CAAgBpgC,GAChD,GAAIkgC,GAA0BC,EAAyB,CAInD,MAAMzoqB,IAFayoqB,EAA0B1kD,GAAkBukB,EAAS9yoB,UAAY8yoB,GACvD/3oB,UACCyP,YAC9B,GAAIA,GAAa,CACb,MAAM+mkB,GAAQ8hD,EAAM8I,eAAiB9I,EAAM8I,aAAe,IAC1D,IAAK62C,GAA0BlgC,EAAS7yoB,MAAO,CAG3C,MAAMkzqB,GAAyB5hG,GAAM32kB,QAAQk4qB,IACd,IAA3BK,GACA5hG,GAAM57jB,KAAKm9pB,EAAc,CAACC,EAAgBvoqB,KAG1C+mkB,GAAM4hG,GAAyB,GAAGx9pB,KAAKo9pB,EAAgBvoqB,GAE9D,MAEG+mkB,GAAM57jB,KAAKm9pB,EAActoqB,GAEhC,CACJ,CACJ,CAKD,SAASmoqB,GAAgBF,EAAc51qB,EAASu2qB,GAC5C,OAAIA,GACAX,EAAaC,qBAEVD,EAAaxyqB,MAAM0V,KAAK9Y,GAAW,CAC7C,CAID,SAASjC,GAAQulB,EAAM4T,EAAKiyK,EAAOvxL,GAC/B,QAAStF,EAAI62L,EAAO72L,EAAIsF,EAAKtF,IACzB,GAAI4kB,EAAI5kB,KAAOgR,EACX,OAAOhR,EAEf,OAAO,CACV,CAID,SAAS0jqB,GAA8B/5f,EAAG6gd,EAAO05C,EAAOj+C,GACpD,OAAOk+C,GAAa35qB,KAAKsG,MAAO,GACnC,CAMD,SAAS2yqB,GAAkC95f,EAAG6gd,EAAOhD,EAAOvB,GACxD,MAAMm+C,EAAY55qB,KAAKsG,MACvB,IAAIsrB,EACJ,GAAI5xB,KAAKs4qB,gBAAiB,CACtB,MAAMuB,GAAiB75qB,KAAKs4qB,gBAAgBS,mBACtCe,GAAiBryC,GAAkBzK,EAAOA,EAv2nB1C,GAu2nBwDh9nB,KAAKs4qB,gBAAgB9rqB,MAAOivnB,GAE1F7pmB,EAASkopB,GAAep4qB,MAAM,EAAGm4qB,IAEjCF,GAAaC,EAAWhopB,GAExB,QAASpc,GAAIqkqB,GAAgBrkqB,GAAIskqB,GAAex5qB,OAAQkV,KACpDoc,EAAO5V,KAAK89pB,GAAetkqB,IAElC,MAEGoc,EAAS,GAET+npB,GAAaC,EAAWhopB,GAE5B,OAAOA,CACV,CAID,SAAS+npB,GAAaC,EAAWhopB,GAC7B,QAASpc,EAAI,EAAGA,EAAIokqB,EAAUt5qB,OAAQkV,IAAK,CACvC,MAAMtS,EAAU02qB,EAAUpkqB,GAC1Boc,EAAO5V,KAAK9Y,IACf,CACD,OAAO0uB,CACV,CA6CD,SAASmopB,GAAmB7zqB,EAAW8zqB,EAAgB,IACnD,OAAQ3vlB,IACJA,EAAWsuiB,kBACP,CAACngX,EAAKyha,IAhQlB,SAASthD,GAAkBngX,EAAKtyQ,EAAW8zqB,GACvC,MAAMtgD,EAAQ0E,KACd,GAAI1E,EAAM2L,gBAAiB,CACvB,MAAMga,EAAczjB,GAAepjX,GAEnC4/Z,GAAgB4B,EAAetgD,EAAMn6mB,KAAMm6mB,EAAM8L,UAAW6Z,GAAa,GAEzE+4B,GAAgBlyqB,EAAWwznB,EAAMn6mB,KAAMm6mB,EAAM8L,UAAW6Z,GAAa,EACxE,CACJ,CAwPsB1mB,CAAkBngX,EACzByha,EAAqBA,EAAmB/zqB,GAAaA,EACrD8zqB,EAFwB,CAKvC;;;;;;;OAeD,MAAME,IAaN,MAAMC;;;;;;;OAoBN,SAASn7D,GAAe/4mB,EAAU0lN,GAC9B,OAAO,IAAI0zZ,GAAYp5mB,EAAU0lN,GAAkB,KACtD,CAQD,MAAM0zZ,WAAoB66D,GACtBp6qB,YAAY0xoB,EAAcnrX,GACtBpoQ,QACAje,KAAKqmR,QAAUA,EAEfrmR,KAAKo6qB,qBAAuB,GAC5Bp6qB,KAAKq6qB,WAAa,GAOlBr6qB,KAAKywO,yBAA2B,IAAI4nb,GAAyBr4pB,MAC7D,MAAM06nB,EAAcC,GAAe6W,GAGnCxxoB,KAAKo6qB,qBAAuB57B,GAAc9jB,EAAYJ,WACtDt6nB,KAAKs6qB,YAAclyB,GAAuC5W,EAAcnrX,EAAS,CAC7E,CAAElgR,QAAS+zqB,GAAe1zqB,SAAUxG,MAAQ,CACxCmG,QAASq2oB,GACTh2oB,SAAUxG,KAAKywO,2BAEpB8T,GAAUitZ,GAAe,IAAIl2mB,IAAI,CAAC,iBAIrCt7B,KAAKs6qB,YAAYh/B,8BACjBt7oB,KAAK0gB,SAAW1gB,KAAKs6qB,YAAYv6pB,IAAIyxnB,EACxC,CACG3rd,eACA,OAAO7lL,KAAKs6qB,WACf,CACDntpB,UAEI,MAAM04J,EAAW7lL,KAAKs6qB,aACrBz0f,EAASrhB,WAAaqhB,EAAS14J,UAChCntB,KAAKq6qB,WAAW5pqB,QAAQ+f,GAAMA,KAC9BxwB,KAAKq6qB,WAAa,IACrB,CACDjuE,UAAU35lB,GAENzS,KAAKq6qB,WAAWr+pB,KAAKvJ,EACxB,EAEL,MAAM8nqB,WAAwBJ,GAC1Br6qB,YAAY06qB,GACRv8pB,QACAje,KAAKw6qB,WAAaA,CACrB,CACDrupB,OAAOw/L,GACH,OAAO,IAAI0zZ,GAAYr/mB,KAAKw6qB,WAAY7ud,EAC3C,EAEL,MAAM8ud,WAAsCP,GACxCp6qB,YAAYoG,EAAWyxB,EAAQhH,GAC3B1S,QACAje,KAAKywO,yBAA2B,IAAI4nb,GAAyBr4pB,MAC7DA,KAAK0gB,SAAW,KAChB,MAAMmlK,EAAW,IAAIy0d,GAAW,IACzBp0oB,EACH,CAAEC,QAAS+zqB,GAAe1zqB,SAAUxG,MACpC,CAAEmG,QAASq2oB,GAA4Bh2oB,SAAUxG,KAAKywO,2BACvD94M,GAAUyinB,KAAmBzpnB,EAAQ,IAAI2K,IAAI,CAAC,iBACjDt7B,KAAK6lL,SAAWA,EAChBA,EAASy1d,6BACZ,CACDnunB,UACIntB,KAAK6lL,SAAS14J,SACjB,CACDi/kB,UAAU35lB,GACNzS,KAAK6lL,SAASumb,UAAU35lB,EAC3B,EAgBL,SAASioqB,GAA0Bx0qB,EAAWyxB,EAAQgjpB,EAAY,MAE9D,OADgB,IAAIF,GAA8Bv0qB,EAAWyxB,EAAQgjpB,GACtD90f,QAClB;;;;;;;OAcD,MAAM+0f,GACF96qB,YAAY+6qB,GACR76qB,KAAK66qB,UAAYA,EACjB76qB,KAAK86qB,gBAAkB,IAAI9phB,GAC9B,CACD+phB,8BAA8BziB,GAC1B,IAAKA,EAAa1rP,WACd,OAAO,KAEX,IAAK5sa,KAAK86qB,gBAAgB7/oB,IAAIq9nB,EAAapwoB,IAAK,CAC5C,MAAMhiB,EAAYwyoB,GAA4B,EAAO4f,EAAa75oB,MAC5Du8pB,EAAqB90qB,EAAU5F,OAAS,EAC1Co6qB,GAA0B,CAACx0qB,GAAYlG,KAAK66qB,UAAY,cAAaviB,EAAa75oB,KAAKhX,SACvF,KACJzH,KAAK86qB,gBAAgBvnpB,IAAI+koB,EAAapwoB,GAAI8ypB,EAC7C,CACD,OAAOh7qB,KAAK86qB,gBAAgB/6pB,IAAIu4oB,EAAapwoB,GAChD,CACDrX,cACI,IACI,UAAWg1K,KAAY7lL,KAAK86qB,gBAAgBhgpB,SACvB,OAAb+qJ,GACAA,EAAS14J,SAMpB,CAHA,QAEGntB,KAAK86qB,gBAAgB3/oB,OACxB,CACJ,EAkBL,SAAS8/oB,GAAoB5wlB,GACzBA,EAAWkviB,sBAAyB5ta,GACzBA,EAAe5rM,IAAI66pB,IAAmBG,8BAA8B1wlB,EAElF;;;;;;;;;;;;;;;AA4aD,SAAS6wlB,GAAiBz8pB,EAAM0vnB,EAAYH,EAAgBY,GACxD,OAAOlY,GAAc,KACjB,MAAMykD,EAAQ18pB,EACK,OAAf0vnB,IACIgtC,EAAM/4qB,eAAe,oBAAsC2S,IAArBomqB,EAAMhtC,WAC5CgtC,EAAMhtC,WAAWnynB,QAAQmynB,GAGzBgtC,EAAMhtC,WAAaA,GAGJ,OAAnBH,IAIAmtC,EAAMntC,eAAiBA,GAEJ,OAAnBY,IAKIusC,EAAM/4qB,eAAe,wBAA8C2S,IAAzBomqB,EAAMvsC,eAChDusC,EAAMvsC,eAAiB,IAAKusC,EAAMvsC,kBAAmBA,GAGrDusC,EAAMvsC,eAAiBA,IAItC;;;;;;;OAqCD,SAASwsC,GAAgBC,EAAYC,EAAQjmd,GACzC,MAAMgqa,EAAeJ,KAAmBo8C,EAClCr+C,EAAQmB,KACd,OAAOnB,EAAMqC,KAAkB2nB,GAC3BsV,GAAct/B,EAAOqC,EAAchqa,EAAUimd,EAAOh6qB,KAAK+zN,GAAWimd,KACpE/e,GAAWv/B,EAAOqC,EACzB,CAaD,SAASk8C,GAAgBF,EAAYC,EAAQ94qB,EAAK6yN,GAC9C,OAAOmmd,GAAsBr9C,KAAYc,KAAkBo8C,EAAYC,EAAQ94qB,EAAK6yN,EACvF,CAcD,SAASomd,GAAgBJ,EAAYC,EAAQ5e,EAAMC,EAAMtnc,GACrD,OAAOqmd,GAAsBv9C,KAAYc,KAAkBo8C,EAAYC,EAAQ5e,EAAMC,EAAMtnc,EAC9F,CAeD,SAASsmd,GAAgBN,EAAYC,EAAQ5e,EAAMC,EAAMG,EAAMznc,GAC3D,OAAOumd,GAAsBz9C,KAAYc,KAAkBo8C,EAAYC,EAAQ5e,EAAMC,EAAMG,EAAMznc,EACpG,CAgBD,SAASwmd,GAAgBR,EAAYC,EAAQ5e,EAAMC,EAAMG,EAAME,EAAM3nc,IACjE,OAAOymd,GAAsB39C,KAAYc,KAAkBo8C,EAAYC,EAAQ5e,EAAMC,EAAMG,EAAME,EAAM3nc,GAC1G,CAiBD,SAAS0md,GAAgBV,EAAYC,EAAQ5e,EAAMC,EAAMG,EAAME,EAAMgf,GAAM3md,IACvE,MAAMgqa,GAAeJ,KAAmBo8C,EAClCr+C,GAAQmB,KACRy+B,GAAYG,GAAgB//B,GAAOqC,GAAcq9B,EAAMC,EAAMG,EAAME,GACzE,OAAOR,GAAex/B,GAAOqC,GAAe,EAAG28C,KAASpf,GACpDN,GAAct/B,GAAOqC,GAAe,EAAGhqa,GAAUimd,EAAOh6qB,KAAK+zN,GAASqnc,EAAMC,EAAMG,EAAME,EAAMgf,IAC1FV,EAAO5e,EAAMC,EAAMG,EAAME,EAAMgf,KACnCzf,GAAWv/B,GAAOqC,GAAe,EACxC,CAkBD,SAAS48C,GAAgBZ,EAAYC,EAAQ5e,EAAMC,EAAMG,EAAME,EAAMgf,GAAME,GAAM7md,IAC7E,MAAMgqa,GAAeJ,KAAmBo8C,EAClCr+C,GAAQmB,KACRy+B,GAAYG,GAAgB//B,GAAOqC,GAAcq9B,EAAMC,EAAMG,EAAME,GACzE,OAAOP,GAAgBz/B,GAAOqC,GAAe,EAAG28C,GAAME,KAAStf,GAC3DN,GAAct/B,GAAOqC,GAAe,EAAGhqa,GAAUimd,EAAOh6qB,KAAK+zN,GAASqnc,EAAMC,EAAMG,EAAME,EAAMgf,GAAME,IAChGZ,EAAO5e,EAAMC,EAAMG,EAAME,EAAMgf,GAAME,KACzC3f,GAAWv/B,GAAOqC,GAAe,EACxC,CAmBD,SAAS88C,GAAgBd,EAAYC,EAAQ5e,EAAMC,EAAMG,EAAME,EAAMgf,GAAME,GAAME,GAAM/md,IACnF,MAAMgqa,GAAeJ,KAAmBo8C,EAClCr+C,GAAQmB,KACd,IAAIy+B,GAAYG,GAAgB//B,GAAOqC,GAAcq9B,EAAMC,EAAMG,EAAME,GACvE,OAAOH,GAAgB7/B,GAAOqC,GAAe,EAAG28C,GAAME,GAAME,KAASxf,GACjEN,GAAct/B,GAAOqC,GAAe,EAAGhqa,GAAUimd,EAAOh6qB,KAAK+zN,GAASqnc,EAAMC,EAAMG,EAAME,EAAMgf,GAAME,GAAME,IACtGd,EAAO5e,EAAMC,EAAMG,EAAME,EAAMgf,GAAME,GAAME,KAC/C7f,GAAWv/B,GAAOqC,GAAe,EACxC,CAoBD,SAASg9C,GAAgBhB,EAAYC,EAAQ5e,EAAMC,EAAMG,EAAME,EAAMgf,GAAME,GAAME,GAAME,GAAMjnd,IACzF,MAAMgqa,GAAeJ,KAAmBo8C,EAClCr+C,GAAQmB,KACRy+B,GAAYG,GAAgB//B,GAAOqC,GAAcq9B,EAAMC,EAAMG,EAAME,GACzE,OAAOD,GAAgB//B,GAAOqC,GAAe,EAAG28C,GAAME,GAAME,GAAME,KAAS1f,GACvEN,GAAct/B,GAAOqC,GAAe,EAAGhqa,GAAUimd,EAAOh6qB,KAAK+zN,GAASqnc,EAAMC,EAAMG,EAAME,EAAMgf,GAAME,GAAME,GAAME,IAC5GhB,EAAO5e,EAAMC,EAAMG,EAAME,EAAMgf,GAAME,GAAME,GAAME,KACrD/f,GAAWv/B,GAAOqC,GAAe,EACxC,CAgBD,SAASk9C,GAAgBlB,EAAYC,EAAQkB,EAAMnnd,GAC/C,OAAOond,GAAsBt+C,KAAYc,KAAkBo8C,EAAYC,EAAQkB,EAAMnnd,EACxF,CAQD,SAASqnd,GAA2B1/C,EAAO2/C,GAEvC,MAAMC,EAAkB5/C,EAAM2/C,GAC9B,OAAOC,IAAoB51B,QAAYjyoB,EAAY6nqB,CACtD,CAaD,SAASpB,GAAsBx+C,EAAO6/C,EAAaxB,EAAYC,EAAQ94qB,EAAK6yN,GACxE,MAAMgqa,GAAew9C,EAAcxB,EACnC,OAAO7e,GAAex/B,EAAOqC,GAAc78nB,GACvC85pB,GAAct/B,EAAOqC,GAAe,EAAGhqa,EAAUimd,EAAOh6qB,KAAK+zN,EAAS7yN,GAAO84qB,EAAO94qB,IACpFk6qB,GAA2B1/C,EAAOqC,GAAe,EACxD,CAcD,SAASq8C,GAAsB1+C,EAAO6/C,EAAaxB,EAAYC,EAAQ5e,EAAMC,EAAMtnc,IAC/E,MAAMgqa,GAAew9C,EAAcxB,EACnC,OAAO5e,GAAgBz/B,EAAOqC,GAAcq9B,EAAMC,GAC9CL,GAAct/B,EAAOqC,GAAe,EAAGhqa,GAAUimd,EAAOh6qB,KAAK+zN,GAASqnc,EAAMC,GAAQ2e,EAAO5e,EAAMC,IACjG+f,GAA2B1/C,EAAOqC,GAAe,EACxD,CAeD,SAASu8C,GAAsB5+C,EAAO6/C,EAAaxB,EAAYC,EAAQ5e,EAAMC,EAAMG,GAAMznc,IACrF,MAAMgqa,GAAew9C,EAAcxB,EACnC,OAAOxe,GAAgB7/B,EAAOqC,GAAcq9B,EAAMC,EAAMG,IACpDR,GAAct/B,EAAOqC,GAAe,EAAGhqa,GAAUimd,EAAOh6qB,KAAK+zN,GAASqnc,EAAMC,EAAMG,IAAQwe,EAAO5e,EAAMC,EAAMG,KAC7G4f,GAA2B1/C,EAAOqC,GAAe,EACxD,CAiBD,SAASy8C,GAAsB9+C,EAAO6/C,EAAaxB,EAAYC,EAAQ5e,EAAMC,EAAMG,GAAME,GAAM3nc,IAC3F,MAAMgqa,GAAew9C,EAAcxB,EACnC,OAAOte,GAAgB//B,EAAOqC,GAAcq9B,EAAMC,EAAMG,GAAME,IAC1DV,GAAct/B,EAAOqC,GAAe,EAAGhqa,GAAUimd,EAAOh6qB,KAAK+zN,GAASqnc,EAAMC,EAAMG,GAAME,IAAQse,EAAO5e,EAAMC,EAAMG,GAAME,KACzH0f,GAA2B1/C,EAAOqC,GAAe,EACxD,CAgBD,SAASo9C,GAAsBz/C,EAAO6/C,EAAaxB,EAAYC,EAAQkB,EAAMnnd,GACzE,IAAIgqa,GAAew9C,EAAcxB,EAC7Bze,IAAY,EAChB,QAASpnpB,GAAI,EAAGA,GAAIgnqB,EAAKl8qB,OAAQkV,KAC7BgnpB,GAAex/B,EAAOqC,KAAgBm9C,EAAKhnqB,OAAQonpB,IAAY,GAEnE,OAAOA,GAAYN,GAAct/B,EAAOqC,GAAci8C,EAAOnnpB,MAAMkhM,EAASmnd,IACxEE,GAA2B1/C,EAAOqC,GACzC;;;;;;;OAkBD,SAASy9C,GAAOtwqB,EAAOuwqB,GACnB,MAAMrjD,EAAQ0E,KACd,IAAIjD,EACJ,MAAM+jC,EAAgB1ypB,EA36pBJ,GA46pBdktnB,EAAM2L,iBAGNlK,EAkCR,SAAS6hD,GAAWv1qB,EAAM+2F,GACtB,GAAIA,EACA,QAAShpF,EAAIgpF,EAASl+F,OAAS,EAAGkV,GAAK,EAAGA,IAAK,CAC3C,MAAM2lnB,EAAU38hB,EAAShpF,GACzB,GAAI/N,IAAS0znB,EAAQ1znB,KACjB,OAAO0znB,CAEd,CAKR,CA9CiB6hD,CAAWD,EAAUrjD,EAAMg5B,cACrCh5B,EAAMn6mB,KAAK2/oB,GAAiB/jC,EACxBA,EAAQ/uB,YACPstB,EAAM8I,eAAiB9I,EAAM8I,aAAe,KAAKxmnB,KAAKkjpB,EAAe/jC,EAAQ/uB,YAIlF+uB,EAAUzB,EAAMn6mB,KAAK2/oB,GAEzB,MAAM+d,EAAc9hD,EAAQj4nB,UAAYi4nB,EAAQj4nB,QAAU44nB,GAAcX,EAAQ18mB,OAC1E4nnB,GAA+BhQ,GAAwB62B,IAC7D,IAGI,MAAM3kB,GAA+BxD,IAAwB,GACvDm4C,GAAeD,IACrBl4C,UAAwBwD,IA5zOhC,SAASjve,GAAMoge,EAAOsD,EAAOxwnB,EAAOtE,GAG5BsE,GAASktnB,EAAMn6mB,KAAKjf,SACpBo5nB,EAAMn6mB,KAAK/S,GAAS,KACpBktnB,EAAM8L,UAAUh5nB,GAAS,MAE7BwwnB,EAAMxwnB,GAAStE,CAClB,CAqzOOoxJ,CAAMoge,EAAOyE,KAAY+gC,EAAege,IACjCA,EAMV,CALA,QAIG7mD,GAAwBgQ,GAC3B,CACJ,CAmDD,SAAS82C,GAAY3wqB,EAAO6uqB,EAAY9d,GACpC,MAAM2B,EAAgB1ypB,EA5/pBJ,GA6/pBZwwnB,EAAQmB,KACR++C,EAAenjpB,GAAKijmB,EAAOkiC,GACjC,OAAOke,GAAOpgD,EAAOkiC,GACjBsc,GAAsBx+C,EAAOiC,KAAkBo8C,EAAY6B,EAAatwpB,UAAW2woB,EAAI2f,GACvFA,EAAatwpB,UAAU2woB,EAC9B,CAcD,SAAS8f,GAAY7wqB,EAAO6uqB,EAAY9d,EAAIE,GACxC,MAAMyB,EAAgB1ypB,EAjhqBJ,GAkhqBZwwnB,EAAQmB,KACR++C,GAAenjpB,GAAKijmB,EAAOkiC,GACjC,OAAOke,GAAOpgD,EAAOkiC,GACjBwc,GAAsB1+C,EAAOiC,KAAkBo8C,EAAY6B,GAAatwpB,UAAW2woB,EAAIE,EAAIyf,IAC3FA,GAAatwpB,UAAU2woB,EAAIE,EAClC,CAeD,SAAS6f,GAAY9wqB,EAAO6uqB,EAAY9d,EAAIE,EAAIE,GAC5C,MAAMuB,EAAgB1ypB,EAviqBJ,GAwiqBZwwnB,GAAQmB,KACR++C,GAAenjpB,GAAKijmB,GAAOkiC,GACjC,OAAOke,GAAOpgD,GAAOkiC,GACjB0c,GAAsB5+C,GAAOiC,KAAkBo8C,EAAY6B,GAAatwpB,UAAW2woB,EAAIE,EAAIE,EAAIuf,IAC/FA,GAAatwpB,UAAU2woB,EAAIE,EAAIE,EACtC,CAgBD,SAAS4f,GAAY/wqB,EAAO6uqB,EAAY9d,EAAIE,EAAIE,EAAIE,GAChD,MAAMqB,GAAgB1ypB,EA9jqBJ,GA+jqBZwwnB,GAAQmB,KACR++C,GAAenjpB,GAAKijmB,GAAOkiC,IACjC,OAAOke,GAAOpgD,GAAOkiC,IAAiB4c,GAAsB9+C,GAAOiC,KAAkBo8C,EAAY6B,GAAatwpB,UAAW2woB,EAAIE,EAAIE,EAAIE,EAAIqf,IACrIA,GAAatwpB,UAAU2woB,EAAIE,EAAIE,EAAIE,EAC1C,CAaD,SAAS2f,GAAYhxqB,EAAO6uqB,EAAYvgpB,GACpC,MAAMokoB,EAAgB1ypB,EAjlqBJ,GAklqBZwwnB,EAAQmB,KACR++C,EAAenjpB,GAAKijmB,EAAOkiC,GACjC,OAAOke,GAAOpgD,EAAOkiC,GACjBud,GAAsBz/C,EAAOiC,KAAkBo8C,EAAY6B,EAAatwpB,UAAWkO,EAAQoipB,GAC3FA,EAAatwpB,UAAUuH,MAAM+opB,EAAcpipB,EAClD,CACD,SAASsipB,GAAOpgD,EAAOxwnB,GACnB,OAAOwwnB,EAtnqBG,GAsnqBUz9mB,KAAK/S,GAAO+pa,IACnC;;;;;;;OA7/BDqkQ,GAAkB33qB,WAAQ8jnB,GAAmB,CACzCllnB,MAAO+4qB,GACP5zD,WAAY,cACZ9jnB,QAAS,IAAM,IAAI03qB,GAAkB1sE,GAASmsC,OAmgClD,MAAMojC,WAAsBpzqB,IACxBvK,YAAYopZ,GAAU,GAClBjrY,QACAje,KAAK09qB,UAAYx0R,CACpB,CACD94Y,KAAKlI,GACD+V,MAAMhZ,KAAKiD,EACd,CACDgE,UAAUgxlB,EAAgBvhkB,EAAOm7D,GAC7B,IAAI6mlB,EAASzgF,EACT7zM,EAAU1tX,QAAgB,MAC1B2tX,GAAaxyT,EACjB,GAAIomgB,GAA4C,iBAAnBA,EAA6B,CACtD,MAAMrpkB,GAAWqpkB,EACjBygF,EAAS9ppB,GAAS5uB,MAAMiI,KAAK2mB,IAC7Bw1X,EAAUx1X,GAAS8H,OAAOzuB,KAAK2mB,IAC/By1X,GAAaz1X,GAASijE,UAAU5pF,KAAK2mB,GACxC,CACG7zB,KAAK09qB,YACLr0R,EAAUu0R,GAAev0R,GACrBs0R,IACAA,EAASC,GAAeD,IAExBr0R,KACAA,GAAas0R,GAAet0R,MAGpC,MAAMo0M,GAAOz/kB,MAAM/R,UAAU,CAAEjH,KAAM04qB,EAAQhipB,MAAO0tX,EAASvyT,SAAUwyT,KACvE,OAAI4zM,aAA0BtxlB,MAC1BsxlB,EAAelxlB,IAAI0xlB,IAEhBA,EACV,EAEL,SAASkgF,GAAeptpB,GACpB,OAAQtoB,IACJwK,WAAW8d,OAAIzb,EAAW7M,EAAhB,CAEjB,CAID,MAAMgD,GAAeuyqB;;;;;;;OASrB,SAASI,KACL,OAAO79qB,KAAK89qB,SAAS3zE,OACxB,CA2BD,MAAM31N,GAMF10Y,YAAYi+qB,GAA2B,GACnC/9qB,KAAK+9qB,yBAA2BA,EAChC/9qB,KAAK4iH,OAAQ,EACb5iH,KAAK89qB,SAAW,GAChB99qB,KAAKg+qB,kBAAmB,EACxBh+qB,KAAKo3a,SAAW,KAChBp3a,KAAKM,OAAS,EACdN,KAAK+V,WAAQhB,EACb/U,KAAKgW,UAAOjB,EAKZ,MAAMuvI,EAAS6ld,KACTjwkB,EAAQs6W,GAAUpzY,UACnB84B,EAAMoqH,KACPpqH,EAAMoqH,GAAUu5hB,GACvB,CAIG5xqB,cACA,OAAOjM,KAAKo3a,WAAap3a,KAAKo3a,SAAW,IAAIlsa,GAChD,CAID6U,IAAIvT,GACA,OAAOxM,KAAK89qB,SAAStxqB,EACxB,CAKDnL,IAAImvB,GACA,OAAOxwB,KAAK89qB,SAASz8qB,IAAImvB,EAC5B,CAKDlb,OAAOkb,GACH,OAAOxwB,KAAK89qB,SAASxoqB,OAAOkb,EAC/B,CAKDnL,KAAKmL,GACD,OAAOxwB,KAAK89qB,SAASz4pB,KAAKmL,EAC7B,CAKD7K,OAAO6K,EAAI+tI,GACP,OAAOv+J,KAAK89qB,SAASn4pB,OAAO6K,EAAI+tI,EACnC,CAKD9tJ,QAAQ+f,GACJxwB,KAAK89qB,SAASrtqB,QAAQ+f,EACzB,CAKDgrD,KAAKhrD,GACD,OAAOxwB,KAAK89qB,SAAStimB,KAAKhrD,EAC7B,CAIDpb,UACI,OAAOpV,KAAK89qB,SAASp8qB,OACxB,CACDD,WACI,OAAOzB,KAAK89qB,SAASr8qB,UACxB,CAaDsmE,MAAMk2mB,EAAaC,GAGf,MAAMjjb,EAAOj7P,KACbi7P,EAAKr4I,OAAQ,EACb,MAAMu7jB,EAAgBrgc,GAAQmgc,IAC1Bj+qB,KAAKg+qB,kBAp3kBjB,SAASI,GAAYjhpB,EAAGpF,EAAGmmpB,GACvB,GAAI/gpB,EAAE78B,SAAWy3B,EAAEz3B,OACf,OAAO,EACX,QAASkV,EAAI,EAAGA,EAAI2nB,EAAE78B,OAAQkV,IAAK,CAC/B,IAAI6oqB,EAASlhpB,EAAE3nB,GACX8oqB,EAASvmpB,EAAEviB,GAKf,GAJI0oqB,IACAG,EAASH,EAAiBG,GAC1BC,EAASJ,EAAiBI,IAE1BA,IAAWD,EACX,OAAO,CAEd,CACD,OAAO,CACV,CAq2kBoCD,CAAYnjb,EAAK6ib,SAAUK,EAAeD,MACnEjjb,EAAK6ib,SAAWK,EAChBljb,EAAK36P,OAAS69qB,EAAc79qB,OAC5B26P,EAAKjlP,KAAOmoqB,EAAcn+qB,KAAKM,OAAS,GACxC26P,EAAKllP,MAAQooqB,EAAc,GAElC,CAIDI,kBACQv+qB,KAAKo3a,WAAap3a,KAAKg+qB,mBAAqBh+qB,KAAK+9qB,2BACjD/9qB,KAAKo3a,SAAShna,KAAKpQ,KAC1B,CAEDw+qB,WACIx+qB,KAAK4iH,OAAQ,CAChB,CAEDz1F,UACIntB,KAAKiM,QAAQ6qF,WACb92F,KAAKiM,QAAQgF,aAChB;;;;;;;OA6BL,MAAMspJ,IAMNA,GAAY+9d,kBA8BZ,SAASmmD,KACL,OAAOC,GAAkBjgD,KAAmBN,KAC/C,EA/BD,MAAMwgD,GAAwBpkhB,GAGxBqkhB,GAAgB,cAA0BD,GAC5C7+qB,YAAY++qB,EAAmBC,EAAwB1nqB,GACnD6G,QACAje,KAAK6+qB,kBAAoBA,EACzB7+qB,KAAK8+qB,uBAAyBA,EAC9B9+qB,KAAKoX,WAAaA,CACrB,CACDS,mBAAmBJ,EAASouK,GACxB,MAAM2qe,EAAgBxwpB,KAAK8+qB,uBAAuBhwB,OAC5CyB,EAAgBvC,GAAYhupB,KAAK6+qB,kBAAmBruB,EAAe/4oB,EAAS,GAAiC,KAAM+4oB,EAAcnwB,UAAW,KAAM,KAAM,KAAM,KAAMx6c,GAAY,MAChLw6d,EAAwBrgpB,KAAK6+qB,kBAAkB7+qB,KAAK8+qB,uBAAuBtyqB,OAEjF+jpB,EAj3qBuB,IAi3qBiBlQ,EACxC,MAAM0+B,GAA0B/+qB,KAAK6+qB,kBAh3qB7B,IAi3qBR,OAAgC,OAA5BE,KACAxuB,EAl3qBI,IAk3qBqBwuB,GAAwBlnqB,mBAAmB24oB,IAExEhB,GAAWgB,EAAeD,EAAe94oB,GAClC,IAAI+/oB,GAAUjH,EACxB,GAiBL,SAASmuB,GAAkBtpB,EAAWrF,GAClC,OAAqB,EAAjBqF,EAAU32oB,KAEH,IAAImgqB,GAAc7uB,EAAWqF,EAAW3Y,GAAiB2Y,EAAWrF,IAExE,IACV;;;;;;;OAwBD,MAAM5toB,IAMNA,GAAiBm2mB,kBAOjB,SAAS0mD,KAEL,OAAOC,GADexgD,KACmBN,KAC5C,EACD,MAAM+gD,GAAsB/8pB,GAGtBg9pB,GAAqB,cAA+BD,GACtDp/qB,YAAYs/qB,EAAaC,EAAYC,GACjCrhqB,QACAje,KAAKo/qB,YAAcA,EACnBp/qB,KAAKq/qB,WAAaA,EAClBr/qB,KAAKs/qB,WAAaA,CACrB,CACG52qB,cACA,OAAO+zoB,GAAiBz8oB,KAAKq/qB,WAAYr/qB,KAAKs/qB,WACjD,CACGz5f,eACA,OAAO,IAAImjd,GAAahpoB,KAAKq/qB,WAAYr/qB,KAAKs/qB,WACjD,CAEG3zd,qBACA,MAAM64a,EAAiBkB,GAA0B1loB,KAAKq/qB,WAAYr/qB,KAAKs/qB,YACvE,GAAI/6C,GAAkBC,GAAiB,CACnC,MAAMK,EAAaH,GAAsBF,EAAgBxkoB,KAAKs/qB,YACxDh6C,EAAgBb,GAAuBD,GAEvCjE,EAAcsE,EAh+qBlB,GAg+qBoCtlnB,KAAK+lnB,EAAgB,GAC3D,OAAO,IAAI0D,GAAazI,EAAasE,EACxC,CAEG,OAAO,IAAImE,GAAa,KAAMhpoB,KAAKs/qB,WAE1C,CACDnkpB,QACI,KAAOn7B,KAAKM,OAAS,GACjBN,KAAK2X,OAAO3X,KAAKM,OAAS,EAEjC,CACDyf,IAAIvT,GACA,MAAMorpB,EAAW2nB,GAAYv/qB,KAAKo/qB,aAClC,OAAoB,OAAbxnB,GAAqBA,EAASprpB,IAAU,IAClD,CACGlM,aACA,OAAON,KAAKo/qB,YAAY9+qB,OA95qBA,EA+5qB3B,CACDuX,mBAAmBD,EAAaH,EAAS+nqB,GACrC,IAAIhzqB,EACAq5K,EAC0B,iBAAnB25f,EACPhzqB,EAAQgzqB,EAEe,MAAlBA,IACLhzqB,EAAQgzqB,EAAehzqB,MACvBq5K,EAAW25f,EAAe35f,UAE9B,MAAM45f,GAAU7nqB,EAAYC,mBAAmBJ,GAAW,GAAIouK,GAC9D,YAAKp/I,OAAOg5oB,GAASjzqB,GACdizqB,EACV,CACDrzd,gBAAgBszd,EAAwBF,EAAgB35f,EAAUs5b,EAAkB85C,GAChF,MAAM0mB,GAAqBD,IAA2Bl0H,GAAOk0H,GAC7D,IAAIlzqB,GAMJ,GAAImzqB,GAQAnzqB,GAAQgzqB,MAEP,CASD,MAAMx5qB,GAAWw5qB,GAAkB,GAInChzqB,GAAQxG,GAAQwG,MAChBq5K,EAAW7/K,GAAQ6/K,SACnBs5b,EAAmBn5mB,GAAQm5mB,iBAC3B85C,EAAsBjzpB,GAAQizpB,qBAAuBjzpB,GAAQk5mB,WAChE,CACD,MAAM0gE,GAAmBD,GACrBD,EACA,IAAInnB,GAAiBp+B,GAAgBulD,IACnCG,GAAkBh6f,GAAY7lL,KAAK2rN,eAEzC,IAAKstc,GAAoD,MAA7B2mB,GAAiB35qB,SAAkB,CAqB3D,MAAM2rB,IAJY+tpB,GAAqBE,GAAkB7/qB,KAAK2rN,gBAIrC5rM,IAAIs6nB,GAAqB,MAC9CzonB,KACAqnoB,EAAsBrnoB,GAE7B,CACD,MAAM06L,GAAeszd,GAAiBzzpB,OAAO0zpB,GAAiB1gE,OAAkBpqmB,EAAWkkpB,GAC3F,YAAKxynB,OAAO6lL,GAAai1S,SAAU/0f,IAC5B8/M,EACV,CACD7lL,OAAOg5oB,EAASjzqB,GACZ,MAAMwwnB,EAAQyiD,EAAQv2C,OAChBxP,EAAQsD,EA1krBR,GA8krBN,GAnhqBR,SAAS8iD,GAAwB7jiB,GAC7B,OAAOs/e,GAAat/e,EA1jBT,GA2jBd,CAihqBW6jiB,CAAwB9iD,GAAQ,CAEhC,MAAM+iD,GAAU//qB,KAAKiB,QAAQw+qB,GAK7B,IAAgB,IAAZM,GACA//qB,KAAK63pB,OAAOkoB,QAEX,CACD,MAAMC,GAAiBhjD,EAvlrBxB,GA4lrBOijD,GAAY,IAAId,GAAmBa,GAAgBA,GAzlrB1D,GAylrBkFA,GA5lrBlF,IA6lrBCC,GAAUpoB,OAAOooB,GAAUh/qB,QAAQw+qB,GACtC,CACJ,CAED,MAAMS,EAAclgrB,KAAKmgrB,aAAa3zqB,GAChCkxnB,GAAa19nB,KAAKo/qB,YACxBl/B,GAAWxmB,EAAOsD,EAAOU,GAAYwiD,GAErC,MAAM9gC,GAAaiE,GAAqB68B,EAAaxiD,IAC/C/ynB,GAAWqynB,EA9lrBR,IA+lrBHkmB,GAAcV,GAAiB73oB,GAAU+ynB,GA/hrBxC,IAgirBP,OAAoB,OAAhBwlB,IA37cZ,SAASk9B,GAAmB1mD,EAAO6G,EAAa51nB,EAAUqynB,EAAOqjD,EAAkBjhC,GAC/EpiB,EAjrOS,GAirOKqjD,EACdrjD,EA5qOW,GA4qOKuD,EAChBsf,GAAUnmB,EAAOsD,EAAOrynB,EAAU,EAAoC01qB,EAAkBjhC,EAC3F,CAw7cWghC,CAAmB1mD,EAAOgE,GAtmrBvB,GAsmrB2C/ynB,GAAUqynB,EAAOkmB,GAAa9D,IAEhFqgC,EAAQznB,2BACR1rB,GAAWg0C,GAAoB5iD,IAAawiD,EAAaT,GAClDA,CACV,CACDzhpB,KAAKyhpB,EAASzyc,GAIV,OAAOhtO,KAAKymC,OAAOg5oB,EAASzyc,EAC/B,CACD/rO,QAAQw+qB,GACJ,MAAMc,EAAchB,GAAYv/qB,KAAKo/qB,aACrC,OAAuB,OAAhBmB,EAAuBA,EAAYt/qB,QAAQw+qB,IAAW,CAChE,CACD9nqB,OAAOnL,GACH,MAAM0zqB,EAAclgrB,KAAKmgrB,aAAa3zqB,GAAO,GACvCg0qB,EAAe1/B,GAAW9gpB,KAAKo/qB,YAAac,GAC9CM,IAOAj0C,GAAgB+zC,GAAoBtgrB,KAAKo/qB,aAAcc,GACvD/+B,GAAaq/B,EAtorBX,GAsorBgCA,GAEzC,CACD3oB,OAAOrrpB,GACH,MAAM0zqB,EAAclgrB,KAAKmgrB,aAAa3zqB,GAAO,GACvCyvI,EAAO6kgB,GAAW9gpB,KAAKo/qB,YAAac,GAE1C,OADoBjkiB,GAA+E,MAAvEswf,GAAgB+zC,GAAoBtgrB,KAAKo/qB,aAAcc,GAC9D,IAAI1oB,GAAUv7gB,GAAQ,IAC9C,CACDkkiB,aAAa3zqB,EAAOo5C,EAAQ,GACxB,OAAIp5C,GACOxM,KAAKM,OAASslD,CAQ5B,GAEL,SAAS25nB,GAAY7hD,GACjB,OAAOA,EAjlrBO,EAklrBjB,CACD,SAAS4iD,GAAoB5iD,GACzB,OAAQA,EAplrBM,KAolrBoBA,EAplrBpB,GAolrB4C,GAC7D,CAUD,SAASuhD,GAAmB7pB,EAAWrF,GAEnC,IAAIryB,EACJ,MAAMN,EAAY2yB,EAAUqF,EAAU5opB,OACtC,GAAI+unB,GAAa6B,GAEbM,EAAaN,MAEZ,CACD,IAAIqjD,EAKJ,GAAqB,EAAjBrrB,EAAU32oB,KACVgiqB,EAAc3jD,GAAYM,OAEzB,CAID,MAAMzynB,EAAWolpB,EArrrBZ,IAurrBL0wB,EAAc91qB,EAASq1oB,cAAwC,IAC/D,MAAMiW,GAAah5B,GAAiBm4B,EAAWrF,GAE/CvQ,GAAmB70oB,EADQ63oB,GAAiB73oB,EAAUsrpB,IACLwqB,EA5lc7D,SAASC,GAAkB/1qB,EAAU1B,GACjC,OAAO0B,EAAS6iQ,YAAYvkQ,EAC/B,CA0lcyEy3qB,CAAkB/1qB,EAAUsrpB,KAAa,EAC1G,CACDlG,EAAUqF,EAAU5opB,OAASkxnB,EACzBs4B,GAAiB54B,EAAW2yB,EAAW0wB,EAAarrB,GACxDK,GAAc1F,EAAWryB,EAC5B,CACD,OAAO,IAAIyhD,GAAmBzhD,EAAY03B,EAAWrF,EACxD;;;;;;;OAgCD,MAAM4wB,GACF7grB,YAAY8grB,GACR5grB,KAAK4grB,UAAYA,EACjB5grB,KAAK4I,QAAU,IAClB,CACDzD,QACI,OAAO,IAAIw7qB,GAAQ3grB,KAAK4grB,UAC3B,CACDpC,WACIx+qB,KAAK4grB,UAAUpC,UAClB,EAEL,MAAMqC,GACF/grB,YAAYyypB,EAAU,IAClBvypB,KAAKuypB,QAAUA,CAClB,CACD16oB,mBAAmB6hnB,GACf,MAAMonD,EAAWpnD,EAAM64B,QACvB,GAAiB,OAAbuuB,EAAmB,CACnB,MAAMC,EAAgD,OAAzBrnD,EAAMt2N,eAA0Bs2N,EAAMt2N,eAAe,GAAK09Q,EAASxgrB,OAC1F0grB,EAAe,GAKrB,QAASxrqB,EAAI,EAAGA,EAAIurqB,EAAsBvrqB,IAAK,CAC3C,MAAMyrqB,GAASH,EAASI,WAAW1rqB,GAC7B2rqB,GAAenhrB,KAAKuypB,QAAQ0uB,GAAOG,wBACzCJ,EAAahlqB,KAAKmlqB,GAAah8qB,QAClC,CACD,OAAO,IAAI07qB,GAAUG,EACxB,CACD,OAAO,IACV,CACD9gC,WAAWxmB,GACP15nB,KAAKqhrB,wBAAwB3nD,EAChC,CACDonB,WAAWpnB,GACP15nB,KAAKqhrB,wBAAwB3nD,EAChC,CACD2nD,wBAAwB3nD,GACpB,QAASlknB,EAAI,EAAGA,EAAIxV,KAAKuypB,QAAQjypB,OAAQkV,IACD,OAAhC8rqB,GAAU5nD,EAAOlknB,GAAG5M,SACpB5I,KAAKuypB,QAAQ/8oB,GAAGgpqB,UAG3B,EAEL,MAAM+C,GACFzhrB,YAAYu6B,EAAWy0S,EAAO5C,EAAO,MACjClsU,KAAKq6B,UAAYA,EACjBr6B,KAAK8uU,MAAQA,EACb9uU,KAAKksU,KAAOA,CACf,EAEL,MAAMs1W,GACF1hrB,YAAYyypB,EAAU,IAClBvypB,KAAKuypB,QAAUA,CAClB,CACDvlnB,aAAa0slB,EAAO+B,GAGhB,QAASjmnB,EAAI,EAAGA,EAAIxV,KAAKuypB,QAAQjypB,OAAQkV,IACrCxV,KAAKuypB,QAAQ/8oB,GAAGw3B,aAAa0slB,EAAO+B,EAE3C,CACDwkC,WAAWxkC,GACP,QAASjmnB,EAAI,EAAGA,EAAIxV,KAAKuypB,QAAQjypB,OAAQkV,IACrCxV,KAAKuypB,QAAQ/8oB,GAAGyqpB,WAAWxkC,EAElC,CACD+0B,cAAc/0B,GACV,IAAIgmD,EAAwB,KAC5B,QAASjsqB,EAAI,EAAGA,EAAIxV,KAAKM,OAAQkV,IAAK,CAClC,MAAMksqB,EAA4C,OAA1BD,EAAiCA,EAAsBnhrB,OAAS,EAClFqhrB,EAAc3hrB,KAAKkhrB,WAAW1rqB,GAAGg7oB,cAAc/0B,EAAOimD,GACxDC,IACAA,EAAYP,uBAAyB5rqB,EACP,OAA1BisqB,EACAA,EAAsBzlqB,KAAK2lqB,GAG3BF,EAAwB,CAACE,GAGpC,CACD,OAAiC,OAA1BF,EAAiC,IAAID,GAAUC,GAAyB,IAClF,CACDpvpB,SAASqnmB,EAAO+B,GAGZ,QAASjmnB,EAAI,EAAGA,EAAIxV,KAAKuypB,QAAQjypB,OAAQkV,IACrCxV,KAAKuypB,QAAQ/8oB,GAAG6c,SAASqnmB,EAAO+B,EAEvC,CACDylD,WAAW10qB,GAEP,OAAOxM,KAAKuypB,QAAQ/lpB,EACvB,CACGlM,aACA,OAAON,KAAKuypB,QAAQjypB,MACvB,CACDsoH,MAAMg5jB,GACF5hrB,KAAKuypB,QAAQv2oB,KAAK4lqB,EACrB,EAEL,MAAMC,GACF/hrB,YAAY64Y,EAAUpiL,GAAY,GAC9Bv2N,KAAK24Y,SAAWA,EAChB34Y,KAAK4I,QAAU,KACf5I,KAAKohrB,wBAAyB,EAC9BphrB,KAAK8hrB,mBAAoB,EAMzB9hrB,KAAK+hrB,oBAAqB,EAC1B/hrB,KAAKgirB,sBAAwBzrd,CAChC,CACDvpL,aAAa0slB,EAAO+B,GACZz7nB,KAAKiirB,iBAAiBxmD,IACtBz7nB,KAAKkirB,WAAWxoD,EAAO+B,EAE9B,CACDwkC,WAAWxkC,GACHz7nB,KAAKgirB,wBAA0BvmD,EAAMjvnB,QACrCxM,KAAK+hrB,oBAAqB,EAEjC,CACD1vpB,SAASqnmB,EAAO+B,GACZz7nB,KAAKgtC,aAAa0slB,EAAO+B,EAC5B,CACD+0B,cAAc/0B,EAAOimD,GACjB,OAAI1hrB,KAAKiirB,iBAAiBxmD,IACtBz7nB,KAAK8hrB,mBAAoB,EAGzB9hrB,KAAKmirB,UAAU1mD,EAAMjvnB,MAAOk1qB,GACrB,IAAIG,GAAQ7hrB,KAAK24Y,WAErB,IACV,CACDspS,iBAAiBxmD,GACb,GAAIz7nB,KAAK+hrB,oBACsD,IAApC,EAAtB/hrB,KAAK24Y,SAAS7pE,OAA4E,CAC3F,MAAMszW,EAAqBpirB,KAAKgirB,sBAChC,IAAIrqpB,EAAS8jmB,EAAM9jmB,OAWnB,KAAkB,OAAXA,GAAkC,EAAdA,EAAOlZ,MAC9BkZ,EAAOnrB,QAAU41qB,GACjBzqpB,EAASA,EAAOA,OAEpB,OAAOyqpB,KAAmC,OAAXzqpB,EAAkBA,EAAOnrB,OAAQ,EACnE,CACD,OAAOxM,KAAK+hrB,kBACf,CACDG,WAAWxoD,EAAO+B,GACd,MAAMphmB,EAAYr6B,KAAK24Y,SAASt+W,UAChC,GAAIl5B,MAAMkuB,QAAQgL,GACd,QAAS7kB,EAAI,EAAGA,EAAI6kB,EAAU/5B,OAAQkV,IAAK,CACvC,MAAM/N,EAAO4yB,EAAU7kB,GACvBxV,KAAKqirB,yBAAyB3oD,EAAO+B,EAAO6mD,GAAyB7mD,EAAOh0nB,IAE5EzH,KAAKqirB,yBAAyB3oD,EAAO+B,EAAO+L,GAA0B/L,EAAO/B,EAAOjynB,GAAM,GAAO,GACpG,MAGG4yB,IAAckgI,GACG,EAAbkhe,EAAMh9mB,MACNze,KAAKqirB,yBAAyB3oD,EAAO+B,GAAO,GAIhDz7nB,KAAKqirB,yBAAyB3oD,EAAO+B,EAAO+L,GAA0B/L,EAAO/B,EAAOr/lB,GAAW,GAAO,GAGjH,CACDgopB,yBAAyB3oD,EAAO+B,EAAO8mD,GACnC,GAAqB,OAAjBA,EAAuB,CACvB,MAAMr2W,EAAOlsU,KAAK24Y,SAASzsE,KAC3B,GAAa,OAATA,EACA,GAAIA,IAASlqT,IAAckqT,IAAS/pT,IAChC+pT,IAAS3xK,IAA6B,EAAbkhe,EAAMh9mB,KAC/Bze,KAAKmirB,SAAS1mD,EAAMjvnB,OAAO,OAE1B,CACD,MAAMg2qB,EAAyBh7C,GAA0B/L,EAAO/B,EAAOxtT,GAAM,GAAO,GACrD,OAA3Bs2W,GACAxirB,KAAKmirB,SAAS1mD,EAAMjvnB,MAAOg2qB,EAElC,MAGDxirB,KAAKmirB,SAAS1mD,EAAMjvnB,MAAO+1qB,EAElC,CACJ,CACDJ,SAAS7gB,EAAU5uR,GACM,OAAjB1yY,KAAK4I,QACL5I,KAAK4I,QAAU,CAAC04pB,EAAU5uR,GAG1B1yY,KAAK4I,QAAQoT,KAAKslpB,EAAU5uR,EAEnC,EAUL,SAAS4vS,GAAyB7mD,EAAO9ynB,GACrC,MAAMimpB,EAAanzB,EAAMmzB,WACzB,GAAmB,OAAfA,EACA,QAASp5oB,EAAI,EAAGA,EAAIo5oB,EAAWtupB,OAAQkV,GAAK,EACxC,GAAIo5oB,EAAWp5oB,KAAO7M,EAClB,OAAOimpB,EAAWp5oB,EAAI,GAIlC,OAAO,IACV,CAUD,SAASitqB,GAAoBzlD,EAAOvB,EAAOinD,EAAax2W,GACpD,OAAoB,IAAhBw2W,EAVR,SAASC,GAAwBlnD,EAAO+F,GACpC,OAAkB,GAAd/F,EAAMh9mB,KACCg+nB,GAAiBhhB,EAAO+F,GAEb,EAAb/F,EAAMh9mB,KACJigqB,GAAkBjjD,EAAO+F,GAE7B,IACV,CAIcmhD,CAAwBlnD,EAAOuB,IAEjB,IAAhB0lD,EASb,SAASE,GAAmB5lD,EAAOvB,EAAOvvT,GACtC,GAAIA,IAASlqT,GACT,OAAOy6nB,GAAiBhhB,EAAOuB,GAE9B,GAAI9wT,IAAS3xK,GACd,OAAOmkhB,GAAkBjjD,EAAOuB,GAE/B,GAAI9wT,IAAS/pT,GAEd,OAAO88pB,GAAmBxjD,EAAOuB,EAMxC,CAtBc4lD,CAAmB5lD,EAAOvB,EAAOvvT,GAIjCu7T,GAAkBzK,EAAOA,EA1+rB1B,GA0+rBwC0lD,EAAajnD,EAElE,CAsBD,SAASonD,GAAuBnpD,EAAOsD,EAAOikD,EAAQ6B,GAClD,MAAMC,EAAS/lD,EAh/rBH,IAg/rBkBu1B,QAAQuwB,GACtC,GAAuB,OAAnBC,EAAOn6qB,QAAkB,CACzB,MAAMwqpB,EAAY15B,EAAMn6mB,KAClByjqB,GAAgB/B,EAAOr4qB,QACvBgpB,GAAS,GACf,QAASpc,GAAI,EAAGA,GAAIwtqB,GAAc1irB,OAAQkV,IAAK,EAAG,CAC9C,MAAMytqB,GAAiBD,GAAcxtqB,IACrC,GAAIytqB,GAAiB,EAIjBrxpB,GAAO5V,KAAK,UAEX,CAED,MAAMy/mB,GAAQ23B,EAAU6vB,IACxBrxpB,GAAO5V,KAAKymqB,GAAoBzlD,EAAOvB,GAAOunD,GAAcxtqB,GAAI,GAAIyrqB,EAAOtoS,SAASzsE,MACvF,CACJ,CACD62W,EAAOn6qB,QAAUgpB,EACpB,CACD,OAAOmxpB,EAAOn6qB,OACjB,CAKD,SAASs6qB,GAAoBxpD,EAAOsD,EAAO8lD,EAAYlxpB,GACnD,MAAMqvpB,EAASvnD,EAAM64B,QAAQ2uB,WAAW4B,GAClCE,EAAgB/B,EAAOr4qB,QAC7B,GAAsB,OAAlBo6qB,EAAwB,CACxB,MAAMG,GAAeN,GAAuBnpD,EAAOsD,EAAOikD,EAAQ6B,GAClE,QAASttqB,GAAI,EAAGA,GAAIwtqB,EAAc1irB,OAAQkV,IAAK,EAAG,CAC9C,MAAM8rpB,GAAW0hB,EAAcxtqB,IAC/B,GAAI8rpB,GAAW,EACX1voB,EAAO5V,KAAKmnqB,GAAa3tqB,GAAI,QAE5B,CACD,MAAMksqB,GAAkBsB,EAAcxtqB,GAAI,GACpC6qoB,GAAwBrjB,GAAOskC,IAGrC,QAAS9rpB,GA19rBO,GA09rBsBA,GAAI6qoB,GAAsB//oB,OAAQkV,KAAK,CACzE,MAAM+6oB,GAAgBlQ,GAAsB7qoB,IACxC+6oB,GA9hsBO,MA8hsBmCA,GA7isBnD,IA8isBS2yB,GAAoB3yB,GAhjsB9B,GAgjsBoDA,GAAemxB,GAAiB9vpB,EAEjF,CAGD,GAA2C,OAAvCyunB,GAz+rBA,GAy+rB6C,CAC7C,MAAM+iC,GAAiB/iC,GA1+rBvB,GA2+rBA,QAAS7qoB,GAAI,EAAGA,GAAI4tqB,GAAe9irB,OAAQkV,KAAK,CAC5C,MAAM+6oB,GAAgB6yB,GAAe5tqB,IACrC0tqB,GAAoB3yB,GAzjsB9B,GAyjsBoDA,GAAemxB,GAAiB9vpB,EAC7E,CACJ,CACJ,CACJ,CACJ,CACD,OAAOA,CACV,CAUD,SAASyxpB,GAAezC,GACpB,MAAM5jD,EAAQmB,KACRzE,EAAQ0E,KACR0kD,EAAa7iD,KACnBE,GAAqB2iD,EAAa,GAClC,MAAM7B,EAASK,GAAU5nD,EAAOopD,GAChC,GAAIlC,EAAUh+jB,OACTy6gB,GAAeL,MAC+C,IAAjC,EAAxBikD,EAAOtoS,SAAS7pE,QAAwE,CAC9F,GAAuB,OAAnBmyW,EAAOr4qB,QACPg4qB,EAAU74mB,MAAM,QAEf,CACD,MAAMn2C,EAASqvpB,EAAOa,kBAClBoB,GAAoBxpD,EAAOsD,EAAO8lD,EAAY,IAC9CD,GAAuBnpD,EAAOsD,EAAOikD,EAAQ6B,GACjDlC,EAAU74mB,MAAMn2C,EAAQ+qnB,IACxBikC,EAAUrC,iBACb,CACD,OAAO,CACV,CACD,OAAO,CACV,CAUD,SAAS+E,GAAYjppB,EAAWy0S,EAAO5C,GAEnC,MAAMwtT,EAAQ0E,KACV1E,EAAM2L,kBACNk+C,GAAa7pD,EAAO,IAAI6nD,GAAgBlnpB,EAAWy0S,EAAO5C,IAAO,GACnB,IAAjC,EAAR4C,KACD4qT,EAAMm2B,mBAAoB,IAGlC2zB,GAAa9pD,EAAOyE,KAAYrvT,EACnC,CAaD,SAAS20W,GAAeh7C,EAAgBpumB,EAAWy0S,EAAO5C,GAEtD,MAAMwtT,EAAQ0E,KACd,GAAI1E,EAAM2L,gBAAiB,CACvB,MAAM5J,EAAQgD,KACd8kD,GAAa7pD,EAAO,IAAI6nD,GAAgBlnpB,EAAWy0S,EAAO5C,GAAOuvT,EAAMjvnB,OAkC/E,SAASk3qB,GAAkChqD,EAAO+O,GAC9C,MAAMk7C,EAAsBjqD,EAAMt2N,iBAAmBs2N,EAAMt2N,eAAiB,IACtEwgR,EAA0BD,EAAoBrjrB,OAASqjrB,EAAoBA,EAAoBrjrB,OAAS,IAAK,EAC/GmooB,IAAmBm7C,GACnBD,EAAoB3nqB,KAAK09mB,EAAM64B,QAAQjypB,OAAS,EAAGmooB,EAE1D,CAvCOi7C,CAAkChqD,EAAO+O,GACK,IAAjC,EAAR35T,KACD4qT,EAAMk2B,sBAAuB,EAEpC,CACD4zB,GAAa9pD,EAAOyE,KAAYrvT,EACnC,CAMD,SAAS+0W,KACL,OAEJ,SAASC,GAAkB9mD,EAAO8lD,GAI9B,OAAO9lD,EAvosBK,IAuosBUu1B,QAAQuwB,GAAYlC,SAC7C,CAPUkD,CAAkB3lD,KAAY8B,KACxC,CAOD,SAASujD,GAAa9pD,EAAOsD,EAAOluT,GAChC,MAAM8xW,EAAY,IAAIpsS,GAAmE,IAAhD,EAAR1lE,IACjC6jV,GAAwBj5B,EAAOsD,EAAO4jD,EAAWA,EAAUzzpB,SACpC,OAAnB6vmB,EA5osBQ,MA6osBRA,EA7osBQ,IA6osBS,IAAI6jD,IACzB7jD,EA9osBY,IA8osBGu1B,QAAQv2oB,KAAK,IAAI2kqB,GAAQC,GAC3C,CACD,SAAS2C,GAAa7pD,EAAO/gP,EAAUpiL,GACb,OAAlBmja,EAAM64B,UACN74B,EAAM64B,QAAU,IAAIivB,IACxB9nD,EAAM64B,QAAQ3piB,MAAM,IAAIi5jB,GAAQlpS,EAAUpiL,GAC7C,CAQD,SAAS+qd,GAAU5nD,EAAOltnB,GAEtB,OAAOktnB,EAAM64B,QAAQ2uB,WAAW10qB,EACnC;;;;;;;OAeD,SAASu3qB,GAAuBtoD,EAAOuB,GACnC,OAAO0hD,GAAkBjjD,EAAOuB,EACnC;;;;;;;;;;;;;;OAsBD,MAAMgnD,GAAkB,CACpB,sBAAe/mB,GACf,kCAA2BmB,GAC3B,kCAA2BE,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,4BAAqBrmC,GACrB,4BAAqByC,GACrB,6BAAsBlU,GACtB,2BAAoByO,GACpB,2BAAoB6E,GACpB,uBAAgBa,GAChB,4BAAqBgyB,GACrB,gCAAyB/jB,GACzB,mBAAYj7B,GACZ,4BAAqBu7B,GACrB,2BAAoB0jB,GACpB,8BAAuBpd,GACvB,iCAA0Bg0C,GAC1B,sBAAevlD,GACf,+BAAwBzC,GACxB,6BAAsBg+C,GACtB,kCAA2B9d,GAC3B,qCAA8BpB,GAC9B,8BAAuBogB,GACvB,wBAAiBhZ,GACjB,0BAAmBngC,GACnB,4BAAqBD,GACrB,yBAAkBD,GAClB,2BAAoB3D,GACpB,4BAAqBC,GACrB,yBAAkBwhC,GAClB,uBAAgBK,GAChB,oBAAaK,GACb,kCAA2BC,GAC3B,gCAAyBE,GACzB,6BAAsBC,GACtB,0BAAmB4a,GACnB,0BAAmBG,GACnB,0BAAmBE,GACnB,0BAAmBE,GACnB,0BAAmBE,GACnB,0BAAmBE,GACnB,0BAAmBE,GACnB,0BAAmBE,GACnB,0BAAmBE,GACnB,0BAAmBE,GACnB,2BAAoB9b,GACpB,wBAAiBpiC,GACjB,qBAAcuiC,GACd,uBAAgBmC,GAChB,kCAA2B8I,GAC3B,kCAA2B7K,GAC3B,sBAAemc,GACf,sBAAeE,GACf,sBAAeC,GACf,sBAAeC,GACf,sBAAeC,GACf,0BAAmBhb,GACnB,yBAAkBoJ,GAClB,qBAAcrM,GACd,gCAAyB2D,GACzB,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iBAAUmZ,GACV,yBAAkBuG,GAClB,sBAAeC,GACf,sBAAeO,GACf,yBAAkBJ,GAClB,sBAAepkB,GACf,qBAAcuH,GACd,iCAA0BoD,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,qBAAchE,GACd,iCAA0BiE,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,iCAA0BC,GAC1B,sBAAe5E,GACf,kCAA2B6E,GAC3B,kCAA2BE,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,kCAA2BC,GAC3B,sBAAepF,GACf,oBAAatf,GACb,qBAAc8X,GACd,iBAAUqK,GACV,4BAAqBE,GACrB,6BAAsBC,GACtB,6BAAsBC,GACtB,6BAAsBC,GACtB,6BAAsBC,GACtB,6BAAsBC,GACtB,6BAAsBC,GACtB,6BAAsBC,GACtB,6BAAsBC,GACtB,6BAAsBC,GACtB,iBAAUmN,GACV,2BAAoBC,GACpB,oBAAaG,GACb,sBAAeX,GACf,oBAAaM,GACb,sBAAeO,GACf,4BAAqBE,GACrB,0BAAmBr5B,GACnB,4BAAqBC,GACrB,wBAAiBC,GACjB,8BAAuBvkB,GACvB,6BAAsBS,GACtB,iCAA0B8W,GAC1B,yBAAkByF,GAClB,0BAAmBI,GACnB,gCAAyBK,GACzB,2BAAoBG,GACpB,wBAAiBL,GACjB,qCAA8BW,GAC9B,8BAAuBH,GACvB,qCAA8BC,GAC9B75nB,WAAcA,GACdy2mB,kBAAqBA,IAGzB,IAAIqvD,GAAa;;;;;;;;AAyCjB,SAASC,GAAsBh8qB,GAC3B,YAA0B6M,IAAnB7M,EAAMjC,QAChB,CACD,SAASk+qB,GAAWj8qB,GAChB,QAASyynB,GAAezynB,EAC3B;;;;;;;OASD,MAAMk8qB,GAAc,GAQpB,IAAIC,IAAsB,EA6B1B,SAASC,GAAsBC,GAC3B,OAAIpjrB,MAAMkuB,QAAQk1pB,GACPA,EAAY/jgB,MAAM8jgB,MAEpB1vD,GAAkB2vD,EAC9B,CAMD,SAASC,GAAgBhK,EAAYv0qB,EAAW,KAkBhD,SAASw+qB,GAAoBjK,EAAYv0qB,EAAUy+qB,GAAmC,GAGlF,MAAMnqD,EAAez8Y,GAAQ73O,EAASs0nB,cAAgBxC,IACtD,IAAI2C,EAAc,KAClBr7mB,OAAOgyH,eAAempiB,EAAYriD,GAAY,CAC1C70U,cAAc,EACdvjS,IAAK,KACmB,OAAhB26mB,IAOAA,EADiBmR,KACM24C,gBAAgBR,GAAiB,SAAQxJ,EAAW/yqB,oBAAgB,CACvFgX,KAAM+7pB,EACNlgD,UAAWx8Y,GAAQ73O,EAASq0nB,WAAavC,IAAa12nB,IAAIuznB,IAC1D2F,aAAcA,EAAal5nB,IAAIuznB,IAC/Blmd,QAASovE,GAAQ73O,EAASyoK,SAAWqpd,IAChC12nB,IAAIuznB,IACJvznB,IAAIsjrB,IACT7xP,QAASh1M,GAAQ73O,EAAS6sb,SAAWilM,IAChC12nB,IAAIuznB,IACJvznB,IAAIsjrB,IACTlrD,QAASxznB,EAASwznB,QAAU37Y,GAAQ73O,EAASwznB,SAAW,KACxDvxmB,GAAIjiB,EAASiiB,IAAM,OAMlBwymB,EAAYjB,UACbiB,EAAYjB,QAAU,KAGvBiB,KAGf,IAAI4sB,EAAe,KACnBjooB,OAAOgyH,eAAempiB,EAAYpiD,GAAgB,CAC9Cr4mB,IAAK,KACD,GAAqB,OAAjBunoB,EAAuB,CACvB,MAAMU,GAAWnc,KACjByb,EAAeU,GAASC,eAAe+7B,GAAiB,SAAQxJ,EAAW/yqB,oBAAgB,CACvFA,KAAM+yqB,EAAW/yqB,KACjBgX,KAAM+7pB,EACN/8Q,KAAMkzO,GAAoB6pC,GAC1B39pB,OAAQmroB,GAASrc,cAAcU,SAC/Bqb,kBAAmB,GAE1B,CACD,OAAOJ,GAGXhkW,cAAc,IAElB,IAAI4yU,GAAgB,KACpB72mB,OAAOgyH,eAAempiB,EAAYzkD,GAAY,CAC1Ch2mB,IAAK,KACD,GAAsB,OAAlBm2mB,GAAwB,CAGxB,MAAMzgf,GAAO,CACThuI,KAAM+yqB,EAAW/yqB,KACjBgX,KAAM+7pB,EACNt0qB,UAAWD,EAASC,WAAa6xnB,GACjCrpd,QAAS,EACJzoK,EAASyoK,SAAWqpd,IAAa12nB,IAAIuznB,KACrC3unB,EAAS6sb,SAAWilM,IAAa12nB,IAAIuznB,MAI9CsB,GADiB2V,KAEJ+4C,gBAAgBZ,GAAiB,SAAQxJ,EAAW/yqB,oBAAgBguI,GACpF,CACD,OAAOygf,IAGX5yU,cAAc,GAErB,EAjGGmhY,CAAoBjK,EAAYv0qB,QACZ8O,IAAhB9O,EAASiiB,IACTqpnB,GAAqBipC,EAAYv0qB,EAASiiB,IA/ClD,SAAS28pB,GAA+BrK,EAAYv0qB,GAChDm+qB,GAAYpoqB,KAAK,CAAEw+pB,aAAYv0qB,YAClC,CAmDG4+qB,CAA+BrK,EAAYv0qB,EAC9C,CAuTD,SAAS6+qB,GAA6BtK,EAAYv0qB,GAC9C,MAAMs0nB,EAAez8Y,GAAQ73O,EAASs0nB,cAAgBxC,IAChDgtD,EAAmBC,GAAoBxK,GAC7CjgD,EAAa9pnB,QAAQ8zqB,IAEjB,IADAA,EAAc3vD,GAAkB2vD,IAChBnirB,eAAe41nB,IAAc,CAIzCitD,GADqB9qD,GADHoqD,GAEuBQ,EAC5C,MACSR,EAAYnirB,eAAe61nB,MAAgBssD,EAAYnirB,eAAe81nB,MAE5EqsD,EAAYW,gBAAkB1K,IAGzC,CAKD,SAASyK,GAA2B3sB,EAAcysB,GAC9CzsB,EAAal/B,cAAgB,IAAMj4nB,MAAMqE,KAAKu/qB,EAAiBI,YAAYlrD,YACtE54nB,IAAIsT,GAAOA,EAAIvS,eAAe41nB,IAAemC,GAAgBxlnB,GAAOylnB,GAAgBzlnB,IACpFW,OAAOkjQ,KAASA,GACrB8/Y,EAAaj/B,SAAW,IAAMl4nB,MAAMqE,KAAKu/qB,EAAiBI,YAAYjrD,OAAO74nB,IAAIoE,GAAQs0nB,GAAat0nB,IACtG6ypB,EAAa7+B,QAAUsrD,EAAiBtrD,QAKxC6+B,EAAa5+B,MAAQ,IACxB,CAKD,SAASsrD,GAAoBvmqB,GACzB,GAAI0lqB,GAAW1lqB,GACX,OA4CR,SAAS2mqB,GAA4B5K,GACjC,MAAMhia,EAAMmiX,GAAe6/C,GAAY,GACvC,GAAoC,OAAhChia,EAAIgiX,wBACJ,OAAOhiX,EAAIgiX,wBAEf,MAAM+f,EAAS,CACX9gB,QAASjhX,EAAIihX,SAAW,KACxB0rD,YAAa,CACTlrD,WAAY,IAAI3+lB,IAChB4+lB,MAAO,IAAI5+lB,KAEf+ppB,SAAU,CACNprD,WAAY,IAAI3+lB,IAChB4+lB,MAAO,IAAI5+lB,MAGnBkjnB,UAAchmY,EAAI9pG,SAASj+J,QAASgpoB,IAGhC,MAAM6rC,EAAgBN,GAAoBvrC,GAC1C6rC,EAAcD,SAASprD,WAAWxpnB,QAAQguF,GAAS87iB,EAAO4qC,YAAYlrD,WAAWjunB,IAAIyyF,IACrF6mlB,EAAcD,SAASnrD,MAAMzpnB,QAAQguF,GAAS87iB,EAAO4qC,YAAYjrD,MAAMlunB,IAAIyyF,GAA3E,GAEJ+/iB,GAAchmY,EAAI+hX,cAAc9pnB,QAAQ80qB,IAEhCxrD,GADqBwrD,GAErBhrC,EAAO4qC,YAAYjrD,MAAMlunB,IAAIu5qB,GAM7BhrC,EAAO4qC,YAAYlrD,WAAWjunB,IAAIu5qB,EAAlC,GAGR/mC,GAAchmY,EAAIs6K,SAASrib,QAAS40qB,IAChC,MAAMG,EAAeH,EAGrB,GAAIlB,GAAWqB,GAAe,CAG1B,MAAMC,EAAgBT,GAAoBQ,GAC1CC,EAAcJ,SAASprD,WAAWxpnB,QAAQguF,KACtC87iB,EAAO4qC,YAAYlrD,WAAWjunB,IAAIyyF,IAClC87iB,EAAO8qC,SAASprD,WAAWjunB,IAAIyyF,GAA/B,GAEJgnlB,EAAcJ,SAASnrD,MAAMzpnB,QAAQguF,KACjC87iB,EAAO4qC,YAAYjrD,MAAMlunB,IAAIyyF,IAC7B87iB,EAAO8qC,SAASnrD,MAAMlunB,IAAIyyF,GAA1B,EAEP,MACQs7hB,GAAayrD,GAClBjrC,EAAO8qC,SAASnrD,MAAMlunB,IAAIw5qB,GAG1BjrC,EAAO8qC,SAASprD,WAAWjunB,IAAIw5qB,EAA/B,GAGRhta,EAAIgiX,wBAA0B+f,EACvBA,CACV,CAzGc6qC,CAA4B3mqB,GAElC,GAAI28mB,GAAa38mB,GAAO,CAEzB,GAAqB,QADA07mB,GAAgB17mB,IAAS27mB,GAAgB37mB,IAE1D,MAAO,CACHg7mB,QAAS,KACT0rD,YAAa,CACTlrD,WAAY,IAAI3+lB,IAChB4+lB,MAAO,IAAI5+lB,KAEf+ppB,SAAU,CACNprD,WAAY,IAAI3+lB,IAAI,CAAC7c,IACrBy7mB,MAAO,IAAI5+lB,MAKvB,GAAgB,OADAy+lB,GAAat7mB,GAEzB,MAAO,CACHg7mB,QAAS,KACT0rD,YAAa,CACTlrD,WAAY,IAAI3+lB,IAChB4+lB,MAAO,IAAI5+lB,KAEf+ppB,SAAU,CACNprD,WAAY,IAAI3+lB,IAChB4+lB,MAAO,IAAI5+lB,IAAI,CAAC7c,KAI/B,CAED,MAAM,IAAIle,MAAO,GAAEke,EAAKhX,uDAC3B,CAwED,SAASk9qB,GAA0Bz8qB,GAC/B,OAAIg8qB,GAAsBh8qB,GACfA,EAAMjC,SAEViC,CACV;;;;;;;OAsBD,IAAIw9qB,GAAmB,EAUvB,SAASC,GAAiBlnqB,EAAMk6X,GAI5B,IAAIitS,EAAiB,MAximBzB,SAASC,GAAyCpnqB,EAAMk6X,GAChDs4P,GAAyBt4P,KACzBo4P,GAAiCx9mB,IAAI9U,EAAMk6X,GAC3Cq4P,GAA8BhloB,IAAIyS,GAEzC,EAqimBGonqB,CAAyCpnqB,EAAMk6X,GAI/CmtS,GAAuBrnqB,EAAMk6X,GAC7Bt5X,OAAOgyH,eAAe5yH,EAAMu5mB,GAAa,CACrCj4mB,IAAK,KACD,GAAuB,OAAnB6lqB,EAAyB,CACzB,MAAM59B,EAAWnc,KACjB,GAAIoF,GAAyBt4P,GAAW,CACpC,MAAMh9W,GAAQ,CAAE,cAAald,EAAKhX,0BAClC,MAAIkxY,EAASu4P,aACTv1mB,GAAM3f,KAAM,mBAAkB28X,EAASu4P,eAEvCv4P,EAASw4P,WAAax4P,EAASw4P,UAAU7woB,QACzCq7B,GAAM3f,KAAM,iBAAgB/Z,KAAKsiP,UAAUo0J,EAASw4P,cAExDx1mB,GAAM3f,KAAM,2DACN,IAAIzb,MAAMo7B,GAAMh6B,KAAK,MAC9B,CAKD,MAAMqE,EA7mBtB,SAAS+/qB,KACL,OAAO9B,EACV,CA2mB+B8B,GAChB,IAAIC,EAAsBrtS,EAASqtS,yBACPjxqB,IAAxBixqB,IAEIA,EADY,OAAZhgrB,QAAoD+O,IAAhC/O,EAAQggrB,qBACNhgrB,EAAQggrB,qBAMtC,IAAIvtqB,GAAgBkgY,EAASlgY,mBACP1D,IAAlB0D,KAEIA,GADY,OAAZzS,QAAqD+O,IAAjC/O,EAAQigrB,qBACZjgrB,EAAQigrB,qBAGRpvD,GAAoBY,UAG5C,MAAMyZ,GAAcv4P,EAASu4P,aAAgB,SAAQzynB,EAAKhX,qBACpDguI,GAAO,IACNywiB,GAAkBznqB,EAAMk6X,GAC3BwtS,eAAgBn+B,EAASo+B,sBAAsB,YAAa3nqB,EAAKhX,KAAMypoB,IACvE7+mB,SAAUsmX,EAAStmX,UAAY,GAC/B2zpB,sBACAt0pB,OAAQinX,EAASjnX,QAAUqmmB,GAC3B3va,WAAYuwL,EAASvwL,WAMrBmya,aAAc,GACdpB,gBAAiBxgP,EAASwgP,gBAC1B1gnB,iBACA4tqB,cAAe1tS,EAAS0tS,cACxBrM,cAAerhS,EAASqhS,eAAiB,KACzC5+C,eAAgBziP,EAASi0B,YAE7B84Q,KACA,IAMI,GALIjwiB,GAAK6wiB,iBACLC,GAAoC9nqB,GAExCmnqB,EACI59B,EAAS29B,iBAAiB3B,GAAgB9yC,GAAaz7f,IACvDkjQ,EAASi0B,WAAY,CAIrB,MAAMl+P,GAAUovE,GAAQ66J,EAASjqO,SAAWqpd,KACpCqB,iBAAeC,aAqF/C,SAASmtD,GAA0B/nqB,EAAMiwJ,GACrC,IAAI+3gB,EAAsB,KACtBC,EAAiB,KAgErB,MAAO,CACHttD,cAhEkB,KAClB,GAA4B,OAAxBqtD,EAA8B,CAG9BA,EAAsB,CAACtsD,GAAgB17mB,IACvC,MAAM6mP,GAAO,IAAIhqO,IACjB,UAAWqrpB,MAAUj4gB,EAAS,CAE1B,MAAMmie,GAAMjc,GAAkB+xD,IAC9B,IAAIrhb,GAAKrqO,IAAI41mB,IAIb,GADAvrY,GAAKt5P,IAAI6koB,IACHlW,GAAekW,IAAM,CACvB,MAAMp/d,GAAQuzgB,GAAoBn0C,IAClC,UAAWl8nB,MAAO88J,GAAM4zgB,SAASprD,WAAY,CACzC,MAAMzhX,GAAM2hX,GAAgBxlnB,KAAQylnB,GAAgBzlnB,IAChD6jQ,KAAQlT,GAAKrqO,IAAItmB,MACjB2wP,GAAKt5P,IAAI2I,IACT8xqB,EAAoBzqqB,KAAKw8P,IAEhC,CACJ,KACI,CACD,MAAMA,GAAM2hX,GAAgB0W,KAAQzW,GAAgByW,IAChDr4X,IACAiua,EAAoBzqqB,KAAKw8P,GAEhC,CACJ,CACJ,CACD,OAAOiua,GAkCPptD,SAhCa,KACb,GAAuB,OAAnBqtD,EAAyB,CACzBA,EAAiB,GACjB,MAAMphb,GAAO,IAAIhqO,IACjB,UAAWqrpB,MAAUj4gB,EAAS,CAC1B,MAAMmie,GAAMjc,GAAkB+xD,IAC9B,IAAIrhb,GAAKrqO,IAAI41mB,IAIb,GADAvrY,GAAKt5P,IAAI6koB,IACHlW,GAAekW,IAAM,CACvB,MAAMp/d,GAAQuzgB,GAAoBn0C,IAClC,UAAWproB,MAAQgsK,GAAM4zgB,SAASnrD,MAAO,CACrC,MAAM1hX,GAAMuhX,GAAat0nB,IACrB+yQ,KAAQlT,GAAKrqO,IAAIx1B,MACjB6/P,GAAKt5P,IAAIvG,IACTihrB,EAAe1qqB,KAAKw8P,IAE3B,CACJ,KACI,CACD,MAAMA,GAAMuhX,GAAa8W,IACrBr4X,IACAkua,EAAe1qqB,KAAKw8P,GAE3B,CACJ,CACJ,CACD,OAAOkua,GAMd,CA3J2DF,CAA0B/nqB,EAAMiwJ,IACpEk3gB,EAAexsD,cAAgBA,GAC/BwsD,EAAevsD,SAAWA,GAC1BusD,EAAetsD,aAAe,IAAM5qd,GAAQrtK,IAAIuznB,GACnD,CAKJ,CAJA,QAGG8wD,IACH,CAaD,GAZyB,IAArBA,IArnBpB,SAASkB,KACL,IAAKvC,GAAqB,CACtBA,IAAsB,EACtB,IACI,QAAS7uqB,EAAI4uqB,GAAY9jrB,OAAS,EAAGkV,GAAK,EAAGA,IAAK,CAC9C,MAAQglqB,aAAYv0qB,YAAam+qB,GAAY5uqB,GACzCvP,EAASs0nB,cAAgBt0nB,EAASs0nB,aAAa/5c,MAAM8jgB,MAErDF,GAAYv9nB,OAAOrxC,EAAG,GACtBsvqB,GAA6BtK,EAAYv0qB,GAEhD,CAIJ,CAHA,QAEGo+qB,IAAsB,CACzB,CACJ,CACJ,CA0mBmBuC,GA4IpB,SAASC,GAAiBhmgB,GACtB,YAAqC9rK,IAA9B8rK,EAAUqkgB,eACpB,CAxImB2B,CAAiBpoqB,GAAO,CACxB,MAAM87nB,GAASyqC,GAAoBvmqB,EAAKymqB,iBACxCD,GAA2BW,EAAgBrrC,GAC9C,CACD,GAAI5hQ,EAAS8gP,QACT,KAAI9gP,EAASi0B,WAIT,MAAM,IAAIrsa,MAAO,uCAAsC00nB,GAAkBx2mB,2DAHzEmnqB,EAAensD,QAAU9gP,EAAS8gP,OAG5B,MAGL9gP,EAASi0B,aACdg5Q,EAAensD,QAAU,GAEhC,CACD,OAAOmsD,GAGXtiY,cAAc,GAErB,CA2HD,SAASwjY,GAAiBroqB,EAAM2knB,GAC5B,IAAI2jD,EAAiB,KACrBjB,GAAuBrnqB,EAAM2knB,GAAa,IAC1C/jnB,OAAOgyH,eAAe5yH,EAAMw5mB,GAAY,CACpCl4mB,IAAK,KACD,GAAuB,OAAnBgnqB,EAAyB,CAIzB,MAAMtxiB,EAAOuxiB,GAAqBvoqB,EAAM2knB,GAAa,IAErD2jD,EADiBl7C,KAEJi7C,iBAAiB9C,GAAgBvuiB,EAAKwxiB,aAAcxxiB,EAAKkjQ,SACzE,CACD,OAAOouS,GAGXzjY,cAAc,GAErB,CACD,SAAS0jY,GAAqBvoqB,EAAMk6X,GAChC,MAAMlxY,EAAOgX,GAAQA,EAAKhX,KACpBw/qB,EAAgB,SAAQx/qB,iBACxBugpB,EAAWnc,KACXq7C,EAAShB,GAAkBznqB,EAAMk6X,GACvCuuS,SAAOf,eAAiBn+B,EAASo+B,sBAAsB,YAAa3+qB,EAAMw/qB,GACtEC,EAAOZ,iBACPC,GAAoC9nqB,GAEjC,CAAEk6X,SAAUuuS,EAAQD,eAC9B,CACD,SAASnB,GAAuBrnqB,EAAMk6X,GAClC,IAAI2uQ,EAAe,KACnBjooB,OAAOgyH,eAAe5yH,EAAM25mB,GAAgB,CACxCr4mB,IAAK,KACD,GAAqB,OAAjBunoB,EAAuB,CACvB,MAAM7xgB,EAAOuxiB,GAAqBvoqB,EAAMk6X,GAClCqvQ,EAAWnc,KACjByb,EAAeU,EAASC,eAAe+7B,GAAiB,SAAQvlqB,EAAKhX,oBAAgB,CACjFA,KAAMguI,EAAKkjQ,SAASlxY,KACpBgX,KAAMg3H,EAAKkjQ,SAASl6X,KACpBipoB,kBAAmB,EACnBjqP,KAAMkzO,GAAoBlynB,GAC1B5B,OAAQmroB,EAASrc,cAAcM,WAEtC,CACD,OAAOqb,GAGXhkW,cAAc,GAErB,CACD,SAAS6jY,GAA0B1oqB,GAC/B,OAAOY,OAAOo1R,eAAeh2R,EAAKrd,aAAeie,OAAOje,SAC3D,CAKD,SAAS8krB,GAAkBznqB,EAAMk6X,GAE7B,MAAM00P,EAAUqD,KACV/B,EAAetB,EAAQyB,gBAAgBrwnB,GAC7C,MAAO,CACHhX,KAAMgX,EAAKhX,KACXgX,KAAMA,EACN9V,cAAgCoM,IAAtB4jY,EAAShwY,SAAyBgwY,EAAShwY,SAAW,KAChEzE,KAAMy0Y,EAASz0Y,MAAQ4znB,GACvB6W,aAAcA,EACdz+Z,OAAQyoK,EAASzoK,QAAU6nZ,GAC3BiB,QAASrgP,EAASqgP,SAAWjB,GAC7Bw6B,QAAS60B,GAAuB3oqB,EAAMkwnB,EAAc04C,IACpDC,UAAW,CAAEC,cAAel6C,EAAQ0B,iBAAiBtwnB,EAAM,gBAC3D0nqB,eAAgB,KAChBG,iBAAkBa,GAA0B1oqB,GAC5Cw6mB,SAAUuuD,GAAgB7uS,EAASsgP,UACnC/ynB,UAAWyyY,EAASzyY,WAAa,KACjCuhrB,YAAaL,GAAuB3oqB,EAAMkwnB,EAAcrD,IACxDlQ,eAAgBziP,EAASi0B,WAEhC,CAID,SAAS25Q,GAAoC9nqB,GACzC,MAAMipqB,EAAeroqB,OAAOje,UAC5B,IAAIu2B,EAAStY,OAAOo1R,eAAeh2R,EAAKrd,WAAWtB,YAEnD,KAAO63B,GAAUA,IAAW+vpB,IAGnBttD,GAAgBzimB,KAAYwimB,GAAgBximB,IAC7CgwpB,GAA2BhwpB,IAC3BmvpB,GAAiBnvpB,EAAQ,MAE7BA,EAAStY,OAAOo1R,eAAe98Q,EAEtC,CACD,SAASiwpB,GAA0Bj/qB,GAC/B,MAA2B,iBAAbA,EAAwBk/qB,GAAal/qB,GAAYisnB,GAAkBjsnB,EACpF,CACD,SAASm/qB,GAAyB9uhB,EAAc+uhB,GAC5C,MAAO,CACH/uhB,aAAcA,EACd3+H,UAAWutpB,GAA0BG,EAAIp/qB,UACzCuwN,YAAa6ud,EAAI7ud,YACjBnjN,MAAOgyqB,EAAIhyqB,MACXm2T,KAAM67W,EAAI77W,KAAO67W,EAAI77W,KAAO,KAC5BnmU,SAAUgirB,EAAIhirB,OACdwloB,0BAA2Bw8C,EAAIx8C,wBAEtC,CACD,SAAS67C,GAAuB3oqB,EAAMkwnB,EAAcq5C,GAChD,MAAMC,EAAc,GACpB,UAAWz2pB,KAASm9mB,EAChB,GAAIA,EAAavsoB,eAAeovB,GAAQ,CACpC,MAAMg9mB,EAAcG,EAAan9mB,GACjCg9mB,EAAY/9nB,QAAQs3qB,KAChB,GAAIC,EAAWD,IAAM,CACjB,IAAKA,GAAIp/qB,SACL,MAAM,IAAIpI,MAAO,6CAA4CixB,UACrDyjmB,GAAkBx2mB,gDAE9B,GAAI+vnB,EAAYhzjB,KAAK0smB,IACjB,MAAM,IAAI3nrB,MAAO,0DAErB0nrB,EAAYjsqB,KAAK8rqB,GAAyBt2pB,EAAOu2pB,IACpD,GAER,CAEL,OAAOE,CACV,CACD,SAAST,GAAgBvuD,GACrB,YAAoBlknB,IAAbkknB,EAAyB,KAAO4uD,GAAa5uD,EACvD,CACD,SAASouD,GAAen/qB,GACpB,MAAMT,EAAOS,EAAMsioB,eACnB,MAAgB,iBAAT/ioB,GAAoC,oBAATA,CACrC,CACD,SAAS6joB,GAAYpjoB,GACjB,MAAMT,EAAOS,EAAMsioB,eACnB,MAAgB,cAAT/ioB,GAAiC,iBAATA,CAClC,CACD,SAASygrB,GAAkBhgrB,GACvB,MAAgC,UAAzBA,EAAMsioB,cAChB,CACD,SAASq9C,GAAa3/qB,GAClB,OAAOA,EAAMnG,MAAM,KAAKV,IAAI8mrB,GAASA,EAAMr2qB,OAC9C,CACD,MAAMs2qB,GAAkB,CACpB,cAAe,WAAY,cAAe,YAAa,kBAAmB,qBAC1E,qBAAsB,yBAE1B,SAAST,GAA2BlpqB,GAChC,MAAM4unB,EAAUqD,KAChB,GAAI03C,GAAgB5smB,KAAK6smB,GAAYh7C,EAAQ0B,iBAAiBtwnB,EAAM4pqB,IAChE,OAAO,EAEX,MAAM15C,EAAetB,EAAQsB,aAAalwnB,GAC1C,UAAW+S,KAASm9mB,EAAc,CAC9B,MAAMH,EAAcG,EAAan9mB,GACjC,QAAShc,EAAI,EAAGA,EAAIg5nB,EAAYluoB,OAAQkV,IAAK,CACzC,MAAMH,GAAUm5nB,EAAYh5nB,GACtB8yqB,GAAejzqB,GAAQm1nB,eAC7B,GAAI09C,GAAkB7yqB,KAAYgyqB,GAAehyqB,KAAYi2nB,GAAYj2nB,KACpD,WAAjBizqB,IAA8C,gBAAjBA,IACZ,iBAAjBA,GACA,OAAO,CAEd,CACJ,CACD,OAAO,CACV;;;;;;;OA4CD,SAASC,GAAgB9pqB,EAAMg3H,GAC3B,MAAO,CACHh3H,KAAMA,EACNhX,KAAMgX,EAAKhX,KACXs1qB,SAAUtniB,EAAKhuI,KACf8ua,UAAoBxha,IAAd0gI,EAAK8gS,MAAqB9gS,EAAK8gS,KACrC6kN,eAAgB3lf,EAAKm3R,WAE5B;;;;;;;OAcD,MAAMq/N,GAAYjC,GAAc,YAAa,CAACr1nB,EAAM,KAAOA,OAAKI,OAAWA,EAAW,CAAC0J,EAAMg3H,IAASqxiB,GAAiBroqB,EAAMg3H,IAOvHy2f,GAAYlC,GAAc,YAAa,CAACzooB,EAAI,OAAU43nB,gBAAiBxC,GAAwBvwJ,WAAY7ke,IAAM0qoB,QAAWl3nB,EAAW,CAAC0J,EAAMg3H,IAASkwiB,GAAiBlnqB,EAAMg3H,IAK9K22f,GAAOpC,GAAc,OAAS9omB,KAASq1Y,MAAM,KAASr1Y,SAAMnsB,OAAWA,EAAW,CAAC0J,EAAMg3H,IArE/F,SAAS+yiB,GAAY/pqB,EAAMg3H,GACvB,IAAIgziB,EAAY,KACZnhC,EAAe,KACnBjooB,OAAOgyH,eAAe5yH,EAAM25mB,GAAgB,CACxCr4mB,IAAK,KACD,GAAqB,OAAjBunoB,EAAuB,CACvB,MAAM3uQ,EAAW4vS,GAAgB9pqB,EAAMg3H,GACjCuygB,EAAWnc,GAAmFlzP,EAASl6X,MAC7G6ooB,EAAeU,EAASC,eAAe+7B,GAAiB,SAAQrrS,EAASlxY,oBAAgB,CACrFA,KAAMkxY,EAASlxY,KACfgX,KAAMk6X,EAASl6X,KACfipoB,kBAAmB,EACnBjqP,KAAMkzO,GAAoBlynB,GAC1B5B,OAAQmroB,EAASrc,cAAcS,MAEtC,CACD,OAAOkb,GAGXhkW,cAAc,IAElBjkS,OAAOgyH,eAAe5yH,EAAMy5mB,GAAa,CACrCn4mB,IAAK,KACD,GAAkB,OAAd0oqB,EAAoB,CACpB,MAAM9vS,EAAW4vS,GAAgB9pqB,EAAMg3H,GAEvCgziB,EADiB58C,GAAmFlzP,EAASl6X,MAEhG+pqB,YAAYxE,GAAiB,SAAQrrS,EAASlxY,qBAAiBkxY,EAC/E,CACD,OAAO8vS,GAGXnlY,cAAc,GAErB,CAmCuGklY,CAAY/pqB,EAAMg3H,IAKpH+4Z,GAAQu8F,GAAkB,QAAU29C,KAA2BA,yBAK/DC,GAAS59C,GAAkB,SAAW29C,KAA2BA,yBAKjEE,GAAc79C,GAAkB,cAAgB89C,KAAwBA,sBAkExEC,GAAe/9C,GAAkB,eAAgB,CAACj1mB,EAAW1b,MAAY0b,YAAW1b,UAapFiynB,GAAWrC,GAAc,WAAa/joB,GAAaA,OAAU8O,OAAWA,EAY9E,CAAC0J,EAAMg3H,IAAS+uiB,GAAgB/lqB,EAAMg3H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBtC,SAASe,MAAQp8H,GAEhB;;;;;;;OAaD,MAwEM2uqB,GAAkB,IAAInprB,GAAe,2BAM3C,MAAMoprB,GACFlprB,YAAYmprB,GACRjprB,KAAKiprB,SAAWA,EAChBjprB,KAAKgI,QAAUwuI,GACfx2I,KAAKk3F,OAASs/C,GACdx2I,KAAK0wP,aAAc,EACnB1wP,KAAK2mJ,MAAO,EACZ3mJ,KAAKkprB,YAAc,IAAI3jrB,QAAQ,CAAC+gV,EAAK6iW,KACjCnprB,KAAKgI,QAAUs+U,EACftmV,KAAKk3F,OAASiylB,GAErB,CAEDC,kBACI,GAAIpprB,KAAK0wP,YACL,OAEJ,MAAM24b,EAAoB,GACpBvylB,EAAW,KACb92F,KAAK2mJ,MAAO,EACZ3mJ,KAAKgI,SAAL,EAEJ,GAAIhI,KAAKiprB,SACL,QAASzzqB,EAAI,EAAGA,EAAIxV,KAAKiprB,SAAS3orB,OAAQkV,IAAK,CAC3C,MAAM8zqB,EAAatprB,KAAKiprB,SAASzzqB,KACjC,GAAI8slB,GAAUgnF,GACVD,EAAkBrtqB,KAAKstqB,QAAvB,GAEK3oB,GAAa2oB,GAAa,CAC/B,MAAMC,EAAsB,IAAIhkrB,QAAQ,CAACyC,GAASkvF,MAC9CoylB,EAAWp9qB,UAAU,CAAE4qF,SAAU9uF,GAAS2zB,MAAOu7D,IAAjD,GAEJmylB,EAAkBrtqB,KAAKutqB,EAC1B,CACJ,CAELhkrB,QAAQowB,IAAI0zpB,GACPhhrB,KAAK,KACNyuF,GAAQ,GAEP0tgB,MAAM//kB,IACPzkB,KAAKk3F,OAAOzyE,EAAZ,GAE6B,IAA7B4kqB,EAAkB/orB,QAClBw2F,IAEJ92F,KAAK0wP,aAAc,CACtB,EAELs4b,GAAsBjmrB,UAAO,SAAuCgb,GAAK,OAAO,IAAKA,GAAKirqB,IAAuB96E,GAAS66E,GAAiB,GAAM,EACjJC,GAAsB/lrB,WAAsB8jnB,GAAmB,CAAEllnB,MAAOmnrB,GAAuB9lrB,QAAS8lrB,GAAsBjmrB,UAAMiknB,WAAY;;;;;;;;AA6BhJ,MAAMwiE,GAAS,IAAI5prB,GAAe,QAAS,CACvConnB,WAAY,OACZ9jnB,QAASumrB,KAEb,SAASA,KACL,MAAQ,GAAEC,OAAgBA,OAAgBA,MAC7C,CAUD,SAASA,KACL,OAAOhprB,OAAOM,aAAa,GAAK0zB,KAAKI,MAAsB,GAAhBJ,KAAKo8I,UACnD,CAKD,MAAM64gB,GAAuB,IAAI/prB,GAAe,wBAK1C4znB,GAAc,IAAI5znB,GAAe,cAAe,CAClDonnB,WAAY,WACZ9jnB,QAAS,IAAM,YAYb0mrB,GAAyB,IAAIhqrB,GAAe,wBAe5CiqrB,IATmB,IAAIjqrB,GAAe,iCASd,IAAIA,GAAe;;;;;;;OASjD,MAAMkqrB,GACF5xpB,IAAIrY,GAEAoY,QAAQC,IAAIrY,EACf,CAEDktM,KAAKltM,GAEDoY,QAAQ80L,KAAKltM,EAChB,EAELiqqB,GAAQ/mrB,UAAO,SAAyBgb,GAAK,OAAO,IAAKA,GAAK+rqB,GAAa,EAC3EA,GAAQ7mrB,WAAsB8jnB,GAAmB,CAAEllnB,MAAOiorB,GAAS5mrB,QAAS4mrB,GAAQ/mrB,UAAMiknB,WAAY,aA8DtG,MAAMrgd,GAAY,IAAI/mK,GAAe,WAAY,CAC7ConnB,WAAY,OACZ9jnB,QAAS,IAAMizQ,GAAOxvG,GAAWwvd,GAAYM,SAAWN,GAAYa;;;;;;;;AA7CxE,SAAS+yD,KAkBD,cAAe3nqB,UAAc,KAAeA,UAAU4vB,QAAW27nB,EAExE,CAyBoFoc,KAwC/ErjE,GAAwB,IAAI9mnB,GAAe,sBAAuB,CACpEonnB,WAAY,OACZ9jnB,QAAS,IArpMa,QA+qML,IAAItD,GAAe,gBAsBZ,IAAIA,GAAe,sBAwB/C,IAAIoqrB,IACJ,SAAWA,GACPA,EAA2BA,EAA2BzprB,MAAW,GAAK,QACtEyprB,EAA2BA,EAA2BC,QAAa,GAAK,UACxED,EAA2BA,EAA2BE,OAAY,GAAK,QAC1E,CAJD,CAIGF,KAA+BA,GAA6B;;;;;;;;AAmB/D,MAAMG,GACFrqrB,YAAY++mB,EAAiBurE,GACzBpqrB,KAAK6+mB,gBAAkBA,EACvB7+mB,KAAKoqrB,mBAAqBA,CAC7B,EAkBL,MAAMC,GAKFC,kBAAkB9P,GACd,OAAO,IAAID,GAAgBC,EAC9B,CAID+P,mBAAmB/P,GACf,OAAOj1qB,QAAQyC,QAAQhI,KAAKsqrB,kBAAkB9P,GACjD,CAIDgQ,kCAAkChQ,GAC9B,MAAM37D,EAAkB7+mB,KAAKsqrB,kBAAkB9P,GAEzC4P,EAAqB5rC,GADT7jB,GAAe6/C,GACkBjgD,cAC9C50mB,OAAO,CAACi0pB,EAAW2K,MACpB,MAAMjsB,GAAen+B,GAAgBoqD,IACrCjsB,WAAgBshB,EAAU59pB,KAAK,IAAIu8oB,GAAiBD,KAC7CshB,GACR,IACH,OAAO,IAAIuQ,GAA6BtrE,EAAiBurE,EAC5D,CAIDK,mCAAmCjQ,GAC/B,OAAOj1qB,QAAQyC,QAAQhI,KAAKwqrB,kCAAkChQ,GACjE,CAIDkQ,aAAgB,CAIhBC,cAAclsqB,GAAS,CAIvBmsqB,YAAYpQ,GAEX,EAEL6P,GAAStnrB,UAAO,SAA0Bgb,GAAK,OAAO,IAAKA,GAAKssqB,GAAc,EAC9EA,GAASpnrB,WAAsB8jnB,GAAmB,CAAEllnB,MAAOworB,GAAUnnrB,QAASmnrB,GAAStnrB,UAAMiknB,WAAY,SAUhF,IAAIpnnB,GAAe;;;;;;;;AAmH5C,MAAMk4F,GAAiBvyF,QAAQyC,QAAQ,GACvC,SAASyjmB,GAAkBj7kB,UACZq6pB,KAAS,IAEhB/ylB,GAAQzvF,KAAK,KACTmoB,GAAMA,EAAG2D,MAAM,KAAM,KAAf,GAIV02pB,KAAKx1qB,QAAQo2lB,kBAAkB,oBAAqBj7kB,EAE3D;;;;;;;;;;;;;;;AA4GD,MAAMwyK,GACFljM,aAAcgrrB,wBAAuB,EAAOC,sCAAqC,EAAOC,oCAAmC,IA2BvH,GA1BAhrrB,KAAKirrB,sBAAuB,EAC5BjrrB,KAAKkrrB,sBAAuB,EAI5BlrrB,KAAKqhZ,UAAW,EAIhBrhZ,KAAKmrrB,WAAa,IAAIjgrB,IAAa,GAMnClL,KAAKorrB,iBAAmB,IAAIlgrB,IAAa,GAMzClL,KAAK4nN,SAAW,IAAI18M,IAAa,GAIjClL,KAAKw2F,QAAU,IAAItrF,IAAa,UACrB2/qB,KAAQ,IACf,MAAM,IAAI/1D,GAAa,KAA2CpR,GAEtEmnE,KAAKQ,oBACL,MAAMpwb,EAAOj7P,KAGb,GAFAi7P,EAAKqwb,SAAW,EAChBrwb,EAAKswb,OAAStwb,EAAKuwb,OAASX,KAAKx1qB,QAC7Bw1qB,KAAKY,0BAA8B,CACnC,MAAMA,EAA4BZ,KAAKY,0BACvCxwb,EAAKuwb,OAASvwb,EAAKuwb,OAAOE,KAAK,IAAID,EAA0B,WAChE,CACGZ,KAAKc,uBACL1wb,EAAKuwb,OAASvwb,EAAKuwb,OAAOE,KAAK,IAAIb,KAAKc,uBAExCb,GAAwBD,KAAKe,yBAC7B3wb,EAAKuwb,OAASvwb,EAAKuwb,OAAOE,KAAKb,KAAKe,yBAIxC3wb,EAAK8vb,oCACAC,GAAoCD,EACzC9vb,EAAK+vb,iCAAmCA,EACxC/vb,EAAK4wb,6BAA8B,EACnC5wb,EAAK6wb,4BAtJb,SAASC,KACL,IAAID,EAA8Bn0D,GAAQt0lB,sBACtC2opB,EAA6Br0D,GAAQp9c,qBACzC,UAAWswgB,KAAS,KAAeiB,GAA+BE,EAA4B,CAG1F,MAAMC,EAAiCH,EAA4BjB,KAAKqB,WAAW,qBAC/ED,IACAH,EAA8BG,GAElC,MAAME,EAAgCH,EAA2BnB,KAAKqB,WAAW,qBAC7EC,IACAH,EAA6BG,EAEpC,CACD,MAAO,CAAEL,8BAA6BE,6BACzC,CAsI0CD,GAAiCD,4BAyJ5E,SAASM,GAAiC9tqB,GACtC,MAAM+tqB,EAAwC,MAzClD,SAASC,GAA8BhuqB,GAc/BA,EAAKiuqB,uBAA6D,IAArCjuqB,EAAKutqB,8BAGtCvtqB,EAAKutqB,4BAA8BvtqB,EAAKwtqB,4BAA4BxqrB,KAAKq2nB,GAAS,KAUzEr5mB,EAAKkuqB,mBACNluqB,EAAKkuqB,iBAAmB3B,KAAKlmnB,KAAK8nnB,kBAAkB,mBAAoB,KACpEnuqB,EAAKutqB,6BAA8B,EACnCa,GAAsBpuqB,GACtBA,EAAKiuqB,sBAAuB,EAC5BI,GAAYruqB,GACZA,EAAKiuqB,sBAAuB,QAC7Bx3qB,EAAW,OAAW,SAE7BuJ,EAAKkuqB,iBAAiB9mH,QAAtB,GAEJgnH,GAAsBpuqB,GACzB,CAGOguqB,CAA8BhuqB,EAAD,EAEjCA,EAAKktqB,OAASltqB,EAAKktqB,OAAOE,KAAK,CAC3BjkrB,KAAM,UACN87I,WAAY,CAAEqpiB,eAAiB,GAC/BC,aAAc,CAACrygB,EAAUnlK,EAASwH,EAAQiwqB,EAAMC,GAAWC,MACvD,IACIjwR,UAAQz+Y,GACDk8J,EAASyygB,WAAWpwqB,EAAQiwqB,EAAMC,GAAWC,GAQvD,CAPA,SAEQ1uqB,EAAKysqB,oCAAoD,cAAd+B,EAAKruqB,MACjDH,EAAK0sqB,mCACLqB,IAEJj2L,GAAQ93e,EACX,GAEL4uqB,SAAU,CAAC1ygB,EAAUnlK,EAASwH,EAAQpK,EAAUs6qB,GAAWC,GAAWr8pB,MAClE,IACIosY,UAAQz+Y,GACDk8J,EAASkrZ,OAAO7ojB,EAAQpK,EAAUs6qB,GAAWC,GAAWr8pB,GAOlE,CANA,QAEOrS,EAAK0sqB,kCACLqB,IAEJj2L,GAAQ93e,EACX,GAEL6uqB,UAAW,CAAC3ygB,EAAUnlK,EAASwH,EAAQuwqB,KACnC5ygB,EAAS6ygB,QAAQxwqB,EAAQuwqB,GACrB/3qB,IAAYwH,IAGe,aAAvBuwqB,EAAa98qB,QACbgO,EAAKgvqB,sBAAwBF,EAAaG,UAC1Cb,GAAsBpuqB,GACtBquqB,GAAYruqB,IAEgB,aAAvB8uqB,EAAa98qB,SAClBgO,EAAK2sqB,qBAAuBmC,EAAaI,aAIrDC,cAAe,CAACjzgB,EAAUnlK,EAASwH,EAAQ8e,KACvC6+I,EAAS+ie,YAAY1goB,EAAQ8e,GAC7Brd,EAAKzO,kBAAkB,IAAMyO,EAAKk4E,QAAQpmF,KAAKurB,KACxC,IAGlB,CA7MOywpB,CAAiCnxb,EACpC,CACqBl1P,yBAElB,cAAc8krB,KAAS,MAAqD,IAAtCA,KAAKx1qB,QAAQ0K,IAAI,gBAC1D,CACyBha,6BACtB,IAAKi9L,GAAO0qf,kBACR,MAAM,IAAI54D,GAAa,KAAkDpR,EAEhF,CAC4B39mB,gCACzB,GAAIi9L,GAAO0qf,kBACP,MAAM,IAAI54D,GAAa,KAAkDpR,EAEhF,CAaDhymB,IAAI8e,EAAIu8pB,EAAWC,GACf,OAAOhtrB,KAAKwrrB,OAAO95qB,IAAI8e,EAAIu8pB,EAAWC,EACzC,CAaDW,QAAQn9pB,EAAIu8pB,EAAWC,EAAWvlrB,GAC9B,MAAM6W,EAAOte,KAAKwrrB,OACZsB,GAAOxuqB,EAAKmuqB,kBAAkB,gBAAkBhlrB,EAAM+oB,EAAIo9pB,GAAep3iB,GAAMA,IACrF,IACI,OAAOl4H,EAAKqvqB,QAAQb,GAAMC,EAAWC,EAIxC,CAHA,QAEG1uqB,EAAKuvqB,WAAWf,GACnB,CACJ,CAKDgB,WAAWt9pB,EAAIu8pB,EAAWC,GACtB,OAAOhtrB,KAAKwrrB,OAAOsC,WAAWt9pB,EAAIu8pB,EAAWC,EAChD,CAcDn9qB,kBAAkB2gB,GACd,OAAOxwB,KAAKurrB,OAAO75qB,IAAI8e,EAC1B,EAEL,MAAMo9pB,GAAgB,GACtB,SAASjB,GAAYruqB,GAgBjB,GAAqB,GAAjBA,EAAKgtqB,WAAkBhtqB,EAAK4sqB,uBAAyB5sqB,EAAK+iY,SAC1D,IACI/iY,EAAKgtqB,WACLhtqB,EAAK8sqB,iBAAiBh7qB,KAAK,KAY9B,CAXA,QAGG,GADAkO,EAAKgtqB,YACAhtqB,EAAK4sqB,qBACN,IACI5sqB,EAAKzO,kBAAkB,IAAMyO,EAAKspM,SAASx3M,KAAK,MAInD,CAHA,QAEGkO,EAAK+iY,UAAW,CACnB,CAER,CAER,CA+FD,SAASqrS,GAAsBpuqB,GACvBA,EAAKgvqB,wBACHhvqB,EAAKysqB,oCAAsCzsqB,EAAK0sqB,oCACT,IAArC1sqB,EAAKutqB,4BACTvtqB,EAAK4sqB,sBAAuB,EAG5B5sqB,EAAK4sqB,sBAAuB,CAEnC,CACD,SAASnuR,GAAQz+Y,GACbA,EAAKgtqB,WACDhtqB,EAAK+iY,WACL/iY,EAAK+iY,UAAW,EAChB/iY,EAAK6sqB,WAAW/6qB,KAAK,MAE5B,CACD,SAASgmf,GAAQ93e,GACbA,EAAKgtqB,WACLqB,GAAYruqB,EACf,CAKD,MAAMyvqB,GACFjurB,cACIE,KAAKkrrB,sBAAuB,EAC5BlrrB,KAAKirrB,sBAAuB,EAC5BjrrB,KAAKqhZ,UAAW,EAChBrhZ,KAAKmrrB,WAAa,IAAIjgrB,GACtBlL,KAAKorrB,iBAAmB,IAAIlgrB,GAC5BlL,KAAK4nN,SAAW,IAAI18M,GACpBlL,KAAKw2F,QAAU,IAAItrF,EACtB,CACDwG,IAAI8e,EAAIu8pB,EAAWC,GACf,OAAOx8pB,EAAG2D,MAAM44pB,EAAWC,EAC9B,CACDc,WAAWt9pB,EAAIu8pB,EAAWC,GACtB,OAAOx8pB,EAAG2D,MAAM44pB,EAAWC,EAC9B,CACDn9qB,kBAAkB2gB,GACd,OAAOA,GACV,CACDm9pB,QAAQn9pB,EAAIu8pB,EAAWC,EAAWvlrB,GAC9B,OAAO+oB,EAAG2D,MAAM44pB,EAAWC,EAC9B;;;;;;;OAmBL,MAAMgB,GAAc,IAAIpurB,GAAe,IAIjCqurB,GAAqB,IAAIrurB,GAAe,IAqB9C,MAAMsurB,GACFpurB,YAAYmjhB,EAASzkb,EAAU2vlB,GAC3BnurB,KAAKijhB,QAAUA,EACfjjhB,KAAKw+F,SAAWA,EAChBx+F,KAAKourB,cAAgB,EACrBpurB,KAAKqurB,eAAgB,EAOrBrurB,KAAKsurB,UAAW,EAChBturB,KAAKuurB,WAAa,GAClBvurB,KAAKwurB,iBAAmB,KAGnBC,KAgPb,SAASC,GAAqB/7pB,GAC1B87pB,GAAqB97pB,CACxB,CAjPW+7pB,CAAqBP,GACrBA,EAAkBQ,YAAYnwlB,IAElCx+F,KAAK4urB,sBACL3rK,EAAQvxgB,IAAI,KACR1R,KAAKwurB,wBACM3D,KAAQ,IAAc,KAAOA,KAAKx1qB,QAAQ0K,IAAI,mBAAjB,EAE/C,CACD6uqB,sBACI5urB,KAAKijhB,QAAQkoK,WAAWj/qB,UAAU,CAC9BjH,KAAM,KACFjF,KAAKsurB,UAAW,EAChBturB,KAAKqurB,eAAgB,KAG7BrurB,KAAKijhB,QAAQpzgB,kBAAkB,KAC3B7P,KAAKijhB,QAAQr7T,SAAS17M,UAAU,CAC5BjH,KAAM,KACF+9L,GAAO6rf,yBACPpjF,GAAkB,KACdzrmB,KAAKqurB,eAAgB,EACrBrurB,KAAK8urB,sBAAL,EAFa,GAHzB,EAUP,CAKDC,8BACI,YAAKX,eAAiB,EACtBpurB,KAAKsurB,UAAW,EACTturB,KAAKourB,aACf,CAKDY,8BAEI,GADAhvrB,KAAKourB,eAAiB,EAClBpurB,KAAKourB,cAAgB,EACrB,MAAM,IAAI7trB,MAAM,qCAEpB,YAAKuurB,uBACE9urB,KAAKourB,aACf,CAID/sS,WACI,OAAOrhZ,KAAKqurB,eAAwC,IAAvBrurB,KAAKourB,gBAAwBpurB,KAAKijhB,QAAQgoK,oBAC1E,CACD6D,uBACI,GAAI9urB,KAAKqhZ,WAELoqN,GAAkB,KACd,KAAkC,IAA3BzrmB,KAAKuurB,WAAWjurB,QAAc,CACjC,IAAIo1W,EAAK11W,KAAKuurB,WAAWj+nB,MACzBp/C,aAAawkW,EAAGu5U,WAChBv5U,EAAGw5U,OAAOlvrB,KAAKsurB,SAClB,CACDturB,KAAKsurB,UAAW,QAGnB,CAED,IAAIzib,EAAU7rQ,KAAKmvrB,kBACnBnvrB,KAAKuurB,WAAavurB,KAAKuurB,WAAWj5qB,OAAQogW,IAClCA,EAAGgQ,WAAYhQ,EAAGgQ,SAAS75G,KAC3B36P,aAAawkW,EAAGu5U,YACT,IAIfjvrB,KAAKsurB,UAAW,CACnB,CACJ,CACDa,kBACI,OAAKnvrB,KAAKwurB,iBAIHxurB,KAAKwurB,iBAAiBY,WAAW/trB,IAAK0c,KAErC4S,OAAQ5S,EAAE4S,OAGV0+pB,iBAAkBtxqB,EAAEsxqB,iBACpB9vqB,KAAMxB,EAAEwB,QATL,EAYd,CACD+vqB,YAAY55U,EAAI5jR,EAAS4zR,GACrB,IAAIupU,GAAY,EACZn9lB,GAAWA,EAAU,IACrBm9lB,EAAYv8qB,WAAW,KACnB1S,KAAKuurB,WAAavurB,KAAKuurB,WAAWj5qB,OAAQogW,GAAOA,EAAGu5U,YAAcA,GAClEv5U,EAAG11W,KAAKsurB,SAAUturB,KAAKmvrB,kBAArB,EACHr9lB,IAEP9xF,KAAKuurB,WAAWvyqB,KAAK,CAAEkzqB,OAAQx5U,EAAIu5U,UAAWA,EAAWvpU,SAAUA,GACtE,CAaD6pU,WAAWL,EAAQp9lB,EAAS4zR,GACxB,GAAIA,IAAa1lX,KAAKwurB,iBAClB,MAAM,IAAIjurB,MAAM,8HAIpBP,KAAKsvrB,YAAYJ,EAAQp9lB,EAAS4zR,GAClC1lX,KAAK8urB,sBACR,CAKDU,yBACI,OAAOxvrB,KAAKourB,aACf,CAODqB,oBAAoB5trB,GAChB7B,KAAKw+F,SAASixlB,oBAAoB5trB,EAAO7B,KAC5C,CAOD0vrB,sBAAsB7trB,GAClB7B,KAAKw+F,SAASkxlB,sBAAsB7trB,EACvC,CAOD8trB,cAAcC,EAAOz2C,EAAU9zZ,GAE3B,MAAO,EACV,EAEL6oc,GAAYnrrB,UAAO,SAA6Bgb,GAAK,OAAO,IAAKA,GAAKmwqB,IAAahgF,GAASlra,IAASkra,GAAS2hF,IAAsB3hF,GAAS+/E,IAAuB,EACpKC,GAAYjrrB,WAAsB8jnB,GAAmB,CAAEllnB,MAAOqsrB,GAAahrrB,QAASgrrB,GAAYnrrB,YAWhG,MAAM8srB,GACF/vrB,cAEIE,KAAK8vrB,cAAgB,IAAI9+hB,GAC5B,CAMDy+hB,oBAAoB5trB,EAAOkurB,GACvB/vrB,KAAK8vrB,cAAcv8pB,IAAI1xB,EAAOkurB,EACjC,CAKDL,sBAAsB7trB,GAClB7B,KAAK8vrB,cAAc50pB,OAAOr5B,EAC7B,CAIDmurB,4BACIhwrB,KAAK8vrB,cAAc30pB,OACtB,CAKD80pB,eAAeh9qB,GACX,OAAOjT,KAAK8vrB,cAAc/vqB,IAAI9M,IAAS,IAC1C,CAIDi9qB,sBACI,OAAO/urB,MAAMqE,KAAKxF,KAAK8vrB,cAAch1pB,SACxC,CAIDq1pB,qBACI,OAAOhvrB,MAAMqE,KAAKxF,KAAK8vrB,cAAcn2pB,OACxC,CAODy2pB,sBAAsBn9qB,EAAMo9qB,GAAkB,GAC1C,OAAO5B,IAAoB2B,sBAAsBpwrB,KAAMiT,EAAMo9qB,IAAoB,IACpF,EAeL,IAAI5B;;;;;;;OAbJoB,GAAoB9srB,UAAO,SAAqCgb,GAAK,OAAO,IAAKA,GAAK8xqB,GAAyB,EAC/GA,GAAoB5srB,WAAsB8jnB,GAAmB,CAAEllnB,MAAOgurB,GAAqB3srB,QAAS2srB,GAAoB9srB,UAAMiknB,WAAY,aAqB1I,IAAIspE,GAAoB,KAKxB,MAAMC,GAA2B,IAAI3wrB,GAAe,sBAO9C4wrB,GAA6B,IAAI5wrB,GAAe,4BAChD6wrB,IAAkD/sE,EAkDxD,MAAMgtE,GACF5wrB,YAAY2H,EAAM5F,GACd7B,KAAKyH,KAAOA,EACZzH,KAAK6B,MAAQA,CAChB,EAoCL,SAAS8urB,GAAwB9qgB,GAC7B,MAAM+qgB,EAAQ/qgB,EAAS9lK,IAAI4pqB,GAAsB,MAC7CiH,GACAA,EAAMngrB,QAAS8tJ,GAASA,IAE/B,CA0ED,SAASsyhB,GAAsBC,EAAuBrprB,EAAMvB,EAAY,IACpE,MAAMw3Q,EAAQ,aAAYj2Q,IACpBmpC,EAAS,IAAIhxC,GAAe89Q,GAClC,MAAO,CAACqza,EAAiB,MACrB,IAAIlla,GAAWmla,KACf,IAAKnla,IAAYA,GAAShmG,SAAS9lK,IAAIwwqB,IAA0B,GAAQ,CACrE,MAAMU,GAAoB,IACnB/qrB,KACA6qrB,EACH,CAAE5qrB,QAASyqC,EAAQpqC,UAAU,IAE7BsqrB,EACAA,EAAsBG,IAvHtC,SAASC,GAAerrgB,GACpB,GAAIyqgB,KAAsBA,GAAkBvwqB,IAAIwwqB,IAA0B,GACtE,MAAM,IAAIz7D,GAAa,KAA+CpR,GAI1E4sE,GAAoBzqgB,EACpB,MAAMgmG,EAAWhmG,EAAS9lK,IAAIoxqB,IAC9BR,UAAwB9qgB,GACjBgmG,CACV,CAgHeqla,CAAeE,GAAuBH,GAAmBvza,GAEhE,CACD,OAQR,SAAS2za,GAAeC,GACpB,MAAMzla,EAAWmla,KACjB,IAAKnla,EACD,MAAM,IAAIipW,GAAa,KAA+CpR,GAM1E,OAAO73V,CACV,CAlBcwla,EAAc,CAE5B,CAqBD,SAASD,GAAuBlrrB,EAAY,GAAIuB,GAC5C,OAAOyknB,GAAS//lB,OAAO,CACnB1kB,OACAvB,UAAW,CACP,CAAEC,QAAS6zoB,GAAgBxzoB,SAAU,YACrC,CAAEL,QAASqqrB,GAA4BhqrB,SAAU,IAAI80B,IAAI,CAAC,IAAMg1pB,GAAoB,WACjFpqrB,IAGd,CAeD,SAAS8qrB,KACL,OAAOV,IAAmBvwqB,IAAIoxqB,KAAgB,IACjD,CAUD,MAAMA,GAEFrxrB,YAAY+6qB,GACR76qB,KAAK66qB,UAAYA,EACjB76qB,KAAKuxrB,SAAW,GAChBvxrB,KAAKwxrB,kBAAoB,GACzBxxrB,KAAK+wG,YAAa,CACrB,CAOD0glB,uBAAuBC,EAAe1rrB,GAKlC,MAAM8E,EAAS6mrB,GAAU3rrB,GAAS8E,OAAQ8mrB,GAAiB5rrB,IACrDE,EAAY,CAAC,CAAEC,QAAS68L,GAAQx8L,SAAUsE,IAKhD,OAAOA,EAAO4G,IAAI,KACd,MAAMmgrB,EAAiB3lE,GAAS//lB,OAAO,CAAEjmB,UAAWA,EAAWyxB,OAAQ33B,KAAK6lL,SAAUp+K,KAAMiqrB,EAAclX,WAAW/yqB,OAC/GqqrB,GAAYJ,EAAcvlqB,OAAO0lqB,GACjCE,GAAmBD,GAAUjsgB,SAAS9lK,IAAIs9nB,GAAc,MAC9D,IAAK00C,GACD,MAAM,IAAIj9D,GAAa,KAAoDpR,GAE/E54mB,SAAO+E,kBAAkB,KACrB,MAAMkqJ,GAAejvJ,EAAO0rF,QAAQtqF,UAAU,CAC1CjH,KAAO02B,KACHo2pB,GAAiBx0C,YAAY5hnB,GAA7B,IAGRm2pB,GAAU1lF,UAAU,KAChBz0lB,GAAO3X,KAAKuxrB,SAAUO,IACtB/3hB,GAAa9oJ,aAAb,EAFJ,GAKG+grB,GAA6BD,GAAkBjnrB,EAAQ,KAC1D,MAAMmnrB,GAAaH,GAAUjsgB,SAAS9lK,IAAIipqB,IAC1CiJ,UAAW7I,kBACJ6I,GAAW/I,YAAY7grB,KAAK,KAG/B4lqB,GADiB6jB,GAAUjsgB,SAAS9lK,IAAI4mJ,GAAWgngB,KAC3BA,IACxB3tqB,KAAKkyrB,mBAAmBJ,IACjBA,IALJ,EAHwB,EAY1C,CAiBDK,gBAAgB3X,EAAY4X,EAAkB,IAC1C,MAAMpsrB,EAAUqsrB,GAAe,GAAID,GACnC,OA/TR,SAASE,GAAuBzsgB,EAAU7/K,EAASw0qB,GAE/C,MAAMkX,EAAgB,IAAInX,GAAgBC,GAGtC,OAAOj1qB,QAAQyC,QAAQ0prB,EAgC9B,CA0RcY,CAAuBtyrB,KAAK6lL,SAAU7/K,EAASw0qB,GACjDnyqB,KAAKqprB,GAAiB1xrB,KAAKyxrB,uBAAuBC,EAAe1rrB,GACzE,CACDksrB,mBAAmBJ,GACf,MAAMzwL,EAASywL,EAAUjsgB,SAAS9lK,IAAI4hf,IACtC,GAAImwL,EAAU1X,qBAAqB95qB,OAAS,EACxCwxrB,EAAU1X,qBAAqB3pqB,QAAQrI,GAAKi5f,EAAOi5H,UAAUlynB,QAA7D,KAEK0prB,EAAUpxqB,SAAS6xqB,cAIxB,MAAM,IAAIz9D,GAAa,KAA2DpR,GAHlFouE,EAAUpxqB,SAAS6xqB,cAAclxL,EAG3B,CAKVrhgB,KAAKuxrB,SAASv1qB,KAAK81qB,EACtB,CAID1lF,UAAU35lB,GACNzS,KAAKwxrB,kBAAkBx1qB,KAAKvJ,EAC/B,CAKGozK,eACA,OAAO7lL,KAAK66qB,SACf,CAKD1tpB,UACI,GAAIntB,KAAK+wG,WACL,MAAM,IAAI+jhB,GAAa,KAAuDpR,GAElF1jnB,KAAKuxrB,SAAS7vrB,QAAQ+O,QAAQkxiB,GAAUA,EAAOx0hB,WAC/CntB,KAAKwxrB,kBAAkB/grB,QAAQ8yW,GAAYA,KAC3C,MAAMivU,EAAmBxyrB,KAAK66qB,UAAU96pB,IAAIywqB,GAA4B,MACpEgC,IACAA,EAAiB/hrB,QAAQ8yW,GAAYA,KACrCivU,EAAiBr3pB,SAErBn7B,KAAK+wG,YAAa,CACrB,CAIGyzD,gBACA,OAAOxkK,KAAK+wG,UACf,EAWL,SAAS6glB,GAAiB5rrB,GACtB,MAAO,CACH8krB,sBAAiE,EACjEC,sCAAuC/krB,IAAWA,EAAQysrB,yBAA0B,EACpFzH,oCAAqChlrB,IAAWA,EAAQ0srB,uBAAwB,EAEvF,CACD,SAASf,GAAUgB,EAAa3srB,GAC5B,IAAI8E,EACJ,OACIA,EADgB,SAAhB6nrB,EACS,IAAI5E,IAGa,YAAhB4E,OAA4B59qB,EAAY49qB,IAAgB,IAAI3vf,GAAOh9L,GAE1E8E,CACV,CACD,SAASknrB,GAA6B/yjB,EAAcn0H,EAAQ2H,GACxD,IACI,MAAMmf,EAASnf,IACf,OAAI6vlB,GAAU1wkB,GACHA,EAAO4ykB,MAAO//kB,IACjB3Z,QAAO+E,kBAAkB,IAAMovH,EAAas+gB,YAAY94nB,IAElDA,IAGPmN,CAMV,CALA,MACMnN,GACH3Z,QAAO+E,kBAAkB,IAAMovH,EAAas+gB,YAAY94nB,IAElDA,CACT,CACJ,CACD,SAAS4tqB,GAAeruD,EAAKunB,GACzB,OACIvnB,EADA7ioB,MAAMkuB,QAAQk8nB,GACRA,EAAK5loB,OAAO0sqB,GAAgBruD,GAG5B,IAAKA,KAAQunB,EAG1B,CApDD4lC,GAAYpurB,UAAO,SAA6Bgb,GAAK,OAAO,IAAKA,GAAKozqB,IAAajjF,GAASge,IAAa,EACzGilE,GAAYlurB,WAAsB8jnB,GAAmB,CAAEllnB,MAAOsvrB,GAAajurB,QAASiurB,GAAYpurB,UAAMiknB,WAAY,aAiJlH,MAAMrlH,GAEF7hgB,YAAYqb,EAAO0/pB,EAAW+X,GAC1B5yrB,KAAKmb,MAAQA,EACbnb,KAAK66qB,UAAYA,EACjB76qB,KAAK4yrB,kBAAoBA,EAEzB5yrB,KAAK6yrB,oBAAsB,GAC3B7yrB,KAAK8yrB,OAAS,GACd9yrB,KAAK+yrB,cAAe,EACpB/yrB,KAAKgzrB,SAAU,EACfhzrB,KAAK+wG,YAAa,EAClB/wG,KAAKwxrB,kBAAoB,GAKzBxxrB,KAAKizrB,eAAiB,GAItBjzrB,KAAK6hgB,WAAa,GAClB7hgB,KAAKkzrB,8BAAgClzrB,KAAKmb,MAAMiwqB,iBAAiBl/qB,UAAU,CACvEjH,KAAM,KACFjF,KAAKmb,MAAMzJ,IAAI,KACX1R,KAAKmI,MAAL,EADJ,IAKR,MAAMgrrB,EAAoB,IAAIzumB,IAAY7wD,KACtC7zB,KAAKgzrB,QAAUhzrB,KAAKmb,MAAMkmY,WAAarhZ,KAAKmb,MAAM8vqB,uBAC7CjrrB,KAAKmb,MAAM+vqB,qBAChBlrrB,KAAKmb,MAAMtL,kBAAkB,KACzBgkB,GAAS5uB,KAAKjF,KAAKgzrB,SACnBn/pB,GAASijE,UAAT,EAFJ,GAKEuqT,EAAW,IAAI38T,IAAY7wD,KAG7B,IAAIu/pB,GACJpzrB,KAAKmb,MAAMtL,kBAAkB,KACzBujrB,GAAYpzrB,KAAKmb,MAAMysM,SAAS17M,UAAU,KACtC82L,GAAO6rf,yBAGPpjF,GAAkB,MACTzrmB,KAAKgzrB,UAAYhzrB,KAAKmb,MAAM8vqB,uBAC5BjrrB,KAAKmb,MAAM+vqB,uBACZlrrB,KAAKgzrB,SAAU,EACfn/pB,GAAS5uB,MAAK,GAAd,EAJS,EAJT,GAahB,MAAMourB,GAAcrzrB,KAAKmb,MAAMgwqB,WAAWj/qB,UAAU,KAChD82L,GAAOswf,sBACHtzrB,KAAKgzrB,UACLhzrB,KAAKgzrB,SAAU,EACfhzrB,KAAKmb,MAAMtL,kBAAkB,KACzBgkB,GAAS5uB,MAAK,EAAd,GADJ,GAKR,MAAO,KACHmurB,GAAUnirB,cACVoirB,GAAYpirB,aAAZ,CACH,GAELjR,KAAKqhZ,YACDkyS,KAAQJ,EAAmB9xS,EAAS57Y,QAAKinN,QAChD,CAIGloD,gBACA,OAAOxkK,KAAK+wG,UACf,CAIG80E,eACA,OAAO7lL,KAAK66qB,SACf,CAsCDvgD,UAAUk5D,EAAoBx6B,GAE1B,MAAM2mB,EAAqB6T,aAA8Bp3C,GAEzD,IADmBp8oB,KAAK66qB,UAAU96pB,IAAIipqB,IACtBriiB,KAAM,EACEg5hB,GAAsBvkD,GAAao4D,GAIvD,MAAM,IAAI1+D,GAAa,IAA6D27D,GACvF,CACD,IAAI7Q,EAEAA,EADAD,EACmB6T,EAGFxzrB,KAAK66qB,UAAU96pB,IAAIy8nB,IACRxwb,wBAAwBwne,GAExDxzrB,KAAKizrB,eAAej3qB,KAAK4jqB,EAAiBl2qB,eAE1C,MAAMzD,GA9mBd,SAAS8ypB,GAAgB06B,GACrB,OAAOA,EAAG16B,eACb,CA4mBwBA,CAAgB6mB,QAAoB7qqB,EAAY/U,KAAK66qB,UAAU96pB,IAAIm6pB,IAC9EwZ,GAAiB16B,GAAsB4mB,EAAiBj3qB,SACxDgrrB,GAAU/T,EAAiBzzpB,OAAO+/lB,GAASwwB,KAAM,GAAIg3C,GAAgBztrB,IACrEkG,GAAgBwnrB,GAAQ3vrB,SAASmI,cACjC4jrB,GAAc4D,GAAQ9tgB,SAAS9lK,IAAIiuqB,GAAa,MACtD+B,WAAaN,oBAAoBtjrB,IACjCwnrB,GAAQvnF,UAAU,KACdpsmB,KAAK8gpB,WAAW6yC,GAAQpyL,UACxB5pf,GAAO3X,KAAK6hgB,WAAY8xL,IACxB5D,IAAaL,sBAAsBvjrB,GAAnC,GAEJnM,KAAK4zrB,eAAeD,IAKbA,EACV,CAWDxrrB,OAEI,GAAInI,KAAK+yrB,aACL,MAAM,IAAIj+D,GAAa,KAA2DpR,GAEtF,IACI1jnB,KAAK+yrB,cAAe,EACpB,QAAS92iB,KAAQj8I,KAAK8yrB,OAClB72iB,EAAK90H,eAcZ,CAPA,MACM1C,GAEHzkB,KAAKmb,MAAMtL,kBAAkB,IAAM7P,KAAK4yrB,kBAAkBr1C,YAAY94nB,GACzE,SAEGzkB,KAAK+yrB,cAAe,CACvB,CACJ,CAMDzxL,WAAWm+K,GAEP,MAAMxjiB,EAAOwjiB,EACbz/qB,KAAK8yrB,OAAO92qB,KAAKigI,GACjBA,EAAKk8gB,eAAen4pB,KACvB,CAID8gpB,WAAW2+B,GAEP,MAAMxjiB,EAAOwjiB,EACb9nqB,GAAO3X,KAAK8yrB,OAAQ72iB,GACpBA,EAAKg8gB,kBACR,CACD27B,eAAetne,GACXtsN,KAAKshgB,WAAWh1S,EAAai1S,UAC7BvhgB,KAAKmI,OACLnI,KAAK6hgB,WAAW7lf,KAAKswM,GAEHtsN,KAAK66qB,UAAU96pB,IAAI6pqB,GAAwB,IAAI9jqB,OAAO9lB,KAAK6yrB,qBACnEpirB,QAAS8yW,GAAaA,EAASj3J,GAC5C,CAEDz7M,cACI,IAAI7Q,KAAK+wG,WAET,IAEI/wG,KAAKwxrB,kBAAkB/grB,QAAQ8yW,GAAYA,KAE3CvjX,KAAK8yrB,OAAOpxrB,QAAQ+O,QAASwrI,GAASA,EAAK9uH,WAC3CntB,KAAKkzrB,8BAA8BjirB,aAStC,CARA,QAGGjR,KAAK+wG,YAAa,EAElB/wG,KAAK8yrB,OAAS,GACd9yrB,KAAK6yrB,oBAAsB,GAC3B7yrB,KAAKwxrB,kBAAoB,EAC5B,CACJ,CASDplF,UAAU35lB,GACNg+qB,OACAzwrB,KAAKwxrB,kBAAkBx1qB,KAAKvJ,GACrB,IAAMkF,GAAO3X,KAAKwxrB,kBAAmB/+qB,EAC/C,CAMD0a,UACI,GAAIntB,KAAK+wG,WACL,MAAM,IAAI+jhB,GAAa,KAA8DpR,GAEzF,MAAM79b,EAAW7lL,KAAK66qB,UAElBh1f,EAAS14J,UAAY04J,EAASrhB,WAG9BqhB,EAAS14J,SAEhB,CAIG0mqB,gBACA,OAAO7zrB,KAAK8yrB,OAAOxyrB,MACtB,CACDwzrB,kBAIC,EAQL,SAASn8qB,GAAO8nK,EAAM32K,GAClB,MAAM0D,EAAQizK,EAAKx+K,QAAQ6H,GACvB0D,GAAQ,GACRizK,EAAK54H,OAAOr6C,EAAO,EAE1B,CAXDm1f,GAAe5+f,UAAO,SAAgCgb,GAAK,OAAO,IAAKA,GAAK4jf,IAAgBusG,GAASlra,IAASkra,GAASmsC,IAAsBnsC,GAASmvC,IAAiB,EACvK17I,GAAe1+f,WAAsB8jnB,GAAmB,CAAEllnB,MAAO8/f,GAAgBz+f,QAASy+f,GAAe5+f,UAAMiknB,WAAY;;;;;;;;AAsC3H,IAAI+sE,IAAW,EACXC,IAAiB,EASrB,SAAS19qB,KACL09qB,WAAiB,EACVD,EACV,CAWD,SAASE,KACL,GAAID,GACA,MAAM,IAAIzzrB,MAAM,iDAOpBwzrB,IAAW,CACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GD,MAAMG,IAMNA,GAAkB57D,kBAElB,SAAS67D,GAAwBrlX,GAC7B,OAUJ,SAASslX,GAAc34D,EAAOuB,EAAOq3D,GACjC,GAAI34D,GAAgBD,KAAW44D,EAAQ,CAGnC,MAAM7+B,EAAgBr4B,GAAyB1B,EAAMjvnB,MAAOwwnB,GAC5D,OAAO,IAAIw6B,GAAUhC,EAAeA,EACvC,IACsB,GAAd/5B,EAAMh9mB,KAAgG,CAG3G,MAAM61qB,EAAoBt3D,EAh6zBC,IAi6zB3B,OAAO,IAAIw6B,GAAU88B,EAAmBt3D,EAC3C,CACD,OAAO,IACV;;;;;;;OAxBUo3D,CAAc31D,KAAmBN,KAA+D,KAA1C,GAARrvT,GACxD;;;;;;;;AA4rBD,MAAMylX,GACFz0rB,cAAiB,CACjBq0iB,SAASphhB,GACL,OAAOqpoB,GAAmBrpoB,EAC7B,CACD5G,OAAOqoqB,GACH,OAAO,IAAIC,GAAsBD,EACpC,EAEL,MAAME,GAAkB,CAAClorB,EAAOga,IAASA,EAKzC,MAAMiuqB,GACF30rB,YAAY00rB,GACRx0rB,KAAKM,OAAS,EAEdN,KAAK20rB,eAAiB,KAEtB30rB,KAAK40rB,iBAAmB,KACxB50rB,KAAK60rB,gBAAkB,KACvB70rB,KAAK80rB,QAAU,KACf90rB,KAAK+0rB,QAAU,KACf/0rB,KAAKg1rB,eAAiB,KACtBh1rB,KAAKi1rB,eAAiB,KACtBj1rB,KAAKk1rB,WAAa,KAClBl1rB,KAAKm1rB,WAAa,KAClBn1rB,KAAKo1rB,cAAgB,KACrBp1rB,KAAKq1rB,cAAgB,KAErBr1rB,KAAKs1rB,qBAAuB,KAC5Bt1rB,KAAKu1rB,qBAAuB,KAC5Bv1rB,KAAK4/mB,WAAa40E,GAAaE,EAClC,CACD7uE,YAAYr1lB,GACR,IAAI63J,EACJ,IAAKA,EAASroL,KAAK80rB,QAAoB,OAAXzsgB,EAAiBA,EAASA,EAAOk3a,MACzD/ukB,EAAG63J,EAEV,CACDD,iBAAiB53J,GACb,IAAIglqB,EAASx1rB,KAAK80rB,QACdW,EAAaz1rB,KAAKo1rB,cAClBM,EAAkB,EAClBC,EAAc,KAClB,KAAOH,GAAUC,GAAY,CAGzB,MAAMptgB,IAAUotgB,GACZD,GACIA,EAAOv4iB,aACH24iB,GAAiBH,EAAYC,EAAiBC,GACtDH,EACAC,EACEI,GAAmBD,GAAiBvtgB,GAAQqtgB,EAAiBC,GAC7D14iB,GAAeorC,GAAOprC,aAE5B,GAAIorC,KAAWotgB,EACXC,IACAD,EAAaA,EAAWK,qBAGxBN,EAASA,EAAOj2F,MACY,MAAxBl3a,GAAOsnU,cACP+lM,QAEC,CAEIC,IACDA,EAAc,IAClB,MAAMI,GAAyBF,GAAmBH,EAC5CM,GAAoB/4iB,GAAey4iB,EACzC,GAAIK,IAA0BC,GAAmB,CAC7C,QAASxgrB,GAAI,EAAGA,GAAIugrB,GAAwBvgrB,KAAK,CAC7C,MAAMmT,GAASnT,GAAImgrB,EAAYr1rB,OAASq1rB,EAAYngrB,IAAMmgrB,EAAYngrB,IAAK,EACrEhJ,GAAQmc,GAASnT,GACnBwgrB,IAAqBxprB,IAASA,GAAQuprB,KACtCJ,EAAYngrB,IAAKmT,GAAS,EAEjC,CAEDgtqB,EADsBttgB,GAAOsnU,eACAqmM,GAAoBD,EACpD,CACJ,CAEDF,KAAqB54iB,IACrBzsH,EAAG63J,GAAQwtgB,GAAkB54iB,GAEpC,CACJ,CACDg5iB,oBAAoBzlqB,GAChB,IAAI63J,EACJ,IAAKA,EAASroL,KAAK60rB,gBAA4B,OAAXxsgB,EAAiBA,EAASA,EAAO6tgB,cACjE1lqB,EAAG63J,EAEV,CACD61b,iBAAiB1tlB,GACb,IAAI63J,EACJ,IAAKA,EAASroL,KAAKg1rB,eAA2B,OAAX3sgB,EAAiBA,EAASA,EAAO8tgB,WAChE3lqB,EAAG63J,EAEV,CACD+tgB,iBAAiB5lqB,GACb,IAAI63J,EACJ,IAAKA,EAASroL,KAAKk1rB,WAAuB,OAAX7sgB,EAAiBA,EAASA,EAAOgugB,WAC5D7lqB,EAAG63J,EAEV,CACDg2b,mBAAmB7tlB,GACf,IAAI63J,EACJ,IAAKA,EAASroL,KAAKo1rB,cAA0B,OAAX/sgB,EAAiBA,EAASA,EAAOytgB,aAC/DtlqB,EAAG63J,EAEV,CACD63b,sBAAsB1vlB,GAClB,IAAI63J,EACJ,IAAKA,EAASroL,KAAKs1rB,qBAAiC,OAAXjtgB,EAAiBA,EAASA,EAAOiugB,oBACtE9lqB,EAAG63J,EAEV,CACDvsJ,KAAKwtM,GAGD,GAFkB,MAAdA,IACAA,EAAa,KACZ8yb,GAAmB9yb,GACpB,MAAM,IAAIwrZ,GAAa,KAAiDpR,GAG5E,OAAI1jnB,KAAK4mO,MAAM0C,GACJtpO,KAGA,IAEd,CACDosmB,YAAe,CACfxlY,MAAM0C,GACFtpO,KAAKu6I,SACL,IAEI/tI,EACAga,EACA+vqB,GAJAlugB,EAASroL,KAAK80rB,QACd0B,GAAa,EAIjB,GAAIr1rB,MAAMkuB,QAAQi6M,GAAa,CAC3BtpO,KAAKM,OAASgpO,EAAWhpO,OACzB,QAASkM,GAAQ,EAAGA,GAAQxM,KAAKM,OAAQkM,KACrCga,EAAO8iN,EAAW98N,IAClB+prB,GAAcv2rB,KAAK4/mB,WAAWpzmB,GAAOga,GACtB,OAAX6hK,GAAoBhpK,OAAOm4G,GAAG6wD,EAAOougB,UAAWF,KAK5CC,IAEAnugB,EAASroL,KAAK02rB,mBAAmBrugB,EAAQ7hK,EAAM+vqB,GAAa/prB,KAE3D6S,OAAOm4G,GAAG6wD,EAAO7hK,KAAMA,IACxBxmB,KAAK22rB,mBAAmBtugB,EAAQ7hK,KATpC6hK,EAASroL,KAAK42rB,UAAUvugB,EAAQ7hK,EAAM+vqB,GAAa/prB,IACnDgqrB,GAAa,GAUjBnugB,EAASA,EAAOk3a,KAEvB,MAEG/ylB,EAAQ,EAh1bpB,SAASqqrB,GAAgB9jqB,EAAKvC,GAC1B,GAAIrvB,MAAMkuB,QAAQ0D,GACd,QAASvd,EAAI,EAAGA,EAAIud,EAAIzyB,OAAQkV,IAC5Bgb,EAAGuC,EAAIvd,QAGV,CACD,MAAM6gY,EAAWtjX,EAAIo3kB,QACrB,IAAI3jlB,EACJ,OAAUA,EAAO6vX,EAASpxY,QAAQ0hJ,MAC9Bn2H,EAAGhK,EAAKte,MAEf,CACJ,CAo0bW2urB,CAAgBvtd,EAAa9iN,KACzB+vqB,GAAcv2rB,KAAK4/mB,WAAWpzmB,EAAOga,IACtB,OAAX6hK,GAAoBhpK,OAAOm4G,GAAG6wD,EAAOougB,UAAWF,KAK5CC,IAEAnugB,EAASroL,KAAK02rB,mBAAmBrugB,EAAQ7hK,GAAM+vqB,GAAa/prB,IAE3D6S,OAAOm4G,GAAG6wD,EAAO7hK,KAAMA,KACxBxmB,KAAK22rB,mBAAmBtugB,EAAQ7hK,MATpC6hK,EAASroL,KAAK42rB,UAAUvugB,EAAQ7hK,GAAM+vqB,GAAa/prB,GACnDgqrB,GAAa,GAUjBnugB,EAASA,EAAOk3a,MAChB/ylB,MAEJxM,KAAKM,OAASkM,EAElB,YAAKsqrB,UAAUzugB,GACfroL,KAAKspO,WAAaA,EACXtpO,KAAK+2rB,OACf,CAIGA,cACA,OAA+B,OAAxB/2rB,KAAKg1rB,gBAA+C,OAApBh1rB,KAAKk1rB,YACjB,OAAvBl1rB,KAAKo1rB,eAAwD,OAA9Bp1rB,KAAKs1rB,oBAC3C,CASD/6iB,SACI,GAAIv6I,KAAK+2rB,QAAS,CACd,IAAI1ugB,EACJ,IAAKA,EAASroL,KAAK60rB,gBAAkB70rB,KAAK80rB,QAAoB,OAAXzsgB,EAAiBA,EAASA,EAAOk3a,MAChFl3a,EAAO6tgB,cAAgB7tgB,EAAOk3a,MAElC,IAAKl3a,EAASroL,KAAKg1rB,eAA2B,OAAX3sgB,EAAiBA,EAASA,EAAO8tgB,WAChE9tgB,EAAOsnU,cAAgBtnU,EAAOprC,aAGlC,IADAj9I,KAAKg1rB,eAAiBh1rB,KAAKi1rB,eAAiB,KACvC5sgB,EAASroL,KAAKk1rB,WAAuB,OAAX7sgB,EAAiBA,EAASA,EAAOgugB,WAC5DhugB,EAAOsnU,cAAgBtnU,EAAOprC,aAElCj9I,KAAKk1rB,WAAal1rB,KAAKm1rB,WAAa,KACpCn1rB,KAAKo1rB,cAAgBp1rB,KAAKq1rB,cAAgB,KAC1Cr1rB,KAAKs1rB,qBAAuBt1rB,KAAKu1rB,qBAAuB,IAG3D,CACJ,CAWDqB,UAAUvugB,EAAQ7hK,EAAM+vqB,EAAa/prB,GAEjC,IAAIwqrB,EACJ,OAAe,OAAX3ugB,EACA2ugB,EAAiBh3rB,KAAK+0rB,SAGtBiC,EAAiB3ugB,EAAO4ugB,MAExBj3rB,KAAKi+I,QAAQoqC,IAIF,QADfA,EAAmC,OAA1BroL,KAAK40rB,iBAA4B,KAAO50rB,KAAK40rB,iBAAiB70qB,IAAIw2qB,EAAa,QAI/El3qB,OAAOm4G,GAAG6wD,EAAO7hK,KAAMA,IACxBxmB,KAAK22rB,mBAAmBtugB,EAAQ7hK,GACpCxmB,KAAKk3rB,eAAe7ugB,EAAQ2ugB,EAAgBxqrB,IAK7B,QADf67K,EAAiC,OAAxBroL,KAAK20rB,eAA0B,KAAO30rB,KAAK20rB,eAAe50qB,IAAIw2qB,EAAa/prB,KAK3E6S,OAAOm4G,GAAG6wD,EAAO7hK,KAAMA,IACxBxmB,KAAK22rB,mBAAmBtugB,EAAQ7hK,GACpCxmB,KAAKm3rB,WAAW9ugB,EAAQ2ugB,EAAgBxqrB,IAIxC67K,EACIroL,KAAKo3rB,UAAU,IAAIC,GAAsB7wqB,EAAM+vqB,GAAcS,EAAgBxqrB,GAGlF67K,CACV,CA4BDqugB,mBAAmBrugB,EAAQ7hK,EAAM+vqB,EAAa/prB,GAC1C,IAAI8qrB,EAA2C,OAA1Bt3rB,KAAK40rB,iBAA4B,KAAO50rB,KAAK40rB,iBAAiB70qB,IAAIw2qB,EAAa,MACpG,OAAuB,OAAnBe,EACAjvgB,EAASroL,KAAKk3rB,eAAeI,EAAgBjvgB,EAAO4ugB,MAAOzqrB,GAEtD67K,EAAOprC,cAAgBzwI,IAC5B67K,EAAOprC,aAAezwI,EACtBxM,KAAKu3rB,YAAYlvgB,EAAQ77K,IAEtB67K,CACV,CAQDyugB,UAAUzugB,GAEN,KAAkB,OAAXA,GAAiB,CACpB,MAAMmvgB,EAAanvgB,EAAOk3a,MAC1Bv/lB,KAAKy3rB,eAAez3rB,KAAK03rB,QAAQrvgB,IACjCA,EAASmvgB,CACZ,CAC6B,OAA1Bx3rB,KAAK40rB,kBACL50rB,KAAK40rB,iBAAiBz5pB,QAEE,OAAxBn7B,KAAKi1rB,iBACLj1rB,KAAKi1rB,eAAekB,WAAa,MAEb,OAApBn2rB,KAAKm1rB,aACLn1rB,KAAKm1rB,WAAWkB,WAAa,MAEZ,OAAjBr2rB,KAAK+0rB,UACL/0rB,KAAK+0rB,QAAQx1F,MAAQ,MAEE,OAAvBv/lB,KAAKq1rB,gBACLr1rB,KAAKq1rB,cAAcS,aAAe,MAEJ,OAA9B91rB,KAAKu1rB,uBACLv1rB,KAAKu1rB,qBAAqBe,oBAAsB,KAEvD,CAEDY,eAAe7ugB,EAAQsvgB,EAAYnrrB,GACD,OAA1BxM,KAAK40rB,kBACL50rB,KAAK40rB,iBAAiBj9qB,OAAO0wK,GAEjC,MAAM+N,EAAO/N,EAAOuvgB,aACd3yrB,EAAOojL,EAAOytgB,aACpB,OAAa,OAAT1/f,EACAp2L,KAAKo1rB,cAAgBnwrB,EAGrBmxL,EAAK0/f,aAAe7wrB,EAEX,OAATA,EACAjF,KAAKq1rB,cAAgBj/f,EAGrBnxL,EAAK2yrB,aAAexhgB,EAExBp2L,KAAK63rB,aAAaxvgB,EAAQsvgB,EAAYnrrB,GACtCxM,KAAKu3rB,YAAYlvgB,EAAQ77K,GAClB67K,CACV,CAED8ugB,WAAW9ugB,EAAQsvgB,EAAYnrrB,GAC3B,YAAKkrrB,QAAQrvgB,GACbroL,KAAK63rB,aAAaxvgB,EAAQsvgB,EAAYnrrB,GACtCxM,KAAKu3rB,YAAYlvgB,EAAQ77K,GAClB67K,CACV,CAED+ugB,UAAU/ugB,EAAQsvgB,EAAYnrrB,GAC1B,YAAKqrrB,aAAaxvgB,EAAQsvgB,EAAYnrrB,GACV,OAAxBxM,KAAKi1rB,eAGLj1rB,KAAKi1rB,eAAiBj1rB,KAAKg1rB,eAAiB3sgB,EAM5CroL,KAAKi1rB,eAAiBj1rB,KAAKi1rB,eAAekB,WAAa9tgB,EAEpDA,CACV,CAEDwvgB,aAAaxvgB,EAAQsvgB,EAAYnrrB,GAK7B,MAAMvH,EAAsB,OAAf0yrB,EAAsB33rB,KAAK80rB,QAAU6C,EAAWp4F,MAI7Dl3a,SAAOk3a,MAAQt6lB,EACfojL,EAAO4ugB,MAAQU,EACF,OAAT1yrB,EACAjF,KAAK+0rB,QAAU1sgB,EAGfpjL,EAAKgyrB,MAAQ5ugB,EAEE,OAAfsvgB,EACA33rB,KAAK80rB,QAAUzsgB,EAGfsvgB,EAAWp4F,MAAQl3a,EAEK,OAAxBroL,KAAK20rB,iBACL30rB,KAAK20rB,eAAiB,IAAImD,IAE9B93rB,KAAK20rB,eAAexzW,IAAI94J,GACxBA,EAAOprC,aAAezwI,EACf67K,CACV,CAEDpqC,QAAQoqC,GACJ,OAAOroL,KAAKy3rB,eAAez3rB,KAAK03rB,QAAQrvgB,GAC3C,CAEDqvgB,QAAQrvgB,GACwB,OAAxBroL,KAAK20rB,gBACL30rB,KAAK20rB,eAAeh9qB,OAAO0wK,GAE/B,MAAM+N,EAAO/N,EAAO4ugB,MACdhyrB,EAAOojL,EAAOk3a,MAIpB,OAAa,OAATnpa,EACAp2L,KAAK80rB,QAAU7vrB,EAGfmxL,EAAKmpa,MAAQt6lB,EAEJ,OAATA,EACAjF,KAAK+0rB,QAAU3+f,EAGfnxL,EAAKgyrB,MAAQ7ggB,EAEV/N,CACV,CAEDkvgB,YAAYlvgB,EAAQ0vgB,GAGhB,OAAI1vgB,EAAOsnU,gBAAkBooM,IAGL,OAApB/3rB,KAAKm1rB,WAGLn1rB,KAAKm1rB,WAAan1rB,KAAKk1rB,WAAa7sgB,EAKpCroL,KAAKm1rB,WAAan1rB,KAAKm1rB,WAAWkB,WAAahugB,GAE5CA,CACV,CACDovgB,eAAepvgB,GACX,OAA8B,OAA1BroL,KAAK40rB,mBACL50rB,KAAK40rB,iBAAmB,IAAIkD,IAEhC93rB,KAAK40rB,iBAAiBzzW,IAAI94J,GAC1BA,EAAOprC,aAAe,KACtBorC,EAAOytgB,aAAe,KACK,OAAvB91rB,KAAKq1rB,eAGLr1rB,KAAKq1rB,cAAgBr1rB,KAAKo1rB,cAAgB/sgB,EAC1CA,EAAOuvgB,aAAe,OAMtBvvgB,EAAOuvgB,aAAe53rB,KAAKq1rB,cAC3Br1rB,KAAKq1rB,cAAgBr1rB,KAAKq1rB,cAAcS,aAAeztgB,GAEpDA,CACV,CAEDsugB,mBAAmBtugB,EAAQ7hK,GACvB6hK,SAAO7hK,KAAOA,EACoB,OAA9BxmB,KAAKu1rB,qBACLv1rB,KAAKu1rB,qBAAuBv1rB,KAAKs1rB,qBAAuBjtgB,EAGxDroL,KAAKu1rB,qBAAuBv1rB,KAAKu1rB,qBAAqBe,oBAAsBjugB,EAEzEA,CACV,EAEL,MAAMgvgB,GACFv3rB,YAAY0mB,EAAMiwqB,GACdz2rB,KAAKwmB,KAAOA,EACZxmB,KAAKy2rB,UAAYA,EACjBz2rB,KAAKi9I,aAAe,KACpBj9I,KAAK2vf,cAAgB,KAErB3vf,KAAKk2rB,cAAgB,KAErBl2rB,KAAKi3rB,MAAQ,KAEbj3rB,KAAKu/lB,MAAQ,KAEbv/lB,KAAKg4rB,SAAW,KAEhBh4rB,KAAKi4rB,SAAW,KAEhBj4rB,KAAK43rB,aAAe,KAEpB53rB,KAAK81rB,aAAe,KAEpB91rB,KAAKm2rB,WAAa,KAElBn2rB,KAAKq2rB,WAAa,KAElBr2rB,KAAKs2rB,oBAAsB,IAC9B,EAGL,MAAM4B,GACFp4rB,cAEIE,KAAKokiB,MAAQ,KAEbpkiB,KAAKqkiB,MAAQ,IAChB,CAMDr4hB,IAAIq8K,GACmB,OAAfroL,KAAKokiB,OACLpkiB,KAAKokiB,MAAQpkiB,KAAKqkiB,MAAQh8W,EAC1BA,EAAO4vgB,SAAW,KAClB5vgB,EAAO2vgB,SAAW,OAMlBh4rB,KAAKqkiB,MAAM4zJ,SAAW5vgB,EACtBA,EAAO2vgB,SAAWh4rB,KAAKqkiB,MACvBh8W,EAAO4vgB,SAAW,KAClBj4rB,KAAKqkiB,MAAQh8W,EAEpB,CAGDtoK,IAAI02qB,EAAW0B,GACX,IAAI9vgB,EACJ,IAAKA,EAASroL,KAAKokiB,MAAkB,OAAX/7W,EAAiBA,EAASA,EAAO4vgB,SACvD,IAAwB,OAAnBE,GAA2BA,GAAkB9vgB,EAAOprC,eACrD59H,OAAOm4G,GAAG6wD,EAAOougB,UAAWA,GAC5B,OAAOpugB,EAGf,OAAO,IACV,CAMD1wK,OAAO0wK,GASH,MAAM+N,EAAO/N,EAAO2vgB,SACd/yrB,EAAOojL,EAAO4vgB,SACpB,OAAa,OAAT7hgB,EACAp2L,KAAKokiB,MAAQn/hB,EAGbmxL,EAAK6hgB,SAAWhzrB,EAEP,OAATA,EACAjF,KAAKqkiB,MAAQjuW,EAGbnxL,EAAK+yrB,SAAW5hgB,EAEE,OAAfp2L,KAAKokiB,KACf,EAEL,MAAM0zJ,GACFh4rB,cACIE,KAAKqB,IAAM,IAAI2vJ,GAClB,CACDmwL,IAAI94J,GACA,MAAMzuJ,EAAMyuJ,EAAOougB,UACnB,IAAI2B,EAAap4rB,KAAKqB,IAAI0e,IAAI6Z,GACzBw+pB,IACDA,EAAa,IAAIF,GACjBl4rB,KAAKqB,IAAIkyB,IAAIqG,EAAKw+pB,IAEtBA,EAAWpsrB,IAAIq8K,EAClB,CAQDtoK,IAAI02qB,EAAW0B,GACX,MAAMv+pB,EAAM68pB,EACN4B,EAAar4rB,KAAKqB,IAAI0e,IAAI6Z,GAChC,OAAOy+pB,EAAaA,EAAWt4qB,IAAI02qB,EAAW0B,GAAkB,IACnE,CAMDxgrB,OAAO0wK,GACH,MAAMzuJ,EAAMyuJ,EAAOougB,UAGnB,OAFmBz2rB,KAAKqB,IAAI0e,IAAI6Z,GAEjBjiB,OAAO0wK,IAClBroL,KAAKqB,IAAI65B,OAAOtB,GAEbyuJ,CACV,CACGvhI,cACA,OAAyB,IAAlB9mD,KAAKqB,IAAI4M,IACnB,CACDktB,QACIn7B,KAAKqB,IAAI85B,OACZ,EAEL,SAASy6pB,GAAiBpvqB,EAAMkvqB,EAAiBC,GAC7C,MAAMhmM,EAAgBnpe,EAAKmpe,cAC3B,GAAsB,OAAlBA,EACA,OAAOA,EACX,IAAIrtN,EAAa,EACjB,OAAIqzZ,GAAehmM,EAAgBgmM,EAAYr1rB,SAC3CgiS,EAAaqzZ,EAAYhmM,IAEtBA,EAAgB+lM,EAAkBpzZ;;;;;;;OAC5C,CASD,MAAMg2Z,GACFx4rB,cAAiB,CACjBq0iB,SAASphhB,GACL,OAAOA,aAAei+H,KAAOqrgB,GAAWtpoB,EAC3C,CACD5G,SACI,OAAO,IAAIosqB,EACd,EAEL,MAAMA,GACFz4rB,cACIE,KAAKw4rB,SAAW,IAAIxniB,IACpBhxJ,KAAKy4rB,SAAW,KAEhBz4rB,KAAK04rB,aAAe,KACpB14rB,KAAK24rB,iBAAmB,KACxB34rB,KAAK44rB,aAAe,KACpB54rB,KAAK64rB,aAAe,KACpB74rB,KAAKg1rB,eAAiB,KACtBh1rB,KAAKi1rB,eAAiB,KACtBj1rB,KAAKo1rB,cAAgB,KACrBp1rB,KAAKq1rB,cAAgB,IACxB,CACG0B,cACA,OAA+B,OAAxB/2rB,KAAKg1rB,gBAAiD,OAAtBh1rB,KAAK44rB,cACjB,OAAvB54rB,KAAKo1rB,aACZ,CACDvvE,YAAYr1lB,GACR,IAAI63J,EACJ,IAAKA,EAASroL,KAAKy4rB,SAAqB,OAAXpwgB,EAAiBA,EAASA,EAAOk3a,MAC1D/ukB,EAAG63J,EAEV,CACD4tgB,oBAAoBzlqB,GAChB,IAAI63J,EACJ,IAAKA,EAASroL,KAAK24rB,iBAA6B,OAAXtwgB,EAAiBA,EAASA,EAAO6tgB,cAClE1lqB,EAAG63J,EAEV,CACD+1b,mBAAmB5tlB,GACf,IAAI63J,EACJ,IAAKA,EAASroL,KAAK44rB,aAAyB,OAAXvwgB,EAAiBA,EAASA,EAAOywgB,aAC9DtoqB,EAAG63J,EAEV,CACD61b,iBAAiB1tlB,GACb,IAAI63J,EACJ,IAAKA,EAASroL,KAAKg1rB,eAA2B,OAAX3sgB,EAAiBA,EAASA,EAAO8tgB,WAChE3lqB,EAAG63J,EAEV,CACDg2b,mBAAmB7tlB,GACf,IAAI63J,EACJ,IAAKA,EAASroL,KAAKo1rB,cAA0B,OAAX/sgB,EAAiBA,EAASA,EAAOytgB,aAC/DtlqB,EAAG63J,EAEV,CACDvsJ,KAAKz6B,GACD,GAAKA,GACK,KAECA,aAAe2vJ,KAAOqrgB,GAAWh7pB,IACxC,MAAM,IAAIyznB,GAAa,KAAiDpR,QAHxErinB,EAAM,IAAI2vJ,IAMd,OAAOhxJ,KAAK4mO,MAAMvlO,GAAOrB,KAAO,IACnC,CACDosmB,YAAe,CAKfxlY,MAAMvlO,GACFrB,KAAKu6I,SACL,IAAI/nI,EAAexS,KAAKy4rB,SAcxB,GAbAz4rB,KAAK04rB,aAAe,KACpB14rB,KAAK+4rB,SAAS13rB,EAAK,CAAC6G,EAAO0xB,KACvB,GAAIpnB,GAAgBA,EAAaonB,MAAQA,EACrC55B,KAAKg5rB,mBAAmBxmrB,EAActK,GACtClI,KAAK04rB,aAAelmrB,EACpBA,EAAeA,EAAa+slB,UAE3B,CACD,MAAMl3a,EAASroL,KAAKi5rB,yBAAyBr/pB,EAAK1xB,GAClDsK,EAAexS,KAAKk5rB,sBAAsB1mrB,EAAc61K,EAC3D,IAGD71K,EAAc,CACVA,EAAaykrB,QACbzkrB,EAAaykrB,MAAM13F,MAAQ,MAE/Bv/lB,KAAKo1rB,cAAgB5irB,EACrB,QAAS61K,EAAS71K,EAAyB,OAAX61K,EAAiBA,EAASA,EAAOytgB,aACzDztgB,IAAWroL,KAAKy4rB,WAChBz4rB,KAAKy4rB,SAAW,MAEpBz4rB,KAAKw4rB,SAASt9pB,OAAOmtJ,EAAOzuJ,KAC5ByuJ,EAAOytgB,aAAeztgB,EAAOk3a,MAC7Bl3a,EAAOz+K,cAAgBy+K,EAAOznK,aAC9BynK,EAAOznK,aAAe,KACtBynK,EAAO4ugB,MAAQ,KACf5ugB,EAAOk3a,MAAQ,IAEtB,CAED,OAAIv/lB,KAAK64rB,eACL74rB,KAAK64rB,aAAaC,aAAe,MACjC94rB,KAAKi1rB,iBACLj1rB,KAAKi1rB,eAAekB,WAAa,MAC9Bn2rB,KAAK+2rB,OACf,CASDmC,sBAAsB93b,EAAQ/4E,GAC1B,GAAI+4E,EAAQ,CACR,MAAMhrE,EAAOgrE,EAAO61b,MACpB5ugB,SAAOk3a,MAAQn+V,EACf/4E,EAAO4ugB,MAAQ7ggB,EACfgrE,EAAO61b,MAAQ5ugB,EACX+N,IACAA,EAAKmpa,MAAQl3a,GAEb+4E,IAAWphQ,KAAKy4rB,WAChBz4rB,KAAKy4rB,SAAWpwgB,GAEpBroL,KAAK04rB,aAAet3b,EACbA,CACV,CACD,OAAIphQ,KAAK04rB,cACL14rB,KAAK04rB,aAAan5F,MAAQl3a,EAC1BA,EAAO4ugB,MAAQj3rB,KAAK04rB,cAGpB14rB,KAAKy4rB,SAAWpwgB,EAEpBroL,KAAK04rB,aAAerwgB,EACb,IACV,CACD4wgB,yBAAyBr/pB,EAAK1xB,GAC1B,GAAIlI,KAAKw4rB,SAASv9pB,IAAIrB,GAAM,CACxB,MAAMyuJ,EAASroL,KAAKw4rB,SAASz4qB,IAAI6Z,GACjC55B,KAAKg5rB,mBAAmB3wgB,EAAQngL,GAChC,MAAMkuL,EAAO/N,EAAO4ugB,MACdhyrB,GAAOojL,EAAOk3a,MACpB,OAAInpa,IACAA,EAAKmpa,MAAQt6lB,IAEbA,KACAA,GAAKgyrB,MAAQ7ggB,GAEjB/N,EAAOk3a,MAAQ,KACfl3a,EAAO4ugB,MAAQ,KACR5ugB,CACV,CACD,MAAMA,EAAS,IAAI8wgB,GAAsBv/pB,GACzC,YAAK4+pB,SAASjlqB,IAAIqG,EAAKyuJ,GACvBA,EAAOznK,aAAe1Y,EACtBlI,KAAKo5rB,gBAAgB/wgB,GACdA,CACV,CAED9tC,SACI,GAAIv6I,KAAK+2rB,QAAS,CACd,IAAI1ugB,EAGJ,IADAroL,KAAK24rB,iBAAmB34rB,KAAKy4rB,SACxBpwgB,EAASroL,KAAK24rB,iBAA6B,OAAXtwgB,EAAiBA,EAASA,EAAOk3a,MAClEl3a,EAAO6tgB,cAAgB7tgB,EAAOk3a,MAIlC,IAAKl3a,EAASroL,KAAK44rB,aAAyB,OAAXvwgB,EAAiBA,EAASA,EAAOywgB,aAC9DzwgB,EAAOz+K,cAAgBy+K,EAAOznK,aAElC,IAAKynK,EAASroL,KAAKg1rB,eAA0B,MAAV3sgB,EAAgBA,EAASA,EAAO8tgB,WAC/D9tgB,EAAOz+K,cAAgBy+K,EAAOznK,aAElC5gB,KAAK44rB,aAAe54rB,KAAK64rB,aAAe,KACxC74rB,KAAKg1rB,eAAiBh1rB,KAAKi1rB,eAAiB,KAC5Cj1rB,KAAKo1rB,cAAgB,IACxB,CACJ,CAED4D,mBAAmB3wgB,EAAQx+K,GAClBwV,OAAOm4G,GAAG3tH,EAAUw+K,EAAOznK,gBAC5BynK,EAAOz+K,cAAgBy+K,EAAOznK,aAC9BynK,EAAOznK,aAAe/W,EACtB7J,KAAKq5rB,cAAchxgB,GAE1B,CACD+wgB,gBAAgB/wgB,GACgB,OAAxBroL,KAAKg1rB,eACLh1rB,KAAKg1rB,eAAiBh1rB,KAAKi1rB,eAAiB5sgB,GAG5CroL,KAAKi1rB,eAAekB,WAAa9tgB,EACjCroL,KAAKi1rB,eAAiB5sgB,EAE7B,CACDgxgB,cAAchxgB,GACgB,OAAtBroL,KAAK44rB,aACL54rB,KAAK44rB,aAAe54rB,KAAK64rB,aAAexwgB,GAGxCroL,KAAK64rB,aAAaC,aAAezwgB,EACjCroL,KAAK64rB,aAAexwgB,EAE3B,CAED0wgB,SAAShmqB,EAAKvC,GACNuC,aAAei+H,IACfj+H,EAAItiB,QAAQ+f,GAGZnR,OAAOsa,KAAK5G,GAAKtiB,QAAQipM,GAAKlpL,EAAGuC,EAAI2mL,GAAIA,GAEhD,EAEL,MAAMy/e,GACFr5rB,YAAY85B,GACR55B,KAAK45B,IAAMA,EACX55B,KAAK4J,cAAgB,KACrB5J,KAAK4gB,aAAe,KAEpB5gB,KAAKk2rB,cAAgB,KAErBl2rB,KAAKu/lB,MAAQ,KAEbv/lB,KAAKi3rB,MAAQ,KAEbj3rB,KAAKm2rB,WAAa,KAElBn2rB,KAAK81rB,aAAe,KAEpB91rB,KAAK84rB,aAAe,IACvB;;;;;;;OAUL,SAASQ,KACL,OAAO,IAAIC,GAAgB,CAAC,IAAIhF,IACnC,CAMD,MAAMgF,GACFz5rB,YAAY85qB,GACR55qB,KAAK45qB,UAAYA,CACpB,CACY7zqB,cAAC6zqB,EAAWjipB,GACrB,GAAc,MAAVA,EAAgB,CAChB,MAAM6hqB,EAAS7hqB,EAAOiipB,UAAUl4qB,QAChCk4qB,EAAYA,EAAU9zpB,OAAO0zqB,EAChC,CACD,OAAO,IAAID,GAAgB3f,EAC9B,CAqBY7zqB,cAAC6zqB,GACV,MAAO,CACHzzqB,QAASozrB,GACTh+hB,WAAa5jI,GAIF4hqB,GAAgBptqB,OAAOytpB,EAAWjipB,GAAU2hqB,MAGvD77R,KAAM,CAAC,CAAC87R,GAAiB,IAAIviE,GAAY,IAAIP,IAEpD,CACDpxmB,KAAKo2iB,GACD,MAAMv4jB,EAAUlD,KAAK45qB,UAAUv0pB,KAAKjd,GAAKA,EAAE+riB,SAASsnB,IACpD,GAAe,MAAXv4jB,EACA,OAAOA,EAGP,MAAM,IAAI4xnB,GAAa,KAAyDpR,EAGvF;;;;;;;;AAeL,SAAS+1E,KACL,OAAO,IAAIC,GAAgB,CAAC,IAAIpB,IACnC,CAdDiB,GAAgBt2rB,WAAQ8jnB,GAAmB,CAAEllnB,MAAO03rB,GAAiBvyE,WAAY,OAAQ9jnB,QAASo2rB,KAoBlG,MAAMI,GACF55rB,YAAY85qB,GACR55qB,KAAK45qB,UAAYA,CACpB,CACY7zqB,cAAC6zqB,EAAWjipB,GACrB,GAAIA,EAAQ,CACR,MAAM6hqB,EAAS7hqB,EAAOiipB,UAAUl4qB,QAChCk4qB,EAAYA,EAAU9zpB,OAAO0zqB,EAChC,CACD,OAAO,IAAIE,GAAgB9f,EAC9B,CAqBY7zqB,cAAC6zqB,GACV,MAAO,CACHzzqB,QAASuzrB,GACTn+hB,WAAa5jI,GAIF+hqB,GAAgBvtqB,OAAOytpB,EAAWjipB,GAAU8hqB,MAGvDh8R,KAAM,CAAC,CAACi8R,GAAiB,IAAI1iE,GAAY,IAAIP,IAEpD,CACDpxmB,KAAKs0qB,GACD,MAAMz2rB,EAAUlD,KAAK45qB,UAAUv0pB,KAAKjd,GAAKA,EAAE+riB,SAASwlJ,IACpD,GAAIz2rB,EACA,OAAOA,EAEX,MAAM,IAAI4xnB,GAAa,KAAyDpR,EACnF,EAGLg2E,GAAgBz2rB,WAAQ8jnB,GAAmB,CAAEllnB,MAAO63rB,GAAiB1yE,WAAY,OAAQ9jnB,QAASu2rB;;;;;;;;AAYlG,MAAMG,GAAa,CAAC,IAAItB,IAIlBuB,GAAe,CAAC,IAAItF,IAwBpBuF,IAvByB,IAAIP,GAAgBM,IACpB,IAAIH,GAAgBE,IAsB9B/I,GAAsB,KAAM,OAAQ;;;;;;;;;;;;;;;;;;;;;;AAgBzD,MAAMkJ,GAEFj6rB,YAAYuhgB,GAAW;;;;;;;;AAiB3B,SAAS24L,GAAgB9xrB,GACrB,MAAwB,kBAAVA,EAAsBA,EAAkB,MAATA,GAA2B,UAAVA,CACjE;;;;;;;OAjBD6xrB,GAAkBh3rB,UAAO,SAAmCgb,GAAK,OAAO,IAAKA,GAAKg8qB,IAAmB7rF,GAASvsG,IAAmB,EACjIo4L,GAAkBtzrB,UAAqB4znB,GAAiB,CAAE57mB,KAAMs7qB,KAChEA,GAAkBrzrB,UAAqB8unB,GAAiB,GA8QvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OCpj6BD,MAAMykE,GACFn6rB,YAAYgngB,GAAWozL,IACnBl6rB,KAAK8mgB,UAAYA,GACjB9mgB,KAAKk6rB,YAAcA,GAMnBl6rB,KAAKk9O,SAAY/9D,OAKjBn/K,KAAKixc,UAAY,MACpB,CAMDjjc,YAAY4rB,GAAK1xB,IACblI,KAAK8mgB,UAAU94f,YAAYhO,KAAKk6rB,YAAY/trB,cAAeytB,GAAK1xB,GACnE,CAKD+sL,kBAAkBzkK,IACdxwB,KAAKixc,UAAYzgb,EACpB,CAKDwkK,iBAAiBxkK,IACbxwB,KAAKk9O,SAAW1sN,EACnB,CAKD0kK,iBAAiB/pL,IACbnL,KAAKgO,YAAY,WAAY7C,GAChC,EAEL8urB,GAAyBl3rB,UAAzB,4BAAqHk3rB,IAAVj3rB,MAAoDA,OAApDA,MAA6EA,OAAxL,EACAi3rB,GAAyB3mrB,UADkFtQ,MAC3G,MAAyGi3rB,KAazG,MAAME,WAAoCF,IAE1CE,GAA4Bp3rB,UAA5B,qDAhB2GC,MAgBam3rB,MAAxHp8qB,IAAwHo8qB,GAAxH,KACAA,GAA4B7mrB,UAjB+EtQ,MAiB3G,MAA4Gm3rB,GAA5Gv4iB,UAjB2G5+I,SA4B3G,MAAMotL,GAAoB,IAAIxwL,MAAe,mBASvCw6rB,GAA0B,CAC5Bj0rB,QAASiqL,GACTlyK,eAAaC,OAAW,IAAMk8qB,IAC9B/zrB,OAAO;;;;;;;OAyBX,MAAM+zrB,WAAqCF,GAKvCplgB,WAAW7sL,IACPlI,KAAKgO,YAAY,UAAW9F,GAC/B,EAELmyrB,GAA6Bt3rB,UAA7B,qDA1E2GC,MA0Ecq3rB,MAAzHt8qB,IAAyHs8qB,GAAzH,KACAA,GAA6B/mrB,UA3E8EtQ,MA2E3G,MAA6Gq3rB,GAA7G9mrB,sLA3E2GvQ,MA2E3G,6BAA6GwQ,8BAA7G,EA3E2GxQ,CA2E3G,yBAA6GwQ,cAA7G,cA3E2GxQ,MA2E2P,CAACo3rB,KA3E5Pp3rB;;;;;;;;AA4F3G,MAAMs3rB,GAAyB,CAC3Bn0rB,QAASiqL,GACTlyK,eAAaC,OAAW,IAAMo8qB,IAC9Bj0rB,OAAO,GAgBX,MAAMk0rB,GAA0B,IAAI56rB,MAAe,wBAoCnD,MAAM26rB,WAA6BN,GAC/Bn6rB,YAAY6K,GAAUyM,GAAYqjrB,IAC9Bx8qB,MAAMtT,GAAUyM,IAChBpX,KAAKy6rB,iBAAmBA,GAExBz6rB,KAAK06rB,YAAa,EACW,MAAzB16rB,KAAKy6rB,mBACLz6rB,KAAKy6rB,kBArDjB,SAASE,KACL,MAAMrtrB,MAAYstrB,QAAO,EAAKA,OAAUC,eAAiB,GACzD,MAAO,gBAAgBn2rB,KAAK4I,GAAUyN,cACzC,CAkDoC4/qB,GAEhC,CAKD5lgB,WAAW7sL,IACP,MAAMgzO,GAAkBhzO,IAAgB,GACxClI,KAAKgO,YAAY,QAASktO,GAC7B,CAED4/c,aAAa5yrB,MACJlI,KAAKy6rB,kBAAqBz6rB,KAAKy6rB,mBAAqBz6rB,KAAK06rB,aAC1D16rB,KAAKk9O,SAASh1O,GAErB,CAED6yrB,oBACI/6rB,KAAK06rB,YAAa,CACrB,CAEDM,gBAAgB9yrB,IACZlI,KAAK06rB,YAAa,EAClB16rB,KAAKy6rB,kBAAoBz6rB,KAAKk9O,SAASh1O,GAC1C,EAELqyrB,GAAqBx3rB,UAArB,4BAAiHw3rB,IArLNv3rB,MAqL4CA,OArL5CA,MAqLqEA,OArLrEA,MAqL+Fw3rB,GAA1M,KACAD,GAAqBjnrB,UAtLsFtQ,MAsL3G,MAAqGu3rB,GAArGhnrB,iTAtL2GvQ,MAsL3G,4BAAqGwQ,gCAArG,EAtL2GxQ,CAsL3G,yBAAqGwQ,cAArG,EAtL2GxQ,CAsL3G,qCAAqGwQ,sBAArG,EAtL2GxQ,CAsL3G,qCAAqGwQ,mCAArG,cAtL2GxQ,MAsLyd,CAACs3rB,KAtL1dt3rB,SAqN3G,SAASi4rB,GAAkB/yrB,IAMvB,OAAgB,MAATA,KACgB,iBAAVA,IAAsB/G,MAAMkuB,QAAQnnB,MAA4B,IAAjBA,GAAM5H,MACrE,CACD,SAAS46rB,GAAehzrB,IAEpB,OAAgB,MAATA,IAAyC,iBAAjBA,GAAM5H,MACxC,CA6BD,MAAMiwL,GAAgB,IAAI3wL,MAAe,gBA8BnCu7rB,GAAsB,IAAIv7rB,MAAe,qBA+BzCw7rB,GAAe,qMAYrB,MAAMpjY,GAqBQjyT,WAAC6U,IACP,OAAO40K,GAAa50K,GACvB,CAqBS7U,WAAC8U,IACP,OAAO80K,GAAa90K,GACvB,CAqBc9U,gBAACm4K,IACZ,OAAOm9gB,GAAkBn9gB,GAC5B,CAsBkBn4K,oBAACm4K,IAChB,OAAOo9gB,GAAsBp9gB,GAChC,CAqCWn4K,aAACm4K,IACT,OAAOq9gB,GAAer9gB,GACzB,CA+Ben4K,iBAAC+ld,IACb,OAAO0vO,GAAmB1vO,GAC7B,CA4Be/ld,iBAACmyH,IACb,OAAOujkB,GAAmBvjkB,GAC7B,CAkDanyH,eAACurH,IACX,OAAOoqkB,GAAiBpqkB,GAC3B,CAQmBvrH,qBAACm4K,IACjB,OAyIG,IAxIN,CACan4K,eAAC41rB,IACX,OAAO1kd,GAAQ0kd,GAClB,CAYkB51rB,oBAAC41rB,IAChB,OAAOC,GAAaD,GACvB,EAML,SAASnsgB,GAAa50K,IAClB,OAAQsjK,KACJ,GAAI+8gB,GAAkB/8gB,GAAQh2K,QAAU+yrB,GAAkBrgrB,IACtD,OAAO,KAEX,MAAM1S,GAAQ6pB,WAAWmsJ,GAAQh2K,OAGjC,OAAQioB,MAAMjoB,KAAUA,GAAQ0S,GAAM,CAAEA,IAAO,CAAEA,IAAOA,GAAKy6mB,OAAUn3c,GAAQh2K,QAAY,KAElG,CAKD,SAASynL,GAAa90K,IAClB,OAAQqjK,KACJ,GAAI+8gB,GAAkB/8gB,GAAQh2K,QAAU+yrB,GAAkBpgrB,IACtD,OAAO,KAEX,MAAM3S,GAAQ6pB,WAAWmsJ,GAAQh2K,OAGjC,OAAQioB,MAAMjoB,KAAUA,GAAQ2S,GAAM,CAAEA,IAAO,CAAEA,IAAOA,GAAKw6mB,OAAUn3c,GAAQh2K,QAAY,KAElG,CAKD,SAASmzrB,GAAkBn9gB,IACvB,OAAO+8gB,GAAkB/8gB,GAAQh2K,OAAS,CAAE2zrB,UAAY,GAAS,IACpE,CAMD,SAASP,GAAsBp9gB,IAC3B,OAAyB,IAAlBA,GAAQh2K,MAAiB,KAAO,CAAE2zrB,UAAY,EACxD,CAKD,SAASN,GAAer9gB,IACpB,OAAI+8gB,GAAkB/8gB,GAAQh2K,QAGvBkzrB,GAAa12rB,KAAKw5K,GAAQh2K,OAFtB,KAEsC,CAAE4zrB,OAAS,EAC/D,CAKD,SAASN,GAAmB1vO,IACxB,OAAQ5tS,IACA+8gB,GAAkB/8gB,GAAQh2K,SAAWgzrB,GAAeh9gB,GAAQh2K,OAGrD,KAEJg2K,GAAQh2K,MAAM5H,OAASwrd,GAC1B,CAAEiwO,UAAa,CAAEC,eAAkBlwO,GAAWmwO,aAAgB/9gB,GAAQh2K,MAAM5H,SAC5E,IAEX,CAKD,SAASm7rB,GAAmBvjkB,IACxB,OAAQgmD,IACGg9gB,GAAeh9gB,GAAQh2K,QAAUg2K,GAAQh2K,MAAM5H,OAAS43H,GAC3D,CAAEgkkB,UAAa,CAAEF,eAAkB9jkB,GAAW+jkB,aAAgB/9gB,GAAQh2K,MAAM5H,SAC5E,IAEX,CAKD,SAASo7rB,GAAiBpqkB,IACtB,IAAKA,GACD,OAAO6qkB,GACX,IAAIjojB,GACAkojB,GACJ,MAAuB,iBAAZ9qkB,IACP8qkB,GAAW,GACe,MAAtB9qkB,GAAQvwH,OAAO,KACfq7rB,IAAY,KAChBA,IAAY9qkB,GAC+B,MAAvCA,GAAQvwH,OAAOuwH,GAAQhxH,OAAS,KAChC87rB,IAAY,KAChBlojB,GAAQ,IAAIzvI,OAAO23rB,MAGnBA,GAAW9qkB,GAAQ7vH,WACnByyI,GAAQ5iB,IAEJ4sD,KACJ,GAAI+8gB,GAAkB/8gB,GAAQh2K,OAC1B,OAAO,KAEX,MAAMA,GAAQg2K,GAAQh2K,MACtB,OAAOgsI,GAAMxvI,KAAKwD,IAAS,KACvB,CAAEopH,QAAW,CAAE+qkB,gBAAmBD,GAAUE,YAAep0rB,IAA3D,CAEX,CAID,SAASi0rB,GAAcj+gB,IACnB,OAAO,IACV,CACD,SAASj2K,GAAU2nN,IACf,OAAY,MAALA,EACV,CACD,SAAS2se,GAAar0rB,IAClB,MAAM2sZ,MAAM6vN,OAAWx8mB,KAAD,EAAU1C,KAAK0C,IAASA,GAU9C,OAAO2sZ,EACV,CACD,SAAS2nS,GAAYC,IACjB,IAAIn2W,GAAM,GAGVm2W,UAAchsrB,QAAS4wX,KACnB/6C,GAAgB,MAAV+6C,GAAiB,IAAK/6C,MAAQ+6C,IAAW/6C,KAEhB,IAA5BjnU,OAAOsa,KAAK2sT,IAAKhmV,OAAe,KAAOgmV,EACjD,CACD,SAASo2W,GAAkBx+gB,GAASy9gB,IAChC,OAAOA,GAAWt6rB,IAAIs7rB,IAAaA,GAAUz+gB,IAChD,CAYD,SAAS0+gB,GAAoBjB,IACzB,OAAOA,GAAWt6rB,IAAIs7rB,IAZ1B,SAASE,GAAcF,IACnB,OAAQA,GAAUtikB,QACrB,CAWcwikB,CAAcF,IACjBA,GACEp7rB,IAAMo7rB,GAAUtikB,SAAS94H,IAEtC,CAKD,SAAS01O,GAAQ0kd,IACb,IAAKA,GACD,OAAO,KACX,MAAMmB,GAAoBnB,GAAWrmrB,OAAOrN,IAC5C,OAAgC,GAA5B60rB,GAAkBx8rB,OACX,KACJ,SAAU49K,IACb,OAAOs+gB,GAAYE,GAAkBx+gB,GAAS4+gB,IACjD,CACJ,CAMD,SAASC,GAAkBpB,IACvB,OAAqB,MAAdA,GAAqB1kd,GAAQ2ld,GAAoBjB,KAAe,IAC1E,CAKD,SAASC,GAAaD,IAClB,IAAKA,GACD,OAAO,KACX,MAAMmB,GAAoBnB,GAAWrmrB,OAAOrN,IAC5C,OAAgC,GAA5B60rB,GAAkBx8rB,OACX,KACJ,SAAU49K,IAEb,OCn2BD,SAAS8+gB,MAAY5irB,IACxB,MAAMmwT,MAAiB22R,OAAkB9mlB,KACjCA,KAAM2/T,GAASpgT,UAAjB,EAA0BwnkB,KAAqB/mlB,IAC/CwX,GAAS,IAAI8yD,IAAY8wI,KAC3B,MAAQl1N,WAAWy5U,GACnB,IAAKz5U,GAED,YADAk1N,GAAW1+H,WAGf,MAAMh8D,GAAS,IAAI35B,MAAMb,IACzB,IAAI28rB,GAAuB38rB,GACvB48rB,GAAqB58rB,GACzB,QAASilmB,GAAc,EAAGA,GAAcjlmB,GAAQilmB,KAAe,CAC3D,IAAIj6hB,IAAW,GACf82hB,QAAUroR,GAAQwrR,KAAcr5lB,aAAUwpN,MAAyBF,GAAattN,KACvEojE,KACDA,IAAW,EACX4xnB,MAEJpiqB,GAAOyqkB,IAAer9lB,IACvB,IAAM+0rB,UAAwBlorB,EAAW,OACnCkorB,KAAyB3xnB,MACrB4xnB,IACD1ne,GAAWvwN,KAAK00B,MAAO8nkB,MAAa9nkB,GAAMmB,IAAUA,IAExD06L,GAAW1+H,WAAX,GAGX,IAEL,OAAOyzO,GAAiB34S,GAAOnsB,QAAKi8lB,MAAiBn3R,KAAmB34S,EAC3E,CDo0BcorqB,CADaN,GAAkBx+gB,GAAS4+gB,IAAmBz7rB,IAAIk7rB,KACzC92rB,QAAKpE,MAAIm7rB,IACzC,CACJ,CAMD,SAASW,GAAuBxB,IAC5B,OAAqB,MAAdA,GAAqBC,GAAagB,GAAoBjB,KACzD,IACP,CAKD,SAASyB,GAAgBC,GAAmBC,IACxC,OAA0B,OAAtBD,GACO,CAACC,IACLn8rB,MAAMkuB,QAAQguqB,IAAqB,IAAIA,GAAmBC,IAC7D,CAACD,GAAmBC,GAC3B,CAID,SAASC,GAAqBr/gB,IAC1B,OAAOA,GAAQs/gB,cAClB,CAID,SAASC,GAA0Bv/gB,IAC/B,OAAOA,GAAQw/gB,mBAClB,CAQD,SAASC,GAAoBhC,IACzB,OAAKA,GAEEx6rB,MAAMkuB,QAAQssqB,IAAcA,GAAa,CAACA,IADtC,EAEd,CAQD,SAASiC,GAAajC,GAAYgB,IAC9B,OAAOx7rB,MAAMkuB,QAAQssqB,IAAcA,GAAWr3rB,SAASq4rB,IAAahB,KAAegB,EACtF,CAQD,SAASkB,GAAclC,GAAYmC,IAC/B,MAAMzorB,GAAUsorB,GAAoBG,IAEpCC,OADwBJ,GAAoBhC,IAC5BlrrB,QAASonN,KAKhB+le,GAAavorB,GAASwiN,KACvBxiN,GAAQ2G,KAAK67M,GAAb,GAGDxiN,EACV,CACD,SAAS2orB,GAAiBrC,GAAYmC,IAClC,OAAOH,GAAoBG,IAAmBxorB,OAAOuiN,KAAM+le,GAAajC,GAAY9je,IACvF;;;;;;;OAiBD,MAAMome,GACFn+rB,cAKIE,KAAKw9rB,eAAiB,GAMtBx9rB,KAAK09rB,oBAAsB,GAI3B19rB,KAAKk+rB,oBAAsB,EAC9B,CAKGh2rB,YACA,OAAOlI,KAAKk+K,QAAUl+K,KAAKk+K,QAAQh2K,MAAQ,IAC9C,CAOGgjS,YACA,OAAOlrS,KAAKk+K,QAAUl+K,KAAKk+K,QAAQgtH,MAAQ,IAC9C,CAMGuoG,cACA,OAAOzzY,KAAKk+K,QAAUl+K,KAAKk+K,QAAQu1N,QAAU,IAChD,CAOG5nI,cACA,OAAO7rQ,KAAKk+K,QAAUl+K,KAAKk+K,QAAQ2tF,QAAU,IAChD,CAOGz+P,eACA,OAAOpN,KAAKk+K,QAAUl+K,KAAKk+K,QAAQ9wK,SAAW,IACjD,CAMGsyI,cACA,OAAO1/I,KAAKk+K,QAAUl+K,KAAKk+K,QAAQx+B,QAAU,IAChD,CAKG2hP,aACA,OAAOrhY,KAAKk+K,QAAUl+K,KAAKk+K,QAAQmjN,OAAS,IAC/C,CAMGomF,eACA,OAAOznd,KAAKk+K,QAAUl+K,KAAKk+K,QAAQupS,SAAW,IACjD,CAMG7kW,YACA,OAAO5iH,KAAKk+K,QAAUl+K,KAAKk+K,QAAQt7D,MAAQ,IAC9C,CAMGq7D,cACA,OAAOj+K,KAAKk+K,QAAUl+K,KAAKk+K,QAAQD,QAAU,IAChD,CAOG0lK,aACA,OAAO3jV,KAAKk+K,QAAUl+K,KAAKk+K,QAAQylK,OAAS,IAC/C,CAMG6jI,gBACA,OAAOxnd,KAAKk+K,QAAUl+K,KAAKk+K,QAAQspS,UAAY,IAClD,CAMG22O,oBACA,OAAOn+rB,KAAKk+K,QAAUl+K,KAAKk+K,QAAQighB,cAAgB,IACtD,CAOGpof,mBACA,OAAO/1M,KAAKk+K,QAAUl+K,KAAKk+K,QAAQ63B,aAAe,IACrD,CAMGtmL,WACA,OAAO,IACV,CAKD2uqB,eAAezC,IACX37rB,KAAKw9rB,eAAiB7B,IAAc,GACpC37rB,KAAKq+rB,qBAAuBtB,GAAkB/8rB,KAAKw9rB,eACtD,CAKDc,oBAAoB3C,IAChB37rB,KAAK09rB,oBAAsB/B,IAAc,GACzC37rB,KAAKu+rB,0BAA4BpB,GAAuBn9rB,KAAK09rB,oBAChE,CAMGf,gBACA,OAAO38rB,KAAKq+rB,sBAAwB,IACvC,CAMGG,qBACA,OAAOx+rB,KAAKu+rB,2BAA6B,IAC5C,CAMDE,mBAAmBjuqB,IACfxwB,KAAKk+rB,oBAAoBlirB,KAAKwU,GACjC,CAMDkuqB,4BACI1+rB,KAAKk+rB,oBAAoBztrB,QAAQ+f,IAAMA,MACvCxwB,KAAKk+rB,oBAAsB,EAC9B,CAKDn2nB,MAAM7/D,IACElI,KAAKk+K,SACLl+K,KAAKk+K,QAAQn2G,MAAM7/D,GAC1B,CA+BD60lB,SAAS7xQ,GAAWz7T,IAChB,QAAOzvB,KAAKk+K,SAAUl+K,KAAKk+K,QAAQ6+a,SAAS7xQ,GAAWz7T,GAC1D,CA4BDkvqB,SAASzzW,GAAWz7T,IAChB,OAAOzvB,KAAKk+K,QAAUl+K,KAAKk+K,QAAQyghB,SAASzzW,GAAWz7T,IAAQ,IAClE;;;;;;;OAiBL,MAAMmvqB,WAAyBX,GAKvBY,oBACA,OAAO,IACV,CAKGpvqB,WACA,OAAO,IACV;;;;;;;OAiBL,MAAMgzK,WAAkBw7f,GACpBn+rB,cACIme,SAASkT,WAOTnxB,KAAKqmR,QAAU,KAKfrmR,KAAKyH,KAAO,KAKZzH,KAAKgnd,cAAgB,IACxB;;;;;;;OAcL,MAAM83O,GACFh/rB,YAAYsgO,IACRpgO,KAAK++rB,IAAM3+d,EACd,CACG4+d,gBACA,QAASh/rB,KAAK++rB,KAAK7ghB,SAASD,OAC/B,CACG+8D,kBACA,QAASh7O,KAAK++rB,KAAK7ghB,SAASspS,SAC/B,CACGy3O,iBACA,QAASj/rB,KAAK++rB,KAAK7ghB,SAASupS,QAC/B,CACGsvO,cACA,QAAS/2rB,KAAK++rB,KAAK7ghB,SAASt7D,KAC/B,CACG0oH,cACA,QAAStrO,KAAK++rB,KAAK7ghB,SAASgtH,KAC/B,CACGg0Z,gBACA,QAASl/rB,KAAK++rB,KAAK7ghB,SAASu1N,OAC/B,CACG0rT,gBACA,QAASn/rB,KAAK++rB,KAAK7ghB,SAAS2tF,OAC/B,CACGuzb,kBAGA,QAASp/rB,KAAK++rB,KAAKM,SACtB,EAsCL,MAAMC,WAAwBR,GAC1Bh/rB,YAAYsgO,IACRniN,MAAMmiN,GACT,EAELk/d,GAAgBv8rB,UAAhB,4BAA4Gu8rB,IAhyCDt8rB,MAgyCkCy/L,GAA7I,KACA68f,GAAgBhsrB,UAjyC2FtQ,MAiyC3G,MAAgGs8rB,GAAhG/rrB,6HAjyC2GvQ,MAiyC3G,8BAjyC2GA,CAiyC3G,0BAjyC2GA,CAiyC3G,4BAjyC2GA,CAiyC3G,sBAjyC2GA,CAiyC3G,sBAjyC2GA,CAiyC3G,0BAjyC2GA,CAiyC3G,sCAjyC2GA,SAozC3G,MAAMu8rB,WAA6BT,GAC/Bh/rB,YAAYsgO,IACRniN,MAAMmiN,GACT,EAELm/d,GAAqBx8rB,UAArB,4BAAiHw8rB,IAzzCNv8rB,MAyzC4C47rB,GAAvJ,MACAW,GAAqBjsrB,UA1zCsFtQ,MA0zC3G,MAAqGu8rB,GAArGhsrB,gMA1zC2GvQ,MA0zC3G,8BA1zC2GA,CA0zC3G,0BA1zC2GA,CA0zC3G,4BA1zC2GA,CA0zC3G,sBA1zC2GA,CA0zC3G,sBA1zC2GA,CA0zC3G,0BA1zC2GA,CA0zC3G,0BA1zC2GA,CA0zC3G,0CA1zC2GA;;;;;;;;AAm/C3G,MAMMw8rB,GAAQ,QAMRC,GAAU,UAQVC,GAAU,UAQVC,GAAW,WAIjB,SAASC,GAAeC,IACpB,OAAQC,GAAaD,IAAmBA,GAAgBlE,WAAakE,KAAoB,IAC5F,CAID,SAASE,GAAkBpD,IACvB,OAAOx7rB,MAAMkuB,QAAQstqB,IAAaI,GAAkBJ,IAAaA,IAAa,IACjF,CAID,SAASqD,GAAoBxB,GAAgBqB,IAMzC,OAAQC,GAAaD,IAAmBA,GAAgBI,gBAAkBzB,KAAmB,IAChG,CAID,SAAS0B,GAAuB1B,IAC5B,OAAOr9rB,MAAMkuB,QAAQmvqB,IAAkBrB,GAAuBqB,IAC1DA,IAAkB,IACzB,CACD,SAASsB,GAAaD,IAClB,OAA0B,MAAnBA,KAA4B1+rB,MAAMkuB,QAAQwwqB,KAClB,iBAApBA,EACd,CACD,SAASM,GAAqBxoqB,GAAQuhZ,GAASt/Y,IAC3C,MAAMy5H,GAAW17H,GAAO07H,SAExB,KADmB6lR,GAAU75Z,OAAOsa,KAAK05H,IAAYA,IACrC/yJ,OACZ,MAAM,IAAImjnB,MAAc,IAAkF,IAE9G,IAAKpwd,GAASz5H,IACV,MAAM,IAAI6plB,MAAc,KAA+F,GAE9H,CACD,SAAS28E,GAAuBlihB,GAASg7P,GAAShxa,IAC9Cg2K,GAAQmihB,cAAc,CAAClhhB,GAAGvlJ,MACtB,QAAmB7kB,IAAf7M,GAAM0xB,IACN,MAAM,IAAI6plB,MAAc,KAA0G,GAA5H,EAGjB,CAmBD,MAAM68E,GASFxgsB,YAAY67rB,GAAYsE,IAEpBjgsB,KAAKugsB,eAAgB,EAMrBvgsB,KAAKwgsB,8BAA+B,EAEpCxgsB,KAAKygsB,iBAAkB,EAEvBzgsB,KAAK0gsB,oBAAsB,OAC3B1gsB,KAAKqmR,QAAU,KAQfrmR,KAAKynd,UAAW,EAOhBznd,KAAKi+K,SAAU,EAEfj+K,KAAK2gsB,kBAAoB,GACzB3gsB,KAAKw9rB,eAAiB7B,GACtB37rB,KAAK09rB,oBAAsBuC,GAC3BjgsB,KAAKq+rB,qBAAuB0B,GAAkB//rB,KAAKw9rB,gBACnDx9rB,KAAKu+rB,0BAA4B2B,GAAuBlgsB,KAAK09rB,oBAChE,CAMGf,gBACA,OAAO38rB,KAAKq+rB,oBACf,CACG1B,cAAUiE,IACV5gsB,KAAKw9rB,eAAiBx9rB,KAAKq+rB,qBAAuBuC,EACrD,CAMGpC,qBACA,OAAOx+rB,KAAKu+rB,yBACf,CACGC,mBAAeqC,IACf7gsB,KAAK09rB,oBAAsB19rB,KAAKu+rB,0BAA4BsC,EAC/D,CAIGlpqB,aACA,OAAO33B,KAAKqmR,OACf,CASG6kB,YACA,OAAOlrS,KAAK2jV,SAAW67W,EAC1B,CASG/rT,cACA,OAAOzzY,KAAK2jV,SAAW87W,EAC1B,CASG5zb,cACA,OAAO7rQ,KAAK2jV,QAAU+7W,EACzB,CAYGtyrB,eACA,OAAOpN,KAAK2jV,SAAWg8W,EAC1B,CAUGjgjB,cACA,OAAO1/I,KAAK2jV,SAAWg8W,EAC1B,CAQG/8kB,YACA,OAAQ5iH,KAAKynd,QAChB,CAOGD,gBACA,OAAQxnd,KAAKi+K,OAChB,CAOGE,eACA,OAAOn+K,KAAK8gsB,UAAY9gsB,KAAK8gsB,UAAa9gsB,KAAK23B,OAAS33B,KAAK23B,OAAOwmJ,SAAW,QAClF,CAWD4ihB,cAAcpF,IACV37rB,KAAKw9rB,eAAiB7B,GACtB37rB,KAAKq+rB,qBAAuB0B,GAAkBpE,GACjD,CAWDqF,mBAAmBrF,IACf37rB,KAAK09rB,oBAAsB/B,GAC3B37rB,KAAKu+rB,0BAA4B2B,GAAuBvE,GAC3D,CAaDkC,cAAclC,IACV37rB,KAAK+gsB,cAAclD,GAAclC,GAAY37rB,KAAKw9rB,gBACrD,CAYDyD,mBAAmBtF,IACf37rB,KAAKghsB,mBAAmBnD,GAAclC,GAAY37rB,KAAK09rB,qBAC1D,CA8BDM,iBAAiBrC,IACb37rB,KAAK+gsB,cAAc/C,GAAiBrC,GAAY37rB,KAAKw9rB,gBACxD,CAYD0D,sBAAsBvF,IAClB37rB,KAAKghsB,mBAAmBhD,GAAiBrC,GAAY37rB,KAAK09rB,qBAC7D,CAwBDE,aAAajB,IACT,OAAOiB,GAAa59rB,KAAKw9rB,eAAgBb,GAC5C,CASDwE,kBAAkBxE,IACd,OAAOiB,GAAa59rB,KAAK09rB,oBAAqBf,GACjD,CAQDyE,kBACIphsB,KAAK28rB,UAAY,IACpB,CAQD0E,uBACIrhsB,KAAKw+rB,eAAiB,IACzB,CAcD5oQ,cAAc92G,GAAO,IACjB9+U,KAAKi+K,SAAU,EACXj+K,KAAKqmR,UAAYy4D,GAAKwiX,UACtBthsB,KAAKqmR,QAAQuvK,cAAc92G,GAElC,CAKD62G,mBACI31b,KAAK41b,cAAc,CAAE0rQ,UAAU,IAC/BthsB,KAAKqgsB,cAAenihB,IAAYA,GAAQy3Q,mBAC3C,CAgBD4rQ,gBAAgBziX,GAAO,IACnB9+U,KAAKi+K,SAAU,EACfj+K,KAAKygsB,iBAAkB,EACvBzgsB,KAAKqgsB,cAAenihB,KAChBA,GAAQqjhB,gBAAgB,CAAED,UAAU,GAApC,GAEAthsB,KAAKqmR,UAAYy4D,GAAKwiX,UACtBthsB,KAAKqmR,QAAQm7a,eAAe1iX,GAEnC,CAcD2iX,YAAY3iX,GAAO,IACf9+U,KAAKynd,UAAW,EACZznd,KAAKqmR,UAAYy4D,GAAKwiX,UACtBthsB,KAAKqmR,QAAQo7a,YAAY3iX,GAEhC,CAiBD4iX,eAAe5iX,GAAO,IAClB9+U,KAAKynd,UAAW,EAChBznd,KAAKugsB,eAAgB,EACrBvgsB,KAAKqgsB,cAAenihB,KAChBA,GAAQwjhB,eAAe,CAAEJ,UAAU,GAAnC,GAEAthsB,KAAKqmR,UAAYy4D,GAAKwiX,UACtBthsB,KAAKqmR,QAAQs7a,gBAAgB7iX,GAEpC,CAiBD8iX,cAAc9iX,GAAO,IACjB9+U,KAAK2jV,OAAS+7W,IACS,IAAnB5gX,GAAK17I,WACLpjM,KAAKm+rB,cAAc/trB,KAAKpQ,KAAK2jV,QAE7B3jV,KAAKqmR,UAAYy4D,GAAKwiX,UACtBthsB,KAAKqmR,QAAQu7a,cAAc9iX,GAElC,CAkBD/uL,QAAQ+uL,GAAO,IAGX,MAAM+iX,GAAoB7hsB,KAAK8hsB,mBAAmBhjX,GAAKwiX,UACvDthsB,KAAK2jV,OAASg8W,GACd3/rB,KAAKqhY,OAAS,KACdrhY,KAAKqgsB,cAAenihB,KAChBA,GAAQnuB,QAAQ,IAAK+uL,GAAMwiX,UAAU,GAArC,GAEJthsB,KAAK+hsB,gBACkB,IAAnBjjX,GAAK17I,YACLpjM,KAAK+1M,aAAa3lM,KAAKpQ,KAAKkI,OAC5BlI,KAAKm+rB,cAAc/trB,KAAKpQ,KAAK2jV,SAEjC3jV,KAAKgisB,iBAAiB,IAAKljX,GAAM+iX,uBACjC7hsB,KAAK2gsB,kBAAkBlwrB,QAASwxrB,IAAaA,IAAS,GACzD,CAmBD9hrB,OAAO2+T,GAAO,IAGV,MAAM+iX,GAAoB7hsB,KAAK8hsB,mBAAmBhjX,GAAKwiX,UACvDthsB,KAAK2jV,OAAS67W,GACdx/rB,KAAKqgsB,cAAenihB,KAChBA,GAAQ/9J,OAAO,IAAK2+T,GAAMwiX,UAAU,GAApC,GAEJthsB,KAAKkisB,uBAAuB,CAAEZ,UAAU,EAAMl+f,UAAW07I,GAAK17I,YAC9DpjM,KAAKgisB,iBAAiB,IAAKljX,GAAM+iX,uBACjC7hsB,KAAK2gsB,kBAAkBlwrB,QAASwxrB,IAAaA,IAAS,GACzD,CACDD,iBAAiBljX,IACT9+U,KAAKqmR,UAAYy4D,GAAKwiX,WACtBthsB,KAAKqmR,QAAQ67a,uBAAuBpjX,IAC/BA,GAAK+iX,mBACN7hsB,KAAKqmR,QAAQs7a,kBAEjB3hsB,KAAKqmR,QAAQm7a,iBAEpB,CAMDW,UAAUxqqB,IACN33B,KAAKqmR,QAAU1uP,EAClB,CAKDyqqB,cACI,OAAOpisB,KAAKkI,KACf,CAeDg6rB,uBAAuBpjX,GAAO,IAC1B9+U,KAAKqisB,oBACLrisB,KAAK+hsB,eACD/hsB,KAAK0/I,UACL1/I,KAAKsisB,8BACLtisB,KAAKqhY,OAASrhY,KAAKuisB,gBACnBvisB,KAAK2jV,OAAS3jV,KAAKwisB,oBACfxisB,KAAK2jV,SAAW67W,IAASx/rB,KAAK2jV,SAAW+7W,KACzC1/rB,KAAKyisB,mBAAmB3jX,GAAK17I,aAGd,IAAnB07I,GAAK17I,YACLpjM,KAAK+1M,aAAa3lM,KAAKpQ,KAAKkI,OAC5BlI,KAAKm+rB,cAAc/trB,KAAKpQ,KAAK2jV,SAE7B3jV,KAAKqmR,UAAYy4D,GAAKwiX,UACtBthsB,KAAKqmR,QAAQ67a,uBAAuBpjX,GAE3C,CAED4jX,oBAAoB5jX,GAAO,CAAE17I,WAAW,IACpCpjM,KAAKqgsB,cAAe76e,IAASA,GAAKk9e,oBAAoB5jX,KACtD9+U,KAAKkisB,uBAAuB,CAAEZ,UAAU,EAAMl+f,UAAW07I,GAAK17I,WACjE,CACDi/f,oBACIrisB,KAAK2jV,OAAS3jV,KAAK2isB,uBAAyBhD,GAAWH,EAC1D,CACD+C,gBACI,OAAOvisB,KAAK28rB,UAAY38rB,KAAK28rB,UAAU38rB,MAAQ,IAClD,CACDyisB,mBAAmBr/f,IACf,GAAIpjM,KAAKw+rB,eAAgB,CACrBx+rB,KAAK2jV,OAAS+7W,GACd1/rB,KAAKwgsB,8BAA+B,EACpC,MAAM3rS,GAAM0nS,GAAav8rB,KAAKw+rB,eAAex+rB,OAC7CA,KAAK4isB,6BAA+B/tS,GAAI3oZ,UAAWm1X,KAC/CrhY,KAAKwgsB,8BAA+B,EAIpCxgsB,KAAK6isB,UAAUxhU,GAAQ,CAAEj+L,cAAzB,EAEP,CACJ,CACDk/f,8BACQtisB,KAAK4isB,+BACL5isB,KAAK4isB,6BAA6B3xrB,cAClCjR,KAAKwgsB,8BAA+B,EAE3C,CAwBDqC,UAAUxhU,GAAQviD,GAAO,IACrB9+U,KAAKqhY,OAASA,GACdrhY,KAAK8isB,uBAAyC,IAAnBhkX,GAAK17I,UACnC,CA+BDrjL,IAAI0P,IACA,IAAIszqB,GAAWtzqB,GAKf,OAJgB,MAAZszqB,KAEC5hsB,MAAMkuB,QAAQ0zqB,MACfA,GAAWA,GAAShhsB,MAAM,MACN,IAApBghsB,GAASzisB,QACF,KACJyisB,GAASp9qB,OAAO,CAACu4J,GAASz2K,KAASy2K,IAAWA,GAAQ8khB,MAAMv7rB,IAAOzH,KAC7E,CA4BD2+rB,SAASzzW,GAAWz7T,IAChB,MAAMyuJ,GAAUzuJ,GAAOzvB,KAAK+f,IAAI0P,IAAQzvB,KACxC,OAAOk+K,IAAWA,GAAQmjN,OAASnjN,GAAQmjN,OAAOn2C,IAAa,IAClE,CA+BD6xQ,SAAS7xQ,GAAWz7T,IAChB,QAASzvB,KAAK2+rB,SAASzzW,GAAWz7T,GACrC,CAIGk1C,WACA,IAAIt8C,GAAIroB,KACR,KAAOqoB,GAAEg+P,SACLh+P,GAAIA,GAAEg+P,QAEV,OAAOh+P,EACV,CAEDy6qB,sBAAsB1/f,IAClBpjM,KAAK2jV,OAAS3jV,KAAKwisB,mBACfp/f,IACApjM,KAAKm+rB,cAAc/trB,KAAKpQ,KAAK2jV,QAE7B3jV,KAAKqmR,SACLrmR,KAAKqmR,QAAQy8a,sBAAsB1/f,GAE1C,CAED6/f,mBACIjjsB,KAAK+1M,aAAe,IAAI7qM,MACxBlL,KAAKm+rB,cAAgB,IAAIjzrB,KAC5B,CACDs3rB,mBACI,OAAIxisB,KAAK2isB,uBACEhD,GACP3/rB,KAAKqhY,OACEo+T,GACPz/rB,KAAKwgsB,8BAAgCxgsB,KAAKkjsB,uBAAuBxD,IAC1DA,GACP1/rB,KAAKkjsB,uBAAuBzD,IACrBA,GACJD,EACV,CAED0D,uBAAuBv/W,IACnB,OAAO3jV,KAAKmjsB,aAAcjlhB,IAAYA,GAAQylK,SAAWA,GAC5D,CAEDy/W,oBACI,OAAOpjsB,KAAKmjsB,aAAcjlhB,IAAYA,GAAQt7D,MACjD,CAEDyglB,sBACI,OAAOrjsB,KAAKmjsB,aAAcjlhB,IAAYA,GAAQD,QACjD,CAED0jhB,gBAAgB7iX,GAAO,IACnB9+U,KAAKynd,UAAYznd,KAAKojsB,oBAClBpjsB,KAAKqmR,UAAYy4D,GAAKwiX,UACtBthsB,KAAKqmR,QAAQs7a,gBAAgB7iX,GAEpC,CAED0iX,eAAe1iX,GAAO,IAClB9+U,KAAKi+K,QAAUj+K,KAAKqjsB,sBAChBrjsB,KAAKqmR,UAAYy4D,GAAKwiX,UACtBthsB,KAAKqmR,QAAQm7a,eAAe1iX,GAEnC,CAEDwkX,4BAA4B9yqB,IACxBxwB,KAAK0gsB,oBAAsBlwqB,EAC9B,CAED+yqB,mBAAmBzkX,IACXghX,GAAahhX,KAA0B,MAAjBA,GAAK3gK,WAC3Bn+K,KAAK8gsB,UAAYhiX,GAAK3gK,SAE7B,CAMD2jhB,mBAAmBR,IACf,MAAMkC,GAAcxjsB,KAAKqmR,SAAWrmR,KAAKqmR,QAAQzjK,MACjD,OAAQ0+kB,MAAckC,KAAgBxjsB,KAAKqmR,QAAQ+8a,mBACtD,CAEDJ,MAAMv7rB,IACF,OAAO,IACV;;;;;;;OA2HL,MAAMywT,WAAkBooY,GAcpBxgsB,YAAYuzJ,GAAUwsiB,GAAiBrB,IACnCvgrB,MAAM2hrB,GAAeC,IAAkBG,GAAoBxB,GAAgBqB,KAC3E7/rB,KAAKqzJ,SAAWA,GAChBrzJ,KAAKijsB,mBACLjjsB,KAAKujsB,mBAAmB1D,IACxB7/rB,KAAKyjsB,iBACLzjsB,KAAKkisB,uBAAuB,CACxBZ,UAAU,EAIVl+f,YAAapjM,KAAKw+rB,gBAEzB,CACDkF,gBAAgBj8rB,GAAMy2K,IAClB,OAAIl+K,KAAKqzJ,SAAS5rJ,IACPzH,KAAKqzJ,SAAS5rJ,KACzBzH,KAAKqzJ,SAAS5rJ,IAAQy2K,GACtBA,GAAQikhB,UAAUnisB,MAClBk+K,GAAQolhB,4BAA4BtjsB,KAAK0gsB,qBAClCxihB,GACV,CACD86I,WAAWvxT,GAAMy2K,GAASl4K,GAAU,IAChChG,KAAK0jsB,gBAAgBj8rB,GAAMy2K,IAC3Bl+K,KAAKkisB,uBAAuB,CAAE9+f,UAAWp9L,GAAQo9L,YACjDpjM,KAAK0gsB,qBACR,CAcDiD,cAAcl8rB,GAAMzB,GAAU,IACtBhG,KAAKqzJ,SAAS5rJ,KACdzH,KAAKqzJ,SAAS5rJ,IAAM67rB,4BAA4B,eAC5CtjsB,KAAKqzJ,SAAS5rJ,IACtBzH,KAAKkisB,uBAAuB,CAAE9+f,UAAWp9L,GAAQo9L,YACjDpjM,KAAK0gsB,qBACR,CACDkD,WAAWn8rB,GAAMy2K,GAASl4K,GAAU,IAC5BhG,KAAKqzJ,SAAS5rJ,KACdzH,KAAKqzJ,SAAS5rJ,IAAM67rB,4BAA4B,eAC5CtjsB,KAAKqzJ,SAAS5rJ,IAClBy2K,IACAl+K,KAAK0jsB,gBAAgBj8rB,GAAMy2K,IAC/Bl+K,KAAKkisB,uBAAuB,CAAE9+f,UAAWp9L,GAAQo9L,YACjDpjM,KAAK0gsB,qBACR,CACDhjrB,SAASmmrB,IACL,OAAO7jsB,KAAKqzJ,SAASjxJ,eAAeyhsB,KAAgB7jsB,KAAKqzJ,SAASwwiB,IAAankjB,OAClF,CAoCD/iE,SAASz0E,GAAOlC,GAAU,IACtBo6rB,GAAuBpgsB,KAAM,EAAMkI,IACnCmX,OAAOsa,KAAKzxB,IAAOuI,QAAQhJ,KACvB04rB,GAAqBngsB,MAAM,EAAMyH,IACjCzH,KAAKqzJ,SAAS5rJ,IAAMk1E,SAASz0E,GAAMT,IAAO,CAAE65rB,UAAU,EAAMl+f,UAAWp9L,GAAQo9L,WAA/E,GAEJpjM,KAAKkisB,uBAAuBl8rB,GAC/B,CAgCDyyT,WAAWvwT,GAAOlC,GAAU,IAKX,MAATkC,KAEJmX,OAAOsa,KAAKzxB,IAAOuI,QAAQhJ,KAGvB,MAAMy2K,GAAUl+K,KAAKqzJ,SAAS5rJ,IAC1By2K,IACAA,GAAQu6I,WACkDvwT,GAAMT,IAAO,CAAE65rB,UAAU,EAAMl+f,UAAWp9L,GAAQo9L,WAD5G,GAIRpjM,KAAKkisB,uBAAuBl8rB,IAC/B,CA0DD+hE,MAAM7/D,GAAQ,GAAIlC,GAAU,IACxBhG,KAAKqgsB,cAAc,CAACnihB,GAASz2K,MACzBy2K,GAAQn2G,MAAM7/D,GAAMT,IAAO,CAAE65rB,UAAU,EAAMl+f,UAAWp9L,GAAQo9L,WAAhE,GAEJpjM,KAAK2hsB,gBAAgB37rB,IACrBhG,KAAKwhsB,eAAex7rB,IACpBhG,KAAKkisB,uBAAuBl8rB,GAC/B,CAMDo8rB,cACI,OAAOpisB,KAAK8jsB,gBAAgB,GAAI,CAACl+qB,GAAKs4J,GAASz2K,MAC3Cme,GAAIne,IAAQy2K,GAAQkkhB,cACbx8qB,IAEd,CAEDm+qB,uBACI,IAAIC,GAAiBhksB,KAAK8jsB,iBAAgB,EAAO,CAAC7jhB,GAASt5I,OAChDA,GAAMo9pB,wBAAgC9jhB,IAEjD,OAAI+jhB,IACAhksB,KAAKkisB,uBAAuB,CAAEZ,UAAU,IACrC0C,EACV,CAED3D,cAAc3qV,IACVr2V,OAAOsa,KAAK35B,KAAKqzJ,UAAU5iJ,QAAQmpB,KAI/B,MAAMskJ,GAAUl+K,KAAKqzJ,SAASz5H,IAC9BskJ,IAAWw3L,GAAGx3L,GAAStkJ,GAAV,EAEpB,CAED6pqB,iBACIzjsB,KAAKqgsB,cAAenihB,KAChBA,GAAQikhB,UAAUnisB,MAClBk+K,GAAQolhB,4BAA4BtjsB,KAAK0gsB,oBAAzC,EAEP,CAEDqB,eACI/hsB,KAAKkI,MAAQlI,KAAKiksB,cACrB,CAEDd,aAAahsY,IACT,UAAY0sY,GAAa3lhB,MAAY7+J,OAAOm3X,QAAQx2Y,KAAKqzJ,UACrD,GAAIrzJ,KAAK0d,SAASmmrB,KAAgB1sY,GAAUj5I,IACxC,OAAO,EAGf,OAAO,CACV,CAED+lhB,eAEI,OAAOjksB,KAAK8jsB,gBADF,GACuB,CAACl+qB,GAAKs4J,GAASz2K,OACxCy2K,GAAQx+B,SAAW1/I,KAAKoN,YACxBwY,GAAIne,IAAQy2K,GAAQh2K,OAEjB0d,IAEd,CAEDk+qB,gBAAgB1ykB,GAAW5gG,IACvB,IAAI81T,GAAMl1N,GACV,YAAKivkB,cAAc,CAACnihB,GAASz2K,MACzB6+U,GAAM91T,GAAG81T,GAAKpoK,GAASz2K,GAAf,GAEL6+U,EACV,CAEDq8W,uBACI,UAAWkB,MAAexkrB,OAAOsa,KAAK35B,KAAKqzJ,UACvC,GAAIrzJ,KAAKqzJ,SAASwwiB,IAAankjB,QAC3B,OAAO,EAGf,OAAOrgI,OAAOsa,KAAK35B,KAAKqzJ,UAAU/yJ,OAAS,GAAKN,KAAKoN,QACxD,CAED41rB,MAAMv7rB,IACF,OAAOzH,KAAKqzJ,SAASjxJ,eAAeqF,IAChCzH,KAAKqzJ,SAAS5rJ,IACd,IACP,EAEL,MAAMy8rB,GAAmBhsY,GAqBzB,MAAMisY,WAAmBjsY;;;;;;;;AAWzB,SAASksY,GAAY38rB,GAAMkwB,IACvB,MAAO,IAAIA,GAAOlI,KAAMhoB,GAC3B,CAQD,SAAS48rB,GAAanmhB,GAASvpK,IAO3B2vrB,GAAgBpmhB,GAASvpK,IACzBA,GAAIqyc,cAAcjyR,WAAW7W,GAAQh2K,OACjCg2K,GAAQ9wK,UACRuH,GAAIqyc,cAAc9xR,oBAAmB,GA4I7C,SAASqvgB,GAAwBrmhB,GAASvpK,IACtCA,GAAIqyc,cAAchyR,iBAAkBnrL,KAChCq0K,GAAQsmhB,cAAgB36rB,GACxBq0K,GAAQumhB,gBAAiB,EACzBvmhB,GAAQqihB,eAAgB,EACC,WAArBrihB,GAAQC,UACRumhB,GAAcxmhB,GAASvpK,GAAV,EAExB,CAlJG4vrB,CAAwBrmhB,GAASvpK,IAmKrC,SAASgwrB,GAAyBzmhB,GAASvpK,IACvC,MAAMuoO,GAAW,CAACrzO,GAAU+6rB,MAExBjwrB,GAAIqyc,cAAcjyR,WAAWlrL,IAEzB+6rB,IACAjwrB,GAAIkwrB,kBAAkBh7rB,GAAtB,EAERq0K,GAAQ8W,iBAAiBkoD,IAGzBvoO,GAAI8prB,mBAAmB,KACnBvghB,GAAQ4mhB,oBAAoB5nd,GAA5B,EAEP,CAhLGynd,CAAyBzmhB,GAASvpK,IAkJtC,SAASowrB,GAAkB7mhB,GAASvpK,IAChCA,GAAIqyc,cAAc/xR,kBAAkB,KAChC/W,GAAQuihB,iBAAkB,EACD,SAArBvihB,GAAQC,UAAuBD,GAAQumhB,gBACvCC,GAAcxmhB,GAASvpK,IACF,WAArBupK,GAAQC,UACRD,GAAQ03Q,eAAR,EAEX,CAzJGmvQ,CAAkB7mhB,GAASvpK,IAgD/B,SAASqwrB,GAA2B9mhB,GAASvpK,IACzC,GAAIA,GAAIqyc,cAAc9xR,iBAAkB,CACpC,MAAM+vgB,GAAoB95rB,KACtBwJ,GAAIqyc,cAAc9xR,iBAAiB/pL,GAAnC,EAEJ+yK,GAAQgnhB,yBAAyBD,IAGjCtwrB,GAAI8prB,mBAAmB,KACnBvghB,GAAQinhB,4BAA4BF,GAApC,EAEP,CACJ,CA3DGD,CAA2B9mhB,GAASvpK,GACvC,CAYD,SAASywrB,GAAelnhB,GAASvpK,GAAK0wrB,IAAkC,GACpE,MAAM7ujB,GAAO,OAUT7hI,GAAIqyc,gBACJryc,GAAIqyc,cAAchyR,iBAAiBx+C,IACnC7hI,GAAIqyc,cAAc/xR,kBAAkBz+C,KAExC8ujB,GAAkBpnhB,GAASvpK,IACvBupK,KACAvpK,GAAI+prB,4BACJxghB,GAAQolhB,4BAA4B,QAE3C,CACD,SAASnugB,GAA0BwmgB,GAAYz+c,IAC3Cy+c,GAAWlrrB,QAASksrB,KACZA,GAAUxngB,2BACVwngB,GAAUxngB,0BAA0B+nD,GAApC,EAEX,CA4BD,SAASond,GAAgBpmhB,GAASvpK,IAC9B,MAAMgnrB,GAAa4B,GAAqBr/gB,IAClB,OAAlBvpK,GAAIgorB,UACJz+gB,GAAQ6ihB,cAAc3D,GAAgBzB,GAAYhnrB,GAAIgorB,YAE3B,mBAAfhB,IAQZz9gB,GAAQ6ihB,cAAc,CAACpF,KAE3B,MAAMsE,GAAkBxC,GAA0Bv/gB,IACvB,OAAvBvpK,GAAI6prB,eACJtghB,GAAQ8ihB,mBAAmB5D,GAAgB6C,GAAiBtrrB,GAAI6prB,iBAEhC,mBAApByB,IACZ/hhB,GAAQ8ihB,mBAAmB,CAACf,KAGhC,MAAMxugB,GAAoB,IAAMvT,GAAQgkhB,yBACxC/sgB,GAA0BxgL,GAAI6orB,eAAgB/rgB,IAC9C0D,GAA0BxgL,GAAI+orB,oBAAqBjsgB,GACtD,CAUD,SAAS6zgB,GAAkBpnhB,GAASvpK,IAChC,IAAI4wrB,IAAmB,EACvB,GAAgB,OAAZrnhB,GAAkB,CAClB,GAAsB,OAAlBvpK,GAAIgorB,UAAoB,CACxB,MAAMhB,GAAa4B,GAAqBr/gB,IACxC,GAAI/8K,MAAMkuB,QAAQssqB,KAAeA,GAAWr7rB,OAAS,EAAG,CAEpD,MAAMklsB,GAAoB7J,GAAWrmrB,OAAQqnrB,IAAcA,KAAchorB,GAAIgorB,WACzE6I,GAAkBllsB,SAAWq7rB,GAAWr7rB,SACxCilsB,IAAmB,EACnBrnhB,GAAQ6ihB,cAAcyE,IAE7B,CACJ,CACD,GAA2B,OAAvB7wrB,GAAI6prB,eAAyB,CAC7B,MAAMyB,GAAkBxC,GAA0Bv/gB,IAClD,GAAI/8K,MAAMkuB,QAAQ4wqB,KAAoBA,GAAgB3/rB,OAAS,EAAG,CAE9D,MAAMmlsB,GAAyBxF,GAAgB3qrB,OAAQkprB,IAAmBA,KAAmB7prB,GAAI6prB,gBAC7FiH,GAAuBnlsB,SAAW2/rB,GAAgB3/rB,SAClDilsB,IAAmB,EACnBrnhB,GAAQ8ihB,mBAAmByE,IAElC,CACJ,CACJ,CAED,MAAMjvjB,GAAO,OACb2+C,UAA0BxgL,GAAI6orB,eAAgBhnjB,IAC9C2+C,GAA0BxgL,GAAI+orB,oBAAqBlnjB,IAC5C+ujB,EACV,CAmBD,SAASb,GAAcxmhB,GAASvpK,IACxBupK,GAAQqihB,eACRrihB,GAAQujhB,cACZvjhB,GAAQvhG,SAASuhG,GAAQsmhB,cAAe,CAAEkB,uBAAuB,IACjE/wrB,GAAIkwrB,kBAAkB3mhB,GAAQsmhB,eAC9BtmhB,GAAQumhB,gBAAiB,CAC5B,CAuBD,SAASkB,GAAmBznhB,GAASvpK,IAGjC2vrB,GAAgBpmhB,GAASvpK,GAC5B,CA+BD,SAASixrB,GAAkB35rB,GAAS45rB,IAChC,IAAK55rB,GAAQ7J,eAAe,SACxB,OAAO,EACX,MAAMkO,GAASrE,GAAQ8mG,MACvB,QAAIziG,GAAOqgK,kBAEHtxJ,OAAOm4G,GAAGqukB,GAAWv1rB,GAAOsQ,aACvC,CAMD,SAASklrB,GAAoB57b,GAAM+vX,IAC/B/vX,GAAK65b,uBACL9pE,GAAWxpnB,QAASkE,KAChB,MAAMupK,GAAUvpK,GAAIupK,QACK,WAArBA,GAAQC,UAAyBD,GAAQumhB,iBACzC9vrB,GAAIkwrB,kBAAkB3mhB,GAAQsmhB,eAC9BtmhB,GAAQumhB,gBAAiB,IAGpC,CAED,SAASsB,GAAoBpxrB,GAAKqvZ,IAC9B,IAAKA,GACD,OAAO,KAGX,IAAIgiS,GACAC,GACAC,GAgBJ,OApBK/ksB,MAAMkuB,QAAQ20Y,IAKnBA,GAAevzZ,QAASonN,KAChBA,GAAE/3N,cAAgBy6rB,GAClByL,GAAkBnue,GA1B9B,SAASsue,GAAkBn/O,IAGvB,OAAO3nc,OAAOo1R,eAAeuyK,GAAclnd,eAAiBq6rB,EAC/D,CAwBgBgM,CAAkBtue,IAGvBoue,GAAkBpue,GAKlBque,GAAiBrue,KAGrBque,IAEAD,IAEAD,IAKG,IACV;;;;;;;;AAyBD,MAAMI,GAA0B,CAC5BjgsB,QAASy4rB,GACT1grB,eAAaC,OAAW,IAAMkorB,KAE5BC,GAA2B/gsB,QAAQyC,QAAQ,MAiEjD,MAAMq+rB,WAAezH,GACjB9+rB,YAAY67rB,GAAYsE,IACpBhirB,QAKAje,KAAKq/rB,WAAY,EACjBr/rB,KAAKumsB,YAAc,IAAIjrqB,IAKvBt7B,KAAKwmsB,SAAW,IAAIt7rB,MACpBlL,KAAKkqQ,KACD,IAAIguD,GAAU,GAAI6kY,GAAkBpB,IAAawB,GAAuB8C,IAC/E,CAEDzvrB,kBACIxQ,KAAKujsB,oBACR,CAKG1E,oBACA,OAAO7+rB,IACV,CAKGk+K,cACA,OAAOl+K,KAAKkqQ,IACf,CAMGz6O,WACA,MAAO,EACV,CAKG4jI,eACA,OAAOrzJ,KAAKkqQ,KAAK72G,QACpB,CAQD2lK,WAAWrkT,IACP2xrB,GAAkBj+rB,KAAK,KACnB,MAAME,GAAYvI,KAAKymsB,eAAe9xrB,GAAI8a,MAC1C9a,GAAIupK,QACA31K,GAAUm7rB,gBAAgB/urB,GAAIlN,KAAMkN,GAAIupK,SAC5CmmhB,GAAa1vrB,GAAIupK,QAASvpK,IAC1BA,GAAIupK,QAAQgkhB,uBAAuB,CAAE9+f,WAAW,IAChDpjM,KAAKumsB,YAAYv6rB,IAAI2I,GAArB,EAEP,CAOD+xrB,WAAW/xrB,IACP,OAAO3U,KAAKkqQ,KAAKnqP,IAAIpL,GAAI8a,KAC5B,CAODk0qB,cAAchvrB,IACV2xrB,GAAkBj+rB,KAAK,KACnB,MAAME,GAAYvI,KAAKymsB,eAAe9xrB,GAAI8a,MACtClnB,IACAA,GAAUo7rB,cAAchvrB,GAAIlN,MAEhCzH,KAAKumsB,YAAYrrqB,OAAOvmB,GAAxB,EAEP,CAODgyrB,aAAahyrB,IACT2xrB,GAAkBj+rB,KAAK,KACnB,MAAME,GAAYvI,KAAKymsB,eAAe9xrB,GAAI8a,MACpCqd,GAAQ,IAAIorR,GAAU,IAC5BytY,GAAmB74pB,GAAOn4B,IAC1BpM,GAAUm7rB,gBAAgB/urB,GAAIlN,KAAMqlC,IACpCA,GAAMo1pB,uBAAuB,CAAE9+f,WAAW,GAA1C,EAEP,CAODwjgB,gBAAgBjyrB,IACZ2xrB,GAAkBj+rB,KAAK,KACnB,MAAME,GAAYvI,KAAKymsB,eAAe9xrB,GAAI8a,MACtClnB,IACAA,GAAUo7rB,cAAchvrB,GAAIlN,KAA5B,EAGX,CAODo/rB,aAAalyrB,IACT,OAAO3U,KAAKkqQ,KAAKnqP,IAAIpL,GAAI8a,KAC5B,CAODq3qB,YAAYnyrB,GAAKzM,IACbo+rB,GAAkBj+rB,KAAK,KACNrI,KAAKkqQ,KAAKnqP,IAAIpL,GAAI8a,MAC1BktD,SAASz0E,GAAd,EAEP,CAODy0E,SAASz0E,IACLlI,KAAKk+K,QAAQvhG,SAASz0E,GACzB,CAQD6+rB,SAAS9hrB,IACL,YAAKo6qB,WAAY,EACjByG,GAAoB9lsB,KAAKkqQ,KAAMlqQ,KAAKumsB,aACpCvmsB,KAAKwmsB,SAASp2rB,KAAK6U,KACZ,CACV,CAKD+hrB,UACIhnsB,KAAKinsB,WACR,CAODA,UAAU/+rB,IACNlI,KAAKkqQ,KAAKniM,MAAM7/D,IAChBlI,KAAKq/rB,WAAY,CACpB,CACDkE,qBACQvjsB,KAAKgG,SAAoC,MAAzBhG,KAAKgG,QAAQm4K,WAC7Bn+K,KAAKkqQ,KAAK42b,UAAY9gsB,KAAKgG,QAAQm4K,SAE1C,CACDsohB,eAAeh3qB,IACXA,UAAK6gC,MACE7gC,GAAKnvB,OAASN,KAAKkqQ,KAAKnqP,IAAI0P,IAAQzvB,KAAKkqQ,IACnD;;;;;;;;AAuCL,SAASg9b,GAAeznhB,GAAM32K,IAC1B,MAAM0D,GAAQizK,GAAKx+K,QAAQ6H,IACvB0D,IAAQ,GACRizK,GAAK54H,OAAOr6C,GAAO,EAC1B;;;;;;;OASD,SAAS26rB,GAAmBC,IACxB,MAA4B,iBAAdA,IAAwC,OAAdA,IACF,IAAlC/nrB,OAAOsa,KAAKytqB,IAAW9msB,QAAgB,UAAW8msB,IAAa,aAAcA,EACpF,CArDDf,GAAOtjsB,UAAP,4BAAmGsjsB,IA15GQrjsB,MA05GgButL,GAA3H,IA15G2GvtL,MA05GsEm4rB,GAAjL,MACAkL,GAAO/yrB,UA35GoGtQ,MA25G3G,MAAuFqjsB,GAAvF9yrB,sHA35G2GvQ,MA25G3G,6BAAuFwQ,eAAvF,EA35G2GxQ,CA25G3G,0BAAuFwQ,YAAvF,6GA35G2GxQ,MA25GsO,CAACojsB,KA35GvOpjsB,SAg9G3G,MAAM+0T,GAAe,cAA0BuoY,GAC3CxgsB,YAEAsnsB,GAAY,KAAMvH,GAAiBrB,IAC/BvgrB,MAAM2hrB,GAAeC,IAAkBG,GAAoBxB,GAAgBqB,KAE3E7/rB,KAAKu3E,aAAe,KAEpBv3E,KAAKqnsB,UAAY,GAEjBrnsB,KAAKyksB,gBAAiB,EACtBzksB,KAAKsnsB,gBAAgBF,IACrBpnsB,KAAKujsB,mBAAmB1D,IACxB7/rB,KAAKijsB,mBACLjjsB,KAAKkisB,uBAAuB,CACxBZ,UAAU,EAKVl+f,YAAapjM,KAAKw+rB,iBAElBsB,GAAaD,MACZA,GAAgB0H,aAAe1H,GAAgB2H,yBAC5CL,GAAmBC,IACnBpnsB,KAAKu3E,aAAe6vnB,GAAUl/rB,MAG9BlI,KAAKu3E,aAAe6vnB,GAG/B,CACDzqnB,SAASz0E,GAAOlC,GAAU,IACtBhG,KAAKkI,MAAQlI,KAAKwksB,cAAgBt8rB,GAC9BlI,KAAKqnsB,UAAU/msB,SAA4C,IAAlC0F,GAAQ0/rB,uBACjC1lsB,KAAKqnsB,UAAU52rB,QAASwxrB,IAAaA,GAASjisB,KAAKkI,OAAyC,IAAlClC,GAAQyhsB,wBAEtEznsB,KAAKkisB,uBAAuBl8rB,GAC/B,CACDyyT,WAAWvwT,GAAOlC,GAAU,IACxBhG,KAAK28E,SAASz0E,GAAOlC,GACxB,CACD+hE,MAAMq/nB,GAAYpnsB,KAAKu3E,aAAcvxE,GAAU,IAC3ChG,KAAKsnsB,gBAAgBF,IACrBpnsB,KAAK0hsB,eAAe17rB,IACpBhG,KAAKuhsB,gBAAgBv7rB,IACrBhG,KAAK28E,SAAS38E,KAAKkI,MAAOlC,IAC1BhG,KAAKyksB,gBAAiB,CACzB,CAED1C,eAAkB,CAElBoB,aAAahsY,IACT,OAAO,CACV,CAEDwrY,uBACI,OAAO3isB,KAAKoN,QACf,CACD4nL,iBAAiBxkK,IACbxwB,KAAKqnsB,UAAUrrrB,KAAKwU,GACvB,CAEDs0qB,oBAAoBt0qB,IAChB02qB,GAAelnsB,KAAKqnsB,UAAW72qB,GAClC,CACD00qB,yBAAyB10qB,IACrBxwB,KAAK2gsB,kBAAkB3krB,KAAKwU,GAC/B,CAED20qB,4BAA4B30qB,IACxB02qB,GAAelnsB,KAAK2gsB,kBAAmBnwqB,GAC1C,CAED6vqB,cAAc3qV,IAAO,CAErBquV,uBACI,QAAsB,WAAlB/jsB,KAAKm+K,WACDn+K,KAAKugsB,eACLvgsB,KAAKyhsB,cACLzhsB,KAAKygsB,iBACLzgsB,KAAK41b,iBACL51b,KAAKyksB,mBACLzksB,KAAK28E,SAAS38E,KAAKwksB,cAAe,CAAElD,UAAU,EAAMoE,uBAAuB,KACpE,EAIlB,CACD4B,gBAAgBF,IACRD,GAAmBC,KACnBpnsB,KAAKkI,MAAQlI,KAAKwksB,cAAgB4C,GAAUl/rB,MAC5Ck/rB,GAAUh6rB,SAAWpN,KAAK+vJ,QAAQ,CAAEuxiB,UAAU,EAAMl+f,WAAW,IAC3DpjM,KAAKmgB,OAAO,CAAEmhrB,UAAU,EAAMl+f,WAAW,KAG7CpjM,KAAKkI,MAAQlI,KAAKwksB,cAAgB4C,EAEzC,GAECM,GAAqB3vY;;;;;;;OAgB3B,MAAM4vY,WAAmC/I,GAErCtvrB,WACItP,KAAK4nsB,mBAEL5nsB,KAAK6+rB,cAAc8H,aAAa3msB,KACnC,CAED6Q,cACQ7Q,KAAK6+rB,eAEL7+rB,KAAK6+rB,cAAc+H,gBAAgB5msB,KAE1C,CAKGk+K,cACA,OAAOl+K,KAAK6+rB,cAAcgI,aAAa7msB,KAC1C,CAKGyvB,WACA,OAAO20qB,GAAyB,MAAbpksB,KAAKyH,KAAezH,KAAKyH,KAAOzH,KAAKyH,KAAKhG,WAAYzB,KAAKqmR,QACjF,CAKGw4a,oBACA,OAAO7+rB,KAAKqmR,QAAUrmR,KAAKqmR,QAAQw4a,cAAgB,IACtD,CAED+I,mBAAsB,EAE1BD,GAA2B5ksB,UAA3B,qDA1mH2GC,MA0mHY2ksB,MAAvH5prB,IAAuH4prB,GAAvH,KACAA,GAA2Br0rB,UA3mHgFtQ,MA2mH3G,MAA2G2ksB,GAA3G/ljB,UA3mH2G5+I;;;;;;;;AA2qH3G,MAAM6ksB,GAAqB,CACvB1hsB,QAASy4rB,GACT1grB,eAAaC,OAAW,IAAM2prB,KA4BlC,MAAMA,WAAqBH,GACvB7nsB,YAAY63B,GAAQgkqB,GAAYsE,IAC5BhirB,QACAje,KAAKqmR,QAAU1uP,GACf33B,KAAKo+rB,eAAezC,IACpB37rB,KAAKs+rB,oBAAoB2B,GAC5B,CAED2H,qBACU5nsB,KAAKqmR,mBAAmByhb,KAAmB9nsB,KAAKqmR,OAIzD,EAELyhb,GAAa/ksB,UAAb,4BAAyG+ksB,IAxtHE9ksB,MAwtH4B47rB,GAAvI,GAxtH2G57rB,MAwtHqFutL,GAAhM,IAxtH2GvtL,MAwtH2Im4rB,GAAtP,MACA2M,GAAax0rB,UAztH8FtQ,MAytH3G,MAA6F8ksB,GAA7Fv0rB,6GAztH2GvQ,MAytHmF,CAAC6ksB,KAztHpF7ksB;;;;;;;;AA2vH3G,MAAM+ksB,GAAuB,CACzB5hsB,QAASs8L,GACTvkL,eAAaC,OAAW,IAAM6prB,KAmB5BjgsB,GAAyBxC,QAAQyC,QAAQ,MAsF/C,MAAMggsB,WAAgBvlgB,GAClB3iM,YAAY63B,GAAQgkqB,GAAYsE,GAAiBj8R,GAAgBikS,IAC7DhqrB,QACAje,KAAKiosB,mBAAqBA,GAC1BjosB,KAAKk+K,QAAU,IAAI65I,GAEnB/3T,KAAKkosB,aAAc,EAMnBlosB,KAAK4nE,OAAS,IAAI18D,MAClBlL,KAAKqmR,QAAU1uP,GACf33B,KAAKo+rB,eAAezC,IACpB37rB,KAAKs+rB,oBAAoB2B,IACzBjgsB,KAAKgnd,cAAgB++O,GAAoB/lsB,EAAMgka,GAClD,CAED3zZ,YAAYpE,IAER,GADAjM,KAAKmosB,mBACAnosB,KAAKkosB,aAAe,SAAUj8rB,GAAS,CACxC,GAAIjM,KAAKkosB,cACLlosB,KAAKoosB,aACDposB,KAAK6+rB,eAAe,CAKpB,MAAMwJ,GAAUp8rB,GAAQxE,KAAQmC,cAChC5J,KAAK6+rB,cAAc8E,cAAc,CAAEl8rB,KAAM4gsB,GAAS54qB,KAAMzvB,KAAKsosB,SAASD,KACzE,CAELrosB,KAAKuosB,eACR,CACG,eAAgBt8rB,IAChBjM,KAAKwosB,gBAAgBv8rB,IAErB25rB,GAAkB35rB,GAASjM,KAAK6lsB,aAChC7lsB,KAAK+hsB,aAAa/hsB,KAAK+yG,OACvB/yG,KAAK6lsB,UAAY7lsB,KAAK+yG,MAE7B,CAEDliG,cACI7Q,KAAK6+rB,eAAiB7+rB,KAAK6+rB,cAAc8E,cAAc3jsB,KAC1D,CAMGyvB,WACA,OAAOzvB,KAAKsosB,SAAStosB,KAAKyH,KAC7B,CAKGo3rB,oBACA,OAAO7+rB,KAAKqmR,QAAUrmR,KAAKqmR,QAAQw4a,cAAgB,IACtD,CAODgG,kBAAkBh7rB,IACd7J,KAAK6lsB,UAAYh8rB,GACjB7J,KAAK4nE,OAAOx3D,KAAKvG,GACpB,CACD0+rB,gBACIvosB,KAAKujsB,qBACLvjsB,KAAKyosB,gBAAkBzosB,KAAK0osB,mBAAqB1osB,KAAK6+rB,cAAc7lY,WAAWh5T,MAC/EA,KAAKkosB,aAAc,CACtB,CACD3E,qBACQvjsB,KAAKgG,SAAoC,MAAzBhG,KAAKgG,QAAQm4K,WAC7Bn+K,KAAKk+K,QAAQ4ihB,UAAY9gsB,KAAKgG,QAAQm4K,SAE7C,CACDsqhB,gBACI,OAAQzosB,KAAKqmR,YAAcrmR,KAAKgG,UAAWhG,KAAKgG,QAAQ4ma,WAC3D,CACD87R,mBACIrE,GAAarksB,KAAKk+K,QAASl+K,MAC3BA,KAAKk+K,QAAQgkhB,uBAAuB,CAAE9+f,WAAW,GACpD,CACD+kgB,kBACSnosB,KAAKyosB,iBACNzosB,KAAK4nsB,mBAET5nsB,KAAKoosB,YACR,CACDR,mBAUC,CACDQ,aACQposB,KAAKgG,SAAWhG,KAAKgG,QAAQyB,OAC7BzH,KAAKyH,KAAOzH,KAAKgG,QAAQyB,OACxBzH,KAAKyosB,iBAAoBzosB,KAAKyH,IAGtC,CACDs6rB,aAAa75rB,IACTH,GAAgBM,KAAK,KACjBrI,KAAKk+K,QAAQvhG,SAASz0E,GAAO,CAAEu/rB,uBAAuB,IACtDznsB,KAAKiosB,oBAAoBrqrB,cAAzB,EAEP,CACD4qrB,gBAAgBv8rB,IACZ,MAAM08rB,GAAgB18rB,GAAQd,WAAcyV,aAEtCzV,GAA+B,IAAlBw9rB,KAAkB,EAAKC,OAAiBD,IAC3D5gsB,GAAgBM,KAAK,KACb8C,KAAenL,KAAKk+K,QAAQ9wK,SAC5BpN,KAAKk+K,QAAQnuB,WAEP5kJ,IAAcnL,KAAKk+K,QAAQ9wK,UACjCpN,KAAKk+K,QAAQ/9J,SAEjBngB,KAAKiosB,oBAAoBrqrB,cAAzB,EAEP,CACD0qrB,SAASzE,IACL,OAAO7jsB,KAAKqmR,QAAU+9a,GAAYP,GAAa7jsB,KAAKqmR,SAAW,CAACw9a,GACnE,EAELmE,GAAQjlsB,UAAR,4BAAoGilsB,IA/+HOhlsB,MA++HkB47rB,GAA7H,GA/+H2G57rB,MA++H2EutL,GAAtL,IA/+H2GvtL,MA++HiIm4rB,GAA5O,IA/+H2Gn4rB,MA++H6LotL,GAAxS,IA/+H2GptL,MA++HuPkxrB,MAAlW,KACA8T,GAAQ10rB,UAh/HmGtQ,MAg/H3G,MAAwFglsB,GAAxFz0rB,iQAh/H2GvQ,MAg/H+O,CAAC+ksB,KAh/HhP/ksB;;;;;;;;AA8jI3G,MAAM6lsB,IAENA,GAAc9lsB,UAAd,4BAA0G8lsB,GAA1G,EACAA,GAAcv1rB,UAjkI6FtQ,MAikI3G,MAA8F6lsB,GAA9Ft1rB,qFAA2M;;;;;;;;AAgB3M,MAAMu1rB,GAAwB,CAC1B3isB,QAASiqL,GACTlyK,eAAaC,OAAW,IAAM4qrB,IAC9BzisB,OAAO,GA0BX,MAAMyisB,WAA4B5O,GAK9BplgB,WAAW7sL,IAEP,MAAMgzO,GAAkBhzO,IAAgB,GACxClI,KAAKgO,YAAY,QAASktO,GAC7B,CAKDlmD,iBAAiBxkK,IACbxwB,KAAKk9O,SAAYh1O,KACbsoB,GAAY,IAATtoB,GAAc,KAAO6pB,WAAW7pB,IAAjC,CAET,EAEL6gsB,GAAoBhmsB,UAApB,qDAloI2GC,MAkoIK+lsB,MAAhHhrrB,IAAgHgrrB,GAAhH,KACAA,GAAoBz1rB,UAnoIuFtQ,MAmoI3G,MAAoG+lsB,GAApGx1rB,gLAnoI2GvQ,MAmoI3G,4BAAoGwQ,4BAApG,EAnoI2GxQ,CAmoI3G,yBAAoGwQ,cAApG,cAnoI2GxQ,MAmoIgO,CAAC8lsB,KAnoIjO9lsB;;;;;;;;AAopI3G,MAAMgmsB,GAAuB,CACzB7isB,QAASiqL,GACTlyK,eAAaC,OAAW,IAAM8oc,IAC9B3gd,OAAO,GAcX,MAAM2isB,IAENA,GAA2BlmsB,UAA3B,4BAAuHkmsB,GAAvH,EACAA,GAA2BxisB,UAxqIgFzD,MAwqI3G,MAAwHimsB,KACxHA,GAA2BvisB,UAzqIgF1D,MAyqI3G,IAQA,MAAMkmsB,GACFppsB,cACIE,KAAKmpsB,WAAa,EACrB,CAKDn9rB,IAAIkyK,GAAS8nO,IACThmZ,KAAKmpsB,WAAWntrB,KAAK,CAACkiK,GAAS8nO,IAClC,CAKDruY,OAAOquY,IACH,QAASxwY,GAAIxV,KAAKmpsB,WAAW7osB,OAAS,EAAGkV,IAAK,IAAKA,GAC/C,GAAIxV,KAAKmpsB,WAAW3zrB,IAAG,KAAOwwY,GAE1B,YADAhmZ,KAAKmpsB,WAAWtipB,OAAOrxC,GAAG,EAIrC,CAKDqgG,OAAOmwS,IACHhmZ,KAAKmpsB,WAAW14rB,QAASlP,KACjBvB,KAAKopsB,aAAa7nsB,GAAGykZ,KAAazkZ,GAAE,KAAOykZ,IAC3CzkZ,GAAE,GAAG8nsB,YAAYrjT,GAAS99Y,MAA1B,EAGX,CACDkhsB,aAAaE,GAAatjT,IACtB,QAAKsjT,GAAY,GAAGprhB,UAEborhB,GAAY,GAAGjjb,UAAY2/H,GAASujT,SAASljb,SAChDijb,GAAY,GAAG7hsB,OAASu+Y,GAASv+Y,KACxC,EAELyhsB,GAAqBnmsB,UAArB,4BAAiHmmsB,GAAjH,EACAA,GAAqBjmsB,WA3tIsFD,MA2tI3G,OAAqHkmsB,GAArHhmsB,QAAqHgmsB,GAArH,qBAAuJD,KAyBvJ,MAAMhiP,WAAkCkzO,GACpCr6rB,YAAY6K,GAAUyM,GAAYmnF,GAAWs8kB,IACzC58pB,MAAMtT,GAAUyM,IAChBpX,KAAKu+F,UAAYA,GACjBv+F,KAAK66qB,UAAYA,GAQjB76qB,KAAKk9O,SAAW,MACnB,CAED5tO,WACItP,KAAKupsB,SAAWvpsB,KAAK66qB,UAAU96pB,IAAI0iL,IACnCziM,KAAKoosB,aACLposB,KAAKu+F,UAAUvyF,IAAIhM,KAAKupsB,SAAUvpsB,KACrC,CAED6Q,cACI7Q,KAAKu+F,UAAU5mF,OAAO3X,KACzB,CAKD+0L,WAAW7sL,IACPlI,KAAKghG,OAAS94F,KAAUlI,KAAKkI,MAC7BlI,KAAKgO,YAAY,UAAWhO,KAAKghG,OACpC,CAKDg0F,iBAAiBxkK,IACbxwB,KAAKwpsB,IAAMh5qB,GACXxwB,KAAKk9O,SAAW,KACZ1sN,GAAGxwB,KAAKkI,OACRlI,KAAKu+F,UAAUsX,OAAO71G,KAAtB,CAEP,CAMDqpsB,YAAYnhsB,IACRlI,KAAK+0L,WAAW7sL,GACnB,CACDkgsB,aACQposB,KAAKyH,MAAQzH,KAAKypsB,kBAAmBzpsB,KAAKyH,KAASzH,KAAKypsB,kBAIvDzpsB,KAAKyH,MAAQzH,KAAKypsB,kBACnBzpsB,KAAKyH,KAAOzH,KAAKypsB,gBACxB,EAELxiP,GAA0Blkd,UAA1B,4BAAsHkkd,IAhzIXjkd,MAgzIsDA,OAhzItDA,MAgzI+EA,OAhzI/EA,MAgzIyGkmsB,IAhzIzGlmsB,MAgzI0IA,OAArP,EACAikd,GAA0B3zc,UAjzIiFtQ,MAizI3G,MAA0Gikd,GAA1G1zc,6KAjzI2GvQ,MAizI3G,2BAA0GwQ,aAA1G,EAjzI2GxQ,CAizI3G,yBAA0GwQ,cAA1G,mFAjzI2GxQ,MAizIqS,CAACgmsB,KAjzItShmsB;;;;;;;;AAw0I3G,MAAM0msB,GAAuB,CACzBvjsB,QAASiqL,GACTlyK,eAAaC,OAAW,IAAMwrrB,IAC9BrjsB,OAAO,GA0BX,MAAMqjsB,WAA2BxP,GAK7BplgB,WAAW7sL,IACPlI,KAAKgO,YAAY,QAAS+jB,WAAW7pB,IACxC,CAKD8sL,iBAAiBxkK,IACbxwB,KAAKk9O,SAAYh1O,KACbsoB,GAAY,IAATtoB,GAAc,KAAO6pB,WAAW7pB,IAAjC,CAET,EAELyhsB,GAAmB5msB,UAAnB,qDAv3I2GC,MAu3II2msB,MAA/G5rrB,IAA+G4rrB,GAA/G,KACAA,GAAmBr2rB,UAx3IwFtQ,MAw3I3G,MAAmG2msB,GAAnGp2rB,6KAx3I2GvQ,MAw3I3G,6BAAmGwQ,4BAAnG,EAx3I2GxQ,CAw3I3G,4BAAmGwQ,4BAAnG,EAx3I2GxQ,CAw3I3G,yBAAmGwQ,cAAnG,cAx3I2GxQ,MAw3IsQ,CAAC0msB,KAx3IvQ1msB;;;;;;;;AAg5I3G,MAAM4msB,GAAqC,IAAIhqsB,MAAe,iCACxDiqsB,GAAqB,CACvB1jsB,QAASs8L,GACTvkL,eAAaC,OAAW,IAAM2rrB,KAwBlC,MAAMA,WAA6BrngB,GAC/B3iM,YAAY67rB,GAAYsE,GAAiBj8R,GAAgB+lS,IACrD9rrB,QACAje,KAAK+psB,sBAAwBA,GAE7B/psB,KAAK4nE,OAAS,IAAI18D,MAQlBlL,KAAKgqsB,qBAAsB,EAC3BhqsB,KAAKo+rB,eAAezC,IACpB37rB,KAAKs+rB,oBAAoB2B,IACzBjgsB,KAAKgnd,cAAgB++O,GAAoB/lsB,EAAMgka,GAClD,CAKG74Z,eAAWA,IAId,CAEDkF,YAAYpE,IACR,GAAIjM,KAAKiqsB,kBAAkBh+rB,IAAU,CACjC,MAAMi+rB,GAAej+rB,GAAQi+P,KAAQtgQ,cACjCsgsB,IACA9E,GAAe8E,GAAclqsB,MAA4C,GAE7EqksB,GAAarksB,KAAKkqQ,KAAMlqQ,MACxBA,KAAKkqQ,KAAKg4b,uBAAuB,CAAE9+f,WAAW,GACjD,CACGwigB,GAAkB35rB,GAASjM,KAAK6lsB,aAIhC7lsB,KAAKkqQ,KAAKvtL,SAAS38E,KAAK+yG,OACxB/yG,KAAK6lsB,UAAY7lsB,KAAK+yG,MAE7B,CAEDliG,cACQ7Q,KAAKkqQ,MACLk7b,GAAeplsB,KAAKkqQ,KAAMlqQ,MAA4C,EAE7E,CAMGyvB,WACA,MAAO,EACV,CAKGyuJ,cACA,OAAOl+K,KAAKkqQ,IACf,CAOD26b,kBAAkBh7rB,IACd7J,KAAK6lsB,UAAYh8rB,GACjB7J,KAAK4nE,OAAOx3D,KAAKvG,GACpB,CACDogsB,kBAAkBh+rB,IACd,OAAOA,GAAQ7J,eAAe,OACjC,EASL0nsB,GAAqBK,yBAA0B,EAC/CL,GAAqB/msB,UAArB,4BAAiH+msB,IAngJN9msB,MAmgJ4CutL,GAAvJ,IAngJ2GvtL,MAmgJkGm4rB,GAA7M,IAngJ2Gn4rB,MAmgJ8JotL,GAAzQ,IAngJ2GptL,MAmgJwN4msB,GAAnU,KACAE,GAAqBx2rB,UApgJsFtQ,MAogJ3G,MAAqG8msB,GAArGv2rB,qMApgJ2GvQ,MAogJ4M,CAAC6msB,KApgJ7M7msB;;;;;;;;AAujJ3G,MAAMonsB,GAAwB,CAC1BjksB,QAASy4rB,GACT1grB,eAAaC,OAAW,IAAMksrB,KA0BlC,MAAMA,WAA2BzL,GAC7B9+rB,YAAY67rB,GAAYsE,IACpBhirB,QACAje,KAAK27rB,WAAaA,GAClB37rB,KAAKigsB,gBAAkBA,GAKvBjgsB,KAAKq/rB,WAAY,EAKjBr/rB,KAAK0gsB,oBAAsB,IAAM1gsB,KAAKsqsB,kBAKtCtqsB,KAAKi6nB,WAAa,GAKlBj6nB,KAAKkqQ,KAAO,KAKZlqQ,KAAKwmsB,SAAW,IAAIt7rB,MACpBlL,KAAKo+rB,eAAezC,IACpB37rB,KAAKs+rB,oBAAoB2B,GAC5B,CAED5vrB,YAAYpE,IACRjM,KAAKuqsB,oBACDt+rB,GAAQ7J,eAAe,UACvBpC,KAAKwqsB,oBACLxqsB,KAAKsqsB,kBACLtqsB,KAAKyqsB,uBACLzqsB,KAAK0qsB,SAAW1qsB,KAAKkqQ,KAE5B,CAEDr5P,cACQ7Q,KAAKkqQ,OACLo7b,GAAkBtlsB,KAAKkqQ,KAAMlqQ,MAOzBA,KAAKkqQ,KAAKw2b,sBAAwB1gsB,KAAK0gsB,qBACvC1gsB,KAAKkqQ,KAAKo5b,4BAA4B,QAGjD,CAKGzE,oBACA,OAAO7+rB,IACV,CAKGk+K,cACA,OAAOl+K,KAAKkqQ,IACf,CAMGz6O,WACA,MAAO,EACV,CAQDupS,WAAWrkT,IACP,MAAM6wM,GAAOxlN,KAAKkqQ,KAAKnqP,IAAIpL,GAAI8a,MAC/B40qB,UAAa7+e,GAAM7wM,IACnB6wM,GAAK08e,uBAAuB,CAAE9+f,WAAW,IACzCpjM,KAAKi6nB,WAAWj+mB,KAAKrH,IACd6wM,EACV,CAODkhf,WAAW/xrB,IACP,OAAO3U,KAAKkqQ,KAAKnqP,IAAIpL,GAAI8a,KAC5B,CAODk0qB,cAAchvrB,IACVywrB,GAAezwrB,GAAIupK,SAAW,KAAMvpK,IAA2C,GAlkDvF,SAASg2rB,GAAiBlrhB,GAAM32K,IAC5B,MAAM0D,GAAQizK,GAAKx+K,QAAQ6H,IACvB0D,IAAQ,GACRizK,GAAK54H,OAAOr6C,GAAO,EAC1B,CA+jDOm+rB,CAAiB3qsB,KAAKi6nB,WAAYtlnB,GACrC,CAMDgyrB,aAAahyrB,IACT3U,KAAK4qsB,oBAAoBj2rB,GAC5B,CAODiyrB,gBAAgBjyrB,IACZ3U,KAAK6qsB,sBAAsBl2rB,GAC9B,CAODkyrB,aAAalyrB,IACT,OAAO3U,KAAKkqQ,KAAKnqP,IAAIpL,GAAI8a,KAC5B,CAMDq7qB,aAAan2rB,IACT3U,KAAK4qsB,oBAAoBj2rB,GAC5B,CAODo2rB,gBAAgBp2rB,IACZ3U,KAAK6qsB,sBAAsBl2rB,GAC9B,CAODq2rB,aAAar2rB,IACT,OAAO3U,KAAKkqQ,KAAKnqP,IAAIpL,GAAI8a,KAC5B,CAODq3qB,YAAYnyrB,GAAKzM,IACAlI,KAAKkqQ,KAAKnqP,IAAIpL,GAAI8a,MAC1BktD,SAASz0E,GACjB,CAQD6+rB,SAAS9hrB,IACL,YAAKo6qB,WAAY,EACjByG,GAAoB9lsB,KAAKkqQ,KAAMlqQ,KAAKi6nB,YACpCj6nB,KAAKwmsB,SAASp2rB,KAAK6U,KACZ,CACV,CAKD+hrB,UACIhnsB,KAAKinsB,WACR,CAODA,UAAU/+rB,IACNlI,KAAKkqQ,KAAKniM,MAAM7/D,IAChBlI,KAAKq/rB,WAAY,CACpB,CAEDiL,kBACItqsB,KAAKi6nB,WAAWxpnB,QAAQkE,KACpB,MAAMs2rB,GAAUt2rB,GAAIupK,QACdgthB,GAAUlrsB,KAAKkqQ,KAAKnqP,IAAIpL,GAAI8a,MAC9Bw7qB,KAAYC,KAGZ9F,GAAe6F,IAAW,KAAMt2rB,IAMdu2rB,cAzvCoBnzY,KA0vClCssY,GAAa6G,GAASv2rB,IACtBA,GAAIupK,QAAUgthB,OAI1BlrsB,KAAKkqQ,KAAKw4b,oBAAoB,CAAEt/f,WAAW,GAC9C,CACDwngB,oBAAoBj2rB,IAChB,MAAM6wM,GAAOxlN,KAAKkqQ,KAAKnqP,IAAIpL,GAAI8a,MAC/Bk2qB,GAAmBngf,GAAM7wM,IAIzB6wM,GAAK08e,uBAAuB,CAAE9+f,WAAW,GAC5C,CACDyngB,sBAAsBl2rB,IAClB,GAAI3U,KAAKkqQ,KAAM,CACX,MAAM1kD,GAAOxlN,KAAKkqQ,KAAKnqP,IAAIpL,GAAI8a,MAC3B+1L,IAnxDhB,SAAS2lf,GAAqBjthB,GAASvpK,IACnC,OAAO2wrB,GAAkBpnhB,GAASvpK,GACrC,CAkxDwCw2rB,CAAqB3lf,GAAM7wM,KAIhD6wM,GAAK08e,uBAAuB,CAAE9+f,WAAW,GAGpD,CACJ,CACDqngB,uBACIzqsB,KAAKkqQ,KAAKo5b,4BAA4BtjsB,KAAK0gsB,qBACvC1gsB,KAAK0qsB,UACL1qsB,KAAK0qsB,SAASpH,4BAA4B,OAEjD,CACDkH,oBACIlG,GAAgBtksB,KAAKkqQ,KAAMlqQ,MACvBA,KAAK0qsB,UACLpF,GAAkBtlsB,KAAK0qsB,SAAU1qsB,KAExC,CACDuqsB,oBACSvqsB,KAAKkqQ,IAGb,EAELmgc,GAAmBtnsB,UAAnB,4BAA+GsnsB,IA71JJrnsB,MA61JwCutL,GAAnJ,IA71J2GvtL,MA61J8Fm4rB,GAAzM,MACAkP,GAAmB/2rB,UA91JwFtQ,MA81J3G,MAAmGqnsB,GAAnG92rB,mEA91J2GvQ,MA81J3G,6BAAmGwQ,eAAnG,EA91J2GxQ,CA81J3G,0BAAmGwQ,YAAnG,mGA91J2GxQ,MA81JyM,CAAConsB,KA91J1MpnsB;;;;;;;;AAm4J3G,MAAMoosB,GAAwB,CAC1BjlsB,QAASy4rB,GACT1grB,eAAaC,OAAW,IAAMktrB,KAiDlC,MAAMA,WAAsB1D,GACxB7nsB,YAAY63B,GAAQgkqB,GAAYsE,IAC5BhirB,QACAje,KAAKqmR,QAAU1uP,GACf33B,KAAKo+rB,eAAezC,IACpB37rB,KAAKs+rB,oBAAoB2B,GAC5B,CAED2H,mBACQ0D,GAAkBtrsB,KAAKqmR,QAG9B,EAELglb,GAActosB,UAAd,4BAA0GsosB,IAp8JCrosB,MAo8J8B47rB,GAAzI,IAp8J2G57rB,MAo8JuGutL,GAAlN,IAp8J2GvtL,MAo8J6Jm4rB,GAAxQ,MACAkQ,GAAc/3rB,UAr8J6FtQ,MAq8J3G,MAA8FqosB,GAA9F93rB,qFAr8J2GvQ,MAq8JuF,CAACoosB,KAr8JxFposB,SAi+J3G,MAAMuosB,GAAwB,CAC1BplsB,QAASy4rB,GACT1grB,eAAaC,OAAW,IAAMqtrB,KA0BlC,MAAMA,WAAsB5M,GACxB9+rB,YAAY63B,GAAQgkqB,GAAYsE,IAC5BhirB,QACAje,KAAKqmR,QAAU1uP,GACf33B,KAAKo+rB,eAAezC,IACpB37rB,KAAKs+rB,oBAAoB2B,GAC5B,CAMD3wrB,WACItP,KAAK4nsB,mBACL5nsB,KAAK6+rB,cAAciM,aAAa9qsB,KACnC,CAKD6Q,cACQ7Q,KAAK6+rB,eACL7+rB,KAAK6+rB,cAAckM,gBAAgB/qsB,KAE1C,CAKGk+K,cACA,OAAOl+K,KAAK6+rB,cAAcmM,aAAahrsB,KAC1C,CAKG6+rB,oBACA,OAAO7+rB,KAAKqmR,QAAUrmR,KAAKqmR,QAAQw4a,cAAgB,IACtD,CAMGpvqB,WACA,OAAO20qB,GAAyB,MAAbpksB,KAAKyH,KAAezH,KAAKyH,KAAOzH,KAAKyH,KAAKhG,WAAYzB,KAAKqmR,QACjF,CACDuhb,mBACQ0D,GAAkBtrsB,KAAKqmR,QAG9B,EA+BL,SAASilb,GAAkB3zqB,IACvB,QAASA,cAAkB0zqB,IAAoB1zqB,cAAkB0yqB,IAC3D1yqB,cAAkB6zqB,GAC3B;;;;;;;OAhCDA,GAAczosB,UAAd,4BAA0GyosB,IAljKCxosB,MAkjK8B47rB,GAAzI,IAljK2G57rB,MAkjKuGutL,GAAlN,IAljK2GvtL,MAkjK6Jm4rB,GAAxQ,MACAqQ,GAAcl4rB,UAnjK6FtQ,MAmjK3G,MAA8FwosB,GAA9Fj4rB,qFAnjK2GvQ,MAmjKuF,CAACuosB,KAnjKxFvosB,SA2lK3G,MAAMyosB,GAAqB,CACvBtlsB,QAASs8L,GACTvkL,eAAaC,OAAW,IAAMutrB,KAoClC,MAAMA,WAAwBjpgB,GAC1B3iM,YAAY63B,GAAQgkqB,GAAYsE,GAAiBj8R,GAAgB+lS,IAC7D9rrB,QACAje,KAAK+psB,sBAAwBA,GAC7B/psB,KAAK2rsB,QAAS,EAEd3rsB,KAAK4nE,OAAS,IAAI18D,MAQlBlL,KAAKgqsB,qBAAsB,EAC3BhqsB,KAAKqmR,QAAU1uP,GACf33B,KAAKo+rB,eAAezC,IACpB37rB,KAAKs+rB,oBAAoB2B,IACzBjgsB,KAAKgnd,cAAgB++O,GAAoB/lsB,EAAMgka,GAClD,CAKG74Z,eAAWA,IAId,CAEDkF,YAAYpE,IACHjM,KAAK2rsB,QACN3rsB,KAAKuosB,gBACL3C,GAAkB35rB,GAASjM,KAAK6lsB,aAIhC7lsB,KAAK6lsB,UAAY7lsB,KAAK+yG,MACtB/yG,KAAK6+rB,cAAciI,YAAY9msB,KAAMA,KAAK+yG,OAEjD,CAEDliG,cACQ7Q,KAAK6+rB,eACL7+rB,KAAK6+rB,cAAc8E,cAAc3jsB,KAExC,CAOD6ksB,kBAAkBh7rB,IACd7J,KAAK6lsB,UAAYh8rB,GACjB7J,KAAK4nE,OAAOx3D,KAAKvG,GACpB,CAMG4lB,WACA,OAAO20qB,GAAyB,MAAbpksB,KAAKyH,KAAezH,KAAKyH,KAAOzH,KAAKyH,KAAKhG,WAAYzB,KAAKqmR,QACjF,CAKGw4a,oBACA,OAAO7+rB,KAAKqmR,QAAUrmR,KAAKqmR,QAAQw4a,cAAgB,IACtD,CACD+I,mBAYC,CACDW,gBACIvosB,KAAK4nsB,mBACL5nsB,KAAKk+K,QAAUl+K,KAAK6+rB,cAAc7lY,WAAWh5T,MAC7CA,KAAK2rsB,QAAS,CACjB,EASLD,GAAgBvB,yBAA0B,EAC1CuB,GAAgB3osB,UAAhB,4BAA4G2osB,IApuKD1osB,MAouKkC47rB,GAA7I,IApuK2G57rB,MAouK2GutL,GAAtN,IApuK2GvtL,MAouKiKm4rB,GAA5Q,IApuK2Gn4rB,MAouK6NotL,GAAxU,IApuK2GptL,MAouKuR4msB,GAAlY,KACA8B,GAAgBp4rB,UAruK2FtQ,MAquK3G,MAAgG0osB,GAAhGn4rB,yLAruK2GvQ,MAquK0M,CAACyosB,KAruK3MzosB;;;;;;;;AA8xK3G,MAAM4osB,GAAwB,CAC1BzlsB,QAASiqL,GACTlyK,eAAaC,OAAW,IAAM0trB,IAC9BvlsB,OAAO,GAEX,SAASwlsB,GAAoB5jrB,GAAIhgB,IAC7B,OAAU,MAANggB,GACQ,GAAEhgB,MACVA,IAA0B,iBAAVA,KAChBA,GAAQ,UACJ,GAAEggB,OAAOhgB,KAAQxG,MAAM,EAAG,IACrC,CA4DD,MAAMmqsB,WAAmC1R,GACrCr6rB,cACIme,SAASkT,WAETnxB,KAAK+rsB,WAAa,IAAI/6iB,IAEtBhxJ,KAAKgssB,WAAa,EAClBhssB,KAAKissB,aAAe5srB,OAAOm4G,EAC9B,CAMG00kB,gBAAY17qB,IAIZxwB,KAAKissB,aAAez7qB,EACvB,CAKDukK,WAAW7sL,IACPlI,KAAKkI,MAAQA,GACb,MACM+9H,GAAc6lkB,GADT9rsB,KAAKmssB,aAAajksB,IACeA,IAC5ClI,KAAKgO,YAAY,QAASi4H,GAC7B,CAKD+uD,iBAAiBxkK,IACbxwB,KAAKk9O,SAAYj3G,KACbjmI,KAAKkI,MAAQlI,KAAKossB,gBAAgBnmkB,IAClCz1G,GAAGxwB,KAAKkI,MAAN,CAET,CAEDmksB,kBACI,OAAQrssB,KAAKgssB,cAAcvqsB,UAC9B,CAED0qsB,aAAajksB,IACT,UAAWggB,MAAM/mB,MAAMqE,KAAKxF,KAAK+rsB,WAAWpyqB,QACxC,GAAI35B,KAAKissB,aAAajssB,KAAK+rsB,WAAWhsrB,IAAImI,IAAKhgB,IAC3C,OAAOggB,GAEf,OAAO,IACV,CAEDkkrB,gBAAgBnmkB,IACZ,MAAM/9G,GAjHd,SAASokrB,GAAarmkB,IAClB,OAAOA,GAAYlkI,MAAM,KAAK,EACjC,CA+GkBuqsB,CAAarmkB,IACxB,OAAOjmI,KAAK+rsB,WAAW9wqB,IAAI/S,IAAMloB,KAAK+rsB,WAAWhsrB,IAAImI,IAAM+9G,EAC9D,EAEL4lkB,GAA2B9osB,UAA3B,qDA/5K2GC,MA+5KY6osB,MAAvH9trB,IAAuH8trB,GAAvH,KACAA,GAA2Bv4rB,UAh6KgFtQ,MAg6K3G,MAA2G6osB,GAA3Gt4rB,mLAh6K2GvQ,MAg6K3G,6BAA2GwQ,4BAA3G,EAh6K2GxQ,CAg6K3G,yBAA2GwQ,cAA3G,iDAh6K2GxQ,MAg6KmS,CAAC4osB,KAh6KpS5osB,SAq7K3G,MAAMupsB,GACFzssB,YAAY0vF,GAAUs3a,GAAW/wZ,IAC7B/1G,KAAKwvF,SAAWA,GAChBxvF,KAAK8mgB,UAAYA,GACjB9mgB,KAAK+1G,QAAUA,GACX/1G,KAAK+1G,UACL/1G,KAAKkoB,GAAKloB,KAAK+1G,QAAQs2lB,kBAC9B,CAMGG,YAAQtksB,IACY,MAAhBlI,KAAK+1G,UAET/1G,KAAK+1G,QAAQg2lB,WAAWx4qB,IAAIvzB,KAAKkoB,GAAIhgB,IACrClI,KAAKyssB,iBAAiBX,GAAoB9rsB,KAAKkoB,GAAIhgB,KACnDlI,KAAK+1G,QAAQg/E,WAAW/0L,KAAK+1G,QAAQ7tG,OACxC,CAMGA,UAAMA,IACNlI,KAAKyssB,iBAAiBvksB,IAClBlI,KAAK+1G,SACL/1G,KAAK+1G,QAAQg/E,WAAW/0L,KAAK+1G,QAAQ7tG,MAC5C,CAEDuksB,iBAAiBvksB,IACblI,KAAK8mgB,UAAU94f,YAAYhO,KAAKwvF,SAASrjF,cAAe,QAASjE,GACpE,CAED2I,cACQ7Q,KAAK+1G,UACL/1G,KAAK+1G,QAAQg2lB,WAAW7wqB,OAAOl7B,KAAKkoB,IACpCloB,KAAK+1G,QAAQg/E,WAAW/0L,KAAK+1G,QAAQ7tG,OAE5C,EAELqksB,GAAexpsB,UAAf,4BAA2GwpsB,IA/9KAvpsB,MA+9KgCA,OA/9KhCA,MA+9K0DA,OA/9K1DA,MA+9KmF6osB,GAA9L,KACAU,GAAej5rB,UAh+K4FtQ,MAg+K3G,MAA+FupsB,GAA/Fh5rB;;;;;;;;AAuBA,MAAMm5rB,GAAiC,CACnCvmsB,QAASiqL,GACTlyK,eAAaC,OAAW,IAAMwurB,IAC9BrmsB,OAAO,GAEX,SAASsmsB,GAAkB1krB,GAAIhgB,IAC3B,OAAU,MAANggB,GACQ,GAAEhgB,MACO,iBAAVA,KACPA,GAAS,IAAGA,OACZA,IAA0B,iBAAVA,KAChBA,GAAQ,UACJ,GAAEggB,OAAOhgB,KAAQxG,MAAM,EAAG,IACrC,CA0CD,MAAMirsB,WAA2CxS,GAC7Cr6rB,cACIme,SAASkT,WAETnxB,KAAK+rsB,WAAa,IAAI/6iB,IAEtBhxJ,KAAKgssB,WAAa,EAClBhssB,KAAKissB,aAAe5srB,OAAOm4G,EAC9B,CAMG00kB,gBAAY17qB,IAIZxwB,KAAKissB,aAAez7qB,EACvB,CAKDukK,WAAW7sL,IAEP,IAAI2ksB,GACJ,GAFA7ssB,KAAKkI,MAAQA,GAET/G,MAAMkuB,QAAQnnB,IAAQ,CAEtB,MAAM4xH,GAAM5xH,GAAM7G,IAAKw2N,IAAM73N,KAAKmssB,aAAat0e,KAC/Cg1e,GAA4B,CAACppX,GAAK7zH,MAC9B6zH,GAAIqpX,aAAahzkB,GAAI74H,QAAQ2uN,GAAEnuN,aAAc,EAA7C,CAEP,MAEGorsB,GAA4B,CAACppX,GAAK7zH,MAC9B6zH,GAAIqpX,cAAa,EAAjB,EAGR9ssB,KAAK+rsB,WAAWt7rB,QAAQo8rB,GAC3B,CAMD73gB,iBAAiBxkK,IACbxwB,KAAKk9O,SAAYx0O,KACb,MAAM2D,GAAW,GACX6oW,GAAkBxsW,GAAQwsW,gBAChC,QAAwBngW,IAApBmgW,GAA+B,CAC/B,MAAMlvW,GAAUkvW,GAChB,QAAS1/V,GAAI,EAAGA,GAAIxP,GAAQ1F,OAAQkV,KAAK,CACrC,MAAMiuU,GAAMz9U,GAAQwP,IACdulM,GAAM/6M,KAAKossB,gBAAgB3oX,GAAIv7U,OACrCmE,GAAS2P,KAAK++L,GACjB,CACJ,KAII,CACD,MAAM/0M,GAAU0C,GAAQ1C,QACxB,QAASwP,GAAI,EAAGA,GAAIxP,GAAQ1F,OAAQkV,KAAK,CACrC,MAAMiuU,GAAMz9U,GAAQwP,IACpB,GAAIiuU,GAAIp3U,SAAU,CACd,MAAM0uM,GAAM/6M,KAAKossB,gBAAgB3oX,GAAIv7U,OACrCmE,GAAS2P,KAAK++L,GACjB,CACJ,CACJ,CACD/6M,KAAKkI,MAAQmE,GACbmkB,GAAGnkB,GAAD,CAET,CAEDggsB,gBAAgBnksB,IACZ,MAAMggB,IAAMloB,KAAKgssB,cAAcvqsB,WAC/B,YAAKsqsB,WAAWx4qB,IAAIrL,GAAIhgB,IACjBggB,EACV,CAEDikrB,aAAajksB,IACT,UAAWggB,MAAM/mB,MAAMqE,KAAKxF,KAAK+rsB,WAAWpyqB,QACxC,GAAI35B,KAAKissB,aAAajssB,KAAK+rsB,WAAWhsrB,IAAImI,IAAIg5E,OAAQh5F,IAClD,OAAOggB,GAEf,OAAO,IACV,CAEDkkrB,gBAAgBnmkB,IACZ,MAAM/9G,GApId,SAAS6krB,GAAW9mkB,IAChB,OAAOA,GAAYlkI,MAAM,KAAK,EACjC,CAkIkBgrsB,CAAW9mkB,IACtB,OAAOjmI,KAAK+rsB,WAAW9wqB,IAAI/S,IAAMloB,KAAK+rsB,WAAWhsrB,IAAImI,IAAIg5E,OAAS+kC,EACrE,EAEL0mkB,GAAmC5psB,UAAnC,qDA7oL2GC,MA6oLoB2psB,MAA/H5urB,IAA+H4urB,GAA/H,KACAA,GAAmCr5rB,UA9oLwEtQ,MA8oL3G,MAAmH2psB,GAAnHp5rB,6KA9oL2GvQ,MA8oL3G,6BAAmHwQ,sBAAnH,EA9oL2GxQ,CA8oL3G,yBAAmHwQ,cAAnH,iDA9oL2GxQ,MA8oL2R,CAAC0psB,KA9oL5R1psB,SAmqL3G,MAAMgqsB,GACFltsB,YAAY0vF,GAAUs3a,GAAW/wZ,IAC7B/1G,KAAKwvF,SAAWA,GAChBxvF,KAAK8mgB,UAAYA,GACjB9mgB,KAAK+1G,QAAUA,GACX/1G,KAAK+1G,UACL/1G,KAAKkoB,GAAKloB,KAAK+1G,QAAQs2lB,gBAAgBrssB,MAE9C,CAMGwssB,YAAQtksB,IACY,MAAhBlI,KAAK+1G,UAET/1G,KAAKkhG,OAASh5F,GACdlI,KAAKyssB,iBAAiBG,GAAkB5ssB,KAAKkoB,GAAIhgB,KACjDlI,KAAK+1G,QAAQg/E,WAAW/0L,KAAK+1G,QAAQ7tG,OACxC,CAMGA,UAAMA,IACFlI,KAAK+1G,SACL/1G,KAAKkhG,OAASh5F,GACdlI,KAAKyssB,iBAAiBG,GAAkB5ssB,KAAKkoB,GAAIhgB,KACjDlI,KAAK+1G,QAAQg/E,WAAW/0L,KAAK+1G,QAAQ7tG,QAGrClI,KAAKyssB,iBAAiBvksB,GAE7B,CAEDuksB,iBAAiBvksB,IACblI,KAAK8mgB,UAAU94f,YAAYhO,KAAKwvF,SAASrjF,cAAe,QAASjE,GACpE,CAED4ksB,aAAazgsB,IACTrM,KAAK8mgB,UAAU94f,YAAYhO,KAAKwvF,SAASrjF,cAAe,WAAYE,GACvE,CAEDwE,cACQ7Q,KAAK+1G,UACL/1G,KAAK+1G,QAAQg2lB,WAAW7wqB,OAAOl7B,KAAKkoB,IACpCloB,KAAK+1G,QAAQg/E,WAAW/0L,KAAK+1G,QAAQ7tG,OAE5C;;;;;;;;AAgCL,SAASw2jB,GAAUx2jB,IACf,MAAwB,iBAAVA,GAAqBA,GAAQ0uB,SAAS1uB,GAAO,GAC9D,CAOD,SAAS+ksB,GAAQ/ksB,IACb,MAAwB,iBAAVA,GAAqBA,GAAQ6pB,WAAW7pB,GACzD,CAzCD8ksB,GAAwBjqsB,UAAxB,4BAAoHiqsB,IAvtLThqsB,MAutLkDA,OAvtLlDA,MAutL4EA,OAvtL5EA,MAutLqG2psB,GAAhN,KACAK,GAAwB15rB,UAxtLmFtQ,MAwtL3G,MAAwGgqsB,GAAxGz5rB,kEA+CA,MAAM25rB,GACFptsB,cACIE,KAAKmtsB,WAAahR,EACrB,CAED9rrB,YAAYpE,IACR,GAAIjM,KAAK43f,aAAa3rf,GAAS,CAC3B,MAAMyE,GAAQ1Q,KAAKotsB,eAAenhsB,GAAQjM,KAAK43f,WAAWh3e,cAC1D5gB,KAAKk/Y,SAAWl/Y,KAAK0/I,QAAQhvI,IAC7B1Q,KAAKmtsB,WAAantsB,KAAKk/Y,SAAWl/Y,KAAKqtsB,gBAAgB38rB,IAASyrrB,GAC5Dn8rB,KAAKqnsB,WACLrnsB,KAAKqnsB,WAEZ,CACJ,CAEDhtkB,SAAS6jD,IACL,OAAOl+K,KAAKmtsB,WAAWjvhB,GAC1B,CAEDiX,0BAA0B3kK,IACtBxwB,KAAKqnsB,UAAY72qB,EACpB,CAQDkvH,QAAQhvI,IACJ,OAAgB,MAATA,EACV,EAELw8rB,GAA2BnqsB,UAA3B,4BAAuHmqsB,GAAvH,EACAA,GAA2B55rB,UA1yLgFtQ,MA0yL3G,MAA2GkqsB,GAA3GtrjB,UA1yL2G5+I,SAkzL3G,MAAMsqsB,GAAgB,CAClBnnsB,QAASoqL,GACTryK,eAAaC,OAAW,IAAMovrB,IAC9BjnsB,OAAO,GAuBX,MAAMinsB,WAAqBL,GACvBptsB,cACIme,SAASkT,WAETnxB,KAAK43f,UAAY,MAEjB53f,KAAKotsB,eAAkB18rB,IAAUu8rB,GAAQv8rB,IAEzC1Q,KAAKqtsB,gBAAmBxyrB,IAAQ80K,GAAa90K,GAChD,EAEL0yrB,GAAaxqsB,UAAb,qDAv1L2GC,MAu1LFuqsB,MAAzGxvrB,IAAyGwvrB,GAAzG,KACAA,GAAaj6rB,UAx1L8FtQ,MAw1L3G,MAA6FuqsB,GAA7Fh6rB,sNAx1L2GvQ,MAw1L3G,6DAx1L2GA,MAw1L8N,CAACsqsB,KAx1L/NtqsB,SAu2L3G,MAAMwqsB,GAAgB,CAClBrnsB,QAASoqL,GACTryK,eAAaC,OAAW,IAAMsvrB,IAC9BnnsB,OAAO,GAuBX,MAAMmnsB,WAAqBP,GACvBptsB,cACIme,SAASkT,WAETnxB,KAAK43f,UAAY,MAEjB53f,KAAKotsB,eAAkB18rB,IAAUu8rB,GAAQv8rB,IAEzC1Q,KAAKqtsB,gBAAmBzyrB,IAAQ40K,GAAa50K,GAChD,EAEL6yrB,GAAa1qsB,UAAb,qDA54L2GC,MA44LFyqsB,MAAzG1vrB,IAAyG0vrB,GAAzG,KACAA,GAAan6rB,UA74L8FtQ,MA64L3G,MAA6FyqsB,GAA7Fl6rB,sNA74L2GvQ,MA64L3G,6DA74L2GA,MA64L8N,CAACwqsB,KA74L/NxqsB,SA45L3G,MAAM0qsB,GAAqB,CACvBvnsB,QAASoqL,GACTryK,eAAaC,OAAW,IAAMwvrB,IAC9BrnsB,OAAO,GAMLsnsB,GAA8B,CAChCznsB,QAASoqL,GACTryK,eAAaC,OAAW,IAAM0vrB,IAC9BvnsB,OAAO,GAqBX,MAAMqnsB,WAA0BT,GAC5BptsB,cACIme,SAASkT,WAETnxB,KAAK43f,UAAY,WAEjB53f,KAAKotsB,eAAiBxE,MAEtB5osB,KAAKqtsB,gBAAmB38rB,IAAU2qrB,EACrC,CAED37iB,QAAQhvI,IACJ,OAAOA,EACV,EAELi9rB,GAAkB5qsB,UAAlB,qDA58L2GC,MA48LG2qsB,MAA9G5vrB,IAA8G4vrB,GAA9G,KACAA,GAAkBr6rB,UA78LyFtQ,MA68L3G,MAAkG2qsB,GAAlGp6rB,kOA78L2GvQ,MA68L3G,wEA78L2GA,MA68LgR,CAAC0qsB,KA78LjR1qsB,SA6+L3G,MAAM6qsB,WAAkCF,GACpC7tsB,cACIme,SAASkT,WAETnxB,KAAKqtsB,gBAAmB38rB,IAAU4qrB,EACrC,EAELuS,GAA0B9qsB,UAA1B,qDAp/L2GC,MAo/LW6qsB,MAAtH9vrB,IAAsH8vrB,GAAtH,KACAA,GAA0Bv6rB,UAr/LiFtQ,MAq/L3G,MAA0G6qsB,GAA1Gt6rB,2OAr/L2GvQ,MAq/L3G,2CAr/L2GA,MAq/L2P,CAAC4qsB,KAr/L5P5qsB,SAkgM3G,MAAM8qsB,GAAkB,CACpB3nsB,QAASoqL,GACTryK,eAAaC,OAAW,IAAM4vrB,IAC9BznsB,OAAO,GA6BX,MAAMynsB,WAAuBb,GACzBptsB,cACIme,SAASkT,WAETnxB,KAAK43f,UAAY,QAEjB53f,KAAKotsB,eAAiBxE,MAEtB5osB,KAAKqtsB,gBAAmB38rB,IAAU6qrB,EACrC,CAED77iB,QAAQhvI,IACJ,OAAOA,EACV,EAELq9rB,GAAehrsB,UAAf,qDAjjM2GC,MAijMA+qsB,MAA3GhwrB,IAA2GgwrB,GAA3G,KACAA,GAAez6rB,UAljM4FtQ,MAkjM3G,MAA+F+qsB,GAA/Fx6rB,gJAljM2GvQ,MAkjMuH,CAAC8qsB,KAljMxH9qsB,SAgkM3G,MAAMgrsB,GAAuB,CACzB7nsB,QAASoqL,GACTryK,eAAaC,OAAW,IAAM8vrB,IAC9B3nsB,OAAO,GAuBX,MAAM2nsB,WAA2Bf,GAC7BptsB,cACIme,SAASkT,WAETnxB,KAAK43f,UAAY,YAEjB53f,KAAKotsB,eAAkB18rB,IAAUgujB,GAAUhujB,IAE3C1Q,KAAKqtsB,gBAAmBtR,IAAcP,GAAmBO,GAC5D,EAELkS,GAAmBlrsB,UAAnB,qDArmM2GC,MAqmMIirsB,MAA/GlwrB,IAA+GkwrB,GAA/G,KACAA,GAAmB36rB,UAtmMwFtQ,MAsmM3G,MAAmGirsB,GAAnG16rB,yKAtmM2GvQ,MAsmM3G,qFAtmM2GA,MAsmM8N,CAACgrsB,KAtmM/NhrsB,SAqnM3G,MAAMkrsB,GAAuB,CACzB/nsB,QAASoqL,GACTryK,eAAaC,OAAW,IAAMgwrB,IAC9B7nsB,OAAO,GAuBX,MAAM6nsB,WAA2BjB,GAC7BptsB,cACIme,SAASkT,WAETnxB,KAAK43f,UAAY,YAEjB53f,KAAKotsB,eAAkB18rB,IAAUgujB,GAAUhujB,IAE3C1Q,KAAKqtsB,gBAAmBnR,IAAcT,GAAmBS,GAC5D,EAELiS,GAAmBprsB,UAAnB,qDA1pM2GC,MA0pMImrsB,MAA/GpwrB,IAA+GowrB,GAA/G,KACAA,GAAmB76rB,UA3pMwFtQ,MA2pM3G,MAAmGmrsB,GAAnG56rB,yKA3pM2GvQ,MA2pM3G,qFA3pM2GA,MA2pM8N,CAACkrsB,KA3pM/NlrsB,SA0qM3G,MAAMorsB,GAAoB,CACtBjosB,QAASoqL,GACTryK,eAAaC,OAAW,IAAMkwrB,IAC9B/nsB,OAAO,GAyBX,MAAM+nsB,WAAyBnB,GAC3BptsB,cACIme,SAASkT,WAETnxB,KAAK43f,UAAY,UAEjB53f,KAAKotsB,eAAkB18rB,IAAUA,GAEjC1Q,KAAKqtsB,gBAAmB38rB,IAAUgrrB,GAAiBhrrB,GACtD,EAEL29rB,GAAiBtrsB,UAAjB,qDAjtM2GC,MAitMEqrsB,MAA7GtwrB,IAA6GswrB,GAA7G,KACAA,GAAiB/6rB,UAltM0FtQ,MAktM3G,MAAiGqrsB,GAAjG96rB,mKAltM2GvQ,MAktM3G,6EAltM2GA,MAktM4M,CAACorsB,KAltM7MprsB,SAgwM3G,MAAMsrsB,IAENA,GAA2BvrsB,UAA3B,4BAAuHursB,GAAvH,EACAA,GAA2B7nsB,UAnwMgFzD,MAmwM3G,MAAwHsrsB,KAuCxHA,GAA2B5nsB,UA1yMgF1D,MA0yM3G,UAA8JimsB;;;;;;;;AA6B9J,MAAM/uc,IAENA,GAAYn3P,UAAZ,4BAAwGm3P,GAAxG,EACAA,GAAYzzP,UA10M+FzD,MA00M3G,MAAyGk3P,KACzGA,GAAYxzP,UA30M+F1D,MA20M3G,UAAgIsrsB,MAqBhI,MAAMtkY,GASejkU,kBAAC+4U,IACd,MAAO,CACH74U,SAAU+jU,GACV9jU,UAAW,CACP,CAAEC,QAASyjsB,GAAoCpjsB,SAAUs4U,GAAKyvX,+BAGzE,EAELvkY,GAAoBjnU,UAApB,4BAAgHinU,GAAhH,EACAA,GAAoBvjU,UAn3MuFzD,MAm3M3G,MAAiHgnU,KACjHA,GAAoBtjU,UAp3MuF1D,MAo3M3G,UAAgJsrsB;;;;;;;;AAmFhJ,MAAME,WAAkBlO,GAcpBxgsB,YAAYuzJ,GAAUwsiB,GAAiBrB,IACnCvgrB,MAAM2hrB,GAAeC,IAAkBG,GAAoBxB,GAAgBqB,KAC3E7/rB,KAAKqzJ,SAAWA,GAChBrzJ,KAAKijsB,mBACLjjsB,KAAKujsB,mBAAmB1D,IACxB7/rB,KAAKyjsB,iBACLzjsB,KAAKkisB,uBAAuB,CACxBZ,UAAU,EAKVl+f,YAAapjM,KAAKw+rB,gBAEzB,CAQD1za,GAAGt+Q,IACC,OAAOxM,KAAKqzJ,SAASrzJ,KAAKmgrB,aAAa3zqB,IAC1C,CAWDwP,KAAKkiK,GAASl4K,GAAU,IACpBhG,KAAKqzJ,SAASr3I,KAAKkiK,IACnBl+K,KAAKyusB,iBAAiBvwhB,IACtBl+K,KAAKkisB,uBAAuB,CAAE9+f,UAAWp9L,GAAQo9L,YACjDpjM,KAAK0gsB,qBACR,CAcDj6pB,OAAOj6B,GAAO0xK,GAASl4K,GAAU,IAC7BhG,KAAKqzJ,SAASxsG,OAAOr6C,GAAO,EAAG0xK,IAC/Bl+K,KAAKyusB,iBAAiBvwhB,IACtBl+K,KAAKkisB,uBAAuB,CAAE9+f,UAAWp9L,GAAQo9L,WACpD,CAaDmgW,SAAS/2hB,GAAOxG,GAAU,IAEtB,IAAIk5pB,GAAgBl/pB,KAAKmgrB,aAAa3zqB,IAClC0ypB,GAAgB,IAChBA,GAAgB,GAChBl/pB,KAAKqzJ,SAAS6rgB,KACdl/pB,KAAKqzJ,SAAS6rgB,IAAeokC,4BAA4B,QAC7DtjsB,KAAKqzJ,SAASxsG,OAAOq4mB,GAAe,GACpCl/pB,KAAKkisB,uBAAuB,CAAE9+f,UAAWp9L,GAAQo9L,WACpD,CAcDwggB,WAAWp3rB,GAAO0xK,GAASl4K,GAAU,IAEjC,IAAIk5pB,GAAgBl/pB,KAAKmgrB,aAAa3zqB,IAClC0ypB,GAAgB,IAChBA,GAAgB,GAChBl/pB,KAAKqzJ,SAAS6rgB,KACdl/pB,KAAKqzJ,SAAS6rgB,IAAeokC,4BAA4B,QAC7DtjsB,KAAKqzJ,SAASxsG,OAAOq4mB,GAAe,GAChChhf,KACAl+K,KAAKqzJ,SAASxsG,OAAOq4mB,GAAe,EAAGhhf,IACvCl+K,KAAKyusB,iBAAiBvwhB,KAE1Bl+K,KAAKkisB,uBAAuB,CAAE9+f,UAAWp9L,GAAQo9L,YACjDpjM,KAAK0gsB,qBACR,CAIGpgsB,aACA,OAAON,KAAKqzJ,SAAS/yJ,MACxB,CAoCDq8E,SAASz0E,GAAOlC,GAAU,IACtBo6rB,GAAuBpgsB,KAAM,EAAOkI,IACpCA,GAAMuI,QAAQ,CAAC5G,GAAU2C,MACrB2zrB,GAAqBngsB,MAAM,EAAOwM,IAClCxM,KAAK8qR,GAAGt+Q,IAAOmwE,SAAS9yE,GAAU,CAAEy3rB,UAAU,EAAMl+f,UAAWp9L,GAAQo9L,WAAvE,GAEJpjM,KAAKkisB,uBAAuBl8rB,GAC/B,CAiCDyyT,WAAWvwT,GAAOlC,GAAU,IAKX,MAATkC,KAEJA,GAAMuI,QAAQ,CAAC5G,GAAU2C,MACjBxM,KAAK8qR,GAAGt+Q,KACRxM,KAAK8qR,GAAGt+Q,IAAOisT,WAAW5uT,GAAU,CAAEy3rB,UAAU,EAAMl+f,UAAWp9L,GAAQo9L,WAAzE,GAGRpjM,KAAKkisB,uBAAuBl8rB,IAC/B,CA+CD+hE,MAAM7/D,GAAQ,GAAIlC,GAAU,IACxBhG,KAAKqgsB,cAAc,CAACnihB,GAAS1xK,MACzB0xK,GAAQn2G,MAAM7/D,GAAMsE,IAAQ,CAAE80rB,UAAU,EAAMl+f,UAAWp9L,GAAQo9L,WAAjE,GAEJpjM,KAAK2hsB,gBAAgB37rB,IACrBhG,KAAKwhsB,eAAex7rB,IACpBhG,KAAKkisB,uBAAuBl8rB,GAC/B,CAMDo8rB,cACI,OAAOpisB,KAAKqzJ,SAAShyJ,IAAK68K,IAAYA,GAAQkkhB,cACjD,CAqCDjnqB,MAAMn1B,GAAU,IACRhG,KAAKqzJ,SAAS/yJ,OAAS,IAE3BN,KAAKqgsB,cAAenihB,IAAYA,GAAQolhB,4BAA4B,SACpEtjsB,KAAKqzJ,SAASxsG,OAAO,GACrB7mD,KAAKkisB,uBAAuB,CAAE9+f,UAAWp9L,GAAQo9L,YACpD,CAMD+8e,aAAa3zqB,IACT,OAAOA,GAAQ,EAAIA,GAAQxM,KAAKM,OAASkM,EAC5C,CAEDu3rB,uBACI,IAAIC,GAAiBhksB,KAAKqzJ,SAAS1tI,OAAO,CAACs6J,GAASt5I,OACzCA,GAAMo9pB,wBAAgC9jhB,IAC9C,GACH,OAAI+jhB,IACAhksB,KAAKkisB,uBAAuB,CAAEZ,UAAU,IACrC0C,EACV,CAED3D,cAAc3qV,IACV11W,KAAKqzJ,SAAS5iJ,QAAQ,CAACytK,GAAS1xK,MAC5BkpW,GAAGx3L,GAAS1xK,GAAV,EAET,CAEDu1rB,eACI/hsB,KAAKkI,MACDlI,KAAKqzJ,SAAS/9I,OAAQ4oK,IAAYA,GAAQx+B,SAAW1/I,KAAKoN,UACrD/L,IAAK68K,IAAYA,GAAQh2K,MACrC,CAEDi7rB,aAAahsY,IACT,OAAOn3T,KAAKqzJ,SAAS73E,KAAM0iG,IAAYA,GAAQx+B,SAAWy3K,GAAUj5I,IACvE,CAEDulhB,iBACIzjsB,KAAKqgsB,cAAenihB,IAAYl+K,KAAKyusB,iBAAiBvwhB,IACzD,CAEDykhB,uBACI,UAAWzkhB,MAAWl+K,KAAKqzJ,SACvB,GAAI6qB,GAAQx+B,QACR,OAAO,EAEf,OAAO1/I,KAAKqzJ,SAAS/yJ,OAAS,GAAKN,KAAKoN,QAC3C,CACDqhsB,iBAAiBvwhB,IACbA,GAAQikhB,UAAUnisB,MAClBk+K,GAAQolhB,4BAA4BtjsB,KAAK0gsB,oBAC5C,CAEDsC,MAAMv7rB,IACF,OAAOzH,KAAK8qR,GAAGrjR,KAAS,IAC3B;;;;;;;;AAYL,SAASinsB,GAAyB1osB,IAC9B,QAASA,UACwB+O,IAA5B/O,GAAQi6rB,sBACkBlrrB,IAAvB/O,GAAQ21rB,iBACa5mrB,IAArB/O,GAAQm4K,SACnB,CAcD,MAAMwwhB,GACF7usB,cACIE,KAAK4usB,gBAAiB,CACzB,CA2CGrH,kBACA,MAAMsH,GAAO,IAAIF,GACjBE,UAAKD,gBAAiB,EACfC,EACV,CACD/hqB,MAAMumH,GAAUrtJ,GAAU,MACtB,MAAM8osB,GAAkB9usB,KAAK+usB,gBAAgB17iB,IAC7C,IAAI/mB,GAAa,GACjB,OAAIoikB,GAAyB1osB,IAEzBsmI,GAAatmI,GAEI,OAAZA,KAELsmI,GAAWqvjB,WAAa31rB,GAAQ22rB,UAChCrwjB,GAAW2zjB,gBAAkBj6rB,GAAQw4rB,gBAElC,IAAItmY,GAAU42Y,GAAiBxikB,GACzC,CAgBD+7C,OAAOh1B,GAAUrtJ,GAAU,MACvB,MAAM8osB,GAAkB9usB,KAAK+usB,gBAAgB17iB,IAE7C,OAAO,IAAI8wiB,GAAW2K,GAAiB9osB,GAC1C,CA2BDk4K,QAAQkphB,GAAWvH,GAAiBrB,IAChC,IAAIlyjB,GAAa,GACjB,OAAKtsI,KAAK4usB,gBAGNF,GAAyB7O,IAEzBvzjB,GAAauzjB,IAIbvzjB,GAAWqvjB,WAAakE,GACxBvzjB,GAAW2zjB,gBAAkBzB,IAE1B,IAAIzmY,GAAYqvY,GAAW,IAAK96jB,GAAYi7jB,aAAa,KAXrD,IAAIxvY,GAAYqvY,GAAWvH,GAAiBrB,GAY1D,CAeDvrqB,MAAMogI,GAAUwsiB,GAAiBrB,IAC7B,MAAMwQ,GAAkB37iB,GAAShyJ,IAAIE,IAAKvB,KAAKivsB,eAAe1tsB,KAE9D,OAAO,IAAIitsB,GAAUQ,GAAiBnP,GAAiBrB,GAC1D,CAEDuQ,gBAAgB17iB,IACZ,MAAM27iB,GAAkB,GACxB3vrB,cAAOsa,KAAK05H,IAAU5iJ,QAAQozrB,KAC1BmL,GAAgBnL,IAAe7jsB,KAAKivsB,eAAe57iB,GAASwwiB,IAA7B,GAE5BmL,EACV,CAEDC,eAAe57iB,IACX,GAAIA,cAAoB0kK,GACpB,OAAO1kK,GAEN,GAAIA,cAAoBitiB,GACzB,OAAOjtiB,GAEN,GAAIlyJ,MAAMkuB,QAAQgkI,IAAW,CAC9B,MAAMnrJ,GAAQmrJ,GAAS,GACjBspiB,GAAYtpiB,GAAS/yJ,OAAS,EAAI+yJ,GAAS,GAAK,KAChDmriB,GAAiBnriB,GAAS/yJ,OAAS,EAAI+yJ,GAAS,GAAK,KAC3D,OAAOrzJ,KAAKk+K,QAAQh2K,GAAOy0rB,GAAW6B,GACzC,CAEG,OAAOx+rB,KAAKk+K,QAAQ7qB,GAE3B,EAELs7iB,GAAY5rsB,UAAZ,4BAAwG4rsB,GAAxG,EACAA,GAAY1rsB,WA3gO+FD,MA2gO3G,OAA4G2rsB,GAA5GzrsB,QAA4GyrsB,GAA5G,qBAAqI3kY,KAYrI,MAAMklY,IAENA,GAAuBnssB,UAAvB,4BAAmHmssB,GAAnH,EACAA,GAAuBjssB,WA1hOoFD,MA0hO3G,OAAuHkssB,GAAvHhssB,0BAA4L,EAAMizQ,OAAOw4b,IAAapH,WAAtN,aAA2Jv9X,KAW3J,MAAMmlY,WAA2BR,GAC7B7hqB,MAAMsiqB,GAAgBppsB,GAAU,MAC5B,OAAOiY,MAAM6uB,MAAMsiqB,GAAgBppsB,GACtC,CAIDk4K,QAAQkphB,GAAWvH,GAAiBrB,IAChC,OAAOvgrB,MAAMigK,QAAQkphB,GAAWvH,GAAiBrB,GACpD,CAIDvrqB,MAAMm8qB,GAAgBvP,GAAiBrB,IACnC,OAAOvgrB,MAAMgV,MAAMm8qB,GAAgBvP,GAAiBrB,GACvD,EAEL2Q,GAAmBpssB,UAAnB,qDAtjO2GC,MAsjOImssB,MAA/GpxrB,IAA+GoxrB,GAA/G,KACAA,GAAmBlssB,WAvjOwFD,MAujO3G,OAAmHmssB,GAAnHjssB,QAAmHissB,GAAnH,qBAAmJnlY;;;;;;;;AAgBnI,IAAI68S,MAAQ;;;;;;;;;;;;;;;;;;;;;OAAZ;;;;;;;;;;;;OE7nOhB,SAASwoF,EAAmB7ssB,IACxB,OAAO,IAAIihnB,MAAc,KAAkDC,EAC9E,CA0VD,SAASl5U,KAML,cAAcrwR,QAAY,KAA6C,qBAA9B,GAAG1Y,SAASH,KAAK6Y,QAC7D,CACD,SAASm1rB,GAAoBviG,IACzB,OAAQA,GAAQzsmB,aACP,EACD,OAAO,IAAIormB,KAAJ,KACN,EACD,OAAOqB,GAAQ,WAEf,OAAO,IAAIwiG,KAAsBxiG,IAE5C,CACD,SAASyiG,GAAqBC,GAAQC,GAAYhnsB,GAASigN,GAAWgnf,GAAY,IAAI3+iB,IAAO4+iB,GAAa,IAAI5+iB,KAC1G,MAAMqwO,GAAS,GACTwuU,GAAsB,GAC5B,IAAI7imB,IAAiB,EACjB8imB,GAAmB,KA+BvB,GA9BAnnf,GAAUl4M,QAAQs/rB,KACd,MAAMpnrB,GAASonrB,GAAGhwrB,IAAI,UAChBiwrB,GAAernrB,IAAUqkF,GACzBijmB,GAAsBD,IAAgBF,IAAqB,IAAI9+iB,IACrE++iB,GAAGt/rB,QAAQ,CAACsqM,GAAKtoC,MACb,IAAIkra,GAAiBlra,GACjByoE,GAAkBngC,GACtB,GAAa,WAATtoC,GAEA,OADAkra,GAAiB+xH,GAAWQ,sBAAsBvyH,GAAgBt8M,IAC1DnmJ,SACCsyX,KACDtyX,GAAkBy0d,GAAU5vrB,IAAI0yJ,IAChC,WACC82T,KACDruP,GAAkB00d,GAAW7vrB,IAAI0yJ,IACjC,cAEAyoE,GACIw0d,GAAWS,oBAAoB19hB,GAAMkra,GAAgBziW,GAAiBmmJ,IAItF4uU,GAAmB18qB,IAAIoqjB,GAAgBziW,GAAvC,GAEC80d,IACDH,GAAoB7zrB,KAAKi0rB,IAE7BH,GAAmBG,GACnBjjmB,GAAiBrkF,KAEjB04W,GAAO/gY,OACP,MAnUR,SAAS8vsB,GAAgB/uU,IACrB,OAAO,IAAIoiP,MAAc,MAA8CC,EAE1E,CAgUa0sF,GAEV,OAAOP,EACV,CACD,SAASQ,GAAerjrB,GAAQ8I,GAAW9lB,GAAOyC,IAC9C,OAAQqjB,QACC,QACD9I,GAAOm/kB,QAAQ,IAAM15lB,GAASzC,IAASsgsB,GAAmBtgsB,GAAO,QAASgd,MAC1E,UACC,OACDA,GAAOE,OAAO,IAAMza,GAASzC,IAASsgsB,GAAmBtgsB,GAAO,OAAQgd,MACxE,UACC,UACDA,GAAOo/kB,UAAU,IAAM35lB,GAASzC,IAASsgsB,GAAmBtgsB,GAAO,UAAWgd,MAGzF,CACD,SAASsjrB,GAAmB7rrB,GAAGkolB,GAAW3/kB,IACtC,MAAMi/kB,GAAYj/kB,GAAOi/kB,UACnB7+lB,KAAW4f,GAAO5f,SAClB4C,GAAQugsB,GAAmB9rrB,GAAE/b,QAAS+b,GAAE+rrB,YAAa/rrB,GAAEgsrB,UAAWhsrB,GAAEisrB,QAAS/jG,IAAalolB,GAAEkolB,UAAWV,IAAyBxnlB,GAAEwnlB,UAAuB7+lB,IACzJmS,GAAOkF,GAAElH,MACf,OAAY,MAARgC,KACAvP,GAAMuN,MAAWgC,IAEdvP,EACV,CACD,SAASugsB,GAAmB7nsB,GAAS8nsB,GAAaC,GAAWC,GAAS/jG,GAAY,GAAIV,GAAY,EAAG7+lB,IACjG,MAAO,CAAE1E,WAAS8nsB,eAAaC,aAAWC,WAAS/jG,aAAWV,aAAW7+lB,WAAYA,GACxF,CACD,SAASujsB,GAAqBtvsB,GAAKu4B,GAAK29C,IACpC,IAAIrvE,GAAQ7G,GAAI0e,IAAI6Z,IACpB,OAAK1xB,IACD7G,GAAIkyB,IAAIqG,GAAK1xB,GAAQqvE,IAElBrvE,EACV,CACD,SAAS0osB,GAAqBvub,IAC1B,MAAMwub,GAAexub,GAAQphR,QAAQ,KAGrC,MAAO,CAFIohR,GAAQnwO,UAAU,EAAG2+pB,IACjBxub,GAAQ3gR,MAAMmvsB,GAAe,GAE/C,CACD,IAAIC,GAAY,CAACC,GAAMC,MAAS,EAC5BC,GAAS,CAACvosB,GAASC,GAAUrC,KACtB,GAEP4qsB,GAAmB,KACvB,SAASC,GAAiBzosB,IACtB,MAAMivB,GAASjvB,GAAQQ,YAAcR,GAAQxE,KAC7C,OAAIyzB,KAAWu5qB,GACJ,KAEJv5qB,EACV,EAGe6yQ,aACM3hS,QAAY;;;;;;;;AAnHlC,SAASuosB,KACL,cAAev/qB,OAAW,YAAsBA,OAAOxuB,SAAa,GACvE,CAkHQ+tsB,IAMDF,GAAoC,KAAM7tsB,SAAS8yB,gBAAf,GACpC26qB,GAAY,CAACC,GAAMC,MACf,KAAOA,IAAM,CACT,GAAIA,KAASD,GACT,OAAO,EAEXC,GAAOG,GAAiBH,GAC3B,CACD,OAAO,IAbXF,GAAY,CAACC,GAAMC,KAASD,GAAKrzrB,SAASszrB,IAgB9CC,GAAS,CAACvosB,GAASC,GAAUrC,MACzB,GAAIA,GACA,OAAOnF,MAAMqE,KAAKkD,GAAQu6J,iBAAiBt6J,KAE/C,MAAMsK,GAAOvK,GAAQuiB,cAActiB,IACnC,OAAOsK,GAAO,CAACA,IAAQ,KAQ/B,IAAIo+rB,GAAe,KACfC,IAAa,EACjB,SAASC,GAAsB9+hB,IACtB4+hB,KACDA,GAgBR,SAASG,KACL,cAAWnusB,SAAY,IACZA,SAAS0nE,KAEb,IACV,CArBsBymoB,IAAiB,GAChCF,KAAaD,GAAa9lrB,OAAS,qBAAsB8lrB,GAAa9lrB,OAE1E,IAAIqG,IAAS,EACb,OAAIy/qB,GAAa9lrB,QAbrB,SAASkmrB,GAAqBh/hB,IAG1B,MAA+B,SAAxBA,GAAKvgI,UAAU,EAAG,EAC5B,CAS8Bu/pB,CAAqBh/hB,MAC5C7gJ,GAAS6gJ,MAAQ4+hB,GAAa9lrB,OACzBqG,IAAU0/qB,KAEX1/qB,GADkB,SAAW6gJ,GAAK1xK,OAAO,GAAGipH,cAAgByoD,GAAK/wK,MAAM,KACjD2vsB,GAAa9lrB,QAGpCqG,EACV,CAUD,MAAMisI,GAAkBiziB,GAClBY,GAAcT;;;;;;;;AAoBpB,MAAMU,GACFJ,sBAAsB9+hB,IAClB,OAAO8+hB,GAAsB9+hB,GAChC,CACDm/hB,eAAepinB,GAAUqinB,IAErB,OAAO,CACV,CACDh0iB,gBAAgBkziB,GAAMC,IAClB,OAAOnziB,GAAgBkziB,GAAMC,GAChC,CACDG,iBAAiBzosB,IACb,OAAOyosB,GAAiBzosB,GAC3B,CACDgkB,MAAMhkB,GAASC,GAAUrC,IACrB,OAAOorsB,GAAYhpsB,GAASC,GAAUrC,GACzC,CACDwrsB,aAAappsB,GAAS+pK,GAAMl7F,IACxB,OAAOA,IAAgB,EAC1B,CACD97D,QAAQ/S,GAASigN,GAAW/9L,GAAUsZ,GAAOF,GAAQ+tqB,GAAkB,GAAIC,IACvE,OAAO,IAAItmG,KAAoB9glB,GAAUsZ,GAC5C,EAELytqB,GAAoB5usB,UAApB,4BAAgH4usB,GAAhH,EACAA,GAAoB1usB,WADkFD,MACtG,OAAoH2usB,GAApHzusB,QAAoHyusB,GAApH,YAOA,MAAMM,IAENA,GAAgBC,KAAwB,IAAIP;;;;;;;;AAS5C,MAGMQ,GAAkB,WAClBC,GAAkB,WAClBC,GAAuB,aACvBC,GAAsB,cACtBC,GAAyB,eACzBC,GAAwB,gBAC9B,SAASC,GAAmBvqsB,IACxB,GAAoB,iBAATA,GACP,OAAOA,GACX,MAAMU,GAAUV,GAAM2qB,MAAM,qBAC5B,OAAKjqB,IAAWA,GAAQtI,OAAS,EACtB,EACJoysB,GAAsB3grB,WAAWnpB,GAAQ,IAAKA,GAAQ,GAChE,CACD,SAAS8psB,GAAsBxqsB,GAAOqyB,IAClC,MACS,MADDA,GAlBO,IAoBAryB,GAEAA,EAElB,CACD,SAASyqsB,GAAcpnG,GAASlqO,GAAQuxU,IACpC,OAAOrnG,GAAQnpmB,eAAe,YAC1BmpmB,GAGR,SAASsnG,GAAoBrwsB,GAAK6+X,GAAQuxU,IACtC,MAAM1+jB,GAAQ,2EACd,IAAItpH,GACAsZ,GAAQ,EACRF,GAAS,GACb,GAAmB,iBAARxhC,GAAkB,CACzB,MAAMoG,GAAUpG,GAAIqwB,MAAMqhH,IAC1B,GAAgB,OAAZtrI,GACAy4X,UAAOrlX,KAAKqzrB,KACL,CAAEzkrB,SAAU,EAAGsZ,MAAO,EAAGF,OAAQ,IAE5CpZ,GAAW8nrB,GAAsB3grB,WAAWnpB,GAAQ,IAAKA,GAAQ,IACjE,MAAMkqsB,GAAalqsB,GAAQ,GACT,MAAdkqsB,KACA5uqB,GAAQwuqB,GAAsB3grB,WAAW+grB,IAAalqsB,GAAQ,KAElE,MAAMmqsB,GAAYnqsB,GAAQ,GACtBmqsB,KACA/uqB,GAAS+uqB,GAEhB,MAEGnorB,GAAWpoB,GAEf,IAAKowsB,GAAqB,CACtB,IAAII,IAAiB,EACjB5xpB,GAAaigV,GAAO/gY,OACpBsqB,GAAW,IACXy2W,GAAOrlX,KA5nBnB,SAASi3rB,IACL,OAAO,IAAIxvF,MAAc,MAAiDC,EAC7E,CA0nBuBuvF,IACZD,IAAiB,GAEjB9uqB,GAAQ,IACRm9V,GAAOrlX,KA7nBnB,SAASk3rB,KACL,OAAO,IAAIzvF,MAAc,MAAkDC,EAC9E,CA2nBuBwvF,IACZF,IAAiB,GAEjBA,IACA3xU,GAAOx6U,OAAOzF,GAAY,EAAGiupB,IAEpC,CACD,MAAO,CAAEzkrB,YAAUsZ,SAAOF,UAC7B,CA1CO6uqB,CAAoBtnG,GAASlqO,GAAQuxU,GAC5C,CA0CD,SAASO,GAAQpgrB,GAAKrC,GAAc,IAChCrR,cAAOsa,KAAK5G,IAAKtiB,QAAQgiK,KACrB/hJ,GAAY+hJ,IAAQ1/I,GAAI0/I,MAErB/hJ,EACV,CACD,SAAS0irB,GAAargrB,IAClB,MAAMsgrB,GAAW,IAAIrijB,IACrB3xI,cAAOsa,KAAK5G,IAAKtiB,QAAQgiK,KACrB,MAAMsoC,GAAMhoL,GAAI0/I,IAChB4giB,GAAS9/qB,IAAIk/I,GAAMsoC,GAAnB,GAEGs4f,EACV,CAoBD,SAASC,GAAW5hrB,GAAQhB,GAAc,IAAIsgI,IAAOuijB,IACjD,GAAIA,GACA,QAAU9giB,GAAMsoC,MAAQw4f,GACpB7irB,GAAY6C,IAAIk/I,GAAMsoC,IAG9B,QAAUtoC,GAAMsoC,MAAQrpL,GACpBhB,GAAY6C,IAAIk/I,GAAMsoC,IAE1B,OAAOrqL,EACV,CACD,SAAS8irB,GAAwB9qsB,GAASkxB,GAAK1xB,IAG3C,OAAIA,GACO0xB,GAAM,IAAM1xB,GAAQ,IAGpB,EAEd,CACD,SAASursB,GAAoB/qsB,IAKzB,IAAIgrsB,GAAiB,GACrB,QAASl+rB,GAAI,EAAGA,GAAI9M,GAAQ6iB,MAAMjrB,OAAQkV,KAAK,CAC3C,MAAMokB,GAAMlxB,GAAQ6iB,MAAM/E,KAAKhR,IAC/Bk+rB,IAAkBF,GAAwB9qsB,EAASkxB,GAAKlxB,GAAQ6iB,MAAMmnJ,iBAAiB94I,IAC1F,CACD,UAAWA,MAAOlxB,GAAQ6iB,MAAO,CAE7B,IAAK7iB,GAAQ6iB,MAAMnpB,eAAew3B,KAAQA,GAAI6uK,WAAW,KACrD,SAGJirgB,IAAkBF,GAAwB9qsB,EAD1BirsB,GAAoB/5qB,IACwBlxB,GAAQ6iB,MAAMqO,IAC7E,CACDlxB,GAAQkH,aAAa,QAAS8jsB,GACjC,CACD,SAAS75mB,GAAUnxF,GAASgpB,GAAQkirB,IAC5BlrsB,GAAQ6iB,QACRmG,GAAOjhB,QAAQ,CAACsqM,GAAKtoC,MACjB,MAAMo7X,GAAYgmK,GAAoBphiB,IAClCmhiB,KAAiBA,GAAa34qB,IAAIw3I,KAClCmhiB,GAAargrB,IAAIk/I,GAAM/pK,GAAQ6iB,MAAMsihB,KAEzCnliB,GAAQ6iB,MAAMsihB,IAAa9yV,KAG3ByvF,MACAipa,GAAoB/qsB,IAG/B,CACD,SAASorsB,GAAYprsB,GAASgpB,IACtBhpB,GAAQ6iB,QACRmG,GAAOjhB,QAAQ,CAAC0uK,GAAG1M,MACf,MAAMo7X,GAAYgmK,GAAoBphiB,IACtC/pK,GAAQ6iB,MAAMsihB,IAAa,KAG3BrjQ,MACAipa,GAAoB/qsB,IAG/B,CACD,SAASqrsB,GAAwB5ukB,IAC7B,OAAIhkI,MAAMkuB,QAAQ81G,IACM,GAAhBA,GAAM7kI,OACC6kI,GAAM,MACV14G,MAAS04G,IAEbA,EACV,CACD,SAAS6ukB,GAAoB9rsB,GAAOlC,GAASq7X,IACzC,MAAM9Y,GAASviX,GAAQuiX,QAAU,GAC3B3/W,GAAUqrsB,GAAmB/rsB,IAC/BU,GAAQtI,QACRsI,GAAQ6H,QAAQ8yJ,KACPglN,GAAOnmX,eAAemhK,KACvB89N,GAAOrlX,KAtvBvB,SAASk4rB,GAAmB3wiB,IACxB,OAAO,IAAIkgd,MAAc,MAAkDC,EAE9E,CAmvB2BwwF,GAAZ,EAIf,CACD,MAAMC,GAAc,IAAI1vsB,OAAQ,oBAAkE,KAClG,SAASwvsB,GAAmB/rsB,IACxB,IAAIqgX,GAAS,GACb,GAAqB,iBAAVrgX,GAAoB,CAC3B,IAAI2qB,GACJ,KAAOA,GAAQshrB,GAAY/+oB,KAAKltD,KAC5BqgX,GAAOvsW,KAAK6W,GAAM,IAEtBshrB,GAAYh+rB,UAAY,CAC3B,CACD,OAAOoyW,EACV,CACD,SAAS6rV,GAAkBlssB,GAAOqgX,GAAQ8Y,IACtC,MAAMr8S,GAAW98E,GAAMzG,WACjBtB,GAAM6kF,GAAS3kF,QAAQ8zsB,GAAa,CAACh1hB,GAAG5b,MAC1C,IAAI8wiB,GAAW9rV,GAAOhlN,IAEtB,OAAgB,MAAZ8wiB,KACAhzU,GAAOrlX,KAzwBnB,SAASs4rB,GAAkB/wiB,IACvB,OAAO,IAAIkgd,MAAc,MAAiDC,EAC7E,CAuwBuB4wF,IACZD,GAAW,IAERA,GAAS5ysB,UAAT,GAGX,OAAOtB,IAAO6kF,GAAW98E,GAAQ/H,EACpC,CACD,SAAS6kkB,GAAgB3uL,IACrB,MAAMj8W,GAAM,GACZ,IAAI5T,GAAO6vX,GAASpxY,OACpB,MAAQuhB,GAAKmgI,MACTvsH,GAAIpe,KAAKwK,GAAKte,OACdse,GAAO6vX,GAASpxY,OAEpB,OAAOm1B,EACV,CACD,MAAMm6qB,GAAmB,gBACzB,SAASV,GAAoBnjsB,IACzB,OAAOA,GAAMrQ,QAAQk0sB,GAAkB,IAAInvgB,KAAMA,GAAE,GAAGp7E,cACzD,CACD,SAAS2plB,GAAoBjjsB,IACzB,OAAOA,GAAMrQ,QAAQ,kBAAmB,SAAS0a,aACpD,CAuBD,SAASy5rB,GAAaC,GAASxrsB,GAAMwO,IACjC,OAAQxO,GAAKwV,WACJ,EACD,OAAOg2rB,GAAQC,aAAazrsB,GAAMwO,IAA3B,KACN,EACD,OAAOg9rB,GAAQE,WAAW1rsB,GAAMwO,IAAzB,KACN,EACD,OAAOg9rB,GAAQG,gBAAgB3rsB,GAAMwO,IAA9B,KACN,EACD,OAAOg9rB,GAAQI,cAAc5rsB,GAAMwO,IAA5B,KACN,EACD,OAAOg9rB,GAAQK,WAAW7rsB,GAAMwO,IAAzB,KACN,EACD,OAAOg9rB,GAAQM,aAAa9rsB,GAAMwO,IAA3B,KACN,EACD,OAAOg9rB,GAAQO,eAAe/rsB,GAAMwO,IAA7B,KACN,EACD,OAAOg9rB,GAAQQ,WAAWhssB,GAAMwO,IAAzB,KACN,EACD,OAAOg9rB,GAAQS,eAAejssB,GAAMwO,IAA7B,KACN,EACD,OAAOg9rB,GAAQU,kBAAkBlssB,GAAMwO,IAAhC,KACN,GACD,OAAOg9rB,GAAQW,gBAAgBnssB,GAAMwO,IAA9B,KACN,GACD,OAAOg9rB,GAAQY,WAAWpssB,GAAMwO,IAAzB,KACN,GACD,OAAOg9rB,GAAQa,aAAarssB,GAAMwO,IAA3B,QAEP,MAj1BZ,SAAS89rB,GAAgB/ssB,IACrB,OAAO,IAAIi7mB,MAAc,MAA+CC,EAC3E,CA+0BiB6xF,CAAgBtssB,GAAKwV,MAEtC,CACD,SAASqzrB,GAAappsB,GAAS+pK,IAC3B,OAAO5gJ,OAAOC,iBAAiBppB,IAAS+pK,GAC3C;;;;;;;OA2CD,SAAS+iiB,GAAoBC,GAAiBp0U,IAC1C,MAAMq0U,GAAc,GACpB,MAA8B,iBAAnBD,GACPA,GAAgB1zsB,MAAM,WAAW0O,QAAQtQ,IAOjD,SAASw1sB,GAAwBC,GAAUF,GAAar0U,IACpD,GAAmB,KAAfu0U,GAAS,GAAW,CACpB,MAAMhkrB,GAqBd,SAASikrB,GAAoBvkmB,GAAO+vR,IAChC,OAAQ/vR,QACC,SACD,MAAO,gBACN,SACD,MAAO,gBACN,aACD,MAAO,CAACm/lB,GAAWC,KAAY3+qB,WAAW2+qB,IAAW3+qB,WAAW0+qB,IAAD,IAC9D,aACD,MAAO,CAACA,GAAWC,KAAY3+qB,WAAW2+qB,IAAW3+qB,WAAW0+qB,IAAD,QAE/DpvU,UAAOrlX,KA33BnB,SAAS85rB,GAAuBxkmB,IAC5B,OAAO,IAAImygB,MAAc,MAAsDC,EAClF,CAy3BuBoyF,IACL,SAElB,CAnCsBD,CAAoBD,GAAUv0U,IAC7C,GAAqB,mBAAVzvW,GAEP,YADA8jrB,GAAY15rB,KAAK4V,IAGrBgkrB,GAAWhkrB,EACd,CACD,MAAMiB,GAAQ+irB,GAAS/irB,MAAM,2CAC7B,GAAa,MAATA,IAAiBA,GAAMvyB,OAAS,EAChC+gY,UAAOrlX,KAv2Bf,SAAS+5rB,GAAkB1xc,IACvB,OAAO,IAAIo/W,MAAc,MAAgDC,EAC5E,CAq2BmBqyF,IACLL,GAEX,MAAMjF,GAAY59qB,GAAM,GAClBqkH,GAAYrkH,GAAM,GAClB69qB,GAAU79qB,GAAM,GACtB6irB,GAAY15rB,KAAKg6rB,GAAqBvF,GAAWC,KACjD,MAAMuF,GA7BQ,KA6BaxF,IA7Bb,KA6BuCC,GACjC,KAAhBx5jB,GAAU,KAAc++jB,IACxBP,GAAY15rB,KAAKg6rB,GAAqBtF,GAASD,IAEtD,CA7BuDkF,CAAwBx1sB,GAAKu1sB,GAAar0U,KAG1Fq0U,GAAY15rB,KAAKy5rB,IAEdC,EACV,CA2CD,MAAMQ,GAAsB,IAAI56qB,IAAI,CAAC,OAAQ,MACvC66qB,GAAuB,IAAI76qB,IAAI,CAAC,QAAS,MAC/C,SAAS06qB,GAAqBI,GAAKC,IAC/B,MAAMC,GAAoBJ,GAAoBj7qB,IAAIm7qB,KAAQD,GAAqBl7qB,IAAIm7qB,IAC7EG,GAAoBL,GAAoBj7qB,IAAIo7qB,KAAQF,GAAqBl7qB,IAAIo7qB,IACnF,MAAO,CAAC5F,GAAWC,MACf,IAAI8F,GA3DM,KA2DKJ,IAAoBA,IAAO3F,GACtCgG,GA5DM,KA4DKJ,IAAoBA,IAAO3F,GAC1C,OAAK8F,IAAYF,IAA0C,kBAAd7F,KACzC+F,GAAW/F,GAAYyF,GAAoBj7qB,IAAIm7qB,IAAOD,GAAqBl7qB,IAAIm7qB,MAE9EK,IAAYF,IAAwC,kBAAZ7F,KACzC+F,GAAW/F,GAAUwF,GAAoBj7qB,IAAIo7qB,IAAOF,GAAqBl7qB,IAAIo7qB,KAE1EG,IAAYC,GAE1B;;;;;;;OASD,MAAMC,GAAa,QACbC,GAAmB,IAAIlysB,OAAQ,cAAwB,KAqC7D,SAASmysB,GAAkBnH,GAAQ92T,GAAUtX,GAAQw1U,IACjD,OAAO,IAAIC,GAA2BrH,IAAQvjrB,MAAMysX,GAAUtX,GAAQw1U,GACzE,CAED,MAAMC,GACFh3sB,YAAYi3sB,IACR/2sB,KAAK+2sB,QAAUA,EAClB,CACD7qrB,MAAMysX,GAAUtX,GAAQw1U,IACpB,MAAMp/rB,GAAU,IAAIu/rB,GAA2B31U,IAC/C,YAAK41U,8BAA8Bx/rB,IACvB+8rB,GAAax0sB,KAAM+zsB,GAAwBp7T,IAAWlhY,GAOrE,CACDw/rB,8BAA8Bx/rB,IAC1BA,GAAQy/rB,qBAjBM,GAkBdz/rB,GAAQ0/rB,gBAAkB,IAAInmjB,IAC9Bv5I,GAAQ0/rB,gBAAgB5jrB,IAnBV,GAmB6B,IAAIy9H,KAC/Cv5I,GAAQ2/rB,YAAc,CACzB,CACD1C,aAAa/7T,GAAUlhY,IACnB,IAAI4/rB,GAAa5/rB,GAAQ4/rB,WAAa,EAClCC,GAAW7/rB,GAAQ6/rB,SAAW,EAClC,MAAM1/kB,GAAS,GACThzD,GAAc,GACpB,MAA+B,KAA3B+zU,GAASlxY,KAAK1G,OAAO,IACrB0W,GAAQ4pX,OAAOrlX,KA7gC3B,SAASu7rB,KACL,OAAO,IAAI9zF,MAAc,MAA6CC,EAEzE,CA0gC+B6zF,IAExB5+T,GAAS90T,YAAYpzE,QAAQ+nQ,KAEzB,GADAx4Q,KAAKi3sB,8BAA8Bx/rB,IACnB,GAAZ+gQ,GAAI/5P,KAA6C,CACjD,MAAM+4rB,GAAWh/b,GACX/wQ,GAAO+vsB,GAAS/vsB,KACtBA,GAAKhG,WAAWM,MAAM,WAAW0O,QAAQqqN,KACrC08e,GAAS/vsB,KAAOqzN,GAChBljG,GAAO57G,KAAKhc,KAAK20sB,WAAW6C,GAAU//rB,IAAtC,GAEJ+/rB,GAAS/vsB,KAAOA,EACnB,SACoB,GAAZ+wQ,GAAI/5P,KAAkD,CAC3D,MAAMguI,GAAazsJ,KAAK40sB,gBAAgBp8b,GAAK/gQ,IAC7C4/rB,IAAc5qjB,GAAW4qjB,WACzBC,IAAY7qjB,GAAW6qjB,SACvB1yoB,GAAY5oD,KAAKywI,GACpB,MAEGh1I,GAAQ4pX,OAAOrlX,KA7hC/B,SAASy7rB,KACL,OAAO,IAAIh0F,MAAc,MAAgDC,EAC5E,CA2hCmC+zF,GAApB,GAGD,CACHh5rB,KAAM,EACNhX,KAAMkxY,GAASlxY,KACfmwH,UACAhzD,eACAyyoB,cACAC,YACAtxsB,QAAS,KAEhB,CACD2usB,WAAWh8T,GAAUlhY,IACjB,MAAMigsB,GAAW13sB,KAAKi1sB,WAAWt8T,GAASjnX,OAAQja,IAC5CkgsB,GAAah/T,GAAS3yY,SAAW2yY,GAAS3yY,QAAQuiX,QAAW,KACnE,GAAImvV,GAASE,sBAAuB,CAChC,MAAMC,GAAc,IAAIv8qB,IAClBitV,GAASovV,IAAa,GAY5B,GAXAD,GAAShmrB,OAAOjhB,QAAQ8a,KAChBA,cAAiBylI,KACjBzlI,GAAM9a,QAAQvI,KACV+rsB,GAAmB/rsB,IAAOuI,QAAQslP,KACzBwyH,GAAOnmX,eAAe2zP,KACvB8hd,GAAY7rsB,IAAI+pP,GAAhB,EAFR,EADJ,GASJ8hd,GAAY5psB,KAAM,CACK+2jB,GAAgB6yI,GAAY/8qB,UACnDrjB,GAAQ4pX,OAAOrlX,KA1jC/B,SAAS87rB,GAAaxvB,GAAcuvB,IAChC,OAAO,IAAIp0F,MAAc,MAA2CC,EAEvE,CAujCmCo0F,CAAan/T,GAASlxY,MAC7C,CACJ,CACD,MAAO,CACHgX,KAAM,EACNhX,KAAMkxY,GAASlxY,KACf8jB,MAAOmsrB,GACP1xsB,QAAS2xsB,GAAY,CAAEpvV,OAAQovV,IAAc,KAEpD,CACD/C,gBAAgBj8T,GAAUlhY,IACtBA,GAAQ4/rB,WAAa,EACrB5/rB,GAAQ6/rB,SAAW,EACnB,MAAM3srB,GAAY6prB,GAAax0sB,KAAM+zsB,GAAwBp7T,GAAShuX,WAAYlT,IAElF,MAAO,CACHgH,KAAM,EACNs5rB,SAHavC,GAAoB78T,GAASt0I,KAAM5sP,GAAQ4pX,QAIxD12W,aACA0srB,WAAY5/rB,GAAQ4/rB,WACpBC,SAAU7/rB,GAAQ6/rB,SAClBtxsB,QAASgysB,GAA0Br/T,GAAS3yY,SAEnD,CACD6usB,cAAcl8T,GAAUlhY,IACpB,MAAO,CACHgH,KAAM,EACN0mH,MAAOwzQ,GAASxzQ,MAAM9jI,IAAI2hC,IAAKwxqB,GAAax0sB,KAAMgjC,GAAGvrB,KACrDzR,QAASgysB,GAA0Br/T,GAAS3yY,SAEnD,CACD8usB,WAAWn8T,GAAUlhY,IACjB,MAAM2/rB,GAAc3/rB,GAAQ2/rB,YAC5B,IAAIa,GAAe,EACnB,MAAM9ykB,GAAQwzQ,GAASxzQ,MAAM9jI,IAAIoZ,KAC7BhD,GAAQ2/rB,YAAcA,GACtB,MAAMc,GAAW1D,GAAax0sB,KAAMya,GAAMhD,IAC1CwgsB,UAAevjrB,KAAK7Z,IAAIo9rB,GAAcxgsB,GAAQ2/rB,aACvCc,KAEXzgsB,UAAQ2/rB,YAAca,GACf,CACHx5rB,KAAM,EACN0mH,SACAn/H,QAASgysB,GAA0Br/T,GAAS3yY,SAEnD,CACD+usB,aAAap8T,GAAUlhY,IACnB,MAAM0gsB,GA8Rd,SAASC,GAAmBlwsB,GAAOm5X,IAC/B,GAAIn5X,GAAM9F,eAAe,YACrB,OAAO8F,GAEX,GAAoB,iBAATA,GAAmB,CAE1B,OAAOmwsB,GADU1F,GAAczqsB,GAAOm5X,IAAQz2W,SACf,EAAG,GACrC,CACD,MAAMiroB,GAAW3tpB,GAEjB,GADkB2tpB,GAAS9zpB,MAAM,OAAOy5E,KAAKq8I,IAAoB,KAAfA,GAAE92N,OAAO,IAA4B,KAAf82N,GAAE92N,OAAO,IAClE,CACX,MAAMu3sB,GAAMD,GAAc,EAAG,EAAG,IAChCC,UAAI34U,SAAU,EACd24U,GAAIziD,SAAWA,GACRyiD,EACV,CACD,MAAM/sG,GAAUonG,GAAc98C,GAAUx0R,IACxC,OAAOg3U,GAAc9sG,GAAQ3glB,SAAU2glB,GAAQrnkB,MAAOqnkB,GAAQvnkB,OACjE,CAhTyBo0qB,CAAmBz/T,GAAS4yN,QAAS9zlB,GAAQ4pX,QAC/D5pX,GAAQ8gsB,sBAAwBJ,GAChC,IAAIT,GACAc,GAAgB7/T,GAASjnX,OAASinX,GAASjnX,UAASnG,MAAM,IAC9D,GAA0B,GAAtBitrB,GAAc/5rB,KACdi5rB,GAAW13sB,KAAKg1sB,eAAewD,GAAe/gsB,QAE7C,CACD,IAAI+gsB,GAAgB7/T,GAASjnX,OACzBo1B,IAAU,EACd,IAAK0xpB,GAAe,CAChB1xpB,IAAU,EACV,MAAM2xpB,GAAe,GACjBN,GAAUn0qB,SACVy0qB,GAAaz0qB,OAAYm0qB,GAAUn0qB,QAEvCw0qB,MAAgBjtrB,MAAMktrB,GACzB,CACDhhsB,GAAQ2/rB,aAAee,GAAUvtrB,SAAWutrB,GAAUj0qB,MACtD,MAAMw0qB,GAAY14sB,KAAKi1sB,WAAWuD,GAAe/gsB,IACjDihsB,GAAUC,YAAc7xpB,GACxB4wpB,GAAWgB,EACd,CACDjhsB,UAAQ8gsB,sBAAwB,KACzB,CACH95rB,KAAM,EACN8slB,QAAS4sG,GACT5srB,MAAOmsrB,GACP1xsB,QAAS,KAEhB,CACDivsB,WAAWt8T,GAAUlhY,IACjB,MAAM6gsB,GAAMt4sB,KAAK44sB,cAAcjgU,GAAUlhY,IACzC,YAAKohsB,kBAAkBP,GAAK7gsB,IACrB6gsB,EACV,CACDM,cAAcjgU,GAAUlhY,IACpB,MAAMia,GAAS,GACTonrB,GAAiB33sB,MAAMkuB,QAAQspX,GAASjnX,QAAUinX,GAASjnX,OAAS,CAACinX,GAASjnX,QACpF,QAASqnrB,MAAcD,GACO,iBAAfC,GACHA,KAAexvO,KACf73c,GAAO1V,KAAK+8rB,IAGZthsB,GAAQ4pX,OAAOrlX,KAlpCxB,IAAIynmB,MAAc,MAAiDC,IAspC9DhylB,GAAO1V,KAAKo3rB,GAAa2F,KAGjC,IAAInB,IAAwB,EACxBoB,GAAkB,KACtBtnrB,UAAOjhB,QAAQwosB,KACX,GAAIA,cAAqBjojB,MACjBiojB,GAAUh+qB,IAAI,YACd+9qB,GAAkBC,GAAUl5rB,IAAI,UAChCk5rB,GAAU/9qB,OAAO,YAEhB08qB,IACD,QAAS1vsB,MAAS+wsB,GAAUn+qB,SACxB,GAAI5yB,GAAMzG,WAAWR,QA/nBb,OA+nBiD,EAAG,CACxD22sB,IAAwB,EACxB,KACH,IAKV,CACHn5rB,KAAM,EACNiT,UACAsS,OAAQg1qB,GACRrwrB,OAAQgwX,GAAShwX,OACjBivrB,yBACA5xsB,QAAS,KAEhB,CACD6ysB,kBAAkBP,GAAK7gsB,IACnB,MAAM8zlB,GAAU9zlB,GAAQ8gsB,sBACxB,IAAI1ujB,GAAUpyI,GAAQ2/rB,YAClBntjB,GAAYxyI,GAAQ2/rB,YACpB7rG,IAAWthd,GAAY,IACvBA,IAAashd,GAAQ3glB,SAAW2glB,GAAQrnkB,OAE5Co0qB,GAAI5mrB,OAAOjhB,QAAQyosB,KACM,iBAAVA,IAEXA,GAAMzosB,QAAQ,CAACvI,GAAOuqK,MAUlB,MAAM0kiB,GAAkB1/rB,GAAQ0/rB,gBAAgBp3rB,IAAItI,GAAQy/rB,sBACtDiC,GAAiBhC,GAAgBp3rB,IAAI0yJ,IAC3C,IAAI2miB,IAAuB,EACvBD,KACIlvjB,IAAaJ,IAAWI,IAAakvjB,GAAelvjB,WACpDJ,IAAWsvjB,GAAetvjB,UAC1BpyI,GAAQ4pX,OAAOrlX,KAxsCvC,SAASq9rB,GAAyB5miB,GAAM6miB,GAAYC,GAAUC,GAAaC,IACvE,OAAO,IAAIh2F,MAAc,MAAwDC,EAEpF,CAqsC2C21F,CAAyB5miB,EAAM0miB,GAAelvjB,UAAWkvjB,GAAetvjB,UAC5FuvjB,IAAuB,GAK3BnvjB,GAAYkvjB,GAAelvjB,WAE3BmvjB,IACAjC,GAAgB5jrB,IAAIk/I,GAAM,CAAExoB,aAAWJ,aAEvCpyI,GAAQzR,SACRgusB,GAAoB9rsB,GAAOuP,GAAQzR,QAASyR,GAAQ4pX,OAAjC,EA5B3B,EAgCP,CACD2zU,eAAer8T,GAAUlhY,IACrB,MAAM6gsB,GAAM,CAAE75rB,KAAM,EAAyCiT,OAAQ,GAAI1rB,QAAS,MAClF,IAAKyR,GAAQ8gsB,sBACT9gsB,UAAQ4pX,OAAOrlX,KAxtC3B,SAAS09rB,KACL,OAAO,IAAIj2F,MAAc,MAA+CC,EAC3E,CAstC+Bg2F,IACbpB,GAGX,IAAIqB,GAA4B,EAChC,MAAM7jhB,GAAU,GAChB,IAAI8jhB,IAAoB,EACpBC,IAAsB,EACtB7smB,GAAiB,EACrB,MAAM27G,GAAYgwL,GAASxzQ,MAAM9jI,IAAIqwB,KACjC,MAAMnG,GAAQvrB,KAAK44sB,cAAclnrB,GAAQja,IACzC,IAAIqisB,GAA4B,MAAhBvurB,GAAM5C,OAAiB4C,GAAM5C,OAkIzD,SAASoxrB,GAAcrorB,IACnB,GAAqB,iBAAVA,GACP,OAAO,KACX,IAAI/I,GAAS,KACb,GAAIxnB,MAAMkuB,QAAQqC,IACdA,GAAOjhB,QAAQsosB,KACX,GAAIA,cAAsB/njB,KAAO+njB,GAAW99qB,IAAI,UAAW,CACvD,MAAMlI,GAAMgmrB,GACZpwrB,GAASoJ,WAAWgB,GAAIhT,IAAI,WAC5BgT,GAAImI,OAAO,SACd,SALL,GAQKxJ,cAAkBs/H,KAAOt/H,GAAOuJ,IAAI,UAAW,CACpD,MAAMlI,GAAMrB,GACZ/I,GAASoJ,WAAWgB,GAAIhT,IAAI,WAC5BgT,GAAImI,OAAO,SACd,CACD,OAAOvS,EACV,CArJiEoxrB,CAAcxurB,GAAMmG,QACtE/I,GAAS,EACb,OAAiB,MAAbmxrB,KACAH,KACAhxrB,GAAS4C,GAAM5C,OAASmxrB,IAE5BD,GAAsBA,IAAuBlxrB,GAAS,GAAKA,GAAS,EACpEixrB,GAAoBA,IAAqBjxrB,GAASqkF,GAClDA,GAAiBrkF,GACjBmtK,GAAQ95K,KAAK2M,IACN4C,KAEPsurB,IACApisB,GAAQ4pX,OAAOrlX,KA7uC3B,SAASg+rB,KACL,OAAO,IAAIv2F,MAAc,MAA4CC,EACxE,CA2uC+Bs2F,IAEpBJ,IACAnisB,GAAQ4pX,OAAOrlX,KA7uC3B,SAASi+rB,KACL,OAAO,IAAIx2F,MAAc,MAA2DC,EACvF,CA2uC+Bu2F,IAExB,MAAM35sB,GAASq4Y,GAASxzQ,MAAM7kI,OAC9B,IAAI45sB,GAAkB,EAClBP,GAA4B,GAAKA,GAA4Br5sB,GAC7DmX,GAAQ4pX,OAAOrlX,KA/uC3B,SAASm+rB,KACL,OAAO,IAAI12F,MAAc,MAAuDC,EACnF,CA6uC+By2F,IAEc,GAA7BR,KACLO,GAhCwB,GAgCiB55sB,GAAS,IAEtD,MAAM64C,GAAQ74C,GAAS,EACjB82sB,GAAc3/rB,GAAQ2/rB,YACtBmB,GAAwB9gsB,GAAQ8gsB,sBAChC6B,GAAkB7B,GAAsB3trB,SAC9C+9L,UAAUl4M,QAAQ,CAACs/rB,GAAIv6rB,MACnB,MAAMmT,GAASuxrB,GAAkB,EAAK1ksB,IAAK2jC,GAAQ,EAAK+gqB,GAAkB1ksB,GAAMsgL,GAAQtgL,IAClF6ksB,GAAwB1xrB,GAASyxrB,GACvC3isB,GAAQ2/rB,YAAcA,GAAcmB,GAAsBr0qB,MAAQm2qB,GAClE9B,GAAsB3trB,SAAWyvrB,GACjCr6sB,KAAK64sB,kBAAkB9I,GAAIt4rB,IAC3Bs4rB,GAAGpnrB,OAASA,GACZ2vrB,GAAI5mrB,OAAO1V,KAAK+zrB,GAAhB,GAEGuI,EACV,CACDpD,eAAev8T,GAAUlhY,IACrB,MAAO,CACHgH,KAAM,EACNkM,UAAW6prB,GAAax0sB,KAAM+zsB,GAAwBp7T,GAAShuX,WAAYlT,IAC3EzR,QAASgysB,GAA0Br/T,GAAS3yY,SAEnD,CACDmvsB,kBAAkBx8T,GAAUlhY,IACxBA,UAAQ6/rB,WACD,CACH74rB,KAAM,EACNzY,QAASgysB,GAA0Br/T,GAAS3yY,SAEnD,CACDovsB,gBAAgBz8T,GAAUlhY,IACtB,MAAO,CACHgH,KAAM,GACNkM,UAAW3qB,KAAKk1sB,eAAev8T,GAAShuX,UAAWlT,IACnDzR,QAASgysB,GAA0Br/T,GAAS3yY,SAEnD,CACDqvsB,WAAW18T,GAAUlhY,IACjB,MAAM6isB,GAAiB7isB,GAAQy/rB,qBACzBlxsB,GAAW2yY,GAAS3yY,SAAW,GACrCyR,GAAQ4/rB,aACR5/rB,GAAQ8isB,aAAe5hU,GACvB,MAAOhwY,GAAU6xsB,IAiCzB,SAASC,GAAkB9xsB,IACvB,MAAM+xsB,KAAe/xsB,GAAS5G,MAAM,WAAWsjB,KAAKxjB,IAASA,IAAS60sB,IACtE,OAAIgE,KACA/xsB,GAAWA,GAAStI,QAAQs2sB,GAAkB,KAIlDhusB,GAAWA,GAAStI,QAAQ,OAAQiysB,IAC/BjysB,QAAQ,QAASwyB,IAASy/qB,GAAsB,IAAMz/qB,GAAMnxB,MAAM,IAClErB,QAAQ,cAAemysB,IACrB,CAAC7psB,GAAU+xsB,GACrB,CA5CuCD,CAAkB9hU,GAAShwY,UAC3D8O,GAAQy/rB,qBACJoD,GAAeh6sB,OAAUg6sB,GAAiB,IAAM3xsB,GAAYA,GAChEgosB,GAAqBl5rB,GAAQ0/rB,gBAAiB1/rB,GAAQy/rB,qBAAsB,IAAIlmjB,KAChF,MAAMrmI,GAAY6prB,GAAax0sB,KAAM+zsB,GAAwBp7T,GAAShuX,WAAYlT,IAClFA,UAAQ8isB,aAAe,KACvB9isB,GAAQy/rB,qBAAuBoD,GACxB,CACH77rB,KAAM,GACN9V,YACAwwC,MAAOnzC,GAAQmzC,OAAS,EACxBrsB,WAAY9mB,GAAQ8mB,SACpB0trB,eACA7vrB,aACAgwrB,iBAAkBhiU,GAAShwY,SAC3B3C,QAASgysB,GAA0Br/T,GAAS3yY,SAEnD,CACDsvsB,aAAa38T,GAAUlhY,IACdA,GAAQ8isB,cACT9isB,GAAQ4pX,OAAOrlX,KA9yC3B,SAAS4+rB,KACL,OAAO,IAAIn3F,MAAc,MAA6CC,EACzE,CA4yC+Bk3F,IAExB,MAAMrvG,GAA+B,SAArB5yN,GAAS4yN,QACrB,CAAE3glB,SAAU,EAAGsZ,MAAO,EAAGF,OAAQ,QACjC2uqB,GAAch6T,GAAS4yN,QAAS9zlB,GAAQ4pX,QAAQ,GACpD,MAAO,CACH5iX,KAAM,GACNkM,UAAW6prB,GAAax0sB,KAAM+zsB,GAAwBp7T,GAAShuX,WAAYlT,IAC3E8zlB,WACAvlmB,QAAS,KAEhB,EAiBL,MAAMgxsB,GACFl3sB,YAAYuhY,IACRrhY,KAAKqhY,OAASA,GACdrhY,KAAKq3sB,WAAa,EAClBr3sB,KAAKs3sB,SAAW,EAChBt3sB,KAAK66sB,kBAAoB,KACzB76sB,KAAKu6sB,aAAe,KACpBv6sB,KAAKk3sB,qBAAuB,KAC5Bl3sB,KAAKu4sB,sBAAwB,KAC7Bv4sB,KAAKo3sB,YAAc,EACnBp3sB,KAAKm3sB,gBAAkB,IAAInmjB,IAC3BhxJ,KAAKgG,QAAU,KACfhG,KAAK86sB,8BAAgC,IAAIx/qB,GAC5C,EAyCL,SAAS08qB,GAA0BhysB,IAC/B,OAAIA,IACAA,GAAUmtsB,GAAQntsB,KACNuiX,SACRviX,GAAQuiX,OA7DpB,SAASwyV,GAAgBhorB,IACrB,OAAOA,GAAMogrB,GAAQpgrB,IAAO,IAC/B,CA2D+BgorB,CAAgB/0sB,GAAQuiX,SAIhDviX,GAAU,GAEPA,EACV,CACD,SAASqysB,GAAcztrB,GAAUsZ,GAAOF,IACpC,MAAO,CAAEpZ,YAAUsZ,SAAOF,UAC7B,CAED,SAASg3qB,GAA0BtysB,GAASigN,GAAWsyf,GAAeC,GAAgBtwrB,GAAUsZ,GAAOF,GAAS,KAAMm3qB,IAAc,GAChI,MAAO,CACH18rB,KAAM,EACN/V,WACAigN,aACAsyf,iBACAC,kBACAtwrB,YACAsZ,SACA+nkB,UAAWrhlB,GAAWsZ,GACtBF,UACAm3qB,eAEP,CAED,MAAMC,GACFt7sB,cACIE,KAAKqzB,KAAO,IAAI29H,GACnB,CACDjxI,IAAIrX,IACA,OAAO1I,KAAKqzB,KAAKtT,IAAIrX,KAAY,EACpC,CACDyvB,OAAOzvB,GAAS2ysB,IACZ,IAAIC,GAAuBt7sB,KAAKqzB,KAAKtT,IAAIrX,IACpC4ysB,IACDt7sB,KAAKqzB,KAAKE,IAAI7qB,GAAS4ysB,GAAuB,IAElDA,GAAqBt/rB,QAAQq/rB,GAChC,CACDpgrB,IAAIvyB,IACA,OAAO1I,KAAKqzB,KAAK4H,IAAIvyB,GACxB,CACDyyB,QACIn7B,KAAKqzB,KAAK8H,OACb;;;;;;;OAUL,MAEMogrB,GAAoB,IAAI92sB,OADV,SAC8B,KAE5C+2sB,GAAoB,IAAI/2sB,OADV,SAC8B,KAgFlD,SAASg3sB,GAAwBhM,GAAQ73mB,GAAa0gnB,GAAKoD,GAAgBC,GAAgBC,GAAiB,IAAI5qjB,IAAO6qjB,GAAc,IAAI7qjB,IAAOhrJ,GAAS81sB,GAAiBz6U,GAAS,IAC/K,OAAO,IAAI06U,IAAkCC,eAAevM,GAAQ73mB,GAAa0gnB,GAAKoD,GAAgBC,GAAgBC,GAAgBC,GAAa71sB,GAAS81sB,GAAiBz6U,GAChL,CACD,MAAM06U,GACFC,eAAevM,GAAQ73mB,GAAa0gnB,GAAKoD,GAAgBC,GAAgBC,GAAgBC,GAAa71sB,GAAS81sB,GAAiBz6U,GAAS,IACrIy6U,GAAkBA,IAAmB,IAAIV,GACzC,MAAM3jsB,GAAU,IAAIwksB,GAAyBxM,GAAQ73mB,GAAakknB,GAAiBJ,GAAgBC,GAAgBt6U,GAAQ,IAC3H5pX,GAAQzR,QAAUA,GAClB,MAAMk+B,GAAQl+B,GAAQk+B,MAAQuuqB,GAAmBzssB,GAAQk+B,OAAS,EAClEzsB,GAAQyksB,gBAAgBC,cAAcj4qB,IACtCzsB,GAAQyksB,gBAAgBrinB,UAAU,CAAC+hnB,IAAiB,KAAMnksB,GAAQ4pX,OAAQr7X,IAC1EwusB,GAAax0sB,KAAMs4sB,GAAK7gsB,IAExB,MAAM2ksB,GAAY3ksB,GAAQ2ksB,UAAU9msB,OAAO+msB,IAAYA,GAASC,qBAKhE,GAAIF,GAAU97sB,QAAUu7sB,GAAY5tsB,KAAM,CACtC,IAAIsusB,GACJ,QAAS/msB,GAAI4msB,GAAU97sB,OAAS,EAAGkV,IAAK,EAAGA,KAAK,CAC5C,MAAM6msB,GAAWD,GAAU5msB,IAC3B,GAAI6msB,GAAS3zsB,UAAYkvF,GAAa,CAClC2knB,GAAmBF,GACnB,KACH,CACJ,CACGE,KAAqBA,GAAiBC,2BACtCD,GAAiB1inB,UAAU,CAACginB,IAAc,KAAMpksB,GAAQ4pX,OAAQr7X,GAEvE,CACD,OAAOo2sB,GAAU97sB,OACb87sB,GAAU/6sB,IAAIg7sB,IAAYA,GAASL,kBACnC,CAAChB,GAA0BpjnB,GAAa,GAAI,GAAI,GAAI,EAAG1zD,GAAO,IAAI,GACzE,CACDwwqB,aAAa4D,GAAK7gsB,IAEjB,CACDk9rB,WAAW2D,GAAK7gsB,IAEf,CACDm9rB,gBAAgB0D,GAAK7gsB,IAEpB,CACD09rB,kBAAkBmD,GAAK7gsB,IACnB,MAAMglsB,GAAsBhlsB,GAAQqksB,gBAAgB/7rB,IAAItI,GAAQ/O,SAChE,GAAI+zsB,GAAqB,CACrB,MAAMC,GAAejlsB,GAAQklsB,iBAAiBrE,GAAItysB,SAC5CikJ,GAAYxyI,GAAQyksB,gBAAgB9E,YACpCvtjB,GAAU7pJ,KAAK48sB,sBAAsBH,GAAqBC,GAAcA,GAAa12sB,SACvFikJ,IAAaJ,IAGbpyI,GAAQolsB,yBAAyBhzjB,GAExC,CACDpyI,GAAQ6spB,aAAeg0C,EAC1B,CACDlD,gBAAgBkD,GAAK7gsB,IACjB,MAAMilsB,GAAejlsB,GAAQklsB,iBAAiBrE,GAAItysB,SAClD02sB,GAAaG,2BACb78sB,KAAKk1sB,eAAeoD,GAAI3trB,UAAW+xrB,IACnCjlsB,GAAQolsB,yBAAyBH,GAAaR,gBAAgB9E,aAC9D3/rB,GAAQ6spB,aAAeg0C,EAC1B,CACDsE,sBAAsBvB,GAAc5jsB,GAASzR,IAEzC,IAAIiysB,GADcxgsB,GAAQyksB,gBAAgB9E,YAI1C,MAAMxsrB,GAA+B,MAApB5kB,GAAQ4kB,SAAmB6nrB,GAAmBzssB,GAAQ4kB,UAAY,KAC7EsZ,GAAyB,MAAjBl+B,GAAQk+B,MAAgBuuqB,GAAmBzssB,GAAQk+B,OAAS,KAC1E,OAAiB,IAAbtZ,IACAywrB,GAAa5qsB,QAAQqssB,KACjB,MAAMC,GAAqBtlsB,GAAQulsB,4BAA4BF,GAAalyrB,GAAUsZ,IACtF+zqB,GACIvjrB,KAAK7Z,IAAIo9rB,GAAc8E,GAAmBnyrB,SAAWmyrB,GAAmB74qB,MAAxE,GAGL+zqB,EACV,CACD/C,eAAeoD,GAAK7gsB,IAChBA,GAAQiuJ,cAAc4yiB,GAAItysB,SAAS,GACnCwusB,GAAax0sB,KAAMs4sB,GAAI3trB,UAAWlT,IAClCA,GAAQ6spB,aAAeg0C,EAC1B,CACDzD,cAAcyD,GAAK7gsB,IACf,MAAMwlsB,GAAkBxlsB,GAAQwlsB,gBAChC,IAAIzpsB,GAAMiE,GACV,MAAMzR,GAAUsysB,GAAItysB,QACpB,GAAIA,KAAYA,GAAQuiX,QAAUviX,GAAQk+B,SACtC1wB,GAAMiE,GAAQklsB,iBAAiB32sB,IAC/BwN,GAAIqpsB,2BACiB,MAAjB72sB,GAAQk+B,OAAe,CACM,GAAzB1wB,GAAI8wpB,aAAa7lpB,OACjBjL,GAAI0osB,gBAAgBgB,wBACpB1psB,GAAI8wpB,aAAe64C,IAEvB,MAAMj5qB,GAAQuuqB,GAAmBzssB,GAAQk+B,OACzC1wB,GAAI2osB,cAAcj4qB,GACrB,CAEDo0qB,GAAInzkB,MAAM7kI,SACVg4sB,GAAInzkB,MAAM10H,QAAQuyB,IAAKwxqB,GAAax0sB,KAAMgjC,GAAGxvB,KAE7CA,GAAI0osB,gBAAgBkB,wBAIhB5psB,GAAIypsB,gBAAkBA,IACtBzpsB,GAAIqpsB,4BAGZplsB,GAAQ6spB,aAAeg0C,EAC1B,CACDxD,WAAWwD,GAAK7gsB,IACZ,MAAM4lsB,GAAiB,GACvB,IAAIpF,GAAexgsB,GAAQyksB,gBAAgB9E,YAC3C,MAAMlzqB,GAAQo0qB,GAAItysB,SAAWsysB,GAAItysB,QAAQk+B,MAAQuuqB,GAAmB6F,GAAItysB,QAAQk+B,OAAS,EACzFo0qB,GAAInzkB,MAAM10H,QAAQuyB,KACd,MAAM05qB,GAAejlsB,GAAQklsB,iBAAiBrE,GAAItysB,SAC9Ck+B,IACAw4qB,GAAaP,cAAcj4qB,IAE/BswqB,GAAax0sB,KAAMgjC,GAAG05qB,IACtBzE,GAAevjrB,KAAK7Z,IAAIo9rB,GAAcyE,GAAaR,gBAAgB9E,aACnEiG,GAAerhsB,KAAK0gsB,GAAaR,gBAAjC,GAKJmB,GAAe5ssB,QAAQ4rsB,IAAY5ksB,GAAQyksB,gBAAgBoB,6BAA6BjB,KACxF5ksB,GAAQolsB,yBAAyB5E,IACjCxgsB,GAAQ6spB,aAAeg0C,EAC1B,CACDiF,aAAajF,GAAK7gsB,IACd,GAAI6gsB,GAAI34U,QAAS,CACb,MAAMk2R,GAAWyiD,GAAIziD,SAErB,OAAO88C,GADal7rB,GAAQ8wW,OAAS6rV,GAAkBv+C,GAAUp+oB,GAAQ8wW,OAAQ9wW,GAAQ4pX,QAAUw0R,GACjEp+oB,GAAQ4pX,OAC7C,CAEG,MAAO,CAAEz2W,SAAU0trB,GAAI1trB,SAAUsZ,MAAOo0qB,GAAIp0qB,MAAOF,OAAQs0qB,GAAIt0qB,OAEtE,CACD+wqB,aAAauD,GAAK7gsB,IACd,MAAM8zlB,GAAU9zlB,GAAQ8gsB,sBAAwBv4sB,KAAKu9sB,aAAajF,GAAI/sG,QAAS9zlB,IACzE4ksB,GAAW5ksB,GAAQyksB,gBACrB3wG,GAAQrnkB,QACRzsB,GAAQ+lsB,cAAcjyG,GAAQrnkB,OAC9Bm4qB,GAASa,yBAEb,MAAM3xrB,GAAQ+srB,GAAI/srB,MACA,GAAdA,GAAM9M,KACNze,KAAKg1sB,eAAezprB,GAAO9T,KAG3BA,GAAQ+lsB,cAAcjyG,GAAQ3glB,UAC9B5qB,KAAKi1sB,WAAW1prB,GAAO9T,IACvB4ksB,GAASe,yBAEb3lsB,GAAQ8gsB,sBAAwB,KAChC9gsB,GAAQ6spB,aAAeg0C,EAC1B,CACDrD,WAAWqD,GAAK7gsB,IACZ,MAAM4ksB,GAAW5ksB,GAAQyksB,gBACnB3wG,GAAU9zlB,GAAQ8gsB,uBAGnBhtG,IAAW8wG,GAASoB,6BACrBpB,GAASqB,eAEb,MAAM15qB,GAAUunkB,IAAWA,GAAQvnkB,QAAWs0qB,GAAIt0qB,OAC9Cs0qB,GAAIK,YACJ0D,GAASsB,eAAe35qB,IAGxBq4qB,GAASxinB,UAAUy+mB,GAAI5mrB,OAAQsS,GAAQvsB,GAAQ4pX,OAAQ5pX,GAAQzR,SAEnEyR,GAAQ6spB,aAAeg0C,EAC1B,CACDtD,eAAesD,GAAK7gsB,IAChB,MAAM8gsB,GAAwB9gsB,GAAQ8gsB,sBAChCtujB,GAAaxyI,GAAQyksB,gBAAiBtxrB,SACtCA,GAAW2trB,GAAsB3trB,SAEjCgzrB,GADenmsB,GAAQklsB,mBACMT,gBACnC0B,GAAc55qB,OAASu0qB,GAAsBv0qB,OAC7Cs0qB,GAAI5mrB,OAAOjhB,QAAQgK,KACf,MAAMkO,GAASlO,GAAKkO,QAAU,EAC9Bi1rB,GAAcC,YAAYl1rB,GAASiC,IACnCgzrB,GAAc/jnB,UAAUp/E,GAAKiX,OAAQjX,GAAKupB,OAAQvsB,GAAQ4pX,OAAQ5pX,GAAQzR,SAC1E43sB,GAAcR,uBAAd,GAIJ3lsB,GAAQyksB,gBAAgBoB,6BAA6BM,IAGrDnmsB,GAAQolsB,yBAAyB5yjB,GAAYr/H,IAC7CnT,GAAQ6spB,aAAeg0C,EAC1B,CACDjD,WAAWiD,GAAK7gsB,IAGZ,MAAMwyI,GAAYxyI,GAAQyksB,gBAAgB9E,YACpCpxsB,GAAWsysB,GAAItysB,SAAW,GAC1Bk+B,GAAQl+B,GAAQk+B,MAAQuuqB,GAAmBzssB,GAAQk+B,OAAS,EAC9DA,KAC+B,IAA9BzsB,GAAQ6spB,aAAa7lpB,MACJ,GAAbwrI,IAAkBxyI,GAAQyksB,gBAAgBuB,+BAC/ChmsB,GAAQyksB,gBAAgBgB,wBACxBzlsB,GAAQ6spB,aAAe64C,IAE3B,IAAIlF,GAAehujB,GACnB,MAAM6zjB,GAAOrmsB,GAAQi6rB,YAAY4G,GAAI3vsB,SAAU2vsB,GAAIqC,iBAAkBrC,GAAIn/pB,MAAOm/pB,GAAIkC,cAAax0sB,GAAQ8mB,SAAyBrV,GAAQ4pX,QAC1I5pX,GAAQsmsB,kBAAoBD,GAAKx9sB,OACjC,IAAI09sB,GAAsB,KAC1BF,GAAKrtsB,QAAQ,CAAC/H,GAAS8M,MACnBiC,GAAQyonB,kBAAoB1qnB,GAC5B,MAAMknsB,GAAejlsB,GAAQklsB,iBAAiBrE,GAAItysB,QAAS0C,IACvDw7B,IACAw4qB,GAAaP,cAAcj4qB,IAE3Bx7B,KAAY+O,GAAQ/O,UACpBs1sB,GAAsBtB,GAAaR,iBAEvC1H,GAAax0sB,KAAMs4sB,GAAI3trB,UAAW+xrB,IAIlCA,GAAaR,gBAAgBkB,wBAC7B,MAAMvzjB,GAAU6yjB,GAAaR,gBAAgB9E,YAC7Ca,GAAevjrB,KAAK7Z,IAAIo9rB,GAAcpujB,GAAvB,GAEnBpyI,GAAQyonB,kBAAoB,EAC5BzonB,GAAQsmsB,kBAAoB,EAC5BtmsB,GAAQolsB,yBAAyB5E,IAC7B+F,KACAvmsB,GAAQyksB,gBAAgBoB,6BAA6BU,IACrDvmsB,GAAQyksB,gBAAgBgB,yBAE5BzlsB,GAAQ6spB,aAAeg0C,EAC1B,CACDhD,aAAagD,GAAK7gsB,IACd,MAAMwmsB,GAAgBxmsB,GAAQwmsB,cACxBrvnB,GAAKn3E,GAAQyksB,gBACb3wG,GAAU+sG,GAAI/sG,QACd3glB,GAAW8J,KAAKsH,IAAIuvkB,GAAQ3glB,UAC5BszrB,GAAUtzrB,IAAYnT,GAAQsmsB,kBAAoB,GACxD,IAAI75qB,GAAQtZ,GAAWnT,GAAQyonB,kBAE/B,OADyB30B,GAAQ3glB,SAAW,EAAI,UAAY2glB,GAAQvnkB,YAE3D,UACDE,GAAQg6qB,GAAUh6qB,GAClB,UACC,OACDA,GAAQ+5qB,GAAcE,mBAG9B,MAAM9B,GAAW5ksB,GAAQyksB,gBACrBh4qB,IACAm4qB,GAASF,cAAcj4qB,IAE3B,MAAMk6qB,GAAe/B,GAASjF,YAC9B5C,GAAax0sB,KAAMs4sB,GAAI3trB,UAAWlT,IAClCA,GAAQ6spB,aAAeg0C,GAKvB2F,GAAcE,mBACTvvnB,GAAGwonB,YAAcgH,IAAiBxvnB,GAAGq7D,UAAYg0jB,GAAc/B,gBAAgBjyjB,UACvF,EAEL,MAAMkzjB,GAA6B,GACnC,MAAMlB,GACFn8sB,YAAYi3sB,GAASrusB,GAASozsB,GAAiBuC,GAAiBC,GAAiBj9U,GAAQ+6U,GAAWmC,IAChGv+sB,KAAK+2sB,QAAUA,GACf/2sB,KAAK0I,QAAUA,GACf1I,KAAK87sB,gBAAkBA,GACvB97sB,KAAKq+sB,gBAAkBA,GACvBr+sB,KAAKs+sB,gBAAkBA,GACvBt+sB,KAAKqhY,OAASA,GACdrhY,KAAKo8sB,UAAYA,GACjBp8sB,KAAKi+sB,cAAgB,KACrBj+sB,KAAKu4sB,sBAAwB,KAC7Bv4sB,KAAKskqB,aAAe64C,GACpBn9sB,KAAKi9sB,gBAAkB,EACvBj9sB,KAAKgG,QAAU,GACfhG,KAAKkgoB,kBAAoB,EACzBlgoB,KAAK+9sB,kBAAoB,EACzB/9sB,KAAKm+sB,mBAAqB,EAC1Bn+sB,KAAKk8sB,gBAAkBqC,IAAmB,IAAIC,GAAgBx+sB,KAAK+2sB,QAASrusB,GAAS,GACrF0zsB,GAAUpgsB,KAAKhc,KAAKk8sB,gBACvB,CACG3zV,aACA,OAAOvoX,KAAKgG,QAAQuiX,MACvB,CACD7iN,cAAc1/J,GAASy4sB,IACnB,IAAKz4sB,GACD,OACJ,MAAMsmI,GAAatmI,GACnB,IAAI04sB,GAAkB1+sB,KAAKgG,QAEA,MAAvBsmI,GAAW1hH,WACX8zrB,GAAgB9zrB,SAAW6nrB,GAAmBnmkB,GAAW1hH,WAErC,MAApB0hH,GAAWpoG,QACXw6qB,GAAgBx6qB,MAAQuuqB,GAAmBnmkB,GAAWpoG,QAE1D,MAAMy6qB,GAAYrykB,GAAWi8O,OAC7B,GAAIo2V,GAAW,CACX,IAAIC,GAAiBF,GAAgBn2V,OAChCq2V,KACDA,GAAiB5+sB,KAAKgG,QAAQuiX,OAAS,IAE3ClpW,OAAOsa,KAAKglrB,IAAWlusB,QAAQhJ,OACtBg3sB,KAAiBG,GAAex8sB,eAAeqF,OAChDm3sB,GAAen3sB,IAAQ2ssB,GAAkBuK,GAAUl3sB,IAAOm3sB,GAAgB5+sB,KAAKqhY,QAAvC,EAGnD,CACJ,CACDw9U,eACI,MAAM74sB,GAAU,GAChB,GAAIhG,KAAKgG,QAAS,CACd,MAAM84sB,GAAY9+sB,KAAKgG,QAAQuiX,OAC/B,GAAIu2V,GAAW,CACX,MAAMv2V,GAASviX,GAAQuiX,OAAY,GACnClpW,OAAOsa,KAAKmlrB,IAAWrusB,QAAQhJ,KAC3B8gX,GAAO9gX,IAAQq3sB,GAAUr3sB,KAEhC,CACJ,CACD,OAAOzB,EACV,CACD22sB,iBAAiB32sB,GAAU,KAAM0C,GAASq2sB,IACtC,MAAMlisB,GAASnU,IAAW1I,KAAK0I,QACzB+O,GAAU,IAAIwksB,GAAyBj8sB,KAAK+2sB,QAASl6rB,GAAQ7c,KAAK87sB,gBAAiB97sB,KAAKq+sB,gBAAiBr+sB,KAAKs+sB,gBAAiBt+sB,KAAKqhY,OAAQrhY,KAAKo8sB,UAAWp8sB,KAAKk8sB,gBAAgBxwB,KAAK7uqB,GAAQkisB,IAAW,IAC/MtnsB,UAAQ6spB,aAAetkqB,KAAKskqB,aAC5B7spB,GAAQ8gsB,sBAAwBv4sB,KAAKu4sB,sBACrC9gsB,GAAQzR,QAAUhG,KAAK6+sB,eACvBpnsB,GAAQiuJ,cAAc1/J,IACtByR,GAAQyonB,kBAAoBlgoB,KAAKkgoB,kBACjCzonB,GAAQsmsB,kBAAoB/9sB,KAAK+9sB,kBACjCtmsB,GAAQwmsB,cAAgBj+sB,KACxBA,KAAKi9sB,kBACExlsB,EACV,CACDolsB,yBAAyBkC,IACrB,YAAKz6C,aAAe64C,GACpBn9sB,KAAKk8sB,gBAAkBl8sB,KAAKk8sB,gBAAgBxwB,KAAK1rrB,KAAK0I,QAASq2sB,IAC/D/+sB,KAAKo8sB,UAAUpgsB,KAAKhc,KAAKk8sB,iBAClBl8sB,KAAKk8sB,eACf,CACDc,4BAA4BF,GAAalyrB,GAAUsZ,IAC/C,MAAM86qB,GAAiB,CACnBp0rB,SAAUA,IAA8BkyrB,GAAYlyrB,SACpDsZ,MAAOlkC,KAAKk8sB,gBAAgB9E,aAAelzqB,IAAwB,GAAK44qB,GAAY54qB,MACpFF,OAAQ,IAENnc,GAAU,IAAIo3rB,GAAmBj/sB,KAAK+2sB,QAAS+F,GAAYp0sB,QAASo0sB,GAAYn0f,UAAWm0f,GAAY7B,cAAe6B,GAAY5B,eAAgB8D,GAAgBlC,GAAYoC,yBACpL,YAAK9C,UAAUpgsB,KAAK6L,IACbm3rB,EACV,CACDxB,cAAcz6qB,IACV/iC,KAAKk8sB,gBAAgB2B,YAAY79sB,KAAKk8sB,gBAAgBtxrB,SAAWmY,GACpE,CACDo5qB,cAAcj4qB,IAENA,GAAQ,GACRlkC,KAAKk8sB,gBAAgBC,cAAcj4qB,GAE1C,CACDwtqB,YAAY/osB,GAAUgysB,GAAkBxhqB,GAAOqhqB,GAAa1trB,GAAUu0W,IAClE,IAAI9O,GAAU,GAId,GAHIioV,IACAjoV,GAAQv2W,KAAKhc,KAAK0I,SAElBC,GAASrI,OAAS,EAAG,CAErBqI,IADAA,GAAWA,GAAStI,QAAQk7sB,GAAmB,IAAMv7sB,KAAKq+sB,kBACtCh+sB,QAAQm7sB,GAAmB,IAAMx7sB,KAAKs+sB,iBAC1D,MAAMh4sB,GAAiB,GAAT6yC,GACd,IAAIlR,GAAWjoC,KAAK+2sB,QAAQrqrB,MAAM1sB,KAAK0I,QAASC,GAAUrC,IAC5C,IAAV6yC,KACAlR,GAAWkR,GAAQ,EAAIlR,GAASvmC,MAAMumC,GAAS3nC,OAAS64C,GAAOlR,GAAS3nC,QACpE2nC,GAASvmC,MAAM,EAAGy3C,KAE1Bo5U,GAAQv2W,QAAQisB,GACnB,CACD,OAAKnb,IAA8B,GAAlBylW,GAAQjyX,QACrB+gY,GAAOrlX,KAr5DnB,SAASmjsB,GAAax2sB,IAClB,OAAO,IAAI86mB,MAAc,MAA2CC,EAEvE,CAk5DuBy7F,IAET5sV,EACV,EAEL,MAAMisV,GACF1+sB,YAAYi3sB,GAASrusB,GAASuhJ,GAAWm1jB,IACrCp/sB,KAAK+2sB,QAAUA,GACf/2sB,KAAK0I,QAAUA,GACf1I,KAAKiqJ,UAAYA,GACjBjqJ,KAAKo/sB,6BAA+BA,GACpCp/sB,KAAK4qB,SAAW,EAChB5qB,KAAKq/sB,kBAAoB,IAAIrujB,IAC7BhxJ,KAAKs/sB,iBAAmB,IAAItujB,IAC5BhxJ,KAAKu/sB,WAAa,IAAIvujB,IACtBhxJ,KAAKw/sB,cAAgB,IAAIxujB,IACzBhxJ,KAAKy/sB,qBAAuB,IAAIzujB,IAChChxJ,KAAK0/sB,eAAiB,IAAI1ujB,IAC1BhxJ,KAAK2/sB,UAAY,IAAI3ujB,IACrBhxJ,KAAK4/sB,0BAA4B,KAC5B5/sB,KAAKo/sB,+BACNp/sB,KAAKo/sB,6BAA+B,IAAIpujB,KAE5ChxJ,KAAK6/sB,sBAAwB7/sB,KAAKo/sB,6BAA6Br/rB,IAAIrX,IAC9D1I,KAAK6/sB,wBACN7/sB,KAAK6/sB,sBAAwB7/sB,KAAKy/sB,qBAClCz/sB,KAAKo/sB,6BAA6B7rrB,IAAI7qB,GAAS1I,KAAKy/sB,uBAExDz/sB,KAAK8/sB,eACR,CACDxD,oBACI,OAAQt8sB,KAAKu/sB,WAAWtxsB,WACf,EACD,OAAO,OACN,EACD,OAAOjO,KAAKy9sB,4BAAL,QAEP,OAAO,EAElB,CACDA,4BACI,OAAOz9sB,KAAKs/sB,iBAAiBrxsB,KAAO,CACvC,CACGmpsB,kBACA,OAAOp3sB,KAAKiqJ,UAAYjqJ,KAAK4qB,QAChC,CACDuxrB,cAAcj4qB,IAKV,MAAM67qB,GAA2C,IAAzB//sB,KAAKu/sB,WAAWtxsB,MAAcjO,KAAK0/sB,eAAezxsB,KACtEjO,KAAK4qB,UAAYm1rB,IACjB//sB,KAAK69sB,YAAY79sB,KAAKo3sB,YAAclzqB,IAChC67qB,IACA//sB,KAAKk9sB,yBAITl9sB,KAAKiqJ,WAAa/lH,EAEzB,CACDwnpB,KAAKhjrB,GAAS0usB,IACV,YAAKgG,wBACE,IAAIoB,GAAgBx+sB,KAAK+2sB,QAASrusB,GAAS0usB,IAAep3sB,KAAKo3sB,YAAap3sB,KAAKo/sB,6BAC3F,CACDU,gBACQ9/sB,KAAKs/sB,mBACLt/sB,KAAKq/sB,kBAAoBr/sB,KAAKs/sB,kBAElCt/sB,KAAKs/sB,iBAAmBt/sB,KAAKu/sB,WAAWx/rB,IAAI/f,KAAK4qB,UAC5C5qB,KAAKs/sB,mBACNt/sB,KAAKs/sB,iBAAmB,IAAItujB,IAC5BhxJ,KAAKu/sB,WAAWhsrB,IAAIvzB,KAAK4qB,SAAU5qB,KAAKs/sB,kBAE/C,CACD5B,eACI19sB,KAAK4qB,UAziBqB,EA0iB1B5qB,KAAK8/sB,eACR,CACDjC,YAAY96qB,IACR/iC,KAAKo9sB,wBACLp9sB,KAAK4qB,SAAWmY,GAChB/iC,KAAK8/sB,eACR,CACDE,aAAavtiB,GAAMvqK,IACflI,KAAKy/sB,qBAAqBlsrB,IAAIk/I,GAAMvqK,IACpClI,KAAK6/sB,sBAAsBtsrB,IAAIk/I,GAAMvqK,IACrClI,KAAKw/sB,cAAcjsrB,IAAIk/I,GAAM,CAAE1vI,KAAM/iC,KAAKo3sB,YAAalvsB,UAC1D,CACDs0sB,0BACI,OAAOx8sB,KAAK4/sB,4BAA8B5/sB,KAAKs/sB,gBAClD,CACD3B,eAAe35qB,IACPA,IACAhkC,KAAKq/sB,kBAAkB9rrB,IAAI,SAAUyQ,IAQzC,QAAUyuI,GAAMvqK,MAAUlI,KAAK6/sB,sBAC3B7/sB,KAAK2/sB,UAAUpsrB,IAAIk/I,GAAMvqK,IAASqhe,MAClCvpe,KAAKs/sB,iBAAiB/rrB,IAAIk/I,GAAM82T,MAEpCvpe,KAAK4/sB,0BAA4B5/sB,KAAKs/sB,gBACzC,CACDzlnB,UAAUnpF,GAAOszB,GAAQq9V,GAAQr7X,IACzBg+B,IACAhkC,KAAKq/sB,kBAAkB9rrB,IAAI,SAAUyQ,IAEzC,MAAMukV,GAAUviX,IAAWA,GAAQuiX,QAAW,GACxC72V,GA+Id,SAASuurB,GAAcvvsB,GAAO2wT,IAC1B,MAAM3vS,GAAS,IAAIs/H,IACnB,IAAIkvjB,GACJxvsB,UAAMD,QAAQ5O,KACV,GAAc,MAAVA,GAAe,CACfq+sB,GAAgBA,IAAiB7+Y,GAAU1nS,OAC3C,QAAS84I,MAAQytiB,GACbxurB,GAAO6B,IAAIk/I,GAAM82T,KAExB,MAEG+pO,GAAWzxsB,GAAO6vB,GAAR,GAGXA,EACV,CA9JsBuurB,CAAcvvsB,GAAO1Q,KAAK6/sB,uBACzC,QAAUptiB,GAAMvqK,MAAUwpB,GAAQ,CAC9B,MAAMqpL,GAAMq5f,GAAkBlssB,GAAOqgX,GAAQ8Y,IAC7CrhY,KAAK0/sB,eAAensrB,IAAIk/I,GAAMsoC,IACzB/6M,KAAKy/sB,qBAAqBxkrB,IAAIw3I,KAC/BzyK,KAAK2/sB,UAAUpsrB,IAAIk/I,GAAMzyK,KAAK6/sB,sBAAsB9/rB,IAAI0yJ,KAAS82T,MAErEvpe,KAAKggtB,aAAavtiB,GAAMsoC,GAC3B,CACJ,CACDqigB,wBACoC,GAA5Bp9sB,KAAK0/sB,eAAezxsB,OAExBjO,KAAK0/sB,eAAejvsB,QAAQ,CAACsqM,GAAKtoC,MAC9BzyK,KAAKs/sB,iBAAiB/rrB,IAAIk/I,GAAMsoC,GAAhC,GAEJ/6M,KAAK0/sB,eAAevkrB,QACpBn7B,KAAKy/sB,qBAAqBhvsB,QAAQ,CAACsqM,GAAKtoC,MAC/BzyK,KAAKs/sB,iBAAiBrkrB,IAAIw3I,KAC3BzyK,KAAKs/sB,iBAAiB/rrB,IAAIk/I,GAAMsoC,GAAhC,GAGX,CACDmigB,wBACI,QAAUzqiB,GAAMsoC,MAAQ/6M,KAAKy/sB,qBACzBz/sB,KAAK0/sB,eAAensrB,IAAIk/I,GAAMsoC,IAC9B/6M,KAAKggtB,aAAavtiB,GAAMsoC,GAE/B,CACDolgB,mBACI,OAAOngtB,KAAKu/sB,WAAWx/rB,IAAI/f,KAAK4qB,SACnC,CACG24H,iBACA,MAAMA,GAAa,GACnB,QAASkvB,MAAQzyK,KAAKs/sB,iBAClB/7jB,GAAWvnI,KAAKy2J,IAEpB,OAAOlvB,EACV,CACD+5jB,6BAA6BjB,IACzBA,GAASmD,cAAc/usB,QAAQ,CAAC2vsB,GAAU3tiB,MACtC,MAAM4tiB,GAAWrgtB,KAAKw/sB,cAAcz/rB,IAAI0yJ,MACnC4tiB,IAAYD,GAASr9qB,KAAOs9qB,GAASt9qB,OACtC/iC,KAAKggtB,aAAavtiB,GAAM2tiB,GAASl4sB,MAAjC,EAGX,CACD8zsB,iBACIh8sB,KAAKo9sB,wBACL,MAAMnC,GAAgB,IAAI3/qB,IACpB4/qB,GAAiB,IAAI5/qB,IACrBwrB,GAAmC,IAAzB9mD,KAAKu/sB,WAAWtxsB,MAAgC,IAAlBjO,KAAK4qB,SACnD,IAAI01rB,GAAiB,GACrBtgtB,KAAKu/sB,WAAW9usB,QAAQ,CAAC8vsB,GAAUx9qB,MAC/B,MAAMy9qB,GAAgBlN,GAAWiN,GAAU,IAAIvvjB,IAAOhxJ,KAAK2/sB,WAC3Da,GAAc/vsB,QAAQ,CAACvI,GAAOuqK,MACtBvqK,KAAUslmB,KACVytG,GAAcjvsB,IAAIymK,IAEbvqK,KAAUqhe,MACf2xO,GAAelvsB,IAAIymK,GAAnB,GAGH3rH,IACD05pB,GAAcjtrB,IAAI,SAAUwP,GAAO/iC,KAAK4qB,UAE5C01rB,GAAetksB,KAAKwksB,GAApB,GAEJ,MAAMC,GAAWxF,GAAchtsB,KAAO+2jB,GAAgBi2I,GAAcngrB,UAAY,GAC1E4lrB,GAAYxF,GAAejtsB,KAAO+2jB,GAAgBk2I,GAAepgrB,UAAY,GAEnF,GAAIgsB,GAAS,CACT,MAAM65pB,GAAML,GAAe,GACrBM,GAAM,IAAI5vjB,IAAI2vjB,IACpBA,GAAIptrB,IAAI,SAAU,GAClBqtrB,GAAIrtrB,IAAI,SAAU,GAClB+srB,GAAiB,CAACK,GAAKC,GAC1B,CACD,OAAO5F,GAA0Bh7sB,KAAK0I,QAAS43sB,GAAgBG,GAAUC,GAAW1gtB,KAAK4qB,SAAU5qB,KAAKiqJ,UAAWjqJ,KAAKgkC,QAAQ,EACnI,EAEL,MAAMi7qB,WAA2BT,GAC7B1+sB,YAAY2vsB,GAAQ/msB,GAASigN,GAAWsyf,GAAeC,GAAgB3vG,GAASs1G,IAA2B,GACvG5isB,MAAMwxrB,GAAQ/msB,GAAS6imB,GAAQrnkB,OAC/BlkC,KAAK2oN,UAAYA,GACjB3oN,KAAKi7sB,cAAgBA,GACrBj7sB,KAAKk7sB,eAAiBA,GACtBl7sB,KAAK6gtB,yBAA2BA,GAChC7gtB,KAAKurmB,QAAU,CAAE3glB,SAAU2glB,GAAQ3glB,SAAUsZ,MAAOqnkB,GAAQrnkB,MAAOF,OAAQunkB,GAAQvnkB,OACtF,CACDs4qB,oBACI,OAAOt8sB,KAAK2oN,UAAUroN,OAAS,CAClC,CACD07sB,iBACI,IAAIrzf,GAAY3oN,KAAK2oN,WACfzkL,SAAOtZ,YAAUoZ,WAAWhkC,KAAKurmB,QACvC,GAAIvrmB,KAAK6gtB,0BAA4B38qB,GAAO,CACxC,MAAM48qB,GAAe,GACf70G,GAAYrhlB,GAAWsZ,GACvB68qB,GAAc78qB,GAAQ+nkB,GAEtB+0G,GAAmB1N,GAAW3qf,GAAU,IAC9Cq4f,GAAiBztrB,IAAI,SAAU,GAC/ButrB,GAAa9ksB,KAAKglsB,IAClB,MAAMC,GAAmB3N,GAAW3qf,GAAU,IAC9Cs4f,GAAiB1trB,IAAI,SAAU2trB,GAAYH,KAC3CD,GAAa9ksB,KAAKilsB,IAgBlB,MAAM9nqB,GAAQwvK,GAAUroN,OAAS,EACjC,QAASkV,GAAI,EAAGA,IAAK2jC,GAAO3jC,KAAK,CAC7B,IAAIu6rB,GAAKuD,GAAW3qf,GAAUnzM,KAC9B,MACM2rsB,GAAiBj9qB,GADL6rqB,GAAGhwrB,IAAI,UACkB6K,GAC3CmlrB,GAAGx8qB,IAAI,SAAU2trB,GAAYC,GAAiBl1G,KAC9C60G,GAAa9ksB,KAAK+zrB,GACrB,CAEDnlrB,GAAWqhlB,GACX/nkB,GAAQ,EACRF,GAAS,GACT2kL,GAAYm4f,EACf,CACD,OAAO9F,GAA0Bh7sB,KAAK0I,QAASigN,GAAW3oN,KAAKi7sB,cAAej7sB,KAAKk7sB,eAAgBtwrB,GAAUsZ,GAAOF,IAAQ,EAC/H,EAEL,SAASk9qB,GAAYv4rB,GAAQy4rB,GAAgB,GACzC,MAAMC,GAAO3srB,KAAKwH,IAAI,GAAIklrB,GAAgB,GAC1C,OAAO1srB,KAAK7E,MAAMlH,GAAS04rB,IAAQA,EACtC;;;;;;;;AAyDD,MAAMC;;;;;;;;AAqBN,MAAMC,GAAuB,IAAIjmrB,IAAI,CACjC,QACA,SACA,WACA,YACA,WACA,YACA,OACA,MACA,SACA,QACA,WACA,eACA,gBACA,aACA,cACA,gBACA,eACA,YACA,aACA,eACA,cACA,eACA,cACA,iBACA,kBACA,mBACA,oBACA,aACA,gBAEJ,MAAMkmrB,WAAqCF,GACvCpR,sBAAsBl3iB,GAAcqoO,IAChC,OAAOwyU,GAAoB76iB,GAC9B,CACDm3iB,oBAAoBsR,GAAsBC,GAAoBx5sB,GAAOm5X,IACjE,IAAI9mW,GAAO,GACX,MAAMonrB,GAASz5sB,GAAMzG,WAAWqQ,OAChC,GAAIyvsB,GAAqBtmrB,IAAIymrB,KAAiC,IAAVx5sB,IAAyB,MAAVA,GAC/D,GAAqB,iBAAVA,GACPqyB,GAAO,SAEN,CACD,MAAMqnrB,GAAoB15sB,GAAM2qB,MAAM,0BAClC+urB,IAAoD,GAA/BA,GAAkB,GAAGthtB,QAC1C+gY,GAAOrlX,KAxzE3B,SAAS6lsB,GAAoBJ,GAAsBv5sB,IAC/C,OAAO,IAAIu7mB,MAAc,MAAoDC,EAChF,CAszE+Bm+F,GAEnB,CAEL,OAAOF,GAASpnrB,EACnB;;;;;;;OAUL,SAASunrB,GAA4Bp5sB,GAAS8nsB,GAAaC,GAAWC,GAASqR,GAAqBC,GAAYC,GAAU7F,GAAW8F,GAAiBjH,GAAeC,GAAgBjvG,GAAW5qO,IAC5L,MAAO,CACH5iX,KAAM,EACN/V,WACA8nsB,eACAuR,uBACAtR,aACAuR,cACAtR,WACAuR,YACA7F,aACA8F,mBACAjH,iBACAC,kBACAjvG,aACA5qO,UAEP,CAED,MAAMq7C,GAAe,GACrB,MAAMylS,GACFritB,YAAYsitB,GAAc9J,GAAK+J,IAC3BritB,KAAKoitB,aAAeA,GACpBpitB,KAAKs4sB,IAAMA,GACXt4sB,KAAKqitB,aAAeA,EACvB,CACDxvrB,MAAMumS,GAActzC,GAAWp9Q,GAAS6/W,IACpC,OA8FR,SAAS+5V,GAA0BC,GAAUnpZ,GAActzC,GAAWp9Q,GAAS6/W,IAC3E,OAAOg6V,GAAS/moB,KAAKhrD,IAAMA,GAAG4oS,GAActzC,GAAWp9Q,GAAS6/W,IACnE,CAhGc+5V,CAA0BtitB,KAAKs4sB,IAAIP,SAAU3+Y,GAActzC,GAAWp9Q,GAAS6/W,GACzF,CACDi6V,YAAYC,GAAWl6V,GAAQ8Y,IAC3B,IAAIqhV,GAAS1itB,KAAKqitB,aAAatisB,IAAI,KACnC,YAAkBhL,IAAd0tsB,KACAC,GAAS1itB,KAAKqitB,aAAatisB,IAAI0isB,IAAWhhtB,aAAeihtB,IAEtDA,GAASA,GAAOF,YAAYj6V,GAAQ8Y,IAAU,IAAIrwO,GAC5D,CACD9kI,MAAMujrB,GAAQ/msB,GAAS0wT,GAActzC,GAAW41b,GAAgBC,GAAgBjomB,GAAgBivmB,GAAa7G,GAAiB8G,IAC1H,MAAMvhV,GAAS,GACTwhV,GAA4B7itB,KAAKs4sB,IAAItysB,SAAWhG,KAAKs4sB,IAAItysB,QAAQuiX,QAAUm0D,GAC3EomS,GAAyBpvmB,IAAkBA,GAAe60Q,QAAUm0D,GACpEqmS,GAAqB/itB,KAAKwitB,YAAYppZ,GAAc0pZ,GAAwBzhV,IAC5E2hV,GAAsBL,IAAeA,GAAYp6V,QAAUm0D,GAC3DumS,GAAkBjjtB,KAAKwitB,YAAY18b,GAAWk9b,GAAqB3hV,IACnE6gV,GAAkB,IAAI5mrB,IACtB4nrB,GAAc,IAAIlyjB,IAClBmyjB,GAAe,IAAInyjB,IACnBoyjB,GAA0B,SAAdt9b,GACZ/2M,GAAmB,CACrBw5S,OAAQ86V,GAAmBL,GAAqBH,IAChD3+qB,MAAOlkC,KAAKs4sB,IAAItysB,SAASk+B,OAEvBk4qB,GAAYwG,GACd,GACAnH,GAAwBhM,GAAQ/msB,GAAS1I,KAAKs4sB,IAAI3trB,UAAW+wrB,GAAgBC,GAAgBoH,GAAoBE,GAAiBl0oB,GAAkB+soB,GAAiBz6U,IACzK,IAAI4qO,GAAY,EAIhB,GAHAmwG,GAAU3rsB,QAAQm+E,KACdq9gB,GAAYv3kB,KAAK7Z,IAAI+zE,GAAGhkE,SAAWgkE,GAAG1qD,MAAO+nkB,GAAjC,GAEZ5qO,GAAO/gY,OACP,OAAOwhtB,GAA4Bp5sB,GAAS1I,KAAKoitB,aAAchpZ,GAActzC,GAAWs9b,GAAWL,GAAoBE,GAAiB,GAAI,GAAIC,GAAaC,GAAcl3G,GAAW5qO,IAE1L+6U,GAAU3rsB,QAAQm+E,KACd,MAAM00nB,GAAM10nB,GAAGlmF,QACT+3sB,GAAW9P,GAAqBuS,GAAaI,GAAK,IAAIhorB,KAC5DszD,GAAGqsnB,cAAcxqsB,QAAQgiK,IAAQguiB,GAASz0sB,IAAIymK,KAC9C,MAAMiuiB,GAAY/P,GAAqBwS,GAAcG,GAAK,IAAIhorB,KAC9DszD,GAAGssnB,eAAezqsB,QAAQgiK,IAAQiuiB,GAAU10sB,IAAIymK,KAC5C6wiB,KAAQ56sB,IACRw5sB,GAAgBl2sB,IAAIs3sB,GAApB,GAMR,MAAMC,GAAsBv+I,GAAgBk9I,GAAgBpnrB,UAC5D,OAAOgnrB,GAA4Bp5sB,GAAS1I,KAAKoitB,aAAchpZ,GAActzC,GAAWs9b,GAAWL,GAAoBE,GAAiB7G,GAAWmH,GAAqBL,GAAaC,GAAcl3G,GACtM,EAgDL,SAASo3G,GAAmBG,GAAYlopB,IACpC,MAAM1pC,GAASuhrB,GAAQ73oB,IACvB,UAAW1hC,MAAO4prB,GACVA,GAAWphtB,eAAew3B,KAA2B,MAAnB4prB,GAAW5prB,MAC7ChI,GAAOgI,IAAO4prB,GAAW5prB,KAGjC,OAAOhI,EACV,CACD,MAAM6xrB,GACF3jtB,YAAY4xB,GAAQgyrB,GAAehU,IAC/B1vsB,KAAK0xB,OAASA,GACd1xB,KAAK0jtB,cAAgBA,GACrB1jtB,KAAK0vsB,WAAaA,EACrB,CACD8S,YAAYj6V,GAAQ8Y,IAChB,MAAMw6U,GAAc,IAAI7qjB,IAClB2yjB,GAAiBxQ,GAAQnzsB,KAAK0jtB,eACpCrksB,cAAOsa,KAAK4uV,IAAQ93W,QAAQmpB,KACxB,MAAM1xB,GAAQqgX,GAAO3uV,IACP,OAAV1xB,KACAy7sB,GAAe/prB,IAAO1xB,MAG9BlI,KAAK0xB,OAAOA,OAAOjhB,QAAQvI,KACF,iBAAVA,IACPA,GAAMuI,QAAQ,CAACsqM,GAAKtoC,MACZsoC,KACAA,GAAMq5f,GAAkBr5f,GAAK4ogB,GAAgBtiV,KAEjD,MAAMs8M,GAAiB39kB,KAAK0vsB,WAAWQ,sBAAsBz9hB,GAAM4uN,IACnEtmL,GAAM/6M,KAAK0vsB,WAAWS,oBAAoB19hB,GAAMkra,GAAgB5iY,GAAKsmL,IACrEw6U,GAAYtorB,IAAIoqjB,GAAgB5iY,GAAhC,EANJ,GAUD8ggB,EACV,EAML,MAAM+H,GACF9jtB,YAAY2H,GAAM6wsB,GAAKuL,IACnB7jtB,KAAKyH,KAAOA,GACZzH,KAAKs4sB,IAAMA,GACXt4sB,KAAK6jtB,YAAcA,GACnB7jtB,KAAK8jtB,oBAAsB,GAC3B9jtB,KAAK43H,OAAS,IAAIo5B,IAClBsnjB,GAAI1glB,OAAOnnH,QAAQ6nsB,KACf,MAAMoL,GAAiBpL,GAAItysB,SAAWsysB,GAAItysB,QAAQuiX,QAAW,GAC7DvoX,KAAK43H,OAAOrkG,IAAI+krB,GAAI7wsB,KAAM,IAAIg8sB,GAAqBnL,GAAI/srB,MAAOm4rB,GAAeG,IAA7E,GAEJE,GAAkB/jtB,KAAK43H,OAAQ,OAAQ,KACvCmslB,GAAkB/jtB,KAAK43H,OAAQ,QAAS,KACxC0glB,GAAI1zoB,YAAYn0D,QAAQ6nsB,KACpBt4sB,KAAK8jtB,oBAAoB9nsB,KAAK,IAAImmsB,GAA2B16sB,GAAM6wsB,GAAKt4sB,KAAK43H,QAA7E,GAEJ53H,KAAKgktB,mBAab,SAASC,GAAyBzT,GAAa54kB,GAAQ83kB,IAWnD,OAAO,IAAIyS,GAA2B3R,GARnB,CACf/xrB,KAAM,EACNkM,UAHc,CAAElM,KAAM,EAAwC0mH,MAAO,GAAIn/H,QAAS,MAIlF+xsB,SALa,CAAC,CAACtH,GAAWC,MAAY,GAMtC1qsB,QAAS,KACTqxsB,WAAY,EACZC,SAAU,GAEiD1/kB,GAClE,CAzBiCqslB,CAAyBx8sB,GAAMzH,KAAK43H,OAAQ53H,KAAK6jtB,YAC9E,CACGK,sBACA,OAAOlktB,KAAKs4sB,IAAIjB,WAAa,CAChC,CACD8M,gBAAgB/qZ,GAActzC,GAAWp9Q,GAAS6/W,IAE9C,OADcvoX,KAAK8jtB,oBAAoBz+rB,KAAKjd,IAAKA,GAAEyqB,MAAMumS,GAActzC,GAAWp9Q,GAAS6/W,MAC3E,IACnB,CACD67V,YAAYhrZ,GAAcmvD,GAAQ8Y,IAC9B,OAAOrhY,KAAKgktB,mBAAmBxB,YAAYppZ,GAAcmvD,GAAQ8Y,GACpE,EAeL,SAAS0iV,GAAkBM,GAAUlgF,GAAMC,IACnCigF,GAASpprB,IAAIkpmB,IACRkgF,GAASpprB,IAAImpmB,KACdigF,GAAS9wrB,IAAI6wmB,GAAMigF,GAAStksB,IAAIoknB,KAG/BkgF,GAASpprB,IAAImpmB,KAClBigF,GAAS9wrB,IAAI4wmB,GAAMkgF,GAAStksB,IAAIqknB,IAEvC;;;;;;;OASD,MAAMkgF,GAAwB,IAAIlJ,GAClC,MAAMmJ,GACFzktB,YAAY0ktB,GAAUzN,GAAS8M,IAC3B7jtB,KAAKwktB,SAAWA,GAChBxktB,KAAK+2sB,QAAUA,GACf/2sB,KAAK6jtB,YAAcA,GACnB7jtB,KAAKyktB,YAAc,IAAIzzjB,IACvBhxJ,KAAK0ktB,aAAe,IAAI1zjB,IACxBhxJ,KAAK+smB,QAAU,EAClB,CACDnpkB,SAAS1b,GAAIywX,IACT,MAAMtX,GAAS,GACTw1U,GAAW,GACXyB,GAAM1B,GAAkB52sB,KAAK+2sB,QAASp+T,GAAUtX,GAAQw1U,IAC9D,GAAIx1U,GAAO/gY,OACP,MAz/EZ,SAASqktB,GAAetjV,IACpB,OAAO,IAAIoiP,MAAc,MAAiDC,EAE7E,CAs/EiBihG,GAGF9N,GAASv2sB,OAGbN,KAAKyktB,YAAYlxrB,IAAIrL,GAAIowrB,GAEhC,CACDsM,aAAapvsB,GAAGm6rB,GAAWC,IACvB,MAAMlnsB,GAAU8M,GAAE9M,QACZigN,GAAY6mf,GAAqBxvsB,KAAK+2sB,QAAS/2sB,KAAK6jtB,YAAan7sB,EAAS8M,GAAEmzM,UAAWgnf,GAAWC,IACxG,OAAO5vsB,KAAK+2sB,QAAQt7rB,QAAQ/S,GAASigN,GAAWnzM,GAAEoV,SAAUpV,GAAE0uB,MAAO1uB,GAAEwuB,OAAQ,IAAI,EACtF,CACD7X,OAAOjE,GAAIxf,GAAS1C,GAAU,IAC1B,MAAMq7X,GAAS,GACTi3U,GAAMt4sB,KAAKyktB,YAAY1ksB,IAAImI,IACjC,IAAImzrB,GACJ,MAAMwJ,GAAgB,IAAI7zjB,IAY1B,GAXIsnjB,IACA+C,GAAeI,GAAwBz7sB,KAAK+2sB,QAASrusB,GAAS4vsB,GAAKnG,GAAiBC,GAAiB,IAAIphjB,IAAO,IAAIA,IAAOhrJ,GAASs+sB,GAAuBjjV,IAC3Jg6U,GAAa5qsB,QAAQq0sB,KACjB,MAAMpzrB,GAASi/qB,GAAqBkU,GAAeC,GAAKp8sB,QAAS,IAAIsoJ,KACrE8zjB,GAAK5J,eAAezqsB,QAAQgiK,IAAQ/gJ,GAAO6B,IAAIk/I,GAAM,MAArD,KAIJ4uN,GAAOrlX,KAhhFnB,SAAS+osB,KACL,OAAO,IAAIthG,MAAc,MAA4DC,EACxF,CA8gFuBqhG,IACZ1J,GAAe,IAEfh6U,GAAO/gY,OACP,MAjhFZ,SAAS0ktB,GAAsB3jV,IAC3B,OAAO,IAAIoiP,MAAc,MAAqDC,EAEjF,CA8gFiBshG,GAEVH,GAAcp0sB,QAAQ,CAACihB,GAAQhpB,MAC3BgpB,GAAOjhB,QAAQ,CAAC0uK,GAAG1M,MACf/gJ,GAAO6B,IAAIk/I,GAAMzyK,KAAK+2sB,QAAQjF,aAAappsB,GAAS+pK,GAAM82T,MAA1D,EADJ,GAIJ,MAIMv8c,GAASsirB,GAJC+L,GAAah6sB,IAAImU,KAC7B,MAAMkc,GAASmzrB,GAAc9ksB,IAAIvK,GAAE9M,SACnC,OAAO1I,KAAK4ktB,aAAapvsB,GAAG,IAAIw7I,IAAOt/H,GAAhC,IAGX,YAAKgzrB,aAAanxrB,IAAIrL,GAAI8E,IAC1BA,GAAOo/kB,UAAU,IAAMpsmB,KAAKmtB,QAAQjF,KACpCloB,KAAK+smB,QAAQ/wlB,KAAKgR,IACXA,EACV,CACDG,QAAQjF,IACJ,MAAM8E,GAAShtB,KAAKiltB,WAAW/8rB,IAC/B8E,GAAOG,UACPntB,KAAK0ktB,aAAaxprB,OAAOhT,IACzB,MAAM1b,GAAQxM,KAAK+smB,QAAQ9rmB,QAAQ+rB,IAC/BxgB,IAAS,GACTxM,KAAK+smB,QAAQlmjB,OAAOr6C,GAAO,EAElC,CACDy4sB,WAAW/8rB,IACP,MAAM8E,GAAShtB,KAAK0ktB,aAAa3ksB,IAAImI,IACrC,IAAK8E,GACD,MA1iFZ,SAASk4rB,GAAch9rB,IACnB,OAAO,IAAIu7lB,MAAc,MAA4CC,EACxE,CAwiFiBwhG,GAEV,OAAOl4rB,EACV,CACDld,OAAOoY,GAAIxf,GAASotB,GAAWrjB,IAE3B,MAAM0ysB,GAAY5U,GAAmB7nsB,GAAS,GAAI,GAAI,IACtD2nsB,UAAerwsB,KAAKiltB,WAAW/8rB,IAAK4N,GAAWqvrB,GAAW1ysB,IACnD,MACV,CACD4vQ,QAAQn6P,GAAIxf,GAAS25Q,GAASjoQ,IAC1B,GAAe,YAAXioQ,GAEA,YADAriR,KAAK4jC,SAAS1b,GAAI9N,GAAK,IAG3B,GAAe,UAAXioQ,GAAqB,CACrB,MAAMr8Q,GAAWoU,GAAK,IAAM,GAE5B,YADApa,KAAKmsB,OAAOjE,GAAIxf,GAAS1C,GAE5B,CACD,MAAMgnB,GAAShtB,KAAKiltB,WAAW/8rB,IAC/B,OAAQm6P,QACC,OACDr1P,GAAOC,OACP,UACC,QACDD,GAAO22V,QACP,UACC,QACD32V,GAAO+6C,QACP,UACC,UACD/6C,GAAOw/kB,UACP,UACC,SACDx/kB,GAAOoX,SACP,UACC,OACDpX,GAAOuxI,OACP,UACC,cACDvxI,GAAO6iM,YAAY99L,WAAW3X,GAAK,KACnC,UACC,UACDpa,KAAKmtB,QAAQjF,IAGxB;;;;;;;OAUL,MAAMk9rB,GAAmB,oBAEnBC,GAAqB,sBAIrBC,GAAqB,GACrBC,GAAqB,CACvBC,YAAa,GACbC,eAAe,EACfC,YAAY,EACZrhP,cAAc,EACdshP,sBAAsB,GAEpBC,GAA6B,CAC/BJ,YAAa,GACbE,YAAY,EACZD,eAAe,EACfphP,cAAc,EACdshP,sBAAsB,GAEpBE,GAAe,eACrB,MAAMC,GACFhmtB,YAAY4Q,GAAO80sB,GAAc,IAC7BxltB,KAAKwltB,YAAcA,GACnB,MAAM38P,GAAQn4c,IAASA,GAAMtO,eAAe,SACtC8F,GAAQ2gd,GAAQn4c,GAAMxI,MAAWwI,GAEvC,GADA1Q,KAAKkI,MA+zCb,SAAS69sB,GAAsB79sB,IAI3B,OAAOA,IAAwB,IAClC,CAp0CoB69sB,CAAsB79sB,IAC/B2gd,GAAO,CACP,MAAM7id,GAAUmtsB,GAAQzisB,WACjB1K,GAAQkC,MACflI,KAAKgG,QAAUA,EAClB,MAEGhG,KAAKgG,QAAU,GAEdhG,KAAKgG,QAAQuiX,SACdvoX,KAAKgG,QAAQuiX,OAAS,GAE7B,CACGA,aACA,OAAOvoX,KAAKgG,QAAQuiX,MACvB,CACDy9V,cAAchgtB,IACV,MAAM24sB,GAAY34sB,GAAQuiX,OAC1B,GAAIo2V,GAAW,CACX,MAAMG,GAAY9+sB,KAAKgG,QAAQuiX,OAC/BlpW,OAAOsa,KAAKglrB,IAAWlusB,QAAQgiK,KACJ,MAAnBqsiB,GAAUrsiB,MACVqsiB,GAAUrsiB,IAAQksiB,GAAUlsiB,MAGvC,CACJ,EAEL,MAAMwziB,GAAa,OACbC,GAAsB,IAAIJ,GAAWG,IAC3C,MAAME,GACFrmtB,YAAYooB,GAAIsD,GAAa46rB,IACzBpmtB,KAAKkoB,GAAKA,GACVloB,KAAKwrB,YAAcA,GACnBxrB,KAAKomtB,QAAUA,GACfpmtB,KAAK+smB,QAAU,GACf/smB,KAAKqmtB,UAAY,IAAIr1jB,IACrBhxJ,KAAKsmtB,OAAS,GACdtmtB,KAAKumtB,kBAAoB,IAAIv1jB,IAC7BhxJ,KAAKwmtB,eAAiB,UAAYt+rB,GAClC9V,GAASoZ,GAAaxrB,KAAKwmtB,eAC9B,CACD12sB,OAAOpH,GAASjB,GAAMg/sB,GAAOh0sB,IACzB,IAAKzS,KAAKqmtB,UAAUprrB,IAAIxzB,IACpB,MAvqFZ,SAASi/sB,GAAeD,GAAOh/sB,IAC3B,OAAO,IAAIg8mB,MAAc,MAA6CC,EAEzE,CAoqFiBgjG,GAEV,GAAa,MAATD,IAAiC,GAAhBA,GAAMnmtB,OACvB,MAtqFZ,SAASqmtB,GAAal/sB,IAClB,OAAO,IAAIg8mB,MAAc,MAA2CC,EAEvE,CAmqFiBijG,GAEV,IAuxCR,SAASC,GAAoB9wrB,IACzB,MAAoB,SAAbA,IAAqC,QAAbA,EAClC,CAzxCY8wrB,CAAoBH,IACrB,MArqFZ,SAASI,GAAwBJ,GAAOh/sB,IACpC,OAAO,IAAIg8mB,MAAc,MAAuDC,EAEnF,CAkqFiBmjG,GAEV,MAAMl/Q,GAAYgpQ,GAAqB3wsB,KAAKumtB,kBAAmB79sB,GAAS,IAClE6W,GAAO,CAAE9X,QAAMg/sB,SAAOh0sB,aAC5Bk1b,GAAU3rb,KAAKuD,IACf,MAAMunsB,GAAqBnW,GAAqB3wsB,KAAKomtB,QAAQW,gBAAiBr+sB,GAAS,IAAIsoJ,KAC3F,OAAK81jB,GAAmB7rrB,IAAIxzB,MACxB2K,GAAS1J,GAAS2psB,IAClBjgsB,GAAS1J,GAAS2psB,GAAuB,IAAM5qsB,IAC/Cq/sB,GAAmBvzrB,IAAI9rB,GAAMy+sB,KAE1B,KAIHlmtB,KAAKomtB,QAAQY,WAAW,KACpB,MAAMx6sB,GAAQm7b,GAAU1mc,QAAQse,IAC5B/S,IAAS,GACTm7b,GAAU9gZ,OAAOr6C,GAAO,GAEvBxM,KAAKqmtB,UAAUprrB,IAAIxzB,KACpBq/sB,GAAmB5rrB,OAAOzzB,GAA1B,EANR,CAUP,CACDm8B,SAASn8B,GAAM6wsB,IACX,OAAIt4sB,KAAKqmtB,UAAUprrB,IAAIxzB,MAKnBzH,KAAKqmtB,UAAU9yrB,IAAI9rB,GAAM6wsB,KAClB,EAEd,CACD2O,YAAYx/sB,IACR,MAAMusB,GAAUh0B,KAAKqmtB,UAAUtmsB,IAAItY,IACnC,IAAKusB,GACD,MAxsFZ,SAASkzrB,GAAoBz/sB,IACzB,OAAO,IAAIg8mB,MAAc,MAAkDC,EAC9E,CAssFiBwjG,GAEV,OAAOlzrB,EACV,CACDA,QAAQtrB,GAAS8nsB,GAAatosB,GAAOi/sB,IAAoB,GACrD,MAAMnzrB,GAAUh0B,KAAKintB,YAAYzW,IAC3BxjrB,GAAS,IAAIo6rB,GAA0BpntB,KAAKkoB,GAAIsorB,GAAa9nsB,IACnE,IAAIo+sB,GAAqB9mtB,KAAKomtB,QAAQW,gBAAgBhnsB,IAAIrX,IACrDo+sB,KACD10sB,GAAS1J,GAAS2psB,IAClBjgsB,GAAS1J,GAAS2psB,GAAuB,IAAM7B,IAC/CxwsB,KAAKomtB,QAAQW,gBAAgBxzrB,IAAI7qB,GAASo+sB,GAAqB,IAAI91jB,MAEvE,IAAIy/iB,GAAYqW,GAAmB/msB,IAAIywrB,IACvC,MAAME,GAAU,IAAIoV,GAAW59sB,GAAOlI,KAAKkoB,IAgB3C,KAfchgB,IAASA,GAAM9F,eAAe,WAC9BqusB,IACVC,GAAQsV,cAAcvV,GAAUzqsB,SAEpC8gtB,GAAmBvzrB,IAAIi9qB,GAAaE,IAC/BD,KACDA,GAAYyV,IAEExV,GAAQxosB,QAAU+9sB,IAOlBxV,GAAUvosB,QAAUwosB,GAAQxosB,MAAO,CAGjD,IAozCZ,SAASm/sB,GAAUlqrB,GAAGpF,IAClB,MAAMuvrB,GAAKjosB,OAAOsa,KAAKwD,IACjBoqrB,GAAKlosB,OAAOsa,KAAK5B,IACvB,GAAIuvrB,GAAGhntB,QAAUintB,GAAGjntB,OAChB,OAAO,EACX,QAASkV,GAAI,EAAGA,GAAI8xsB,GAAGhntB,OAAQkV,KAAK,CAChC,MAAMi9J,GAAO60iB,GAAG9xsB,IAChB,IAAKuiB,GAAE31B,eAAeqwK,KAASt1I,GAAEs1I,MAAU16I,GAAE06I,IACzC,OAAO,CACd,CACD,OAAO,CACV,CA/zCgB40iB,CAAU5W,GAAUloV,OAAQmoV,GAAQnoV,QAAS,CAC9C,MAAM8Y,GAAS,GACT2gV,GAAahurB,GAAQowrB,YAAY3T,GAAUvosB,MAAOuosB,GAAUloV,OAAQ8Y,IACpE4gV,GAAWjurB,GAAQowrB,YAAY1T,GAAQxosB,MAAOwosB,GAAQnoV,OAAQ8Y,IAChEA,GAAO/gY,OACPN,KAAKomtB,QAAQoB,YAAYnmV,IAGzBrhY,KAAKomtB,QAAQY,WAAW,KACpBlT,GAAYprsB,GAASs5sB,IACrBnonB,GAAUnxF,GAASu5sB,GAAV,EAGpB,CACD,MACH,CACD,MAAMwF,GAAmB9W,GAAqB3wsB,KAAKomtB,QAAQsB,iBAAkBh/sB,GAAS,IACtF++sB,GAAiBh3sB,QAAQuc,KAKjBA,GAAOw4rB,aAAexltB,KAAKkoB,IAAM8E,GAAOwjrB,aAAeA,IAAexjrB,GAAO26rB,QAC7E36rB,GAAOG,SAAP,GAGR,IAAIs/H,GAAaz4H,GAAQmwrB,gBAAgB1T,GAAUvosB,MAAOwosB,GAAQxosB,MAAOQ,GAASgosB,GAAQnoV,QACtFq/V,IAAuB,EAC3B,IAAKn7jB,GAAY,CACb,IAAK06jB,GACD,OACJ16jB,GAAaz4H,GAAQgwrB,mBACrB4D,IAAuB,CAC1B,CACD,YAAKxB,QAAQyB,qBACb7ntB,KAAKsmtB,OAAOtqsB,KAAK,CAAEtT,WAAS8nsB,eAAa/jjB,cAAYgkjB,aAAWC,WAAS1jrB,UAAQ46rB,0BAC5EA,KACDx1sB,GAAS1J,GAAS08sB,IAClBp4rB,GAAOm/kB,QAAQ,KACXn5lB,GAAYtK,GAAS08sB,GAAV,IAGnBp4rB,GAAOE,OAAO,KACV,IAAI1gB,GAAQxM,KAAK+smB,QAAQ9rmB,QAAQ+rB,IAC7BxgB,IAAS,GACTxM,KAAK+smB,QAAQlmjB,OAAOr6C,GAAO,GAE/B,MAAMugmB,GAAU/smB,KAAKomtB,QAAQsB,iBAAiB3nsB,IAAIrX,IAClD,GAAIqkmB,GAAS,CACT,IAAIvgmB,GAAQugmB,GAAQ9rmB,QAAQ+rB,IACxBxgB,IAAS,GACTugmB,GAAQlmjB,OAAOr6C,GAAO,EAE7B,IAELxM,KAAK+smB,QAAQ/wlB,KAAKgR,IAClBy6rB,GAAiBzrsB,KAAKgR,IACfA,EACV,CACD86rB,WAAWrgtB,IACPzH,KAAKqmtB,UAAUnrrB,OAAOzzB,IACtBzH,KAAKomtB,QAAQW,gBAAgBt2sB,QAAQ4zsB,IAAYA,GAASnprB,OAAOzzB,KACjEzH,KAAKumtB,kBAAkB91sB,QAAQ,CAACk3b,GAAWj/b,MACvC1I,KAAKumtB,kBAAkBhzrB,IAAI7qB,GAASi/b,GAAUryb,OAAOmpF,IAC1CA,GAAMh3F,MAAQA,IADzB,EAIP,CACDsgtB,kBAAkBr/sB,IACd1I,KAAKomtB,QAAQW,gBAAgB7rrB,OAAOxyB,IACpC1I,KAAKumtB,kBAAkBrrrB,OAAOxyB,IAC9B,MAAMs/sB,GAAiBhotB,KAAKomtB,QAAQsB,iBAAiB3nsB,IAAIrX,IACrDs/sB,KACAA,GAAev3sB,QAAQuc,IAAUA,GAAOG,WACxCntB,KAAKomtB,QAAQsB,iBAAiBxsrB,OAAOxyB,IAE5C,CACDu/sB,+BAA+BrwnB,GAAangF,IACxC,MAAMwwB,GAAWjoC,KAAKomtB,QAAQ3W,OAAO/irB,MAAMkrE,GAAa06mB,IAAqB,GAI7ErqqB,GAASx3B,QAAQ6ysB,KAGb,GAAIA,GAAIuC,IACJ,OACJ,MAAMqC,GAAalotB,KAAKomtB,QAAQ+B,yBAAyB7E,IACrD4E,GAAWj6sB,KACXi6sB,GAAWz3sB,QAAQqze,IAAMA,GAAGskO,sBAAsB9E,GAAK7rsB,IAAS,GAAO,IAGvEzX,KAAK+ntB,kBAAkBzE,GAAvB,GAKRtjtB,KAAKomtB,QAAQiC,yBAAyB,IAAMpgrB,GAASx3B,QAAQ6ysB,IAAOtjtB,KAAK+ntB,kBAAkBzE,KAC9F,CACD8E,sBAAsB1/sB,GAAS+O,GAAS6wsB,GAAsBnB,IAC1D,MAAMoB,GAAgBvotB,KAAKomtB,QAAQW,gBAAgBhnsB,IAAIrX,IACjD8/sB,GAAyB,IAAIx3jB,IACnC,GAAIu3jB,GAAe,CACf,MAAMx7G,GAAU,GAYhB,GAXAw7G,GAAc93sB,QAAQ,CAAC+oB,GAAOg3qB,MAI1B,GAHAgY,GAAuBj1rB,IAAIi9qB,GAAah3qB,GAAMtxB,OAG1ClI,KAAKqmtB,UAAUprrB,IAAIu1qB,IAAc,CACjC,MAAMxjrB,GAAShtB,KAAKg0B,QAAQtrB,GAAS8nsB,GAAayV,GAAYkB,IAC1Dn6rB,IACA+/kB,GAAQ/wlB,KAAKgR,GAEpB,IAED+/kB,GAAQzsmB,OACR,YAAK8ltB,QAAQqC,qBAAqBzotB,KAAKkoB,GAAIxf,IAAS,EAAM+O,GAAS+wsB,IAC/DF,IACAhZ,GAAoBviG,IAAS7/kB,OAAO,IAAMltB,KAAKomtB,QAAQsC,iBAAiBhgtB,MAErE,CAEd,CACD,OAAO,CACV,CACDigtB,+BAA+BjgtB,IAC3B,MAAMi/b,GAAY3nc,KAAKumtB,kBAAkBxmsB,IAAIrX,IACvCkgtB,GAAgB5otB,KAAKomtB,QAAQW,gBAAgBhnsB,IAAIrX,IAGvD,GAAIi/b,IAAaihR,GAAe,CAC5B,MAAMC,GAAkB,IAAIvtrB,IAC5Bqsa,GAAUl3b,QAAQ8yW,KACd,MAAMitV,GAAcjtV,GAAS97W,KAC7B,GAAIohtB,GAAgB5trB,IAAIu1qB,IACpB,OACJqY,GAAgB78sB,IAAIwksB,IAEpB,MAAM/jjB,GADUzsJ,KAAKqmtB,UAAUtmsB,IAAIywrB,IACRwT,mBACrBvT,GAAYmY,GAAc7osB,IAAIywrB,KAAgB0V,GAC9CxV,GAAU,IAAIoV,GAAWG,IACzBj5rB,GAAS,IAAIo6rB,GAA0BpntB,KAAKkoB,GAAIsorB,GAAa9nsB,IACnE1I,KAAKomtB,QAAQyB,qBACb7ntB,KAAKsmtB,OAAOtqsB,KAAK,CACbtT,WACA8nsB,eACA/jjB,cACAgkjB,aACAC,WACA1jrB,UACA46rB,sBAAsB,GAP1B,EAUP,CACJ,CACDj9Z,WAAWjiT,GAAS+O,IAChB,MAAMqxsB,GAAS9otB,KAAKomtB,QAKpB,GAJI19sB,GAAQqgtB,mBACR/otB,KAAKiotB,+BAA+Bv/sB,GAAS+O,IAG7CzX,KAAKootB,sBAAsB1/sB,GAAS+O,IAAS,GAC7C,OAGJ,IAAIuxsB,IAAoC,EACxC,GAAIF,GAAOG,gBAAiB,CACxB,MAAMC,GAAiBJ,GAAO/7G,QAAQzsmB,OAASwotB,GAAOK,wBAAwBppsB,IAAIrX,IAAW,GAK7F,GAAIwgtB,IAAkBA,GAAe5otB,OACjC0otB,IAAoC,MAEnC,CACD,IAAIrxrB,GAASjvB,GACb,KAAOivB,GAASA,GAAOzuB,YAEnB,GADiB4/sB,GAAO/B,gBAAgBhnsB,IAAI4X,IAC9B,CACVqxrB,IAAoC,EACpC,KACH,CAER,CACJ,CAQD,GAHAhptB,KAAK2otB,+BAA+BjgtB,IAGhCsgtB,GACAF,GAAOL,qBAAqBzotB,KAAKkoB,GAAIxf,IAAS,EAAO+O,QAEpD,CACD,MAAM2xsB,GAAc1gtB,GAAQm9sB,MACvBuD,IAAeA,KAAgB7D,MAGhCuD,GAAO9B,WAAW,IAAMhntB,KAAK+ntB,kBAAkBr/sB,KAC/CogtB,GAAOO,uBAAuB3gtB,IAC9BogtB,GAAOQ,mBAAmB5gtB,GAAS+O,IAE1C,CACJ,CACDw1P,WAAWvkQ,GAASivB,IAChBvlB,GAAS1J,GAAS1I,KAAKwmtB,eAC1B,CACD+C,uBAAuBC,IACnB,MAAMnO,GAAe,GACrB,YAAKiL,OAAO71sB,QAAQguF,KAChB,MAAMzxE,GAASyxE,GAAMzxE,OACrB,GAAIA,GAAOw3I,UACP,OACJ,MAAM97J,GAAU+1F,GAAM/1F,QAChBi/b,GAAY3nc,KAAKumtB,kBAAkBxmsB,IAAIrX,IACzCi/b,IACAA,GAAUl3b,QAAS8yW,KACf,GAAIA,GAAS97W,MAAQg3F,GAAM+xmB,YAAa,CACpC,MAAM2U,GAAY5U,GAAmB7nsB,GAAS+1F,GAAM+xmB,YAAa/xmB,GAAMgymB,UAAUvosB,MAAOu2F,GAAMiymB,QAAQxosB,OACtGi9sB,GAAU5nsB,MAAWissB,GACrBnZ,GAAe5xmB,GAAMzxE,OAAQu2V,GAASkjW,MAAOtB,GAAW5hW,GAAS9wW,SACpE,IAGLua,GAAOy8rB,iBACPzptB,KAAKomtB,QAAQY,WAAW,KAGpBh6rB,GAAOG,SAAP,GAIJkurB,GAAar/rB,KAAKyiF,GAAlB,GAGRz+F,KAAKsmtB,OAAS,GACPjL,GAAaz5qB,KAAK,CAACzE,GAAGpF,MAGzB,MAAM2xrB,GAAKvsrB,GAAEsvH,WAAW6rjB,IAAIhB,SACtBl1W,GAAKrqU,GAAE00H,WAAW6rjB,IAAIhB,SAC5B,OAAU,GAANoS,IAAiB,GAANtnX,GACJsnX,GAAKtnX,GAETpiW,KAAKomtB,QAAQ3W,OAAO5xiB,gBAAgB1gI,GAAEz0B,QAASqvB,GAAErvB,SAAW,GAAI,GAE9E,CACDykB,QAAQ1V,IACJzX,KAAK+smB,QAAQt8lB,QAAQywB,IAAKA,GAAE/T,WAC5BntB,KAAKiotB,+BAA+BjotB,KAAKwrB,YAAa/T,GACzD,CACDkysB,oBAAoBjhtB,IAChB,IAAIkhtB,IAAe,EACnB,OAAI5ptB,KAAKumtB,kBAAkBtrrB,IAAIvyB,MAC3BkhtB,IAAe,GACnBA,KACK5ptB,KAAKsmtB,OAAOjhsB,KAAKo5E,IAASA,GAAM/1F,UAAYA,KAA4BkhtB,GACtEA,EACV,EAEL,MAAMC,GACF/ptB,YAAY0ktB,GAAU/U,GAAQoU,IAC1B7jtB,KAAKwktB,SAAWA,GAChBxktB,KAAKyvsB,OAASA,GACdzvsB,KAAK6jtB,YAAcA,GACnB7jtB,KAAK+smB,QAAU,GACf/smB,KAAK8ptB,gBAAkB,IAAI94jB,IAC3BhxJ,KAAK0ntB,iBAAmB,IAAI12jB,IAC5BhxJ,KAAKmptB,wBAA0B,IAAIn4jB,IACnChxJ,KAAK+mtB,gBAAkB,IAAI/1jB,IAC3BhxJ,KAAK+ptB,cAAgB,IAAIzurB,IACzBt7B,KAAKiptB,gBAAkB,EACvBjptB,KAAK6ntB,mBAAqB,EAC1B7ntB,KAAKgqtB,iBAAmB,GACxBhqtB,KAAKiqtB,eAAiB,GACtBjqtB,KAAKkqtB,UAAY,GACjBlqtB,KAAKmqtB,cAAgB,GACrBnqtB,KAAKoqtB,wBAA0B,IAAIp5jB,IACnChxJ,KAAKqqtB,uBAAyB,GAC9BrqtB,KAAKsqtB,uBAAyB,GAE9BtqtB,KAAKuqtB,kBAAoB,CAAC7htB,GAAS+O,MAAV,CAC5B,CAED6xsB,mBAAmB5gtB,GAAS+O,IACxBzX,KAAKuqtB,kBAAkB7htB,GAAS+O,GACnC,CACG+ysB,oBACA,MAAMz9G,GAAU,GAChB,YAAKk9G,eAAex5sB,QAAQqze,KACxBA,GAAGipH,QAAQt8lB,QAAQuc,KACXA,GAAO26rB,QACP56G,GAAQ/wlB,KAAKgR,GAAb,EAFR,GAMG+/kB,EACV,CACD09G,gBAAgBjF,GAAah6rB,IACzB,MAAMs4d,GAAK,IAAIqiO,GAA6BX,GAAah6rB,GAAaxrB,MACtE,OAAIA,KAAKwktB,UAAYxktB,KAAKyvsB,OAAO5xiB,gBAAgB79J,KAAKwktB,SAAUh5rB,IAC5DxrB,KAAK0qtB,sBAAsB5mO,GAAIt4d,KAM/BxrB,KAAK8ptB,gBAAgBv2rB,IAAI/H,GAAas4d,IAMtC9jf,KAAK2qtB,oBAAoBn/rB,KAEtBxrB,KAAKgqtB,iBAAiBxE,IAAe1hO,EAC/C,CACD4mO,sBAAsB5mO,GAAIt4d,IACtB,MAAMo/rB,GAAgB5qtB,KAAKiqtB,eACrBG,GAA0BpqtB,KAAKoqtB,wBAErC,GADcQ,GAActqtB,OAAS,GACxB,EAAG,CACZ,IAAIy6P,IAAQ,EAGR8vd,GAAW7qtB,KAAKyvsB,OAAO0B,iBAAiB3lrB,IAC5C,KAAOq/rB,IAAU,CACb,MAAMC,GAAaV,GAAwBrqsB,IAAI8qsB,IAC/C,GAAIC,GAAY,CAGZ,MAAMt+sB,GAAQo+sB,GAAc3ptB,QAAQ6ptB,IACpCF,GAAc/jqB,OAAOr6C,GAAQ,EAAG,EAAGs3e,IACnC/oP,IAAQ,EACR,KACH,CACD8vd,GAAW7qtB,KAAKyvsB,OAAO0B,iBAAiB0Z,GAC3C,CACI9vd,IAID6vd,GAAc9mpB,QAAQggb,GAE7B,MAEG8mO,GAAc5usB,KAAK8ne,IAEvBsmO,UAAwB72rB,IAAI/H,GAAas4d,IAClCA,EACV,CACDlgd,SAAS4hrB,GAAah6rB,IAClB,IAAIs4d,GAAK9jf,KAAKgqtB,iBAAiBxE,IAC/B,OAAK1hO,KACDA,GAAK9jf,KAAKyqtB,gBAAgBjF,GAAah6rB,KAEpCs4d,EACV,CACDinO,gBAAgBvF,GAAa/9sB,GAAMusB,IAC/B,IAAI8vd,GAAK9jf,KAAKgqtB,iBAAiBxE,IAC3B1hO,IAAMA,GAAGlgd,SAASn8B,GAAMusB,KACxBh0B,KAAKiptB,iBAEZ,CACD97rB,QAAQq4rB,GAAa/tsB,IACjB,IAAK+tsB,GACD,OACJ,MAAM1hO,GAAK9jf,KAAKgrtB,gBAAgBxF,IAChCxltB,KAAKgntB,WAAW,KACZhntB,KAAKoqtB,wBAAwBlvrB,OAAO4od,GAAGt4d,oBAChCxrB,KAAKgqtB,iBAAiBxE,IAC7B,MAAMh5sB,GAAQxM,KAAKiqtB,eAAehptB,QAAQ6if,IACtCt3e,IAAS,GACTxM,KAAKiqtB,eAAepjqB,OAAOr6C,GAAO,EAAlC,GAGRxM,KAAKqotB,yBAAyB,IAAMvkO,GAAG32d,QAAQ1V,IAClD,CACDuzsB,gBAAgB9isB,IACZ,OAAOloB,KAAKgqtB,iBAAiB9hsB,GAChC,CACDigsB,yBAAyBz/sB,IAMrB,MAAMw/sB,GAAa,IAAI5srB,IACjBstrB,GAAgB5otB,KAAK+mtB,gBAAgBhnsB,IAAIrX,IAC/C,GAAIkgtB,GACA,QAASqC,MAAcrC,GAAc9trB,SACjC,GAAImwrB,GAAWzF,YAAa,CACxB,MAAM1hO,GAAK9jf,KAAKgrtB,gBAAgBC,GAAWzF,aACvC1hO,IACAokO,GAAWl8sB,IAAI83e,GAEtB,CAGT,OAAOokO,EACV,CACDl0rB,QAAQwxrB,GAAa98sB,GAASjB,GAAMS,IAChC,GAAIgjtB,GAAcxitB,IAAU,CACxB,MAAMo7e,GAAK9jf,KAAKgrtB,gBAAgBxF,IAChC,GAAI1hO,GACAA,UAAG9vd,QAAQtrB,GAASjB,GAAMS,KACnB,CAEd,CACD,OAAO,CACV,CACD+kQ,WAAWu4c,GAAa98sB,GAASivB,GAAQnlB,IACrC,IAAK04sB,GAAcxitB,IACf,OAGJ,MAAMg4jB,GAAUh4jB,GAAQm9sB,IACxB,GAAInlJ,IAAWA,GAAQ+kJ,cAAe,CAClC/kJ,GAAQ+kJ,eAAgB,EACxB/kJ,GAAQglJ,YAAa,EACrB,MAAMl5sB,GAAQxM,KAAKsqtB,uBAAuBrptB,QAAQyH,IAC9C8D,IAAS,GACTxM,KAAKsqtB,uBAAuBzjqB,OAAOr6C,GAAO,EAEjD,CAID,GAAIg5sB,GAAa,CACb,MAAM1hO,GAAK9jf,KAAKgrtB,gBAAgBxF,IAO5B1hO,IACAA,GAAG72O,WAAWvkQ,GAASivB,GAE9B,CAEGnlB,IACAxS,KAAK2qtB,oBAAoBjitB,GAEhC,CACDiitB,oBAAoBjitB,IAChB1I,KAAKqqtB,uBAAuBrusB,KAAKtT,GACpC,CACDyitB,sBAAsBzitB,GAASR,IACvBA,GACKlI,KAAK+ptB,cAAc9urB,IAAIvyB,MACxB1I,KAAK+ptB,cAAc/9sB,IAAItD,IACvB0J,GAAS1J,GAAS28sB,KAGjBrltB,KAAK+ptB,cAAc9urB,IAAIvyB,MAC5B1I,KAAK+ptB,cAAc7urB,OAAOxyB,IAC1BsK,GAAYtK,GAAS28sB,IAE5B,CACD16Z,WAAW66Z,GAAa98sB,GAASs7oB,GAAevsoB,IAC5C,GAAIyzsB,GAAcxitB,IAAU,CACxB,MAAMo7e,GAAK0hO,GAAcxltB,KAAKgrtB,gBAAgBxF,IAAe,KAO7D,GANI1hO,GACAA,GAAGn5L,WAAWjiT,GAAS+O,IAGvBzX,KAAKyotB,qBAAqBjD,GAAa98sB,IAAS,EAAO+O,IAEvDusoB,GAAe,CACf,MAAMonE,GAASprtB,KAAKoqtB,wBAAwBrqsB,IAAIrX,IAC5C0itB,IAAUA,GAAOljsB,KAAOs9rB,IACxB4F,GAAOzga,WAAWjiT,GAAS+O,GAElC,CACJ,MAEGzX,KAAKsptB,mBAAmB5gtB,GAAS+O,GAExC,CACDgxsB,qBAAqBjD,GAAa98sB,GAAS27d,GAAc5sd,GAAS+wsB,IAC9DxotB,KAAKsqtB,uBAAuBtusB,KAAKtT,IACjCA,GAAQm9sB,IAAgB,CACpBL,eACAC,cAAehusB,GACf4sd,gBACAshP,sBAAsB,EACtB6C,0BAEP,CACD14sB,OAAO01sB,GAAa98sB,GAASjB,GAAMg/sB,GAAOh0sB,IACtC,OAAIy4sB,GAAcxitB,IACP1I,KAAKgrtB,gBAAgBxF,IAAa11sB,OAAOpH,GAASjB,GAAMg/sB,GAAOh0sB,IAEnE,MACV,CACD44sB,kBAAkB5snB,GAAO6snB,GAAc5P,GAAgBC,GAAgB4P,IACnE,OAAO9snB,GAAMguD,WAAWvgI,MAAMlsB,KAAKyvsB,OAAQhxmB,GAAM/1F,QAAS+1F,GAAMgymB,UAAUvosB,MAAOu2F,GAAMiymB,QAAQxosB,MAAOwzsB,GAAgBC,GAAgBl9mB,GAAMgymB,UAAUzqsB,QAASy4F,GAAMiymB,QAAQ1qsB,QAASsltB,GAAcC,GACvM,CACDlC,uBAAuBrnZ,IACnB,IAAI/5R,GAAWjoC,KAAKyvsB,OAAO/irB,MAAMs1S,GAAkBswY,IAAqB,GACxErqqB,GAASx3B,QAAQ/H,IAAW1I,KAAKwrtB,kCAAkC9itB,KAC1B,GAArC1I,KAAKmptB,wBAAwBl7sB,OAEjCg6B,GAAWjoC,KAAKyvsB,OAAO/irB,MAAMs1S,GAAkBwwY,IAAuB,GACtEvqqB,GAASx3B,QAAQ/H,IAAW1I,KAAKyrtB,sCAAsC/itB,KAC1E,CACD8itB,kCAAkC9itB,IAC9B,MAAMqkmB,GAAU/smB,KAAK0ntB,iBAAiB3nsB,IAAIrX,IACtCqkmB,IACAA,GAAQt8lB,QAAQuc,KAIRA,GAAO26rB,OACP36rB,GAAOy8rB,kBAAmB,EAG1Bz8rB,GAAOG,SAAP,EAIf,CACDs+rB,sCAAsC/itB,IAClC,MAAMqkmB,GAAU/smB,KAAKmptB,wBAAwBppsB,IAAIrX,IAC7CqkmB,IACAA,GAAQt8lB,QAAQuc,IAAUA,GAAOoX,SAExC,CACDsnrB,oBACI,OAAO,IAAInmtB,QAAQyC,KACf,GAAIhI,KAAK+smB,QAAQzsmB,OACb,OAAOgvsB,GAAoBtvsB,KAAK+smB,SAAS7/kB,OAAO,IAAMllB,MAGtDA,IAAO,EAGlB,CACD0gtB,iBAAiBhgtB,IACb,MAAMg4jB,GAAUh4jB,GAAQm9sB,IACxB,GAAInlJ,IAAWA,GAAQ+kJ,cAAe,CAGlC,GADA/8sB,GAAQm9sB,IAAgBN,GACpB7kJ,GAAQ8kJ,YAAa,CACrBxltB,KAAKqptB,uBAAuB3gtB,IAC5B,MAAMo7e,GAAK9jf,KAAKgrtB,gBAAgBtqJ,GAAQ8kJ,aACpC1hO,IACAA,GAAGikO,kBAAkBr/sB,GAE5B,CACD1I,KAAKsptB,mBAAmB5gtB,GAASg4jB,GAAQ+kJ,cAC5C,CACG/8sB,GAAQg0L,WAAWh/K,SAAS2nsB,KAC5BrltB,KAAKmrtB,sBAAsBzitB,IAAS,GAExC1I,KAAKyvsB,OAAO/irB,MAAMhkB,GAjsBA,wBAisB4B,GAAM+H,QAAQxH,KACxDjJ,KAAKmrtB,sBAAsBlitB,IAAM,EAAjC,EAEP,CACDmqK,MAAMo2iB,IAAc,GAChB,IAAIz8G,GAAU,GAKd,GAJI/smB,KAAK8ptB,gBAAgB77sB,OACrBjO,KAAK8ptB,gBAAgBr5sB,QAAQ,CAACqze,GAAIp7e,KAAY1I,KAAK0qtB,sBAAsB5mO,GAAIp7e,KAC7E1I,KAAK8ptB,gBAAgB3urB,SAErBn7B,KAAKiptB,iBAAmBjptB,KAAKqqtB,uBAAuB/ptB,OACpD,QAASkV,GAAI,EAAGA,GAAIxV,KAAKqqtB,uBAAuB/ptB,OAAQkV,KAAK,CAEzDpD,GADYpS,KAAKqqtB,uBAAuB70sB,IA5sBjC,mBA8sBV,CAEL,GAAIxV,KAAKiqtB,eAAe3ptB,SACnBN,KAAK6ntB,oBAAsB7ntB,KAAKsqtB,uBAAuBhqtB,QAAS,CACjE,MAAMqrtB,GAAa,GACnB,IACI5+G,GAAU/smB,KAAK4rtB,iBAAiBD,GAAYnC,GAM/C,CALA,QAEG,QAASh0sB,GAAI,EAAGA,GAAIm2sB,GAAWrrtB,OAAQkV,KACnCm2sB,GAAWn2sB,KAElB,CACJ,MAEG,QAASA,GAAI,EAAGA,GAAIxV,KAAKsqtB,uBAAuBhqtB,OAAQkV,KAAK,CACzD,MAAM9M,GAAU1I,KAAKsqtB,uBAAuB90sB,IAC5CxV,KAAK0otB,iBAAiBhgtB,GACzB,CAOL,GALA1I,KAAK6ntB,mBAAqB,EAC1B7ntB,KAAKqqtB,uBAAuB/ptB,OAAS,EACrCN,KAAKsqtB,uBAAuBhqtB,OAAS,EACrCN,KAAKkqtB,UAAUz5sB,QAAQ+f,IAAMA,MAC7BxwB,KAAKkqtB,UAAY,GACblqtB,KAAKmqtB,cAAc7ptB,OAAQ,CAI3B,MAAMurtB,GAAW7rtB,KAAKmqtB,cACtBnqtB,KAAKmqtB,cAAgB,GACjBp9G,GAAQzsmB,OACRgvsB,GAAoBviG,IAAS7/kB,OAAO,KAChC2+rB,GAASp7sB,QAAQ+f,IAAMA,KAAvB,GAIJq7rB,GAASp7sB,QAAQ+f,IAAMA,KAE9B,CACJ,CACDg3rB,YAAYnmV,IACR,MA70GR,SAASyqV,GAAyBzqV,IAC9B,OAAO,IAAIoiP,MAAc,MAAwDC,EAEpF,CA00GaooG,EACT,CACDF,iBAAiBD,GAAYnC,IACzB,MAAM8B,GAAe,IAAIlQ,GACnB2Q,GAAiB,GACjBC,GAAoB,IAAIh7jB,IACxBi7jB,GAAqB,GACrB/J,GAAkB,IAAIlxjB,IACtBk7jB,GAAsB,IAAIl7jB,IAC1Bm7jB,GAAuB,IAAIn7jB,IAC3Bo7jB,GAAsB,IAAI9wrB,IAChCt7B,KAAK+ptB,cAAct5sB,QAAQxH,KACvBmjtB,GAAoBpgtB,IAAI/C,IACxB,MAAMojtB,GAAuBrstB,KAAKyvsB,OAAO/irB,MAAMzjB,GAxwBnC,sBAwwB0D,GACtE,QAASuM,GAAI,EAAGA,GAAI62sB,GAAqB/rtB,OAAQkV,KAC7C42sB,GAAoBpgtB,IAAIqgtB,GAAqB72sB,IAA7C,GAGR,MAAMgvsB,GAAWxktB,KAAKwktB,SAChB8H,GAAqBnrtB,MAAMqE,KAAKxF,KAAK+mtB,gBAAgBptrB,QACrD4yrB,GAAeC,GAAaF,GAAoBtstB,KAAKqqtB,wBAIrDoC,GAAkB,IAAIz7jB,IAC5B,IAAIx7I,GAAI,EACR+2sB,GAAa97sB,QAAQ,CAAC64E,GAAO3kB,MACzB,MAAM5xD,GAAYo/rB,GAAkB38rB,KACpCi3sB,GAAgBl5rB,IAAIoxC,GAAM5xD,IAC1Bu2E,GAAM74E,QAAQxH,IAAQmJ,GAASnJ,GAAM8J,IAArC,GAEJ,MAAM25sB,GAAgB,GAChBC,GAAmB,IAAIrxrB,IACvBsxrB,GAA8B,IAAItxrB,IACxC,QAAS9lB,GAAI,EAAGA,GAAIxV,KAAKsqtB,uBAAuBhqtB,OAAQkV,KAAK,CACzD,MAAM9M,GAAU1I,KAAKsqtB,uBAAuB90sB,IACtCkrjB,GAAUh4jB,GAAQm9sB,IACpBnlJ,IAAWA,GAAQ+kJ,gBACnBiH,GAAc1wsB,KAAKtT,IACnBiktB,GAAiB3gtB,IAAItD,IACjBg4jB,GAAQr8F,aACRrke,KAAKyvsB,OAAO/irB,MAAMhkB,GAhyBhB,qBAgyBwC,GAAM+H,QAAQ6ysB,IAAOqJ,GAAiB3gtB,IAAIs3sB,KAGpFsJ,GAA4B5gtB,IAAItD,IAG3C,CACD,MAAMmktB,GAAkB,IAAI77jB,IACtB87jB,GAAeN,GAAaF,GAAoBnrtB,MAAMqE,KAAKmntB,KACjEG,GAAar8sB,QAAQ,CAAC64E,GAAO3kB,MACzB,MAAM5xD,GAAYq/rB,GAAkB58rB,KACpCq3sB,GAAgBt5rB,IAAIoxC,GAAM5xD,IAC1Bu2E,GAAM74E,QAAQxH,IAAQmJ,GAASnJ,GAAM8J,IAArC,GAEJ44sB,GAAW3vsB,KAAK,KACZuwsB,GAAa97sB,QAAQ,CAAC64E,GAAO3kB,MACzB,MAAM5xD,GAAY05sB,GAAgB1ssB,IAAI4kD,IACtC2kB,GAAM74E,QAAQxH,IAAQ+J,GAAY/J,GAAM8J,IAAxC,GAEJ+5sB,GAAar8sB,QAAQ,CAAC64E,GAAO3kB,MACzB,MAAM5xD,GAAY85sB,GAAgB9ssB,IAAI4kD,IACtC2kB,GAAM74E,QAAQxH,IAAQ+J,GAAY/J,GAAM8J,IAAxC,GAEJ25sB,GAAcj8sB,QAAQ/H,KAClB1I,KAAK0otB,iBAAiBhgtB,GAAtB,EADJ,GAIJ,MAAMqktB,GAAa,GACbC,GAAuB,GAC7B,QAASx3sB,GAAIxV,KAAKiqtB,eAAe3ptB,OAAS,EAAGkV,IAAK,EAAGA,KACtCxV,KAAKiqtB,eAAez0sB,IAC5B+zsB,uBAAuBC,IAAa/4sB,QAAQguF,KAC3C,MAAMzxE,GAASyxE,GAAMzxE,OACftkB,GAAU+1F,GAAM/1F,QAEtB,GADAqktB,GAAW/wsB,KAAKgR,IACZhtB,KAAKqqtB,uBAAuB/ptB,OAAQ,CACpC,MAAMogkB,GAAUh4jB,GAAQm9sB,IAGxB,GAAInlJ,IAAWA,GAAQglJ,WAAY,CAC/B,GAAIhlJ,GAAQ8nJ,wBACR9nJ,GAAQ8nJ,uBAAuBvtrB,IAAIwjE,GAAM+xmB,aAAc,CACvD,MAAM5msB,GAAgB82jB,GAAQ8nJ,uBAAuBzosB,IAAI0+E,GAAM+xmB,aAGzDsW,GAAqB9mtB,KAAK+mtB,gBAAgBhnsB,IAAI0+E,GAAM/1F,SAC1D,GAAIo+sB,IAAsBA,GAAmB7rrB,IAAIwjE,GAAM+xmB,aAAc,CACjE,MAAMh3qB,GAAQstrB,GAAmB/msB,IAAI0+E,GAAM+xmB,aAC3Ch3qB,GAAMtxB,MAAQ0B,GACdk9sB,GAAmBvzrB,IAAIkrE,GAAM+xmB,YAAah3qB,GAC7C,CACJ,CAED,YADAxM,GAAOG,SAEV,CACJ,CACD,MAAM8/rB,IAAkBzI,KAAaxktB,KAAKyvsB,OAAO5xiB,gBAAgB2mjB,GAAU97sB,IACrEizsB,GAAiBkR,GAAgB9ssB,IAAIrX,IACrCgzsB,GAAiB+Q,GAAgB1ssB,IAAIrX,IACrCo0sB,GAAc98sB,KAAKqrtB,kBAAkB5snB,GAAO6snB,GAAc5P,GAAgBC,GAAgBsR,IAChG,GAAInQ,GAAYz7U,QAAUy7U,GAAYz7U,OAAO/gY,OAEzC,YADA0stB,GAAqBhxsB,KAAK8gsB,IAO9B,GAAImQ,GAIA,OAHAjgsB,GAAOm/kB,QAAQ,IAAM2nG,GAAYprsB,GAASo0sB,GAAYkF,aACtDh1rB,GAAOo/kB,UAAU,IAAMvygB,GAAUnxF,GAASo0sB,GAAYmF,gBACtD8J,GAAe/vsB,KAAKgR,IAMxB,GAAIyxE,GAAMmpnB,qBAIN,OAHA56rB,GAAOm/kB,QAAQ,IAAM2nG,GAAYprsB,GAASo0sB,GAAYkF,aACtDh1rB,GAAOo/kB,UAAU,IAAMvygB,GAAUnxF,GAASo0sB,GAAYmF,gBACtD8J,GAAe/vsB,KAAKgR,IAQxB,MAAMovrB,GAAY,GAClBU,GAAYV,UAAU3rsB,QAAQm+E,KAC1BA,GAAGswnB,yBAA0B,EACxBl/sB,KAAK+ptB,cAAc9urB,IAAI2zD,GAAGlmF,UAC3B0zsB,GAAUpgsB,KAAK4yE,GAAf,GAGRkunB,GAAYV,UAAYA,GACxBkP,GAAanzrB,OAAOzvB,GAASo0sB,GAAYV,WACzC,MAAMlD,GAAQ,CAAE4D,eAAa9vrB,UAAQtkB,YACrCujtB,GAAmBjwsB,KAAKk9rB,IACxB4D,GAAYoF,gBAAgBzxsB,QAAQ/H,IAAWiosB,GAAqBuR,GAAiBx5sB,GAAS,IAAIsT,KAAKgR,KACvG8vrB,GAAY7B,cAAcxqsB,QAAQ,CAACy8sB,GAAWxktB,MAC1C,GAAIwktB,GAAUj/sB,KAAM,CAChB,IAAIk/sB,GAASjB,GAAoBnssB,IAAIrX,IAChCyktB,IACDjB,GAAoB34rB,IAAI7qB,GAASyktB,GAAS,IAAI7xrB,KAElD4xrB,GAAUz8sB,QAAQ,CAAC0uK,GAAG1M,KAAS06iB,GAAOnhtB,IAAIymK,IAC7C,IAELqqiB,GAAY5B,eAAezqsB,QAAQ,CAACy8sB,GAAWxktB,MAC3C,IAAIyktB,GAAShB,GAAqBpssB,IAAIrX,IACjCyktB,IACDhB,GAAqB54rB,IAAI7qB,GAASyktB,GAAS,IAAI7xrB,KAEnD4xrB,GAAUz8sB,QAAQ,CAAC0uK,GAAG1M,KAAS06iB,GAAOnhtB,IAAIymK,IAA1C,EALJ,GASR,GAAIu6iB,GAAqB1stB,OAAQ,CAC7B,MAAM+gY,GAAS,GACf2rV,GAAqBv8sB,QAAQqssB,KACzBz7U,GAAOrlX,KAv+GvB,SAASoxsB,GAAiB3ltB,GAAM45X,IAC5B,OAAO,IAAIoiP,MAAc,MAA+CC,EAC3E;;;;;;;OAq+G2B0pG,CAAiBtQ,GAAYtM,YAAasM,GAAYz7U,QAAlE,GAEJ0rV,GAAWt8sB,QAAQuc,IAAUA,GAAOG,WACpCntB,KAAKwntB,YAAYnmV,GACpB,CACD,MAAMgsV,GAAwB,IAAIr8jB,IAK5Bs8jB,GAAsB,IAAIt8jB,IAChCi7jB,GAAmBx7sB,QAAQguF,KACvB,MAAM/1F,GAAU+1F,GAAM/1F,QAClB4itB,GAAarwrB,IAAIvyB,MACjB4ktB,GAAoB/5rB,IAAI7qB,GAASA,IACjC1I,KAAKuttB,sBAAsB9unB,GAAMzxE,OAAOw4rB,YAAa/mnB,GAAMq+mB,YAAauQ,IAAxE,GAGRtB,GAAet7sB,QAAQuc,KACnB,MAAMtkB,GAAUskB,GAAOtkB,QACC1I,KAAKwttB,oBAAoB9ktB,IAAS,EAAOskB,GAAOw4rB,YAAax4rB,GAAOwjrB,YAAa,MACzF//rB,QAAQg9sB,KACpB9c,GAAqB0c,GAAuB3ktB,GAAS,IAAIsT,KAAKyxsB,IAC9DA,GAAWtgsB,SAAX,EAFJ,GAYJ,MAAMotQ,GAAemyb,GAAcp3sB,OAAOrM,IAC/ByktB,GAAuBzktB,GAAMijtB,GAAqBC,KAGvDwB,GAAgB,IAAI38jB,IACG48jB,GAAsBD,GAAe3ttB,KAAKyvsB,OAAQmd,GAA6BT,GAAsB5iP,MAC7G94d,QAAQxH,KACrByktB,GAAuBzktB,GAAMijtB,GAAqBC,KAClD5xb,GAAav+Q,KAAK/S,GAAlB,GAIR,MAAM4ktB,GAAe,IAAI78jB,IACzBu7jB,GAAa97sB,QAAQ,CAAC64E,GAAO3kB,MACzBippB,GAAsBC,GAAc7ttB,KAAKyvsB,OAAQ,IAAIn0qB,IAAIguD,IAAQ4ioB,GAAqB1+G,KAAjE,GAEzBjzU,GAAa9pR,QAAQxH,KACjB,MAAM0rU,GAAOg5Y,GAAc5tsB,IAAI9W,IACzB4hQ,GAAMgjd,GAAa9tsB,IAAI9W,IAC7B0ktB,GAAcp6rB,IAAItqB,GAAM,IAAI+nJ,IAAI,IAAI7vJ,MAAMqE,KAAKmvU,IAAM6hE,WAAa,OAAQr1Y,MAAMqE,KAAKqlQ,IAAK2rI,WAAa,MAAvG,GAEJ,MAAMs3U,GAAc,GACdC,GAAa,GACbC,GAAuC,GAC7C/B,GAAmBx7sB,QAAQguF,KACvB,MAAQ/1F,WAASskB,UAAQ8vrB,gBAAgBr+mB,GAGzC,GAAI6snB,GAAarwrB,IAAIvyB,IAAU,CAC3B,GAAI0jtB,GAAoBnxrB,IAAIvyB,IAKxB,OAJAskB,GAAOo/kB,UAAU,IAAMvygB,GAAUnxF,GAASo0sB,GAAYmF,WACtDj1rB,GAAO5f,UAAW,EAClB4f,GAAOihsB,kBAAkBnR,GAAY7wG,gBACrC8/G,GAAe/vsB,KAAKgR,IASxB,IAAIkhsB,GAAsBF,GAC1B,GAAIV,GAAoBr/sB,KAAO,EAAG,CAC9B,IAAIq1sB,GAAM56sB,GACV,MAAMyltB,GAAe,GACrB,KAAO7K,GAAMA,GAAIp6sB,YAAY,CACzB,MAAMkltB,GAAiBd,GAAoBvtsB,IAAIujsB,IAC/C,GAAI8K,GAAgB,CAChBF,GAAsBE,GACtB,KACH,CACDD,GAAanysB,KAAKsnsB,GACrB,CACD6K,GAAa19sB,QAAQknB,IAAU21rB,GAAoB/5rB,IAAIoE,GAAQu2rB,IAClE,CACD,MAAMG,GAAcrutB,KAAKsutB,gBAAgBthsB,GAAOw4rB,YAAa1I,GAAauQ,GAAuBrB,GAAmB6B,GAAcF,IAElI,GADA3gsB,GAAOuhsB,cAAcF,IACjBH,KAAwBF,GACxBF,GAAY9xsB,KAAKgR,QAEhB,CACD,MAAMwhsB,GAAgBxutB,KAAK0ntB,iBAAiB3nsB,IAAImusB,IAC5CM,IAAiBA,GAAclutB,SAC/B0sB,GAAOg/kB,aAAesjG,GAAoBkf,KAE9CzC,GAAe/vsB,KAAKgR,GACvB,CACJ,MAEG8mrB,GAAYprsB,GAASo0sB,GAAYkF,YACjCh1rB,GAAOo/kB,UAAU,IAAMvygB,GAAUnxF,GAASo0sB,GAAYmF,WAItD8L,GAAW/xsB,KAAKgR,IACZo/rB,GAAoBnxrB,IAAIvyB,KACxBqjtB,GAAe/vsB,KAAKgR,GAApB,GAKZ+gsB,GAAWt9sB,QAAQuc,KAGf,MAAMyhsB,GAAoBzC,GAAkBjssB,IAAIiN,GAAOtkB,SACvD,GAAI+ltB,IAAqBA,GAAkBnutB,OAAQ,CAC/C,MAAM+ttB,GAAc/e,GAAoBmf,IACxCzhsB,GAAOuhsB,cAAcF,GACxB,IAKLtC,GAAet7sB,QAAQuc,KACfA,GAAOg/kB,aACPh/kB,GAAO0hsB,iBAAiB1hsB,GAAOg/kB,cAG/Bh/kB,GAAOG,SAAP,GAMR,QAAS3X,GAAI,EAAGA,GAAIk3sB,GAAcpstB,OAAQkV,KAAK,CAC3C,MAAM9M,GAAUgktB,GAAcl3sB,IACxBkrjB,GAAUh4jB,GAAQm9sB,IAKxB,GAJA7ysB,GAAYtK,GAAS0psB,IAIjB1xI,IAAWA,GAAQr8F,aACnB,SACJ,IAAI0oI,GAAU,GAId,GAAIm1G,GAAgBj0sB,KAAM,CACtB,IAAI0gtB,GAAuBzM,GAAgBnisB,IAAIrX,IAC3CimtB,IAAwBA,GAAqBrutB,QAC7CysmB,GAAQ/wlB,QAAQ2ysB,IAEpB,IAAIC,GAAuB5utB,KAAKyvsB,OAAO/irB,MAAMhkB,GAAS8psB,IAAuB,GAC7E,QAASxiqB,GAAI,EAAGA,GAAI4+qB,GAAqBtutB,OAAQ0vC,KAAK,CAClD,IAAI6+qB,GAAiB3M,GAAgBnisB,IAAI6usB,GAAqB5+qB,KAC1D6+qB,IAAkBA,GAAevutB,QACjCysmB,GAAQ/wlB,QAAQ6ysB,GAEvB,CACJ,CACD,MAAMC,GAAgB/hH,GAAQz3lB,OAAO4rB,KAAMA,GAAEsjI,WACzCsqjB,GAAcxutB,OACdyutB,GAA8B/utB,KAAM0I,GAASomtB,IAG7C9utB,KAAK0otB,iBAAiBhgtB,GAE7B,CAEDgktB,UAAcpstB,OAAS,EACvBwttB,GAAYr9sB,QAAQuc,KAChBhtB,KAAK+smB,QAAQ/wlB,KAAKgR,IAClBA,GAAOE,OAAO,KACVF,GAAOG,UACP,MAAM3gB,GAAQxM,KAAK+smB,QAAQ9rmB,QAAQ+rB,IACnChtB,KAAK+smB,QAAQlmjB,OAAOr6C,GAAO,EAA3B,GAEJwgB,GAAOC,MAAP,GAEG6gsB,EACV,CACDnE,oBAAoBnE,GAAa98sB,IAC7B,IAAIkhtB,IAAe,EACnB,MAAMlpJ,GAAUh4jB,GAAQm9sB,IACxB,OAAInlJ,IAAWA,GAAQ+kJ,gBACnBmE,IAAe,GACf5ptB,KAAK0ntB,iBAAiBzsrB,IAAIvyB,MAC1BkhtB,IAAe,GACf5ptB,KAAKmptB,wBAAwBlurB,IAAIvyB,MACjCkhtB,IAAe,GACf5ptB,KAAK+mtB,gBAAgB9rrB,IAAIvyB,MACzBkhtB,IAAe,GACZ5ptB,KAAKgrtB,gBAAgBxF,IAAamE,oBAAoBjhtB,KAAYkhtB,EAC5E,CACD5C,WAAWv0sB,IACPzS,KAAKkqtB,UAAUlusB,KAAKvJ,GACvB,CACD41sB,yBAAyB51sB,IACrBzS,KAAKmqtB,cAAcnusB,KAAKvJ,GAC3B,CACD+6sB,oBAAoB9ktB,GAASsmtB,GAAkBxJ,GAAahV,GAAaye,IACrE,IAAIliH,GAAU,GACd,GAAIiiH,GAAkB,CAClB,MAAME,GAAwBlvtB,KAAKmptB,wBAAwBppsB,IAAIrX,IAC3DwmtB,KACAniH,GAAUmiH,GAEjB,KACI,CACD,MAAMlH,GAAiBhotB,KAAK0ntB,iBAAiB3nsB,IAAIrX,IACjD,GAAIs/sB,GAAgB,CAChB,MAAMmH,IAAsBF,IAAgBA,IAAgBhJ,GAC5D+B,GAAev3sB,QAAQuc,KACfA,GAAO26rB,SAENwH,IAAsBnisB,GAAOwjrB,aAAeA,IAEjDzjG,GAAQ/wlB,KAAKgR,GAAb,EAEP,CACJ,CACD,OAAIw4rB,IAAehV,MACfzjG,GAAUA,GAAQz3lB,OAAO0X,MACjBw4rB,IAAeA,IAAex4rB,GAAOw4rB,aAErChV,IAAeA,IAAexjrB,GAAOwjrB,eAK1CzjG,EACV,CACDwgH,sBAAsB/H,GAAa1I,GAAauQ,IAC5C,MAAM7c,GAAcsM,GAAYtM,YAC1B54mB,GAAcklnB,GAAYp0sB,QAG1B0mtB,GAAoBtS,GAAYiF,yBAAsBhtsB,EAAYywsB,GAClE6J,GAAoBvS,GAAYiF,yBAAsBhtsB,EAAYy7rB,GACxE,UAAW8e,MAAuBxS,GAAYV,UAAW,CACrD,MAAM1zsB,GAAU4mtB,GAAoB5mtB,QAC9BsmtB,GAAmBtmtB,KAAYkvF,GAC/Bm1gB,GAAU4jG,GAAqB0c,GAAuB3ktB,GAAS,IAC7C1I,KAAKwttB,oBAAoB9ktB,GAASsmtB,GAAkBI,GAAmBC,GAAmBvS,GAAYpM,SAC9GjgsB,QAAQuc,KACpB,MAAMuisB,GAAavisB,GAAOwisB,gBACtBD,GAAWhiH,eACXgiH,GAAWhiH,gBAEfvglB,GAAOG,UACP4/kB,GAAQ/wlB,KAAKgR,GAAb,EAEP,CAGD8mrB,GAAYl8mB,GAAaklnB,GAAYkF,WACxC,CACDsM,gBAAgB9I,GAAa1I,GAAauQ,GAAuBrB,GAAmB6B,GAAcF,IAC9F,MAAMnd,GAAcsM,GAAYtM,YAC1B54mB,GAAcklnB,GAAYp0sB,QAG1B+mtB,GAAoB,GACpBC,GAAsB,IAAIp0rB,IAC1Bq0rB,GAAiB,IAAIr0rB,IACrBs0rB,GAAgB9S,GAAYV,UAAU/6sB,IAAIiutB,KAC5C,MAAM5mtB,GAAU4mtB,GAAoB5mtB,QACpCgntB,GAAoB1jtB,IAAItD,IAExB,MAAMg4jB,GAAUh4jB,GAAQm9sB,IACxB,GAAInlJ,IAAWA,GAAQilJ,qBACnB,OAAO,IAAIj6G,KAAoB4jH,GAAoB1ksB,SAAU0ksB,GAAoBprrB,OACrF,MAAM8qrB,GAAmBtmtB,KAAYkvF,GAC/Bm6mB,GAsQlB,SAAS8d,GAAoB9iH,IACzB,MAAM+iH,GAAe,GACrBC,UAA0BhjH,GAAS+iH,IAC5BA,EACV,CA1QmCD,EAAqBxC,GAAsBttsB,IAAIrX,KAAY48sB,IAC9EjktB,IAAI6/B,IAAKA,GAAEsurB,kBACXl6sB,OAAO4rB,KAKR,MAAM8urB,GAAK9urB,GACX,QAAO8urB,GAAGtntB,SAAUsntB,GAAGtntB,UAAYA,EAAU,GAE3CinsB,GAAYke,GAAa9tsB,IAAIrX,IAC7BknsB,GAAa+d,GAAc5tsB,IAAIrX,IAC/BigN,GAAY6mf,GAAqBxvsB,KAAKyvsB,OAAQzvsB,KAAK6jtB,YAAan7sB,EAAS4mtB,GAAoB3mgB,UAAWgnf,GAAWC,IACnH5irB,GAAShtB,KAAK4ktB,aAAa0K,GAAqB3mgB,GAAWopf,IAMjE,GAHIud,GAAoBnU,aAAe6Q,IACnC2D,GAAe3jtB,IAAItD,IAEnBsmtB,GAAkB,CAClB,MAAMiB,GAAgB,IAAI7I,GAA0B5B,GAAahV,GAAa9nsB,IAC9EuntB,GAAc1B,cAAcvhsB,IAC5ByisB,GAAkBzzsB,KAAKi0sB,GAC1B,CACD,OAAOjjsB,KAEXyisB,GAAkBh/sB,QAAQuc,KACtB2jrB,GAAqB3wsB,KAAKmptB,wBAAyBn8rB,GAAOtkB,QAAS,IAAIsT,KAAKgR,IAC5EA,GAAOE,OAAO,IA8H1B,SAASgjsB,GAAmB7utB,GAAKu4B,GAAK1xB,IAClC,IAAIiotB,GAAgB9utB,GAAI0e,IAAI6Z,IAC5B,GAAIu2rB,GAAe,CACf,GAAIA,GAAc7vtB,OAAQ,CACtB,MAAMkM,GAAQ2jtB,GAAclvtB,QAAQiH,IACpCiotB,GAActpqB,OAAOr6C,GAAO,EAC/B,CAC2B,GAAxB2jtB,GAAc7vtB,QACde,GAAI65B,OAAOtB,GAElB,CACD,OAAOu2rB,EACV,CA1I+BD,CAAmBlwtB,KAAKmptB,wBAAyBn8rB,GAAOtkB,QAASskB,IAArF,GAEJ0isB,GAAoBj/sB,QAAQ/H,IAAW0J,GAAS1J,GAAS6psB,KACzD,MAAMvlrB,GAASsirB,GAAoBsgB,IACnC5isB,UAAOo/kB,UAAU,KACbsjH,GAAoBj/sB,QAAQ/H,IAAWsK,GAAYtK,GAAS6psB,KAC5D14mB,GAAUjC,GAAaklnB,GAAYmF,SAA1B,GAIb0N,GAAel/sB,QAAQ/H,KACnBiosB,GAAqBqb,GAAmBtjtB,GAAS,IAAIsT,KAAKgR,GAA1D,GAEGA,EACV,CACD43rB,aAAa9H,GAAan0f,GAAWopf,IACjC,OAAIppf,GAAUroN,OAAS,EACZN,KAAKyvsB,OAAOh0rB,QAAQqhsB,GAAYp0sB,QAASigN,GAAWm0f,GAAYlyrB,SAAUkyrB,GAAY54qB,MAAO44qB,GAAY94qB,OAAQ+tqB,IAIrH,IAAIrmG,KAAoBoxG,GAAYlyrB,SAAUkyrB,GAAY54qB,MACpE,EAEL,MAAMkjrB,GACFtntB,YAAY0ltB,GAAahV,GAAa9nsB,IAClC1I,KAAKwltB,YAAcA,GACnBxltB,KAAKwwsB,YAAcA,GACnBxwsB,KAAK0I,QAAUA,GACf1I,KAAKowtB,QAAU,IAAI1kH,KACnB1rmB,KAAKqwtB,qBAAsB,EAC3BrwtB,KAAKswtB,iBAAmB,IAAIt/jB,IAC5BhxJ,KAAKwkK,WAAY,EACjBxkK,KAAKyptB,kBAAmB,EACxBzptB,KAAKoN,UAAW,EAChBpN,KAAK2ntB,QAAS,EACd3ntB,KAAKismB,UAAY,CACpB,CACDsiH,cAAcvhsB,IACNhtB,KAAKqwtB,sBAETrwtB,KAAKowtB,QAAUpjsB,GACfhtB,KAAKswtB,iBAAiB7/sB,QAAQ,CAAC8/sB,GAAW9J,MACtC8J,GAAU9/sB,QAAQgC,IAAY49rB,GAAerjrB,GAAQy5rB,QAAO1xsB,EAAWtC,IAAvE,GAEJzS,KAAKswtB,iBAAiBn1rB,QACtBn7B,KAAKqwtB,qBAAsB,EAC3BrwtB,KAAKiutB,kBAAkBjhsB,GAAOi/kB,WAC9BjsmB,KAAK2ntB,QAAS,EACjB,CACD6H,gBACI,OAAOxvtB,KAAKowtB,OACf,CACDnC,kBAAkBhiH,IACdjsmB,KAAKismB,UAAYA,EACpB,CACDyiH,iBAAiB1hsB,IACb,MAAMkU,GAAIlhC,KAAKowtB,QACXlvrB,GAAEwrkB,iBACF1/kB,GAAOm/kB,QAAQ,IAAMjrkB,GAAEwrkB,gBAAgB,UAE3C1/kB,GAAOE,OAAO,IAAMltB,KAAKokC,UACzBpX,GAAOo/kB,UAAU,IAAMpsmB,KAAKmtB,UAC/B,CACDqjsB,YAAY/otB,GAAMgL,IACdk+rB,GAAqB3wsB,KAAKswtB,iBAAkB7otB,GAAM,IAAIuU,KAAKvJ,GAC9D,CACDya,OAAOsD,IACCxwB,KAAK2ntB,QACL3ntB,KAAKwwtB,YAAY,OAAQhgsB,IAE7BxwB,KAAKowtB,QAAQljsB,OAAOsD,GACvB,CACD27kB,QAAQ37kB,IACAxwB,KAAK2ntB,QACL3ntB,KAAKwwtB,YAAY,QAAShgsB,IAE9BxwB,KAAKowtB,QAAQjkH,QAAQ37kB,GACxB,CACD47kB,UAAU57kB,IACFxwB,KAAK2ntB,QACL3ntB,KAAKwwtB,YAAY,UAAWhgsB,IAEhCxwB,KAAKowtB,QAAQhkH,UAAU57kB,GAC1B,CACD+tI,OACIv+J,KAAKowtB,QAAQ7xjB,MAChB,CACD8tc,aACI,OAAOrsmB,KAAK2ntB,QAAiB3ntB,KAAKowtB,QAAQ/jH,YAC7C,CACDp/kB,QACKjtB,KAAK2ntB,QAAU3ntB,KAAKowtB,QAAQnjsB,MAChC,CACD02V,SACK3jX,KAAK2ntB,QAAU3ntB,KAAKowtB,QAAQzsW,OAChC,CACD6oP,WACKxsmB,KAAK2ntB,QAAU3ntB,KAAKowtB,QAAQ5jH,SAChC,CACDpokB,SACIpkC,KAAKowtB,QAAQhsrB,QAChB,CACDjX,UACIntB,KAAKwkK,WAAY,EACjBxkK,KAAKowtB,QAAQjjsB,SAChB,CACD46C,SACK/nE,KAAK2ntB,QAAU3ntB,KAAKowtB,QAAQropB,OAChC,CACD8nJ,YAAY3uL,IACHlhC,KAAK2ntB,QACN3ntB,KAAKowtB,QAAQvggB,YAAY3uL,GAEhC,CACDurkB,cACI,OAAOzsmB,KAAK2ntB,OAAS,EAAI3ntB,KAAKowtB,QAAQ3jH,aACzC,CAEDC,gBAAgBC,IACZ,MAAMzrkB,GAAIlhC,KAAKowtB,QACXlvrB,GAAEwrkB,iBACFxrkB,GAAEwrkB,gBAAgBC,GAEzB,EAqBL,SAASu+G,GAAcjitB,IACnB,OAAOA,IAA6B,IAArBA,GAAKT,QACvB,CAID,SAASiotB,GAAa/ntB,GAASR,IAC3B,MAAMiyR,GAAWzxR,GAAQ6iB,MAAMuyF,QAC/Bp1G,UAAQ6iB,MAAMuyF,QAAU51G,IAAwB,OACzCiyR,EACV,CACD,SAASyzb,GAAsB8C,GAAWjhB,GAAQxnqB,GAAU0orB,GAAiBztkB,IACzE,MAAM0tkB,GAAY,GAClB3orB,GAASx3B,QAAQ/H,IAAWkotB,GAAU50sB,KAAKy0sB,GAAa/ntB,MACxD,MAAMmotB,GAAiB,GACvBF,GAAgBlgtB,QAAQ,CAACsqO,GAAOryO,MAC5B,MAAMgpB,GAAS,IAAIs/H,IACnB+pF,GAAMtqO,QAAQgiK,KACV,MAAMvqK,GAAQunsB,GAAOqC,aAAappsB,GAAS+pK,GAAMvvB,IACjDxxH,GAAO6B,IAAIk/I,GAAMvqK,MAGZA,IAAyB,GAAhBA,GAAM5H,UAChBoI,GAAQm9sB,IAAgBD,GACxBiL,GAAe70sB,KAAKtT,IAApB,GAGRgotB,GAAUn9rB,IAAI7qB,GAASgpB,GAAvB,GAIJ,IAAIlc,GAAI,EACRyyB,UAASx3B,QAAQ/H,IAAW+ntB,GAAa/ntB,GAASkotB,GAAUp7sB,QACrDq7sB,EACV,CAWD,SAASrE,GAAa1uL,GAAOx0c,IACzB,MAAMoK,GAAU,IAAIs9D,IAEpB,GADA8sY,GAAMrthB,QAAQk0D,IAAQ+uB,GAAQngE,IAAIoxC,GAAM,KACpB,GAAhB2kB,GAAMhpF,OACN,OAAOozF,GACX,MACMo9nB,GAAU,IAAIx1rB,IAAIguD,IAClBynoB,GAAe,IAAI//jB,IACzB,SAASjsH,GAAQ97B,IACb,IAAKA,GACD,OALU,EAMd,IAAI07D,GAAOospB,GAAahxsB,IAAI9W,IAC5B,GAAI07D,GACA,OAAOA,GACX,MAAMhtC,GAAS1uB,GAAKC,WACpB,OACIy7D,GADA+uB,GAAQz4D,IAAItD,IACLA,GAEFm5rB,GAAQ71rB,IAAItD,IAbP,EAiBHoN,GAAQpN,IAEnBo5rB,GAAax9rB,IAAItqB,GAAM07D,IAChBA,EACV,CACD2kB,UAAM74E,QAAQxH,KACV,MAAM07D,GAAO5/B,GAAQ97B,IAvBP,IAwBV07D,IACA+uB,GAAQ3zE,IAAI4kD,IAAM3oD,KAAK/S,GAAvB,GAGDyqF,EACV,CACD,SAASthF,GAAS1J,GAASqK,IACvBrK,GAAQg0L,WAAW1wL,IAAI+G,GAC1B,CACD,SAASC,GAAYtK,GAASqK,IAC1BrK,GAAQg0L,WAAW/kL,OAAO5E,GAC7B,CACD,SAASg8sB,GAA8BjG,GAAQpgtB,GAASqkmB,IACpDuiG,GAAoBviG,IAAS7/kB,OAAO,IAAM47rB,GAAOJ,iBAAiBhgtB,IACrE,CAMD,SAASqntB,GAA0BhjH,GAAS+iH,IACxC,QAASt6sB,GAAI,EAAGA,GAAIu3lB,GAAQzsmB,OAAQkV,KAAK,CACrC,MAAMwX,GAAS+/kB,GAAQv3lB,IACnBwX,cAAkBuirB,KAClBwgB,GAA0B/isB,GAAO+/kB,QAAS+iH,IAG1CA,GAAa9zsB,KAAKgR,GAEzB,CACJ,CAaD,SAAS0gsB,GAAuBhltB,GAASwjtB,GAAqBC,IAC1D,MAAM6E,GAAY7E,GAAqBpssB,IAAIrX,IAC3C,IAAKsotB,GACD,OAAO,EACX,IAAIC,GAAW/E,GAAoBnssB,IAAIrX,IACvC,OAAIuotB,GACAD,GAAUvgtB,QAAQ8O,IAAQ0xsB,GAASjltB,IAAIuT,KAGvC2ssB,GAAoB34rB,IAAI7qB,GAASsotB,IAErC7E,GAAqBjxrB,OAAOxyB,KACrB,CACV,CAED,MAAMwotB,GACFpxtB,YAAY0ktB,GAAUzN,GAAS8M,IAC3B7jtB,KAAKwktB,SAAWA,GAChBxktB,KAAK+2sB,QAAUA,GACf/2sB,KAAK6jtB,YAAcA,GACnB7jtB,KAAKmxtB,cAAgB,GAErBnxtB,KAAKuqtB,kBAAoB,CAAC7htB,GAAS+O,MAAV,EACzBzX,KAAKoxtB,kBAAoB,IAAIvH,GAA0BrF,GAAUzN,GAAS8M,IAC1E7jtB,KAAKqxtB,gBAAkB,IAAI9M,GAAwBC,GAAUzN,GAAS8M,IACtE7jtB,KAAKoxtB,kBAAkB7G,kBAAoB,CAAC7htB,GAAS+O,KAAYzX,KAAKuqtB,kBAAkB7htB,GAAS+O,GACpG,CACDszsB,gBAAgBhpP,GAAayjP,GAAah6rB,GAAa/jB,GAAMkxY,IACzD,MAAMrsC,GAAWy1H,GAAc,IAAMt6d,GACrC,IAAIusB,GAAUh0B,KAAKmxtB,cAAc7kX,IACjC,IAAKt4U,GAAS,CACV,MAAMqtW,GAAS,GACTw1U,GAAW,GACXyB,GAAM1B,GAAkB52sB,KAAK+2sB,QAASp+T,GAAUtX,GAAQw1U,IAC9D,GAAIx1U,GAAO/gY,OACP,MA9mIhB,SAASgxtB,GAAmB7ptB,GAAM45X,IAC9B,OAAO,IAAIoiP,MAAc,MAAkDC,EAE9E,CA2mIqB4tG,GAENza,GAASv2sB,OAGb0zB,GAhsDZ,SAASu9rB,GAAa9ptB,GAAM6wsB,GAAK5I,IAC7B,OAAO,IAAIkU,GAAiBn8sB,GAAM6wsB,GAAK5I,GAC1C,CA8rDqB6hB,CAAa9ptB,GAAM6wsB,GAAKt4sB,KAAK6jtB,aACvC7jtB,KAAKmxtB,cAAc7kX,IAAYt4U,EAClC,CACDh0B,KAAKoxtB,kBAAkBrG,gBAAgBvF,GAAa/9sB,GAAMusB,GAC7D,CACD4P,SAAS4hrB,GAAah6rB,IAClBxrB,KAAKoxtB,kBAAkBxtrB,SAAS4hrB,GAAah6rB,GAChD,CACD2B,QAAQq4rB,GAAa/tsB,IACjBzX,KAAKoxtB,kBAAkBjksB,QAAQq4rB,GAAa/tsB,GAC/C,CACD+5sB,SAAShM,GAAa98sB,GAASivB,GAAQnlB,IACnCxS,KAAKoxtB,kBAAkBnkd,WAAWu4c,GAAa98sB,GAASivB,GAAQnlB,GACnE,CACDs5R,SAAS05a,GAAa98sB,GAAS+O,GAASusoB,IACpChkpB,KAAKoxtB,kBAAkBzma,WAAW66Z,GAAa98sB,GAASs7oB,KAAiB,EAAOvsoB,GACnF,CACDg6sB,kBAAkB/otB,GAASqnJ,IACvB/vJ,KAAKoxtB,kBAAkBjG,sBAAsBzitB,GAASqnJ,GACzD,CACD51I,QAAQqrsB,GAAa98sB,GAASkoB,GAAU1oB,IACpC,GAA0B,KAAtB0oB,GAAS7vB,OAAO,GAAW,CAC3B,MAAOmnB,GAAI5N,IAAUs2rB,GAAqBhgrB,IACpCxW,GAAOlS,GACblI,KAAKqxtB,gBAAgBhvc,QAAQn6P,GAAIxf,GAAS4R,GAAQF,GACrD,MAEGpa,KAAKoxtB,kBAAkBp9rB,QAAQwxrB,GAAa98sB,GAASkoB,GAAU1oB,GAEtE,CACD4H,OAAO01sB,GAAa98sB,GAASotB,GAAW47rB,GAAYj/sB,IAEhD,GAA2B,KAAvBqjB,GAAU/0B,OAAO,GAAW,CAC5B,MAAOmnB,GAAI5N,IAAUs2rB,GAAqB96qB,IAC1C,OAAO91B,KAAKqxtB,gBAAgBvhtB,OAAOoY,GAAIxf,GAAS4R,GAAQ7H,GAC3D,CACD,OAAOzS,KAAKoxtB,kBAAkBthtB,OAAO01sB,GAAa98sB,GAASotB,GAAW47rB,GAAYj/sB,GACrF,CACD2gK,MAAMo2iB,IAAc,GAChBxptB,KAAKoxtB,kBAAkBh+iB,MAAMo2iB,GAChC,CACGz8G,cACA,OAAO/smB,KAAKoxtB,kBAAkBrkH,QACzBjnlB,OAAO9lB,KAAKqxtB,gBAAgBtkH,QACpC,CACD2+G,oBACI,OAAO1rtB,KAAKoxtB,kBAAkB1F,mBACjC,EAqCL,MAAMiG,GACF7xtB,YAAY0vF,GAAUoioB,GAAcC,IAChC7xtB,KAAKwvF,SAAWA,GAChBxvF,KAAK4xtB,aAAeA,GACpB5xtB,KAAK6xtB,WAAaA,GAClB7xtB,KAAKghG,OAAS,EACd,IAAI8wnB,GAAgBH,GAAmBI,uBAAuBhysB,IAAIyvE,IAC7DsioB,IACDH,GAAmBI,uBAAuBx+rB,IAAIi8D,GAAUsioB,GAAgB,IAAI9gkB,KAEhFhxJ,KAAKgytB,eAAiBF,EACzB,CACDn3sB,QACQ3a,KAAKghG,OAAS,IACVhhG,KAAK4xtB,cACL/3nB,GAAU75F,KAAKwvF,SAAUxvF,KAAK4xtB,aAAc5xtB,KAAKgytB,gBAErDhytB,KAAKghG,OAAS,EAErB,CACD58D,SACIpkC,KAAK2a,QACD3a,KAAKghG,OAAS,IACdnH,GAAU75F,KAAKwvF,SAAUxvF,KAAKgytB,gBAC1BhytB,KAAK6xtB,aACLh4nB,GAAU75F,KAAKwvF,SAAUxvF,KAAK6xtB,YAC9B7xtB,KAAK6xtB,WAAa,MAEtB7xtB,KAAKghG,OAAS,EAErB,CACD7zE,UACIntB,KAAKokC,SACDpkC,KAAKghG,OAAS,IACd2wnB,GAAmBI,uBAAuB72rB,OAAOl7B,KAAKwvF,UAClDxvF,KAAK4xtB,eACL9d,GAAY9zsB,KAAKwvF,SAAUxvF,KAAK4xtB,cAChC5xtB,KAAK6xtB,WAAa,MAElB7xtB,KAAK6xtB,aACL/d,GAAY9zsB,KAAKwvF,SAAUxvF,KAAK6xtB,YAChC7xtB,KAAK6xtB,WAAa,MAEtBh4nB,GAAU75F,KAAKwvF,SAAUxvF,KAAKgytB,gBAC9BhytB,KAAKghG,OAAS,EAErB,EAGL,SAASixnB,GAA0BvgsB,IAC/B,IAAIE,GAAS,KACbF,UAAOjhB,QAAQ,CAACsqM,GAAKtoC,OAQzB,SAASy/iB,GAAqBz/iB,IAC1B,MAAgB,YAATA,IAA+B,aAATA,EAChC,EATWy/iB,CAAqBz/iB,MACrB7gJ,GAASA,IAAU,IAAIo/H,IACvBp/H,GAAO2B,IAAIk/I,GAAMsoC,IAAjB,GAGDnpL,EACV,CAVD+/rB,GAAmBI,uBAA0C,IAAIjib,QAejE,MAAMqib,GACFrytB,YAAY4I,GAASigN,GAAW3iN,GAASostB,IACrCpytB,KAAK0I,QAAUA,GACf1I,KAAK2oN,UAAYA,GACjB3oN,KAAKgG,QAAUA,GACfhG,KAAKoytB,eAAiBA,GACtBpytB,KAAK2rmB,WAAa,GAClB3rmB,KAAK4rmB,YAAc,GACnB5rmB,KAAK6rmB,cAAgB,GACrB7rmB,KAAKqytB,cAAe,EACpBrytB,KAAKmpJ,WAAY,EACjBnpJ,KAAK0mJ,UAAW,EAChB1mJ,KAAK+wG,YAAa,EAIlB/wG,KAAK8rmB,mBAAqB,GAC1B9rmB,KAAK+rmB,oBAAsB,GAC3B/rmB,KAAK+iC,KAAO,EACZ/iC,KAAKgsmB,aAAe,KACpBhsmB,KAAKsytB,gBAAkB,IAAIthkB,IAC3BhxJ,KAAKuytB,UAAYvstB,GAAQ4kB,SACzB5qB,KAAK8pmB,OAAS9jmB,GAAQk+B,OAAY,EAClClkC,KAAK+iC,KAAO/iC,KAAKuytB,UAAYvytB,KAAK8pmB,MACrC,CACDoC,YACSlsmB,KAAKmpJ,YACNnpJ,KAAKmpJ,WAAY,EACjBnpJ,KAAK2rmB,WAAWl7lB,QAAQ+f,IAAMA,MAC9BxwB,KAAK2rmB,WAAa,GAEzB,CACDptc,OACIv+J,KAAK4ktB,eACL5ktB,KAAKwytB,2BACR,CACD5N,eACI,GAAI5ktB,KAAKqytB,aACL,OACJrytB,KAAKqytB,cAAe,EACpB,MAAM1pgB,GAAY3oN,KAAK2oN,UACvB3oN,KAAKyytB,UACDzytB,KAAK0ytB,qBAAqB1ytB,KAAK0I,QAASigN,GAAW3oN,KAAKgG,SAC5DhG,KAAK2ytB,eAAiBhqgB,GAAUroN,OAASqoN,GAAUA,GAAUroN,OAAS,GAAK,IAAI0wJ,IAC/EhxJ,KAAKyytB,UAAUz8rB,iBAAiB,SAAU,IAAMh2B,KAAKksmB,YACxD,CACDsmH,4BAEQxytB,KAAK8pmB,OACL9pmB,KAAK4ytB,uBAGL5ytB,KAAKyytB,UAAU9uW,OAEtB,CACDkvW,0BAA0BlqgB,IACtB,MAAMmqgB,GAAM,GACZnqgB,UAAUl4M,QAAQsitB,KACdD,GAAI92sB,KAAKqD,OAAO2zsB,YAAYD,IAA5B,GAEGD,EACV,CAEDJ,qBAAqBhqtB,GAASigN,GAAW3iN,IAGrC,OAAO0C,GAAQ+S,QAAWzb,KAAK6ytB,0BAA0BlqgB,IAAY3iN,GACxE,CACDmmmB,QAAQ37kB,IACJxwB,KAAK+rmB,oBAAoB/vlB,KAAKwU,IAC9BxwB,KAAK4rmB,YAAY5vlB,KAAKwU,GACzB,CACDtD,OAAOsD,IACHxwB,KAAK8rmB,mBAAmB9vlB,KAAKwU,IAC7BxwB,KAAK2rmB,WAAW3vlB,KAAKwU,GACxB,CACD47kB,UAAU57kB,IACNxwB,KAAK6rmB,cAAc7vlB,KAAKwU,GAC3B,CACDvD,OACIjtB,KAAK4ktB,eACA5ktB,KAAKqsmB,eACNrsmB,KAAK4rmB,YAAYn7lB,QAAQ+f,IAAMA,MAC/BxwB,KAAK4rmB,YAAc,GACnB5rmB,KAAK0mJ,UAAW,EACZ1mJ,KAAKoytB,gBACLpytB,KAAKoytB,eAAez3sB,SAG5B3a,KAAKyytB,UAAUxlsB,MAClB,CACD02V,QACI3jX,KAAKu+J,OACLv+J,KAAKyytB,UAAU9uW,OAClB,CACDv/U,SACIpkC,KAAKu+J,OACDv+J,KAAKoytB,gBACLpytB,KAAKoytB,eAAehurB,SAExBpkC,KAAKksmB,YACLlsmB,KAAKyytB,UAAUrurB,QAClB,CACD2jC,QACI/nE,KAAK4ytB,uBACL5ytB,KAAK+wG,YAAa,EAClB/wG,KAAKmpJ,WAAY,EACjBnpJ,KAAK0mJ,UAAW,EAChB1mJ,KAAK4rmB,YAAc5rmB,KAAK+rmB,oBACxB/rmB,KAAK2rmB,WAAa3rmB,KAAK8rmB,kBAC1B,CACD8mH,uBACQ5ytB,KAAKyytB,WACLzytB,KAAKyytB,UAAUvgoB,QAEtB,CACDs6gB,UACIxsmB,KAAK+nE,QACL/nE,KAAKitB,MACR,CACDo/kB,aACI,OAAOrsmB,KAAK0mJ,QACf,CACDv5H,UACSntB,KAAK+wG,aACN/wG,KAAK+wG,YAAa,EAClB/wG,KAAK4ytB,uBACL5ytB,KAAKksmB,YACDlsmB,KAAKoytB,gBACLpytB,KAAKoytB,eAAejlsB,UAExBntB,KAAK6rmB,cAAcp7lB,QAAQ+f,IAAMA,MACjCxwB,KAAK6rmB,cAAgB,GAE5B,CACDh8Y,YAAY3uL,SACensB,IAAnB/U,KAAKyytB,WACLzytB,KAAKu+J,OAETv+J,KAAKyytB,UAAUrb,YAAcl2qB,GAAIlhC,KAAK+iC,IACzC,CACD0pkB,cACI,OAAOzsmB,KAAKyytB,UAAUrb,YAAcp3sB,KAAK+iC,IAC5C,CACGkpkB,gBACA,OAAOjsmB,KAAK8pmB,OAAS9pmB,KAAKuytB,SAC7B,CACDhlH,gBACI,MAAM77kB,GAAS,IAAIs/H,IACfhxJ,KAAKqsmB,cAIiBrsmB,KAAK2ytB,eACblitB,QAAQ,CAACsqM,GAAKtoC,MACX,WAATA,IACA/gJ,GAAO6B,IAAIk/I,GAAMzyK,KAAKmpJ,UAAY4xD,GAAM+2f,GAAa9xsB,KAAK0I,QAAS+pK,IAAnE,GAIZzyK,KAAKsytB,gBAAkB5gsB,EAC1B,CAEDg7kB,gBAAgBC,IACZ,MAAMC,GAAwB,UAAdD,GAAwB3smB,KAAK4rmB,YAAc5rmB,KAAK2rmB,WAChEiB,GAAQn8lB,QAAQ+f,IAAMA,MACtBo8kB,GAAQtsmB,OAAS,CACpB,EAGL,MAAM2ytB,GACF1hB,sBAAsB9+hB,IAKlB,OAAO,CACV,CACDygjB,gCAAgCzgjB,IAM5B,OAAO,CACV,CACDm/hB,eAAepinB,GAAUqinB,IAErB,OAAO,CACV,CACDh0iB,gBAAgBkziB,GAAMC,IAClB,OAAOnziB,GAAgBkziB,GAAMC,GAChC,CACDG,iBAAiBzosB,IACb,OAAOyosB,GAAiBzosB,GAC3B,CACDgkB,MAAMhkB,GAASC,GAAUrC,IACrB,OAAOorsB,GAAYhpsB,GAASC,GAAUrC,GACzC,CACDwrsB,aAAappsB,GAAS+pK,GAAMl7F,IACxB,OAAO1lD,OAAOC,iBAAiBppB,IAAS+pK,GAC3C,CACDh3J,QAAQ/S,GAASigN,GAAW/9L,GAAUsZ,GAAOF,GAAQ+tqB,GAAkB,IACnE,MACMohB,GAAgB,CAAEvosB,YAAUsZ,SAAOmD,KADnB,GAATnD,GAAa,OAAS,YAI/BF,KACAmvrB,GAAcnvrB,OAAYA,IAE9B,MAAMovrB,GAAiB,IAAIpikB,IACrBqikB,GAA8BthB,GAAgBz8rB,OAAO0X,IAAUA,cAAkBmlsB,KAtvH/F,SAASmB,GAA+B1osB,GAAUsZ,IAC9C,OAAoB,IAAbtZ,IAA4B,IAAVsZ,EAC5B,EAqvHWovrB,CAA+B1osB,GAAUsZ,KACzCmvrB,GAA4B5itB,QAAQuc,KAChCA,GAAOslsB,gBAAgB7htB,QAAQ,CAACsqM,GAAKtoC,KAAS2gjB,GAAe7/rB,IAAIk/I,GAAMsoC,IAAvE,GAGR,IAAIwkgB,GAh5HZ,SAASgU,GAAmB5qgB,IACxB,OAAKA,GAAUroN,OAGXqoN,GAAU,aAAc33D,IACjB23D,GAEJA,GAAUtnN,IAAI0usB,IAAMqD,GAAarD,KAL7B,EAMd,CAw4HwBwjB,CAAmB5qgB,IAAWtnN,IAAIqwB,IAAU4hrB,GAAW5hrB,KACxE6trB,GA1vHR,SAASiU,GAAmC9qtB,GAASigN,GAAWyqgB,IAC5D,GAAIA,GAAenltB,MAAQ06M,GAAUroN,OAAQ,CACzC,IAAImztB,GAAmB9qgB,GAAU,GAC7B+qgB,GAAoB,GAOxB,GANAN,GAAe3itB,QAAQ,CAACsqM,GAAKtoC,MACpBghjB,GAAiBx4rB,IAAIw3I,KACtBihjB,GAAkB13sB,KAAKy2J,IAE3BghjB,GAAiBlgsB,IAAIk/I,GAAMsoC,GAA3B,GAEA24gB,GAAkBpztB,OAClB,QAASkV,GAAI,EAAGA,GAAImzM,GAAUroN,OAAQkV,KAAK,CACvC,IAAIu6rB,GAAKpnf,GAAUnzM,IACnBk+sB,GAAkBjjtB,QAAQgiK,IAAQs9hB,GAAGx8qB,IAAIk/I,GAAMq/hB,GAAappsB,GAAS+pK,KACxE,CAER,CACD,OAAOk2C,EACV,CAwuHoB6qgB,CAAmC9qtB,GAAS62sB,GAAY6T,IACrE,MAAMO,GAjTd,SAASC,GAA2BlrtB,GAASgpB,IACzC,IAAImisB,GAAc,KACdC,GAAY,KAChB,OAAI3ytB,MAAMkuB,QAAQqC,KAAWA,GAAOpxB,QAChCuztB,GAAc5B,GAA0BvgsB,GAAO,IAC3CA,GAAOpxB,OAAS,IAChBwztB,GAAY7B,GAA0BvgsB,GAAOA,GAAOpxB,OAAS,MAG5DoxB,cAAkBs/H,MACvB6ikB,GAAc5B,GAA0BvgsB,KAEpCmisB,IAAeC,GAAa,IAAInC,GAAmBjptB,GAASmrtB,GAAaC,IAC7E,IACP,CAmS6BF,CAA2BlrtB,GAAS62sB,IAC1D,OAAO,IAAI4S,GAAoBzptB,GAAS62sB,GAAY4T,GAAeQ,GACtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OC1iJL,MAAMI,WAAgCzoH,KAClCxrmB,YAAYk0tB,GAAc9yd,IACtBjjP,QACAje,KAAKi0tB,iBAAmB,EACxB,MAAMC,GAAW,CAAEhssB,GAAI,IAAKzP,cAAe++mB,WAAwB9lmB,OAAQ,GAAInS,KAAM,CAAEoL,UAAW,KAClG3qB,KAAK8mgB,UAAYktN,GAAat+D,eAAex0Z,GAAIn2L,KAAMmppB,GAC1D,CACDhosB,MAAMvB,IACF,MAAMzC,GAAKloB,KAAKi0tB,iBAAiBxytB,WACjCzB,KAAKi0tB,mBACL,MAAMx1nB,GAAQt9F,MAAMkuB,QAAQ1E,KAAd,EAA2B8B,MAAS9B,IAAaA,GAC/DwpsB,UAAsBn0tB,KAAK8mgB,UAAW,KAAM5+e,GAAI,WAAY,CAACu2E,KACtD,IAAI21nB,GAAwBlssB,GAAIloB,KAAK8mgB,UAC/C,EAELitN,GAAwBhxtB,UAAxB,4BAAoHgxtB,IAAV/wtB,MAAmDA,OAAnDA,MAAmF4C,OAA7L,EACAmutB,GAAwB9wtB,WADkFD,MAC1G,OAAwH+wtB,GAAxH7wtB,QAAwH6wtB,GAAxH,YAOA,MAAMK,WAAgC1wrB,KAClC5jC,YAAY6pmB,GAAK7iG,IACb7of,QACAje,KAAK2pmB,IAAMA,GACX3pmB,KAAK8mgB,UAAYA,EACpB,CACD36e,OAAOzjB,GAAS1C,IACZ,OAAO,IAAIqutB,GAAwBr0tB,KAAK2pmB,IAAKjhmB,GAAS1C,IAAW,GAAIhG,KAAK8mgB,UAC7E,EAEL,MAAMutN,GACFv0tB,YAAYooB,GAAIxf,GAAS1C,GAAS8ggB,IAC9B9mgB,KAAKkoB,GAAKA,GACVloB,KAAK0I,QAAUA,GACf1I,KAAK8mgB,UAAYA,GACjB9mgB,KAAKgsmB,aAAe,KACpBhsmB,KAAK0mJ,UAAW,EAChB1mJ,KAAKismB,UAAY,EACjBjsmB,KAAKs0tB,SAAS,SAAUtutB,GAC3B,CACDuutB,QAAQz+rB,GAAWrjB,IACf,OAAOzS,KAAK8mgB,UAAUh3f,OAAO9P,KAAK0I,QAAU,KAAI1I,KAAKkoB,MAAM4N,KAAarjB,GAC3E,CACD6htB,SAASjyc,MAAYjoQ,IACjB,OAAO+5sB,GAAsBn0tB,KAAK8mgB,UAAW9mgB,KAAK0I,QAAS1I,KAAKkoB,GAAIm6P,GAASjoQ,GAChF,CACD8S,OAAOsD,IACHxwB,KAAKu0tB,QAAQ,OAAQ/jsB,GACxB,CACD27kB,QAAQ37kB,IACJxwB,KAAKu0tB,QAAQ,QAAS/jsB,GACzB,CACD47kB,UAAU57kB,IACNxwB,KAAKu0tB,QAAQ,UAAW/jsB,GAC3B,CACD+tI,OACIv+J,KAAKs0tB,SAAS,OACjB,CACDjoH,aACI,OAAOrsmB,KAAK0mJ,QACf,CACDz5H,OACIjtB,KAAKs0tB,SAAS,QACdt0tB,KAAK0mJ,UAAW,CACnB,CACDi9N,QACI3jX,KAAKs0tB,SAAS,QACjB,CACD9nH,UACIxsmB,KAAKs0tB,SAAS,UACjB,CACDlwrB,SACIpkC,KAAKs0tB,SAAS,SACjB,CACDnnsB,UACIntB,KAAKs0tB,SAAS,UACjB,CACDvspB,QACI/nE,KAAKs0tB,SAAS,SACdt0tB,KAAK0mJ,UAAW,CACnB,CACDmpE,YAAY3uL,IACRlhC,KAAKs0tB,SAAS,cAAepzrB,GAChC,CACDurkB,cACI,OAAOzsmB,KAAK8mgB,UAAUgiN,OAAO/7G,SAAS/smB,KAAKkoB,KAAKuklB,eAAiB,CACpE,EAEL,SAAS0nH,GAAsBxptB,GAAUjC,GAASwf,GAAIm6P,GAASjoQ,IAC3D,OAAOzP,GAASqD,YAAYtF,GAAU,KAAIwf,MAAMm6P,KAAWjoQ,GAC9D,CAED,MACMo6sB,GAA0B,aAChC,MAAMC,GACF30tB,YAAY06K,GAAUsuiB,GAAQ3tsB,IAC1Bnb,KAAKw6K,SAAWA,GAChBx6K,KAAK8otB,OAASA,GACd9otB,KAAKmb,MAAQA,GACbnb,KAAK00tB,WAAa,EAClB10tB,KAAK20tB,aAAe,EACpB30tB,KAAK40tB,0BAA4B,GACjC50tB,KAAK60tB,eAAiB,IAAI7jkB,IAC1BhxJ,KAAK80tB,cAAgB,EACrB90tB,KAAK83F,QAAUvyF,QAAQyC,QAAQ,GAC/B8gtB,GAAOyB,kBAAoB,CAAC7htB,GAAS8xK,MAKjC,MAAMtxK,GAAasxK,IAAUtxK,WAAWR,IACpCQ,IACAsxK,GAAS5nK,YAAY1J,GAAYR,GAAjC,CAGX,CACDgtpB,eAAelqoB,GAAa/M,IACxB,MAGM+7J,GAAWx6K,KAAKw6K,SAASk7e,eAAelqoB,GAAa/M,IAC3D,KAAK+M,IAAgB/M,IAASA,GAAKc,MAASd,GAAKc,KAAKoL,WAAc,CAChE,IAAIhgB,GAAW3K,KAAK60tB,eAAe90sB,IAAIy6J,IACvC,OAAK7vK,KACDA,GAAW,IAAIoqtB,GAPI,GAOsCv6iB,GAAUx6K,KAAK8otB,QAExE9otB,KAAK60tB,eAAethsB,IAAIinJ,GAAU7vK,KAE/BA,EACV,CACD,MAAMo3d,GAActjd,GAAKyJ,GACnBs9rB,GAAc/msB,GAAKyJ,GAAK,IAAMloB,KAAK00tB,WACzC10tB,KAAK00tB,aACL10tB,KAAK8otB,OAAOllrB,SAAS4hrB,GAAah6rB,IAClC,MAAMu/rB,GAAmB/2rB,KACjB7yB,MAAMkuB,QAAQ2E,IACdA,GAAQvjB,QAAQs6sB,IAGhB/qtB,KAAK8otB,OAAOiC,gBAAgBhpP,GAAayjP,GAAah6rB,GAAawI,GAAQvsB,KAAMusB,GAAjF,EAIRghsB,OAD0Bv2sB,GAAKc,KAAKoL,UAClBla,QAAQs6sB,IACnB,IAAIkK,GAAkBj1tB,KAAMwltB,GAAahriB,GAAUx6K,KAAK8otB,OAClE,CACDz8gB,QACIrsM,KAAK80tB,gBACD90tB,KAAKw6K,SAAS6xB,OACdrsM,KAAKw6K,SAAS6xB,OAErB,CACD6ohB,qBAEIl1tB,KAAK83F,QAAQzvF,KAAK,KACdrI,KAAK20tB,gBAEZ,CAEDQ,yBAAyB3grB,GAAOhkB,GAAIjR,IAC5Bi1B,IAAS,GAAKA,GAAQx0C,KAAK20tB,aAC3B30tB,KAAKmb,MAAMzJ,IAAI,IAAM8e,GAAGjR,MAGiB,GAAzCvf,KAAK40tB,0BAA0Bt0tB,QAC/BiF,QAAQyC,QAAQ,MAAMK,KAAK,KACvBrI,KAAKmb,MAAMzJ,IAAI,KACX1R,KAAK40tB,0BAA0BnktB,QAAQyosB,KACnC,MAAO1orB,GAAIjR,IAAQ25rB,GACnB1orB,GAAGjR,GAAD,GAENvf,KAAK40tB,0BAA4B,IALrC,GASR50tB,KAAK40tB,0BAA0B54sB,KAAK,CAACwU,GAAIjR,KAC5C,CACDzE,MACI9a,KAAK80tB,gBAGqB,GAAtB90tB,KAAK80tB,eACL90tB,KAAKmb,MAAMtL,kBAAkB,KACzB7P,KAAKk1tB,qBACLl1tB,KAAK8otB,OAAO11iB,MAAMpzK,KAAK20tB,aAAvB,GAGJ30tB,KAAKw6K,SAAS1/J,KACd9a,KAAKw6K,SAAS1/J,KAErB,CACD4wsB,oBACI,OAAO1rtB,KAAK8otB,OAAO4C,mBACtB,EAEL+I,GAAyB1xtB,UAAzB,4BAAqH0xtB,IAvLXzxtB,MAuLqDA,OAvLrDA,MAuLqFqQ,IAvLrFrQ,MAuLqHA,OAA/N,EACAyxtB,GAAyBxxtB,WAxLiFD,MAwL1G,OAAyHyxtB,GAAzHvxtB,QAAyHuxtB,GAAzH,YAIA,MAAMM,GACFj1tB,YAAY0ltB,GAAahriB,GAAUsuiB,IAC/B9otB,KAAKwltB,YAAcA,GACnBxltB,KAAKw6K,SAAWA,GAChBx6K,KAAK8otB,OAASA,GACd9otB,KAAK0/oB,YAAc1/oB,KAAKw6K,SAASkle,YAAe5kb,IAAMtgD,GAASkle,YAAY5kb,IAAK,IACnF,CACGv7M,WACA,OAAOvf,KAAKw6K,SAASj7J,IACxB,CACD4N,UACIntB,KAAK8otB,OAAO37rB,QAAQntB,KAAKwltB,YAAaxltB,KAAKw6K,UAC3Cx6K,KAAKw6K,SAASrtJ,SACjB,CACDpb,cAActK,GAAMshQ,IAChB,OAAO/oQ,KAAKw6K,SAASzoK,cAActK,GAAMshQ,GAC5C,CACDi3Y,cAAc93oB,IACV,OAAOlI,KAAKw6K,SAASwle,cAAc93oB,GACtC,CACDilN,WAAWjlN,IACP,OAAOlI,KAAKw6K,SAAS2yC,WAAWjlN,GACnC,CACD8J,YAAY2lB,GAAQy9rB,IAChBp1tB,KAAKw6K,SAASxoK,YAAY2lB,GAAQy9rB,IAClCp1tB,KAAK8otB,OAAO0I,SAASxxtB,KAAKwltB,YAAa4P,GAAUz9rB,IAAQ,EAC5D,CACDnlB,aAAamlB,GAAQy9rB,GAAUC,GAAU/yE,IAAS,GAC9CtipB,KAAKw6K,SAAShoK,aAAamlB,GAAQy9rB,GAAUC,IAE7Cr1tB,KAAK8otB,OAAO0I,SAASxxtB,KAAKwltB,YAAa4P,GAAUz9rB,GAAQ2qnB,GAC5D,CACD1voB,YAAY+kB,GAAQ29rB,GAAUtxE,IAC1BhkpB,KAAK8otB,OAAOh9a,SAAS9rS,KAAKwltB,YAAa8P,GAAUt1tB,KAAKw6K,SAAUwpe,GACnE,CACD0V,kBAAkBg6B,GAAgBj6B,IAC9B,OAAOz5pB,KAAKw6K,SAASk/e,kBAAkBg6B,GAAgBj6B,GAC1D,CACDvwpB,WAAWD,IACP,OAAOjJ,KAAKw6K,SAAStxK,WAAWD,GACnC,CACDukQ,YAAYvkQ,IACR,OAAOjJ,KAAKw6K,SAASgzF,YAAYvkQ,GACpC,CACD2G,aAAa9G,GAAIrB,GAAMS,GAAO6gQ,IAC1B/oQ,KAAKw6K,SAAS5qK,aAAa9G,GAAIrB,GAAMS,GAAO6gQ,GAC/C,CACDz3P,gBAAgBxI,GAAIrB,GAAMshQ,IACtB/oQ,KAAKw6K,SAASlpK,gBAAgBxI,GAAIrB,GAAMshQ,GAC3C,CACD32P,SAAStJ,GAAIrB,IACTzH,KAAKw6K,SAASpoK,SAAStJ,GAAIrB,GAC9B,CACDuL,YAAYlK,GAAIrB,IACZzH,KAAKw6K,SAASxnK,YAAYlK,GAAIrB,GACjC,CACD2iB,SAASthB,GAAIyiB,GAAOrjB,GAAO4mU,IACvB9uU,KAAKw6K,SAASpwJ,SAASthB,GAAIyiB,GAAOrjB,GAAO4mU,GAC5C,CACD7hJ,YAAYnkL,GAAIyiB,GAAOujT,IACnB9uU,KAAKw6K,SAASyS,YAAYnkL,GAAIyiB,GAAOujT,GACxC,CACD9gU,YAAYlF,GAAIrB,GAAMS,IA1KD,KA2KbT,GAAK1G,OAAO,IAA0B0G,IAAQ+stB,GAC9Cx0tB,KAAKyxtB,kBAAkB3otB,KAAMZ,IAG7BlI,KAAKw6K,SAASxsK,YAAYlF,GAAIrB,GAAMS,GAE3C,CACDy0E,SAAS1zE,GAAMf,IACXlI,KAAKw6K,SAAS79F,SAAS1zE,GAAMf,GAChC,CACD4H,OAAO+M,GAAQiZ,GAAWrjB,IACtB,OAAOzS,KAAKw6K,SAAS1qK,OAAO+M,GAAQiZ,GAAWrjB,GAClD,CACDg/sB,kBAAkB/otB,GAASR,IACvBlI,KAAK8otB,OAAO2I,kBAAkB/otB,GAASR,GAC1C,EAEL,MAAM+stB,WAA0BF,GAC5Bj1tB,YAAYoD,GAASsitB,GAAahriB,GAAUsuiB,IACxC7qsB,MAAMunsB,GAAahriB,GAAUsuiB,IAC7B9otB,KAAKkD,QAAUA,GACflD,KAAKwltB,YAAcA,EACtB,CACDx3sB,YAAYlF,GAAIrB,GAAMS,IAlMD,KAmMbT,GAAK1G,OAAO,GACU,KAAlB0G,GAAK1G,OAAO,IAAa0G,IAAQ+stB,IACjCtstB,QAAkB6M,IAAV7M,MAA+BA,GACvClI,KAAKyxtB,kBAAkB3otB,GAAIZ,KAG3BlI,KAAK8otB,OAAO3usB,QAAQna,KAAKwltB,YAAa18sB,GAAIrB,GAAK/F,MAAM,GAAIwG,IAI7DlI,KAAKw6K,SAASxsK,YAAYlF,GAAIrB,GAAMS,GAE3C,CACD4H,OAAO+M,GAAQiZ,GAAWrjB,IACtB,GAjNiB,KAiNbqjB,GAAU/0B,OAAO,GAAwB,CACzC,MAAM2H,GAgBlB,SAAS6stB,GAAyB14sB,IAC9B,OAAQA,QACC,OACD,OAAOxZ,SAAS0nE,SACf,WACD,OAAO1nE,aACN,SACD,OAAOwuB,eAEP,OAAOhV,GAElB,CA3B2B04sB,CAAyB14sB,IACzC,IAAIpV,GAAOquB,GAAUp0B,MAAM,GACvB+ktB,GAAQ,GAGZ,MAvNa,KAuNTh/sB,GAAK1G,OAAO,MACX0G,GAAMg/sB,IAsBvB,SAAS+O,GAAyBhlB,IAC9B,MAAMilB,GAAWjlB,GAAYvvsB,QAAQ,KAC/B+yB,GAAUw8qB,GAAYt+pB,UAAU,EAAGujrB,IACnChP,GAAQjW,GAAY9usB,MAAM+ztB,GAAW,GAC3C,MAAO,CAACzhsB,GAASyyrB,GACpB;;;;;;;OA3B+B+O,CAAyB/ttB,KAEtCzH,KAAK8otB,OAAOh5sB,OAAO9P,KAAKwltB,YAAa98sB,GAASjB,GAAMg/sB,GAAOz2sB,KAC9D,MAAM0ltB,GAAU1ltB,GAAMuN,QAAY,EAClCvd,KAAKkD,QAAQiytB,yBAAyBO,GAASjjtB,GAAUzC,GAAzD,EAEP,CACD,OAAOhQ,KAAKw6K,SAAS1qK,OAAO+M,GAAQiZ,GAAWrjB,GAClD,EA4BL,MAAMkjtB,WAAkCC,GAIpC91tB,YAAYohQ,GAAKuuc,GAAQC,GAAYruM,IACjCpjf,MAAMijP,GAAIn2L,KAAM0koB,GAAQC,GAC3B,CACD7+rB,cACI7Q,KAAKozK,OACR,EAELuijB,GAA0B5ytB,UAA1B,4BAAsH4ytB,IAvVZ3ytB,MAuVuD4C,OAvVvD5C,MAuV4EqQ,IAvV5ErQ,MAuV2GqQ,IAvV3GrQ,MAuVoJA,OAA9P,EACA2ytB,GAA0B1ytB,WAxVgFD,MAwV1G,OAA0H2ytB,GAA1HzytB,QAA0HyytB,GAA1H,YAaA,MAAME,GAA6B,CAC/B,CAAE1vtB,QAASmlmB,KAAkBjlmB,SAAU0ttB,IACvC,CAAE5ttB,QAAS2vtB,GAA2Bv6jB,WAR1C,SAASw6jB,KACL,OAAO,IAAIC,EACd,GAOG,CAAE7vtB,QAASyvtB,GAAkBvvtB,SAAUsvtB,IAA6B,CAChExvtB,QAAS02oB,MACTthf,WARR,SAAS06jB,GAA2BtrtB,GAAUm+sB,GAAQxqsB,IAClD,OAAO,IAAIm2sB,GAAyB9ptB,GAAUm+sB,GAAQxqsB,GACzD,EAOOm/Y,KAAM,CAACy4T,KAAsBN,GAAkB5yhB,SAOjDmzhB,GAA+B,CACjC,CAAEhwtB,QAAS8rsB,GAAiB12iB,WAAY,IAAM,IAAI66jB,IAClD,CAAEjwtB,QAAS0jrB,MAAuBrjrB,SAAU,wBAA0BqvtB,IAMpEQ,GAAoC,CACtC,CAAElwtB,QAAS8rsB,GAAiB5rsB,SAAUiwtB,IACtC,CAAEnwtB,QAAS0jrB,MAAuBrjrB,SAAU,qBAAuBqvtB;;;;;;;OAevE,MAAMU,GAiBexwtB,kBAAChG,IACd,MAAO,CACHkG,SAAUswtB,GACVrwtB,UAAWnG,GAAO0xtB,kBAAoB4E,GAClCF,GAEX,EAELI,GAAwBxztB,UAAxB,4BAAoHwztB,GAApH,EACAA,GAAwB9vtB,UArakFzD,MAqa1G,MAAqHuztB,KACrHA,GAAwB7vtB,UAtakF1D,MAsa1G,WAAyJmztB,GAAzJznjB,SAAiM8njB,QAwCjM,MAAMC,IAENA,GAAqB1ztB,UAArB,4BAAiH0ztB,GAAjH,EACAA,GAAqBhwtB,UAjdqFzD,MAid1G,MAAkHyztB,KAClHA,GAAqB/vtB,UAldqF1D,MAkd1G,WAAmJqztB,GAAnJ3njB,SAAgM8njB,OAkC/L;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OCjgBD,MAAME,UAAiCC,KACnC72tB,cACIme,SAASkT,WACTnxB,KAAK42tB,mBAAoB,CAC5B;;;;;;;OAiBL,MAAMC,UAA0BH,EACV3wtB,sBACd+wtB,QAAmB,IAAID,EAC1B,CACDE,YAAYjutB,GAAI68W,GAAKpC,IACjBz6W,UAAGktB,iBAAiB2vV,GAAKpC,IAAU,GAG5B,KACHz6W,GAAGiuB,oBAAoB4uV,GAAKpC,IAAU,EAAtC,CAEP,CACDzuE,cAAchsS,GAAI68W,IACd78W,GAAGgsS,cAAc6wE,GACpB,CACDhuW,OAAO1O,IACCA,GAAKC,YACLD,GAAKC,WAAW0J,YAAY3J,GAEnC,CACD8I,cAAcvC,GAAS0xP,IACnBA,UAAMA,IAAOlhQ,KAAKg3tB,sBACPjltB,cAAcvC,GAC5B,CACDyntB,qBACI,OAAO5ztB,SAASmuC,eAAeuzP,mBAAmB,YACrD,CACDiyb,qBACI,OAAO3ztB,QACV,CACD6ntB,cAAcjitB,IACV,OAAOA,GAAKT,WAAasgF,KAAK6/N,YACjC,CACDuua,aAAajutB,IACT,OAAOA,cAAgBkutB,gBAC1B,CAEDzoH,qBAAqBxtW,GAAKrkP,IACtB,MAAe,WAAXA,GACOgV,OAEI,aAAXhV,GACOqkP,GAEI,SAAXrkP,GACOqkP,GAAIn2L,KAER,IACV,CACDyjiB,YAAYttW,IACR,MAAMp2K,GAcd,SAASssoB,IACLC,SAAcA,GAAeh0tB,SAAS4nB,cAAc,QAC7CossB,EAAcA,EAAY7tsB,aAAa,QAAU,IAC3D,CAjBoB4tsB,GACb,OAAe,MAARtsoB,GAAe,KAmB9B,SAASmhS,GAAaloX,IAClBuztB,GAAiBA,IAAkBj0tB,SAAS0O,cAAc,KAC1DultB,GAAe1ntB,aAAa,OAAQ7L,IACpC,MAAMwztB,GAAWD,GAAevytB,SAChC,MAA8B,MAAvBwytB,GAASx2tB,OAAO,GAAaw2tB,GAAY,IAAGA,IACtD;;;;;;;OAxBoCtrW,CAAanhS,GAC7C,CACD0soB,mBACIH,EAAc,IACjB,CACDx8B,eACI,OAAOhpqB,OAAO/jB,UAAUR,SAC3B,CACDmqtB,UAAUhwtB,IACN,SAAO8rnB,MAAkBlwnB,SAASw5mB,OAAQp1mB,GAC7C,EAEL,IAMI6vtB,GANAD,EAAc,KAyBlB,MAAMK,GAAgB,IAAI93tB,MAAe,iBAczC,MAAM+3tB,GAA8B,CAChC,CACIxxtB,QAAS4irB,MACTxthB,WAhBR,SAASq8jB,GAAsBC,GAAcx0tB,GAAUwiL,IACnD,MAAO,KAGHA,GAAS9lK,IAAIipqB,OAAuBE,YAAY7grB,KAAK,KACjD,MAAMq2L,MAAMk8f,OACNlpqB,GAASruB,GAAS4/J,iBAAkB,wBAAuB40jB,QACjE,QAASritB,GAAI,EAAGA,GAAIkc,GAAOpxB,OAAQkV,KAC/BkpL,GAAI/mL,OAAO+Z,GAAOlc,IAAlB,EAJR,CAQP,EAKOioZ,KAAM,CAACi6T,GAAe9xtB,KAAUsmnB,OAChC5lnB,OAAO;;;;;;;OA+Df,MAAMwxtB,GACF5rsB,QACI,OAAO,IAAIooU,cACd,EAELwjY,GAAW/0tB,UAAX,4BAAuG+0tB,GAAvG,EACAA,GAAW70tB,WADkFD,MAC7F,OAA2G80tB,GAA3G50tB,QAA2G40tB,GAA3G;;;;;;;;AAiBA,MAAMC,GAAwB,IAAIn4tB,MAAe,uBAOjD,MAAMo4tB,GAIFl4tB,YAAYi+Q,GAAS5iQ,IACjBnb,KAAKmb,MAAQA,GACbnb,KAAKi4tB,mBAAqB,IAAIjnkB,IAC9B+sH,GAAQttQ,QAAQywB,IAAKA,GAAEutgB,QAAUzuiB,MACjCA,KAAK2/T,SAAW5hD,GAAQr8Q,QAAQ0zC,SACnC,CAUDpf,iBAAiBttB,GAASotB,GAAWivD,IAEjC,OADe/kF,KAAKk4tB,eAAepisB,IACrBE,iBAAiBttB,GAASotB,GAAWivD,GACtD,CAWDozoB,uBAAuBt7sB,GAAQiZ,GAAWivD,IAEtC,OADe/kF,KAAKk4tB,eAAepisB,IACrBqisB,uBAAuBt7sB,GAAQiZ,GAAWivD,GAC3D,CAIDqzoB,UACI,OAAOp4tB,KAAKmb,KACf,CAED+8sB,eAAepisB,IACX,MAAMmoP,GAASj+Q,KAAKi4tB,mBAAmBl4sB,IAAI+V,IAC3C,GAAImoP,GACA,OAAOA,GAEX,MAAMF,GAAU/9Q,KAAK2/T,SACrB,QAASnqT,GAAI,EAAGA,GAAIuoQ,GAAQz9Q,OAAQkV,KAAK,CACrC,MAAMyoQ,GAASF,GAAQvoQ,IACvB,GAAIyoQ,GAAOk2R,SAASr+gB,IAChB,YAAKmisB,mBAAmB1ksB,IAAIuC,GAAWmoP,IAChCA,EAEd,CACD,MAAM,IAAI19Q,MAAO,2CAA0Cu1B,KAC9D,EAELkisB,GAAaj1tB,UAAb,4BAAyGi1tB,IArFZh1tB,MAqF0C+0tB,IArF1C/0tB,MAqF4EA,OAAzK,EACAg1tB,GAAa/0tB,WAtFgFD,MAsF7F,OAA6Gg1tB,GAA7G90tB,QAA6G80tB,GAA7G,YAOA,MAAMK,GACFv4tB,YAAYuumB,IACRrumB,KAAKqumB,KAAOA,EACf,CACD8pH,uBAAuBzvtB,GAASotB,GAAWivD,IACvC,MAAMloE,MAAS+9qB,OAAUlsF,qBAAqB1umB,KAAKqumB,KAAM3lmB,IACzD,IAAKmU,GACD,MAAM,IAAItc,MAAO,4BAA2Bsc,gBAAoBiZ,MAEpE,OAAO91B,KAAKg2B,iBAAiBnZ,GAAQiZ,GAAWivD,GACnD;;;;;;;OAUL,MAAMuzoB,GACFx4tB,cAEIE,KAAKu4tB,WAAa,IAAIj9rB,GACzB,CACDgrP,UAAU50P,IACN,MAAM8msB,GAAY,IAAIl9rB,IACtB5J,GAAOjhB,QAAQ8a,KACNvrB,KAAKu4tB,WAAWt9rB,IAAI1P,MACrBvrB,KAAKu4tB,WAAWvstB,IAAIuf,IACpBitsB,GAAUxstB,IAAIuf,IAAd,GAGRvrB,KAAKy4tB,cAAcD,GACtB,CACDC,cAAcD,IAAc,CAC5BE,eACI,OAAOv3tB,MAAMqE,KAAKxF,KAAKu4tB,WAC1B,EAELD,GAAiBv1tB,UAAjB,4BAA6Gu1tB,GAA7G,EACAA,GAAiBr1tB,WAtI4ED,MAsI7F,OAAiHs1tB,GAAjHp1tB,QAAiHo1tB,GAAjH,YAIA,MAAMK,WAA4BL,GAC9Bx4tB,YAAYuumB,IACRpwlB,QACAje,KAAKqumB,KAAOA,GAEZrumB,KAAK44tB,WAAa,IAAI5nkB,IACtBhxJ,KAAK44tB,WAAWrlsB,IAAI86kB,GAAKtjjB,KAAM,GAClC,CACD8tqB,iBAAiBnnsB,GAAQxtB,GAAM40tB,IAC3BpnsB,GAAOjhB,QAAS8a,KACZ,MAAM+1S,GAAUthU,KAAKqumB,KAAKt8lB,cAAc,SACxCuvT,GAAQzvT,YAAc0Z,GACtButsB,GAAW98sB,KAAK9X,GAAK8N,YAAYsvT,IAAjC,EAEP,CACDy3Z,QAAQC,IACJ,MAAMF,GAAa,GACnB94tB,KAAK64tB,iBAAiB74tB,KAAKu4tB,WAAYS,GAAUF,IACjD94tB,KAAK44tB,WAAWrlsB,IAAIylsB,GAAUF,GACjC,CACDG,WAAWD,IACP,MAAMF,GAAa94tB,KAAK44tB,WAAW74sB,IAAIi5sB,IACnCF,IACAA,GAAWrotB,QAAQw8K,IAEvBjtL,KAAK44tB,WAAW19rB,OAAO89rB,GAC1B,CACDP,cAAcD,IACVx4tB,KAAK44tB,WAAWnotB,QAAQ,CAACqotB,GAAYE,MACjCh5tB,KAAK64tB,iBAAiBL,GAAWQ,GAAUF,GAA3C,EAEP,CACDjotB,cACI7Q,KAAK44tB,WAAWnotB,QAAQqotB,IAAcA,GAAWrotB,QAAQw8K,IAC5D,EAUL,SAASA,GAAYisiB,KACjBt+B,SAAUjjrB,OAAOuhtB,GACpB;;;;;;;OAVDP,GAAoB51tB,UAApB,4BAAgH41tB,IA9KnB31tB,MA8KwD4C,MAArJ,EACA+ytB,GAAoB11tB,WA/KyED,MA+K7F,OAAoH21tB,GAApHz1tB,QAAoHy1tB,GAApH,YAkBA,MAAMQ,GAAiB,CACnBnxoB,IAAO,6BACPoxoB,MAAS,+BACTC,MAAS,+BACT/jY,IAAO,uCACPgkY,MAAS,gCACT3slB,KAAQ,kCAEN4slB,GAAkB,UAGlBC,GAAa,iBACbC,GAAgB,oBAOtB,SAASxZ,GAAcyZ,GAAQhosB,GAAQ7U,IACnC,QAASrH,GAAI,EAAGA,GAAIkc,GAAOpxB,OAAQkV,KAAK,CACpC,IAAI+V,GAAQmG,GAAOlc,IACfrU,MAAMkuB,QAAQ9D,IACd00rB,GAAcyZ,GAAQnusB,GAAO1O,KAG7B0O,GAAQA,GAAMlrB,QAAQk5tB,GAAiBG,IACvC78sB,GAAOb,KAAKuP,IAEnB,CACD,OAAO1O,EACV,CACD,SAAS88sB,GAAuB3jlB,IAK5B,OAAQhmI,KAKJ,GAAc,iBAAVA,GACA,OAAOgmI,IAGkB,IADAA,GAAahmI,MAGtCA,GAAM6D,iBACN7D,GAAM64L,aAAc,GAI/B,CAED,MAAM+whB,GACF95tB,YAAY+5tB,GAAcC,GAAkBC,IACxC/5tB,KAAK65tB,aAAeA,GACpB75tB,KAAK85tB,iBAAmBA,GACxB95tB,KAAK+5tB,MAAQA,GACb/5tB,KAAKg6tB,iBAAmB,IAAIhpkB,IAC5BhxJ,KAAKi6tB,gBAAkB,IAAIC,GAAoBL,GAClD,CACDnkE,eAAehtpB,GAAS+V,IACpB,IAAK/V,KAAY+V,GACb,OAAOze,KAAKi6tB,gBAEhB,OAAQx7sB,GAAKhG,oBACJ++mB,eAA4B,CAC7B,IAAI7snB,GAAW3K,KAAKg6tB,iBAAiBj6sB,IAAItB,GAAKyJ,IAC9C,OAAKvd,KACDA,GAAW,IAAIwvtB,GAAkCn6tB,KAAK65tB,aAAc75tB,KAAK85tB,iBAAkBr7sB,GAAMze,KAAK+5tB,OACtG/5tB,KAAKg6tB,iBAAiBzmsB,IAAI9U,GAAKyJ,GAAIvd,KAEvCA,GAASyvtB,YAAY1xtB,IACdiC,EACV,MAGI,OACA6snB,gBAUD,OAAO,IAAI6iG,GAAkBr6tB,KAAK65tB,aAAc75tB,KAAK85tB,iBAAkBpxtB,GAAS+V,IAAzE,QAEP,IAAKze,KAAKg6tB,iBAAiB/+rB,IAAIxc,GAAKyJ,IAAK,CACrC,MAAMwJ,GAASuurB,GAAcxhsB,GAAKyJ,GAAIzJ,GAAKiT,OAAQ,IACnD1xB,KAAK85tB,iBAAiBxzc,UAAU50P,IAChC1xB,KAAKg6tB,iBAAiBzmsB,IAAI9U,GAAKyJ,GAAIloB,KAAKi6tB,gBAC3C,CACD,OAAOj6tB,KAAKi6tB,gBAGvB,CACD5thB,QAAW,CACXvxL,MAAS,EAEb8+sB,GAAoB72tB,UAApB,4BAAgH62tB,IAzSnB52tB,MAySwDg1tB,IAzSxDh1tB,MAySiF21tB,IAzSjF31tB,MAySiHwmrB,OAA9M,EACAowC,GAAoB32tB,WA1SyED,MA0S7F,OAAoH42tB,GAApH12tB,QAAoH02tB,GAApH,YAOA,MAAMM,GACFp6tB,YAAY+5tB,IACR75tB,KAAK65tB,aAAeA,GACpB75tB,KAAKuf,KAAOF,OAAO8M,OAAO,MAC1BnsB,KAAK0/oB,YAAc,IACtB,CACDvynB,UAAa,CACbpb,cAActK,GAAMshQ,IAChB,OAAIA,GAUO1lQ,SAASktQ,gBAAgB4od,GAAepwd,KAAcA,GAAWthQ,IAErEpE,SAAS0O,cAActK,GACjC,CACDu4oB,cAAc93oB,IACV,OAAO7E,SAAS28oB,cAAc93oB,GACjC,CACDilN,WAAWjlN,IACP,OAAO7E,SAAS4qQ,eAAe/lQ,GAClC,CACD8J,YAAY2lB,GAAQy9rB,KACKkF,GAAe3isB,IAAUA,GAAOlW,QAAUkW,IAClD3lB,YAAYojtB,GAC5B,CACD5itB,aAAamlB,GAAQy9rB,GAAUC,IACvB19rB,KACqB2isB,GAAe3isB,IAAUA,GAAOlW,QAAUkW,IAClDnlB,aAAa4itB,GAAUC,GAE3C,CACDzitB,YAAY+kB,GAAQ29rB,IACZ39rB,IACAA,GAAO/kB,YAAY0itB,GAE1B,CACD57D,kBAAkBg6B,GAAgBj6B,IAC9B,IAAI3wpB,GAA+B,iBAAnB4qrB,GAA8BrwrB,SAAS4nB,cAAcyoqB,IACjEA,GACJ,IAAK5qrB,GACD,MAAM,IAAIvI,MAAO,iBAAgBmzrB,kCAErC,OAAKj6B,KACD3wpB,GAAG+I,YAAc,IAEd/I,EACV,CACDI,WAAWD,IACP,OAAOA,GAAKC,UACf,CACDskQ,YAAYvkQ,IACR,OAAOA,GAAKukQ,WACf,CACD59P,aAAa9G,GAAIrB,GAAMS,GAAO6gQ,IAC1B,GAAIA,GAAW,CACXthQ,GAAOshQ,GAAY,IAAMthQ,GACzB,MAAM8ytB,GAAepB,GAAepwd,IAChCwxd,GACAzxtB,GAAG0nQ,eAAe+pd,GAAc9ytB,GAAMS,IAGtCY,GAAG8G,aAAanI,GAAMS,GAE7B,MAEGY,GAAG8G,aAAanI,GAAMS,GAE7B,CACDoJ,gBAAgBxI,GAAIrB,GAAMshQ,IACtB,GAAIA,GAAW,CACX,MAAMwxd,GAAepB,GAAepwd,IAChCwxd,GACAzxtB,GAAG0xtB,kBAAkBD,GAAc9ytB,IAGnCqB,GAAGwI,gBAAiB,GAAEy3P,MAAathQ,KAE1C,MAEGqB,GAAGwI,gBAAgB7J,GAE1B,CACD2K,SAAStJ,GAAIrB,IACTqB,GAAG4zL,UAAU1wL,IAAIvE,GACpB,CACDuL,YAAYlK,GAAIrB,IACZqB,GAAG4zL,UAAU/kL,OAAOlQ,GACvB,CACD2iB,SAASthB,GAAIyiB,GAAOrjB,GAAO4mU,IACnBA,IAASo0S,eAA+BA,iBACxCp6mB,GAAGyiB,MAAMvd,YAAYud,GAAOrjB,GAAO4mU,GAAQo0S,gBAAgC,YAAc,IAGzFp6mB,GAAGyiB,MAAMA,IAASrjB,EAEzB,CACD+kL,YAAYnkL,GAAIyiB,GAAOujT,IACfA,GAAQo0S,eACRp6mB,GAAGyiB,MAAMuzQ,eAAevzQ,IAKxBziB,GAAGyiB,MAAMA,IAAS,EAEzB,CACDvd,YAAYlF,GAAIrB,GAAMS,IAElBY,GAAGrB,IAAQS,EACd,CACDy0E,SAAS1zE,GAAMf,IACXe,GAAK6jQ,UAAY5kQ,EACpB,CACD4H,OAAO+M,GAAQ7M,GAAOyC,IAElB,MAAsB,iBAAXoK,GACA7c,KAAK65tB,aAAa1B,uBAAuBt7sB,GAAQ7M,GAAO2ptB,GAAuBlntB,KAEnFzS,KAAK65tB,aAAa7jsB,iBAAiBnZ,GAAQ7M,GAAO2ptB,GAAuBlntB,IACnF,EAEsB,IAAIjR,WAAW,GAQ1C,SAAS84tB,GAAerxtB,IACpB,MAAwB,aAAjBA,GAAKuG,cAA2CuF,IAAjB9L,GAAKwY,OAC9C,CACD,MAAM04sB,WAA0CD,GAC5Cp6tB,YAAY+5tB,GAAcC,GAAkBj5iB,GAAWk5iB,IACnD97sB,MAAM47sB,IACN75tB,KAAK6gL,UAAYA,GACjB,MAAMnvJ,GAASuurB,GAAc8Z,GAAQ,IAAMl5iB,GAAU34J,GAAI24J,GAAUnvJ,OAAQ,IAC3EoosB,GAAiBxzc,UAAU50P,IAC3B1xB,KAAKy6tB,YApPb,SAASC,GAAqBC,IAC1B,OAAOlB,GAAap5tB,QAAQk5tB,GAAiBoB,GAChD,CAkP0BD,CAAqBX,GAAQ,IAAMl5iB,GAAU34J,IAChEloB,KAAK46tB,SAlPb,SAASC,GAAkBF,IACvB,OAAOnB,GAAUn5tB,QAAQk5tB,GAAiBoB,GAC7C,CAgPuBE,CAAkBd,GAAQ,IAAMl5iB,GAAU34J,GAC7D,CACDkysB,YAAY1xtB,IACRuV,MAAMrO,aAAalH,GAAS1I,KAAK46tB,SAAU,GAC9C,CACD7otB,cAAc4lB,GAAQlwB,IAClB,MAAMqB,GAAKmV,MAAMlM,cAAc4lB,GAAQlwB,IACvC,aAAMmI,aAAa9G,GAAI9I,KAAKy6tB,YAAa,IAClC3xtB,EACV,EAEL,MAAMuxtB,WAA0BH,GAC5Bp6tB,YAAY+5tB,GAAcC,GAAkB1/Z,GAAQv5I,IAChD5iK,MAAM47sB,IACN75tB,KAAK85tB,iBAAmBA,GACxB95tB,KAAKo6T,OAASA,GACdp6T,KAAKionB,WAAa7tT,GAAOytT,aAAa,CAAEvmf,KAAM,SAC9CthI,KAAK85tB,iBAAiBf,QAAQ/4tB,KAAKionB,YACnC,MAAMv2lB,GAASuurB,GAAcp/hB,GAAU34J,GAAI24J,GAAUnvJ,OAAQ,IAC7D,QAASlc,GAAI,EAAGA,GAAIkc,GAAOpxB,OAAQkV,KAAK,CACpC,MAAM8rT,GAAUj+T,SAAS0O,cAAc,SACvCuvT,GAAQzvT,YAAc6f,GAAOlc,IAC7BxV,KAAKionB,WAAWj2mB,YAAYsvT,GAC/B,CACJ,CACDw5Z,iBAAiB7xtB,IACb,OAAOA,KAASjJ,KAAKo6T,OAASp6T,KAAKionB,WAAah/mB,EACnD,CACDkkB,UACIntB,KAAK85tB,iBAAiBb,WAAWj5tB,KAAKionB,WACzC,CACDj2mB,YAAY2lB,GAAQy9rB,IAChB,OAAOn3sB,MAAMjM,YAAYhS,KAAK86tB,iBAAiBnjsB,IAASy9rB,GAC3D,CACD5itB,aAAamlB,GAAQy9rB,GAAUC,IAC3B,OAAOp3sB,MAAMzL,aAAaxS,KAAK86tB,iBAAiBnjsB,IAASy9rB,GAAUC,GACtE,CACDzitB,YAAY+kB,GAAQ29rB,IAChB,OAAOr3sB,MAAMrL,YAAY5S,KAAK86tB,iBAAiBnjsB,IAAS29rB,GAC3D,CACDpstB,WAAWD,IACP,OAAOjJ,KAAK86tB,iBAAiB78sB,MAAM/U,WAAWlJ,KAAK86tB,iBAAiB7xtB,KACvE;;;;;;;OAUL,MAAM8xtB,WAAwB1C,GAC1Bv4tB,YAAYohQ,IACRjjP,MAAMijP,GACT,CAGDizS,SAASr+gB,IACL,OAAO,CACV,CACDE,iBAAiBttB,GAASotB,GAAWivD,IACjCr8E,UAAQstB,iBAAiBF,GAAWivD,IAAS,GACtC,IAAM/kF,KAAK+2B,oBAAoBruB,GAASotB,GAAWivD,GAC7D,CACDhuD,oBAAoBla,GAAQiZ,GAAWrjB,IACnC,OAAOoK,GAAOka,oBAAoBjB,GAAWrjB,GAChD,EAELsotB,GAAgBh4tB,UAAhB,4BAA4Gg4tB,IAxgBf/3tB,MAwgBgD4C,MAA7I,EACAm1tB,GAAgB93tB,WAzgB6ED,MAygB7F,OAAgH+3tB,GAAhH73tB,QAAgH63tB,GAAhH;;;;;;;;AAkBA,MAAMC,GAAgB,CAAC,MAAO,UAAW,OAAQ,SAG3CC,GAAU,CACZ,KAAM,YACN,KAAM,MACN,OAAQ,SACR,OAAQ,SACRC,IAAO,SACP3htB,IAAO,SACPsjK,KAAQ,YACRC,MAAS,aACTC,GAAM,UACNC,KAAQ,YACRm+iB,KAAQ,cACRC,OAAU,aACVC,IAAO,MAKLC,GAAuB,CACzB3rc,IAAQ3/Q,IAAUA,GAAMwK,OACxB0jK,QAAYluK,IAAUA,GAAMipF,QAC5Bw8C,KAASzlI,IAAUA,GAAM46K,QACzBhlI,MAAU51C,IAAUA,GAAMkpF,UAM9B,MAAMqioB,WAAwBlD,GAK1Bv4tB,YAAYohQ,IACRjjP,MAAMijP,GACT,CAMDizS,SAASr+gB,IACL,OAAoD,MAA7CylsB,GAAgBC,eAAe1lsB,GACzC,CASDE,iBAAiBttB,GAASotB,GAAWivD,IACjC,MAAM02oB,GAAcF,GAAgBC,eAAe1lsB,IAC7C4lsB,GAAiBH,GAAgBI,cAAcF,GAAYG,QAAY72oB,GAAS/kF,KAAKyuiB,QAAQ2pL,WACnG,OAAOp4tB,KAAKyuiB,QAAQ2pL,UAAUvotB,kBAAkB,OACrC+qrB,OAAUm8B,YAAYrutB,GAAS+ytB,GAAYI,aAAiBH,IAE1E,CAUoB31tB,sBAAC+vB,IAClB,MAAMh0B,GAAQg0B,GAAU/a,cAAchZ,MAAM,KACtC85tB,GAAe/5tB,GAAM8jD,QAC3B,GAAsB,IAAjB9jD,GAAMxB,QAAoC,YAAjBu7tB,IAA+C,UAAjBA,GACxD,OAAO,KAEX,MAAMjisB,GAAM2hsB,GAAgBO,cAAch6tB,GAAMwuD,OAChD,IAAIsrqB,GAAU,GACVG,GAASj6tB,GAAMb,QAAQ,QAa3B,GAZI86tB,IAAS,IACTj6tB,GAAM+kD,OAAOk1qB,GAAQ,GACrBH,GAAU,SAEdZ,GAAcvqtB,QAAQurtB,KAClB,MAAMxvtB,GAAQ1K,GAAMb,QAAQ+6tB,IACxBxvtB,IAAQ,IACR1K,GAAM+kD,OAAOr6C,GAAO,GACpBovtB,IAAWI,GAAe,OAGlCJ,IAAWhisB,GACS,GAAhB93B,GAAMxB,QAA8B,IAAfs5B,GAAIt5B,OAEzB,OAAO,KAKX,MAAMsxB,GAAS,GACfA,UAAOiqsB,aAAkBA,GACzBjqsB,GAAOgqsB,QAAaA,GACbhqsB,EACV,CAW2B7rB,6BAACiK,GAAOistB,IAChC,IAAIC,GAAUjB,GAAQjrtB,GAAM4pB,MAAQ5pB,GAAM4pB,IACtCA,GAAM,GAMV,OALIqisB,GAAYh7tB,QAAQ,UAAW,IAC/Bi7tB,GAAUlstB,GAAMgmH,KAChBp8F,GAAM,WAGK,MAAXsisB,KAAoBA,MAExBA,GAAUA,GAAQnhtB,cACF,MAAZmhtB,GACAA,GAAU,QAEO,MAAZA,KACLA,GAAU,OAEdlB,GAAcvqtB,QAAQurtB,KAClB,GAAIA,KAAiBE,GAAS,EAEtBC,EADmBb,GAAqBU,KACzBhstB,MACf4pB,IAAOoisB,GAAe,IAE7B,IAELpisB,IAAOsisB,GACAtisB,KAAQqisB,GAClB,CAQmBl2tB,qBAAC61tB,GAAS72oB,GAASzmE,IACnC,OAAQtO,KACAurtB,GAAgBa,sBAAsBpstB,GAAO4rtB,KAC7Ct9sB,GAAKwvqB,WAAW,IAAM/omB,GAAQ/0E,IAA9B,CAGX,CAEmBjK,qBAACgqR,IAEjB,MACS,QADDA,GAEO,SAEAA,EAElB,EAELwrc,GAAgBx4tB,UAAhB,4BAA4Gw4tB,IAlsBfv4tB,MAksBgD4C,MAA7I,EACA21tB,GAAgBt4tB,WAnsB6ED,MAmsB7F,OAAgHu4tB,GAAhHr4tB,QAAgHq4tB,GAAhH,YAoIA,MAAMc,GAAsC,CACxC,CAAEl2tB,QAASqtnB,MAAahtnB,SAAU81tB,MAClC,CAAEn2tB,QAASwjrB,MAAsBnjrB,SAbrC,SAAS+1tB,KACL1F,EAAkB2F,aACrB,EAW8Dl2tB,OAAO,GAClE,CAAEH,QAASP,KAAU21J,WARzB,SAASkhkB,KAELC,gBAAar5tB,UACNA,QACV,EAI+Co6Z,KAAM,KAQhDk/T,MAAkB9rC,OAAsBiJ,MAAc,UAAWuiC,IAOjEO,GAAkC,IAAIh9tB,MAAgE,IACtGi9tB,GAAwB,CAC1B,CACI12tB,QAAS22tB,MACTz2tB,SAt5BR,MAAM02tB,GACFpuC,YAAYnwlB,IACRw+nB,4BAAmC,CAAC/ptB,GAAMo9qB,IAAkB,KACxD,MAAMN,GAAcvxlB,GAAS4xlB,sBAAsBn9qB,GAAMo9qB,IACzD,GAAmB,MAAfN,GACA,MAAM,IAAIxvrB,MAAM,2CAEpB,OAAOwvrB,IAEXitC,iCAAwC,IAAMx+nB,GAAS0xlB,sBACvD8sC,gCAAuC,IAAMx+nB,GAAS2xlB,qBAgBjD6sC,6BACDA,2BAAkC,IAEtCA,gCAlBuBvqtB,KACnB,MAAMwqtB,GAAgBD,mCACtB,IAAIxorB,GAAQyorB,GAAc38tB,OACtB48tB,IAAU,EACd,MAAMj9R,GAAY,SAAUk9R,IACxBD,GAAUA,IAAWC,GACrB3orB,KACa,GAATA,IACA/hC,GAASyqtB,GAEhB,EACDD,GAAcxstB,QAAQ,SAAUs/qB,IAC5BA,GAAYR,WAAWtvP,GAC1B,EAFD,EAQP,CACDmwP,sBAAsB5xlB,GAAUvrF,GAAMo9qB,IAClC,GAAY,MAARp9qB,GACA,OAAO,KAGX,OADUurF,GAASyxlB,eAAeh9qB,MAIxBo9qB,MAGNuK,OAAUs8B,aAAajktB,IAChBjT,KAAKowrB,sBAAsB5xlB,GAAUvrF,GAAK/O,MAAM,GAEpDlE,KAAKowrB,sBAAsB5xlB,GAAUvrF,GAAK2kB,eAAe,GALrD,KAMd,GAy2BG6lY,KAAM,IAEV,CACIt3Z,QAASi3tB,MACT/2tB,SAAU6nrB,MACVzwR,KAAM,CAACz6N,MAAQ6sf,MAAqBitC,QAExC,CACI32tB,QAAS+nrB,MACT7nrB,SAAU6nrB,MACVzwR,KAAM,CAACz6N,MAAQ6sf,MAAqBitC,SAGtCO,GAA2B,CAC7B,CAAEl3tB,QAASm3tB,MAAiB92tB,SAAU,QACtC,CAAEL,QAASk3oB,MAAc9hf,WA9C7B,SAASt8B,KACL,OAAO,IAAIo+gB,KACd,EA4CsD5/O,KAAM,IAAM,CAC3Dt3Z,QAAS4xtB,GACT1xtB,SAAU00tB,GACVz0tB,OAAO,EACPm3Z,KAAM,CAAC73Z,KAAUo9L,MAAQwwb,QAE7B,CAAErtnB,QAAS4xtB,GAAuB1xtB,SAAUk1tB,GAAiBj1tB,OAAO,EAAMm3Z,KAAM,CAAC73Z,OAAa,CAC1FO,QAASyztB,GACTvztB,SAAUuztB,GACVn8T,KAAM,CAACu6T,GAAcW,GAAqBnvC,QAE9C,CAAErjrB,QAAS02oB,MAAkB3+nB,YAAa07sB,IAC1C,CAAEzztB,QAASmytB,GAAkBp6sB,YAAay6sB,IAC1C,CAAExytB,QAASwytB,GAAqBtytB,SAAUsytB,GAAqBl7T,KAAM,CAAC73Z,OACtE,CAAEO,QAAS6xtB,GAAc3xtB,SAAU2xtB,GAAcv6T,KAAM,CAACs6T,GAAuB/0hB,QAC/E,CAAE78L,QAASsinB,KAAYpinB,SAAUyxtB,GAAYr6T,KAAM,IAC0B,IAWjF,MAAM+4T,GACF12tB,YAAYy9tB,IAvLwC,KA4LnD,CAS0Bx3tB,4BAACwiX,IACxB,MAAO,CACHtiX,SAAUuwtB,GACVtwtB,UAAW,CACP,CAAEC,QAASqjrB,MAAQhjrB,SAAU+hX,GAAOwxW,OACpC,CAAE5ztB,QAASuxtB,GAAex5sB,YAAasrqB,OACvCmuC,IAGX,EAELnB,GAAczztB,UAAd,4BAA0GyztB,IAl6BbxztB,MAk6B4C45tB,GAAzI,MACApG,GAAc/vtB,UAn6B+EzD,MAm6B7F,MAA2GwztB,KAC3GA,GAAc9vtB,UAp6B+E1D,MAo6B7F,WAAqI,IAC1Hq6tB,MACAR,IAFXnujB,SAGiB53J,KAAcijrB,SAsD/B,MAAMyjC,GACF19tB,YAAYuumB,IACRrumB,KAAKqumB,KAAOA,GACZrumB,KAAK2kgB,QAAOi2L,MACf,CAWD6iC,OAAOrue,GAAKsue,IAAgB,GACxB,OAAKtue,GAEEpvP,KAAK29tB,oBAAoBvue,GAAKsue,IAD1B,IAEd,CASDE,QAAQpte,GAAMkte,IAAgB,GAC1B,OAAKlte,GAEEA,GAAK7qO,OAAO,CAACiM,GAAQw9N,MACpBA,IACAx9N,GAAO5V,KAAKhc,KAAK29tB,oBAAoBvue,GAAKsue,KAEvC9rsB,IACR,IANQ,EAOd,CAODw7hB,OAAOywK,IACH,OAAKA,IAEE79tB,KAAKqumB,KAAKpjlB,cAAe,QAAO4ysB,QAAoB,IAC9D,CAODC,QAAQD,IACJ,IAAKA,GACD,MAAO,GACX,MAAMp+iB,GAAoBz/K,KAAKqumB,KAAKprc,iBAAkB,QAAO46jB,OAC7D,OAAOp+iB,GAAO,GAAG/9K,MAAMJ,KAAKm+K,IAAQ,EACvC,CAUDs+iB,UAAU3ue,GAAKzmP,IACX,IAAKymP,GACD,OAAO,KACXzmP,GAAWA,IAAY3I,KAAKg+tB,eAAe5ue,IAC3C,MAAM35G,GAAOz1I,KAAKotjB,OAAOzkjB,IACzB,OAAI8sI,GACOz1I,KAAKi+tB,0BAA0B7ue,GAAK35G,IAExCz1I,KAAK29tB,oBAAoBvue,IAAK,EACxC,CAMDH,UAAU4ue,IACN79tB,KAAKk+tB,iBAAiBl+tB,KAAKotjB,OAAOywK,IACrC,CAKDK,iBAAiBzolB,IACTA,IACAz1I,KAAK2kgB,KAAKhtf,OAAO89H,GAExB,CACDkolB,oBAAoBlolB,GAAMiolB,IAAgB,GACtC,IAAKA,GAAe,CAChB,MAAM/0tB,GAAW3I,KAAKg+tB,eAAevolB,IAI/BxiI,GAAOjT,KAAK89tB,QAAQn1tB,IAAU2M,OAAOrC,IAAQjT,KAAKm+tB,oBAAoB1olB,GAAMxiI,KAAO,GACzF,QAAa8B,IAAT9B,GACA,OAAOA,EACd,CACD,MAAMvK,GAAU1I,KAAK2kgB,KAAK5yf,cAAc,QACxC,YAAKkstB,0BAA0BxolB,GAAM/sI,IACxB1I,KAAKqumB,KAAKxjhB,qBAAqB,QAAQ,GAC/C74E,YAAYtJ,IACVA,EACV,CACDu1tB,0BAA0B7ue,GAAKtmP,IAC3BuW,cAAOsa,KAAKy1N,IAAK3+O,QAASgiK,IAAS3pK,GAAG8G,aAAa5P,KAAKo+tB,eAAe3rjB,IAAO28E,GAAI38E,MAC3E3pK,EACV,CACDk1tB,eAAe5ue,IACX,MAAM1lK,GAAO0lK,GAAI3nP,KAAO,OAAS,WACjC,MAAQ,GAAEiiF,OAAS0lK,GAAI1lK,MAC1B,CACDy0oB,oBAAoB/ue,GAAKn8O,IACrB,OAAOoM,OAAOsa,KAAKy1N,IAAK5uE,MAAO5mJ,IAAQ3mB,GAAKuW,aAAaxpB,KAAKo+tB,eAAexksB,OAAUw1N,GAAIx1N,IAC9F,CACDwksB,eAAe3rjB,IACX,OAAO4rjB,GAAc5rjB,KAASA,EACjC,EAEL+qjB,GAAKz6tB,UAAL,4BAAiGy6tB,IA7lCJx6tB,MA6lC0B4C,MAAvH,EACA43tB,GAAKv6tB,WA9lCwFD,MA8lC7F,OAAqGw6tB,GAArGt6tB;;;;;;;;AA1JA,SAASo7tB,KACL,OAAO,IAAId,MAAKtvH,OAAStomB,MAC5B,CAwJ0I04tB,GAA3I/zrB,eAAuH,SAWvH,MAAM8zrB,GAAgB,CAClBE,UAAW;;;;;;;OA0Bf,MAAMxvrB,GACFjvC,YAAYuumB,IACRrumB,KAAKqumB,KAAOA,EACf,CAIDzod,WACI,OAAO5lJ,KAAKqumB,KAAK5nlB,KACpB,CAKD+3sB,SAASC,IACLz+tB,KAAKqumB,KAAK5nlB,MAAQg4sB,IAAY,EACjC,EAEL1vrB,GAAMhsC,UAAN,4BAAkGgsC,IAtpCL/rC,MAspC4B4C,MAAzH,EACAmpC,GAAM9rC,WAvpCuFD,MAupC7F,OAAsG+rC,GAAtG7rC,qDAhCA,SAAS2wC,KACL,OAAO,IAAI9E,MAAMm/jB,OAAStomB,MAC7B,CA8B4IiuC,GAA7ItJ,eAAyH;;;;;;;;OAiDtG1Y,OAAW,KAAeA;;;;;;;OAkK7C,MAAM6ssB,GACF5+tB,cACIE,KAAKs5J,MAAQ,GACbt5J,KAAK2+tB,qBAAuB,EAC/B,CAID5+sB,IAAI6Z,GAAK29C,IACL,YAA2BxiE,IAApB/U,KAAKs5J,MAAM1/H,IAAqB55B,KAAKs5J,MAAM1/H,IAAO29C,EAC5D,CAIDhkD,IAAIqG,GAAK1xB,IACLlI,KAAKs5J,MAAM1/H,IAAO1xB,EACrB,CAIDyP,OAAOiiB,WACI55B,KAAKs5J,MAAM1/H,GACrB,CAID+tM,OAAO/tM,IACH,OAAO55B,KAAKs5J,MAAMl3J,eAAew3B,GACpC,CAIGktB,cACA,OAA0C,IAAnCznC,OAAOsa,KAAK35B,KAAKs5J,OAAOh5J,MAClC,CAIDs+tB,YAAYhlsB,GAAKnnB,IACbzS,KAAK2+tB,qBAAqB/ksB,IAAOnnB,EACpC,CAIDostB,SAEI,UAAWjlsB,MAAO55B,KAAK2+tB,qBACnB,GAAI3+tB,KAAK2+tB,qBAAqBv8tB,eAAew3B,IACzC,IACI55B,KAAKs5J,MAAM1/H,IAAO55B,KAAK2+tB,qBAAqB/ksB,KAI/C,CAHA,MACMnV,IACHwT,QAAQ80L,KAAK,sCAAuCtoM,GACvD,CAGT,OAAOxiB,KAAKsiP,UAAUvkP,KAAKs5J,MAC9B,EAELolkB,GAAc37tB,UAAd,4BAA0G27tB,GAA1G,EACAA,GAAcz7tB,WAt6C+ED,MAs6C7F,OAA8G07tB,GAA9Gx7tB,+BACQ,MAAMg+P,MAAMiV,OAAOvwQ,MACbm0tB,MAAQ5jd,OAAOqza,OACfhwpB,GAAQ,IAAIklsB,GAClBllsB,UAAM8/H,MAgBd,SAASwlkB,GAAyB59d,GAAK64d,IAGnC,MAAM9ud,GAAS/J,GAAIumX,eAAesyG,GAAQ,UAC1C,IAAIgF,GAAe,GACnB,GAAI9zd,IAAUA,GAAOp5P,YACjB,IAEIkttB,GAAe98tB,KAAKC,MAlIhC,SAAS88tB,GAAa3mtB,IAClB,MAAM4mtB,GAAgB,CAClB,MAAO,IACP,MAAO,IACP,MAAO,IACP,MAAO,IACP,MAAO,KAEX,OAAO5mtB,GAAKhY,QAAQ,WAAY2iC,IAAKi8rB,GAAcj8rB,IACtD,CAyHqCg8rB,CAAa/zd,GAAOp5P,aAIjD,CAHA,MACM4S,IACHwT,QAAQ80L,KAAK,mDAAqDgtgB,GAAOt1sB,GAC5E,CAEL,OAAOs6sB,EACV,CA/BqBD,CAAyB59d,GAAK64d,IACrCvgsB,EACV,EANL,eAAyI,SA4CzI,MAAM0lsB,IAENA,GAA2Bn8tB,UAA3B,4BAAuHm8tB,GAAvH,EACAA,GAA2Bz4tB,UAr9CkEzD,MAq9C7F,MAAwHk8tB,KACxHA,GAA2Bx4tB,UAt9CkE1D,MAs9C7F;;;;;;;;AA4EA,MAAMm8tB,GAAc,CAEhBv8qB,KAAO,EACPo0G,UAAY,EACZC,SAAW,EACXC,QAAU,EACVkokB,WAAa,EACbC,SAAW,EACXC,UAAY,EACZC,OAAS,EACTC,SAAW,EAEXC,OAAS,EACTtokB,YAAc,EACdC,WAAa,EACbC,UAAY,EACZqokB,aAAe,EACfC,SAAW,EACXC,UAAY,EAEZr/nB,OAAS,EACTs/nB,SAAW,EAEXpjsB,QAAU,EACVqjsB,aAAe,EACfC,YAAc,EACdC,WAAa,EACbC,cAAgB,EAEhBhmM,OAAS,EACTimM,WAAa,EACbC,YAAc,EACdC,SAAW,EACXC,WAAa,EAEbhgoB,KAAO,EACPigoB,WAAa,GASXC,GAAwB,IAAI3guB,MAAe,uBAM3C4guB,GAAgB,IAAI5guB,MAAe,gBAMzC,MAAM6guB,GACF3guB,cAMIE,KAAK61B,OAAS,GAiBd71B,KAAK0guB,UAAY,EACpB,CAODC,YAAYj4tB,IACR,MAAMk4tB,GAAK,IAAIvokB,OAAO3vJ,GAAS1I,KAAKgG,SACpC46tB,GAAG7gtB,IAAI,SAASwT,IAAI,CAAEpT,QAAQ,IAC9BygtB,GAAG7gtB,IAAI,UAAUwT,IAAI,CAAEpT,QAAQ,IAC/B,UAAW2V,MAAa91B,KAAK0guB,UACzBE,GAAG7gtB,IAAI+V,IAAWvC,IAAIvzB,KAAK0guB,UAAU5qsB,KAEzC,OAAO8qsB,EACV,EAELH,GAAoB19tB,UAApB,4BAAgH09tB,GAAhH,EACAA,GAAoBx9tB,WAtoDyED,MAsoD7F,OAAoHy9tB,GAApHv9tB,QAAoHu9tB,GAApH,YASA,MAAMI,WAA6BxI,GAC/Bv4tB,YAAYohQ,GAAK+5U,GAAShjjB,GAAS6ka,IAC/B7+a,MAAMijP,IACNlhQ,KAAKi7kB,QAAUA,GACfj7kB,KAAKi4B,QAAUA,GACfj4B,KAAK88b,OAASA,GACd98b,KAAK8guB,eAAiB,IACzB,CACD3sL,SAASr+gB,IAIL,SAHKqpsB,GAAY/8tB,eAAe0zB,GAAU/a,iBAAmB/a,KAAK+guB,cAAcjrsB,MAG3EjE,OAAOwmI,SAAWr4J,KAAK88b,OAQ/B,CACD9ma,iBAAiBttB,GAASotB,GAAWivD,IACjC,MAAMzmE,GAAOte,KAAKyuiB,QAAQ2pL,UAI1B,GAHAtisB,GAAYA,GAAU/a,eAGjB8W,OAAOwmI,QAAUr4J,KAAK88b,OAAQ,CAC/B98b,KAAK8guB,eAAiB9guB,KAAK8guB,gBAAkBxitB,GAAKzO,kBAAkB,IAAM7P,KAAK88b,UAI/E,IAAIkkS,IAAqB,EACrBlZ,GAAa,KACbkZ,IAAqB,GAEzB1itB,UAAKzO,kBAAkB,IAAM7P,KAAK8guB,eAC7Bz4tB,KAAK,KAEDwpB,OAAOwmI,OAOP2okB,KAIDlZ,GAAa9ntB,KAAKg2B,iBAAiBttB,GAASotB,GAAWivD,KAPvD+ioB,GAAa,MAOA,GAGhBtjH,MAAM,KAKPsjH,GAAa,MAAS,IAKnB,KACHA,IAAU,CAEjB,CACD,OAAOxpsB,GAAKzO,kBAAkB,KAE1B,MAAM+wtB,GAAK5guB,KAAKi7kB,QAAQ0lJ,YAAYj4tB,IAC9B+J,GAAW,SAAUwutB,IACvB3itB,GAAKwvqB,WAAW,WACZ/omB,GAAQk8oB,GACX,EACJ,EACDL,UAAGhrlB,GAAG9/G,GAAWrjB,IACV,KACHmutB,GAAGzqlB,IAAIrgH,GAAWrjB,IAEQ,mBAAfmutB,GAAGzzsB,SACVyzsB,GAAGzzsB,SAAH,CAEP,EAER,CACD4zsB,cAAcjrsB,IACV,OAAO91B,KAAKi7kB,QAAQpljB,OAAO50B,QAAQ60B,KAAa,CACnD,EAEL+qsB,GAAqB99tB,UAArB,4BAAiH89tB,IAvuDpB79tB,MAuuD0D4C,MAvuD1D5C,MAuuD+Eu9tB,IAvuD/Ev9tB,MAuuDiHA,OAvuDjHA,MAuuDyIw9tB,GAAtO,KACAK,GAAqB59tB,WAxuDwED,MAwuD7F,OAAqH69tB,GAArH39tB,QAAqH29tB,GAArH,YA0BA,MAAMK,IAENA,GAAan+tB,UAAb,4BAAyGm+tB,GAAzG,EACAA,GAAaz6tB,UArwDgFzD,MAqwD7F,MAA0Gk+tB,KAC1GA,GAAax6tB,UAtwDgF1D,MAswD7F,WAAmI,CAC3H,CACImD,QAAS4xtB,GACT1xtB,SAAUw6tB,GACVv6tB,OAAO,EACPm3Z,KAAM,CAAC73Z,KAAU26tB,GAAuBY,MAAU,CAAC,IAAI1qG,MAAY+pG,MAEvE,CAAEr6tB,QAASo6tB,GAAuBl6tB,SAAUo6tB,GAAqBhjU,KAAM;;;;;;;;AAuD/E,MAAM2jU,IAENA,GAAar+tB,UAAb,4BAAyGq+tB,GAAzG,EACAA,GAAan+tB,WAv0DgFD,MAu0D7F,OAA6Go+tB,GAA7Gl+tB,sDAA6Gk+tB,IAv0DhBp+tB,MAu0DkGq+tB,IAA/L92rB,eAAuI,SAQvI,MAAM82rB,WAAyBD,GAC3BthuB,YAAYuumB,IACRpwlB,QACAje,KAAKqumB,KAAOA,EACf,CACDz2M,SAASpkZ,GAAKtL,IACV,GAAa,MAATA,GACA,OAAO,KACX,OAAQsL,SACCqkZ,WACD,OAAO3vZ,QACN2vZ,WACD,SAAIypU,OAAiCp5tB,GAAO,SAAR,EACzBq5tB,OAAiBr5tB,KAAD,EAEpBs5tB,OAAexhuB,KAAKqumB,KAAM3tmB,OAAOwH,KAAQzG,WAAzC,KACNo2Z,YACD,SAAIypU,OAAiCp5tB,GAAO,UAAR,EACzBq5tB,OAAiBr5tB,IAErBA,QACN2vZ,aACD,MAAIypU,OAAiCp5tB,GAAO,UACxC,SAAOq5tB,OAAiBr5tB,IAE5B,MAAM,IAAI3H,MAAM,yCAAV,KACLs3Z,UACD,SAAIypU,OAAiCp5tB,GAAO,QAAR,EACzBq5tB,OAAiBr5tB,KAAD,EAEpBu5tB,OAAc/guB,OAAOwH,KAAR,KACnB2vZ,mBACD,MAAIypU,OAAiCp5tB,GAAO,eACxC,SAAOq5tB,OAAiBr5tB,IAE5B,MAAM,IAAI3H,MAAM,kFAAV,QAEN,MAAM,IAAIA,MAAO,8BAA6BiT,yCAEzD,CACDiob,wBAAwBvzb,IACpB,SAAOw5tB,OAA6Bx5tB,GACvC,CACDy5tB,yBAAyBz5tB,IACrB,SAAO05tB,OAA8B15tB,GACxC,CACD25tB,0BAA0B35tB,IACtB,SAAO45tB,OAA+B55tB,GACzC,CACD65tB,uBAAuB75tB,IACnB,SAAO85tB,OAA4B95tB,GACtC,CACD+5tB,+BAA+B/5tB,IAC3B,SAAOg6tB,OAAoCh6tB,GAC9C,EAELm5tB,GAAiBt+tB,UAAjB,4BAA6Gs+tB,IAv4DhBr+tB,MAu4DkD4C,MAA/I,EACAy7tB,GAAiBp+tB,WAx4D4ED,MAw4D7F,OAAiHq+tB,GAAjHn+tB,qDA5DA,SAASi/tB,GAAwBt8iB,IAC7B,OAAO,IAAIw7iB,GAAiBx7iB,GAAS9lK,IAAIna,MAC5C,CA0DkKu8tB,CAx4DtEn/tB,MAw4D+GkpnB,QAA5M3hlB,eAA+I;;;;;;;;;;;;;;;AA2B/H,IAAIs8kB,MAAQ;;;;;;;;;;;;;;;;;;;;;OAAZ,iJC9nET,MAAMu7G,aAAavjI,GAAkB1xD,IAAW,WACnDA,GAAOntiB,MACPA,KAAKyH,KAAO,aACZzH,KAAK6f,QAAU,yBAClB,kDCHM,SAASvN,GAAM+vtB,IAClB,OAAO,IAAI39oB,KAAY8wI,MACnB4sY,SAAUigI,MAAqBn2tB,UAAUspN,GAAzC,EAEP,qECJM,SAAS+yY,KACZ,SAAOhzY,MAAQ,CAAC5kM,GAAQ6kM,MACpB,IAAI6yY,GAAa,KACjB13kB,GAAO2xsB,YACP,MAAMC,MAAa7sgB,MAAyBF,QAAYzgN,OAAWA,OAAWA,EAAW,KACrF,IAAK4b,IAAUA,GAAO2xsB,WAAa,GAAK,IAAM3xsB,GAAO2xsB,UAEjD,YADAj6H,GAAa,MAGjB,MAAMm6H,GAAmB7xsB,GAAO8xsB,YAC1Bh4c,GAAO49U,GACbA,GAAa,KACTm6H,MAAsB/3c,IAAQ+3c,KAAqB/3c,KACnD+3c,GAAiBvxtB,cAErBukN,GAAWvkN,aAAX,GAEJ0f,GAAOzkB,UAAUq2tB,IACZA,GAAWv6rB,SACZqgkB,GAAa13kB,GAAOi0O,UAAP,EAGxB,CCnBM,MAAM89d,WAA8Bh+oB,KACvC5kF,YAAY6wB,GAAQgysB,IAChB1ktB,QACAje,KAAK2wB,OAASA,GACd3wB,KAAK2iuB,eAAiBA,GACtB3iuB,KAAKowmB,SAAW,KAChBpwmB,KAAKsiuB,UAAY,EACjBtiuB,KAAKyiuB,YAAc,QACfz3H,MAAQr6kB,MACR3wB,KAAK+4Q,KAAOpoP,GAAOooP,KAE1B,CACD+jV,WAAWtnY,IACP,OAAOx1N,KAAK4iuB,aAAa12tB,UAAUspN,GACtC,CACDotgB,aACI,MAAM5riB,GAAUh3L,KAAKowmB,SACrB,QAAKp5a,IAAWA,GAAQuna,aACpBv+lB,KAAKowmB,SAAWpwmB,KAAK2iuB,kBAElB3iuB,KAAKowmB,QACf,CACDyyH,YACI7iuB,KAAKsiuB,UAAY,EACjB,MAAQG,gBAAgBziuB,KACxBA,KAAKowmB,SAAWpwmB,KAAKyiuB,YAAc,KACuBA,IAAYxxtB,aACzE,CACD2zP,UACI,IAAIyjW,GAAaromB,KAAKyiuB,YACtB,IAAKp6H,GAAY,CACbA,GAAaromB,KAAKyiuB,YAAc,IAAI72tB,MACpC,MAAMorL,GAAUh3L,KAAK4iuB,aACrBv6H,GAAWr8lB,IAAIhM,KAAK2wB,OAAOzkB,aAAUwpN,MAAyB1+B,QAASjiL,EAAW,KAC9E/U,KAAK6iuB,YACL7riB,GAAQlgG,UAAR,EACA24F,KACAzvL,KAAK6iuB,YACL7riB,GAAQr7J,MAAM8zJ,GAAd,EACD,IAAMzvL,KAAK6iuB,eACVx6H,GAAWrgkB,SACXhoC,KAAKyiuB,YAAc,KACnBp6H,GAAaz8lB,YAEpB,CACD,OAAOy8lB,EACV,CACDE,WACI,OAAOu6H,KAAsB9iuB,KAChC,2FCpDE,SAAS+iuB,GAAexrpB,IAC3B,SAAOg+I,MAAQ,CAAC5kM,GAAQ6kM,MACpB,IAAIlqJ,IAAW,EACf36C,GAAOzkB,aAAUwpN,MAAyBF,GAAattN,KACnDojE,IAAW,EACXkqJ,GAAWvwN,KAAKiD,GAAhB,EACD,KACMojE,IACDkqJ,GAAWvwN,KAAKsyE,IAEpBi+I,GAAW1+H,UAAX,GAPJ,EAUP,CCZM,SAASksoB,GAAal+H,GAAem+H,IACxC,SAAO1tgB,MAAQ,CAAC5kM,GAAQ6kM,MACpB,IAAIlqJ,IAAW,EACf36C,GAAOzkB,aAAUwpN,MAAyBF,GAAattN,KACnDojE,IAAW,EACXkqJ,GAAWvwN,KAAKiD,GAAhB,EACD,IAAOojE,GAAWkqJ,GAAW1+H,WAAa0+H,GAAW75L,MAAMmpkB,OAH9D,EAKP,CACD,SAASm+H,KACL,OAAO,IAAIb,CACd,gBCRM,SAASrstB,GAAMskB,GAAWk9C,IAC7B,MAAM2rpB,GAAkB/xsB,UAAU7wB,QAAU,EAC5C,OAAQqwB,IAAWA,GAAOlrB,KAAK40B,MAAY/kB,MAAO,CAACuiN,GAAGriN,KAAM6kB,GAAUw9L,GAAGriN,GAAGmb,KAAWuwV,QAAUx2V,MAAK,GAAIw4sB,GAAkBH,GAAexrpB,IAAgByrpB,GAAa,IAAM,IAAIZ,GACrL,iDCNM,SAASe,GAAS3urB,IACrB,OAAOA,IAAS,EACV,IAAM4mJ,QACNm6B,MAAQ,CAAC5kM,GAAQ6kM,MACf,IAAI50N,GAAS,GACb+vB,GAAOzkB,aAAUwpN,MAAyBF,GAAattN,KACnDtH,GAAOob,KAAK9T,IACZssC,GAAQ5zC,GAAON,QAAUM,GAAOglD,OAAP,EAC1B,KACC,UAAW19C,MAAStH,GAChB40N,GAAWvwN,KAAKiD,IAEpBstN,GAAW1+H,UAAX,OACD/hF,EAAW,KACVnU,GAAS,OATb,EAYX,CCdM,SAASoV,GAAKqkB,GAAWk9C,IAC5B,MAAM2rpB,GAAkB/xsB,UAAU7wB,QAAU,EAC5C,OAAQqwB,IAAWA,GAAOlrB,KAAK40B,MAAY/kB,MAAO,CAACuiN,GAAGriN,KAAM6kB,GAAUw9L,GAAGriN,GAAGmb,KAAWuwV,KAAUiiX,GAAS,GAAID,GAAkBH,GAAexrpB,IAAgByrpB,GAAa,IAAM,IAAIZ,GACzL;;;;;;;;;;;;OCiBD,MAAMgB,GAAiB,UAMjBC,GAAgBzvY,OAAO,cAC7B,MAAM0vY,GACFxjuB,YAAYyoX,IACRvoX,KAAKuoX,OAASA,IAAU,EAC3B,CACDttV,IAAIxzB,IACA,OAAO4X,OAAOje,UAAUgB,eAAed,KAAKtB,KAAKuoX,OAAQ9gX,GAC5D,CACDsY,IAAItY,IACA,GAAIzH,KAAKi7B,IAAIxzB,IAAO,CAChB,MAAMowN,GAAI73N,KAAKuoX,OAAO9gX,IACtB,OAAOtG,MAAMkuB,QAAQwoM,IAAKA,GAAE,GAAKA,EACpC,CACD,OAAO,IACV,CACD21Z,OAAO/lnB,IACH,GAAIzH,KAAKi7B,IAAIxzB,IAAO,CAChB,MAAMowN,GAAI73N,KAAKuoX,OAAO9gX,IACtB,OAAOtG,MAAMkuB,QAAQwoM,IAAKA,GAAI,CAACA,GAClC,CACD,MAAO,EACV,CACGl+L,WACA,OAAOta,OAAOsa,KAAK35B,KAAKuoX,OAC3B,EASL,SAASg7W,GAAkBh7W,IACvB,OAAO,IAAI+6W,GAAY/6W,GAC1B,CAgBD,SAASi7W,GAAkB5zsB,GAAU6zsB,GAAc5+tB,IAC/C,MAAM/C,GAAQ+C,GAAM4qB,KAAK1tB,MAAM,KAK/B,GAJID,GAAMxB,OAASsvB,GAAStvB,QAIJ,SAApBuE,GAAM6+tB,YACLD,GAAa1tgB,eAAiBj0N,GAAMxB,OAASsvB,GAAStvB,QAEvD,OAAO,KAEX,MAAMqjuB,GAAY,GAElB,QAASn3tB,GAAQ,EAAGA,GAAQ1K,GAAMxB,OAAQkM,KAAS,CAC/C,MAAMs5L,GAAOhkM,GAAM0K,IACbu3D,GAAUn0C,GAASpjB,IAEzB,GADoBs5L,GAAK2C,WAAW,KAEhCk7hB,GAAU79hB,GAAK5zJ,UAAU,IAAM6xB,WAE1B+hI,KAAS/hI,GAAQt0C,KAEtB,OAAO,IAEd,CACD,MAAO,CAAEm0sB,SAAUh0sB,GAASluB,MAAM,EAAGI,GAAMxB,QAASqjuB,aACvD;;;;;;;OAkBD,SAASj/c,GAAavnP,GAAGpF,IAGrB,MAAMuvrB,GAAKnqrB,GAAI9d,OAAOsa,KAAKwD,SAAKpoB,EAC1BwysB,GAAKxvrB,GAAI1Y,OAAOsa,KAAK5B,SAAKhjB,EAChC,IAAKuysB,KAAOC,IAAMD,GAAGhntB,QAAUintB,GAAGjntB,OAC9B,OAAO,EAEX,IAAIs5B,GACJ,QAASpkB,GAAI,EAAGA,GAAI8xsB,GAAGhntB,OAAQkV,KAE3B,GADAokB,GAAM0trB,GAAG9xsB,KACJqutB,GAAoB1msB,GAAEvD,IAAM7B,GAAE6B,KAC/B,OAAO,EAGf,OAAO,CACV,CAID,SAASiqsB,GAAoB1msB,GAAGpF,IAC5B,GAAI52B,MAAMkuB,QAAQ8N,KAAMh8B,MAAMkuB,QAAQ0I,IAAI,CACtC,GAAIoF,GAAE78B,SAAWy3B,GAAEz3B,OACf,OAAO,EACX,MAAMwjuB,GAAU,IAAI3msB,IAAGyE,OACjBmisB,GAAU,IAAIhssB,IAAG6J,OACvB,OAAOkisB,GAAQtjjB,MAAM,CAACu6B,GAAKvuM,KAAUu3tB,GAAQv3tB,MAAWuuM,GAC3D,CAEG,OAAO59K,KAAMpF,EAEpB,CAID,SAAS+lN,GAAQ1jN,IACb,OAAOj5B,MAAMC,UAAU0kB,OAAOqO,MAAM,GAAIiG,GAC3C,CAID,SAASpkB,GAAKmnB,IACV,OAAOA,GAAE78B,OAAS,EAAI68B,GAAEA,GAAE78B,OAAS,GAAK,IAC3C,CAOD,SAASmQ,GAAQpP,GAAKoR,IAClB,UAAWggK,MAAQpxK,GACXA,GAAIe,eAAeqwK,KACnBhgK,GAASpR,GAAIoxK,IAAOA,GAG/B,CACD,SAASuxjB,GAAmB97tB,IACxB,SAAI+7tB,OAAc/7tB,IACPA,MAEPw8mB,OAAWx8mB,KAAD,EAIH1C,KAAKD,QAAQyC,QAAQE,MAAjB,EAERwyL,MAAGxyL,GACb;;;;;;;OAaD,MAAMg8tB,GAAiB,CACnBC,MAiBJ,SAASC,GAAmB77tB,GAAW87tB,GAAWC,IAM9C,IALKC,GAAUh8tB,GAAUqnB,SAAUy0sB,GAAUz0sB,YAExC40sB,GAAkBj8tB,GAAUqnB,SAAUy0sB,GAAUz0sB,SAAU00sB,KAG3D/7tB,GAAUk8tB,mBAAqBJ,GAAUI,iBACzC,OAAO,EACX,UAAWljuB,MAAK8iuB,GAAU1/rB,SAGtB,IAFKp8B,GAAUo8B,SAASpjC,MAEnB6iuB,GAAmB77tB,GAAUo8B,SAASpjC,IAAI8iuB,GAAU1/rB,SAASpjC,IAAI+iuB,IAClE,OAAO,EAEf,OAAO,CACV,EA/BGnsZ,OAAUusZ,IAERC,GAAkB,CACpBR,MASJ,SAASS,GAAYr8tB,GAAW87tB,IAE5B,OAAO3/c,GAAan8Q,GAAW87tB,GAClC,EAXGlsZ,OA4BJ,SAAS0sZ,GAAet8tB,GAAW87tB,IAC/B,OAAOhltB,OAAOsa,KAAK0qsB,IAAW/juB,QAAU+e,OAAOsa,KAAKpxB,IAAWjI,QAC3D+e,OAAOsa,KAAK0qsB,IAAW7jjB,MAAM5mJ,IAAOiqsB,GAAoBt7tB,GAAUqxB,IAAMyqsB,GAAUzqsB,KACzF,EA9BGkrsB,QAAW,KAAM,GAErB,SAASC,GAAax8tB,GAAW87tB,GAAWr+tB,IACxC,OAAOk+tB,GAAel+tB,GAAQs0E,OAAO/xE,GAAUo8D,KAAM0/pB,GAAU1/pB,KAAM3+D,GAAQs+tB,eACzEK,GAAgB3+tB,GAAQgqmB,aAAaznmB,GAAUynmB,YAAaq0H,GAAUr0H,gBAC/C,UAArBhqmB,GAAQ+4P,UAAwBx2P,GAAUw2P,WAAasle,GAAUtle,SAC1E,CAyBD,SAAS2le,GAAqBn8tB,GAAW87tB,GAAWC,IAChD,OAAOU,GAA2Bz8tB,GAAW87tB,GAAWA,GAAUz0sB,SAAU00sB,GAC/E,CACD,SAASU,GAA2Bz8tB,GAAW87tB,GAAWY,GAAgBX,IACtE,GAAI/7tB,GAAUqnB,SAAStvB,OAAS2kuB,GAAe3kuB,OAAQ,CACnD,MAAM+U,GAAU9M,GAAUqnB,SAASluB,MAAM,EAAGujuB,GAAe3kuB,QAK3D,SAJKikuB,GAAUlvtB,GAAS4vtB,KAEpBZ,GAAUtugB,gBAETyugB,GAAkBnvtB,GAAS4vtB,GAAgBX,IAGnD,IACQ/7tB,GAAUqnB,SAAStvB,SAAW2kuB,GAAe3kuB,OAAQ,CAG1D,IAFKikuB,GAAUh8tB,GAAUqnB,SAAUq1sB,MAE9BT,GAAkBj8tB,GAAUqnB,SAAUq1sB,GAAgBX,IACvD,OAAO,EACX,UAAW/iuB,MAAK8iuB,GAAU1/rB,SAGtB,IAFKp8B,GAAUo8B,SAASpjC,MAEnBmjuB,GAAqBn8tB,GAAUo8B,SAASpjC,IAAI8iuB,GAAU1/rB,SAASpjC,IAAI+iuB,IACpE,OAAO,EAGf,OAAO,CACV,CACI,CACD,MAAMjvtB,GAAU4vtB,GAAevjuB,MAAM,EAAG6G,GAAUqnB,SAAStvB,QACrD2E,GAAOgguB,GAAevjuB,MAAM6G,GAAUqnB,SAAStvB,QAKrD,SAJKikuB,GAAUh8tB,GAAUqnB,SAAUva,KAE9BmvtB,GAAkBj8tB,GAAUqnB,SAAUva,GAASivtB,KAE/C/7tB,GAAUo8B,SAASy+rB,MAEjB4B,GAA2Bz8tB,GAAUo8B,SAASy+rB,IAAiBiB,GAAWp/tB,GAAMq/tB,GAC1F,CACJ,CACD,SAASE,GAAkBU,GAAgBD,GAAgBj/tB,IACvD,OAAOi/tB,GAAezkjB,MAAM,CAAC2kjB,GAAkB3vtB,KACpCmvtB,GAAgB3+tB,IAASk/tB,GAAe1vtB,IAAG4khB,WAAY+qM,GAAiB/qM,YAEtF,CA+BD,MAAMgrM,GAEFtluB,YAEA6kE,GAEAqriB,GAEAjxW,IACI/+P,KAAK2kE,KAAOA,GACZ3kE,KAAKgwmB,YAAcA,GACnBhwmB,KAAK++P,SAAWA,EACnB,CACGsme,oBACA,OAAKrluB,KAAKsluB,iBACNtluB,KAAKsluB,eAAiB/B,GAAkBvjuB,KAAKgwmB,cAE1ChwmB,KAAKsluB,cACf,CAED7juB,WACI,OAAO8juB,GAAmBv8P,UAAUhpe,KACvC,EAWL,MAAMwluB,GACF1luB,YAEA8vB,GAEA+U,IACI3kC,KAAK4vB,SAAWA,GAChB5vB,KAAK2kC,SAAWA,GAEhB3kC,KAAK23B,OAAS,KACdlnB,GAAQk0B,GAAU,CAACkzL,GAAGne,KAAMme,GAAElgM,OAAS33B,KAC1C,CAED+1N,cACI,OAAO/1N,KAAKykuB,iBAAmB,CAClC,CAEGA,uBACA,OAAOpltB,OAAOsa,KAAK35B,KAAK2kC,UAAUrkC,MACrC,CAEDmB,WACI,OAAOgkuB,GAAezluB,KACzB,EA4BL,MAAM0luB,GACF5luB,YAEA2vB,GAEA2qgB,IACIp6hB,KAAKyvB,KAAOA,GACZzvB,KAAKo6hB,WAAaA,EACrB,CACGurM,mBACA,OAAK3luB,KAAK4luB,gBACN5luB,KAAK4luB,cAAgBrC,GAAkBvjuB,KAAKo6hB,aAEzCp6hB,KAAK4luB,aACf,CAEDnkuB,WACI,OAAOokuB,GAAc7luB,KACxB,EAKL,SAASukuB,GAAUnrgB,GAAIz4N,IACnB,OAAIy4N,GAAG94N,SAAWK,GAAGL,QAEd84N,GAAG54C,MAAM,CAACrjJ,GAAG3nB,KAAM2nB,GAAE1N,OAAS9uB,GAAG6U,IAAGia,KAC9C,CA2BD,MAAMq2sB,IAENA,GAAc/iuB,UAAd,4BAA0G+iuB,GAA1G,EACAA,GAAc7iuB,WADkFD,MAChG,OAA8G8iuB,GAA9G5iuB,0BAAmK,IAAI6iuB,EAAvK,aAAyI,SAuBzI,MAAMA,GAEF7juB,MAAM6B,IACF,MAAMm9B,GAAI,IAAI8ksB,GAAUjiuB,IACxB,OAAO,IAAIqhuB,GAAQlksB,GAAE+ksB,mBAAoB/ksB,GAAEglsB,mBAAoBhlsB,GAAEilsB,gBACpE,CAEDn9P,UAAU5iJ,IACN,MAAMriR,GAAW,IAAGqiqB,GAAiBhgZ,GAAKzhR,MAAM,KAC1Cj4C,GAgGd,SAAS25sB,GAAqB99W,IAC1B,MAAM+9W,GAAYjntB,OAAOsa,KAAK4uV,IACzBlnX,IAAKoG,KACN,MAAMS,GAAQqgX,GAAO9gX,IACrB,OAAOtG,MAAMkuB,QAAQnnB,IACjBA,GAAM7G,IAAIw2N,IAAM,GAAE0ugB,GAAe9+tB,OAAS8+tB,GAAe1ugB,OAAMl2N,KAAK,KACnE,GAAE4kuB,GAAe9+tB,OAAS8+tB,GAAer+tB,KAAD,GAE5CoN,OAAO0tB,MAAOA,IACnB,OAAOsjsB,GAAUhmuB,OAAU,IAAGgmuB,GAAU3kuB,KAAK,OAAS,EACzD,CA1GqB0kuB,CAAqBjgZ,GAAK4pR,aAExC,MAAQ,GAAEjsiB,KAAUr3C,KADuB,iBAAnB05T,GAAKrnF,SAAyB,IAkE9D,SAASyne,GAAkBxjsB,IACvB,OAAOyjsB,UAAUzjsB,GACpB,CApEgEwjsB,CAAkBpgZ,GAAKrnF,YAAc,IAEjG,EAEL,MAAMwme,GAAqB,IAAIQ,GAC/B,SAASN,GAAe1hqB,IACpB,OAAOA,GAAQn0C,SAASvuB,IAAI6/B,IAAK2ksB,GAAc3ksB,KAAIv/B,KAAK,IAC3D,CACD,SAASykuB,GAAiBriqB,GAASY,IAC/B,IAAKZ,GAAQgyJ,cACT,OAAO0vgB,GAAe1hqB,IAE1B,GAAIY,GAAM,CACN,MAAMv1D,GAAU20D,GAAQp/B,SAASy+rB,IAC7BgD,GAAiBriqB,GAAQp/B,SAASy+rB,KAAiB,GACnD,GACEz+rB,GAAW,GACjBl0B,UAAQszD,GAAQp/B,SAAU,CAACkzL,GAAGne,MACtBA,KAAM0phB,IACNz+rB,GAAS3oB,KAAM,GAAE09L,MAAK0shB,GAAiBvugB,IAAG,KAA1C,GAGDlzL,GAASrkC,OAAS,EAAK,GAAE8O,MAAWu1B,GAAShjC,KAAK,SAAWyN,EACvE,CACI,CACD,MAAMu1B,GAvFd,SAAS+hsB,GAAqB3iqB,GAASvzC,IACnC,IAAI81T,GAAM,GACV71U,UAAQszD,GAAQp/B,SAAU,CAACgC,GAAOggsB,MAC1BA,KAAgBvD,KAChB98Y,GAAMA,GAAIxgU,OAAO0K,GAAGmW,GAAOggsB,KAArB,GAGdl2tB,GAAQszD,GAAQp/B,SAAU,CAACgC,GAAOggsB,MAC1BA,KAAgBvD,KAChB98Y,GAAMA,GAAIxgU,OAAO0K,GAAGmW,GAAOggsB,KAArB,GAGPrgZ,EACV,CA0EwBogZ,CAAqB3iqB,GAAS,CAAC8zJ,GAAGne,KAC3CA,KAAM0phB,GACC,CAACgD,GAAiBriqB,GAAQp/B,SAASy+rB,KAAiB,IAExD,CAAE,GAAE1phB,MAAK0shB,GAAiBvugB,IAAG,OAGxC,OAA6C,IAAzCx4M,OAAOsa,KAAKoqC,GAAQp/B,UAAUrkC,QAAoD,MAApCyjE,GAAQp/B,SAASy+rB,IACvD,GAAEqC,GAAe1hqB,OAAYp/B,GAAS,KAE1C,GAAE8gsB,GAAe1hqB,QAAap/B,GAAShjC,KAAK,QACvD,CACJ,CAOD,SAASiluB,GAAgB5jsB,IACrB,OAAO45kB,mBAAmB55kB,IACrB3iC,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,IACzB,CAOD,SAASkmuB,GAAevjsB,IACpB,OAAO4jsB,GAAgB5jsB,IAAG3iC,QAAQ,QAAS,IAC9C,CAiBD,SAASwmuB,GAAiB7jsB,IACtB,OAAO4jsB,GAAgB5jsB,IAAG3iC,QAAQ,MAAO,OAAOA,QAAQ,MAAO,OAAOA,QAAQ,QAAS,IAC1F,CACD,SAASwqU,GAAO7nS,IACZ,OAAO9hC,mBAAmB8hC,GAC7B,CAGD,SAAS8jsB,GAAY9jsB,IACjB,OAAO6nS,GAAO7nS,GAAE3iC,QAAQ,MAAO,OAClC,CACD,SAASwluB,GAAcp2sB,IACnB,MAAQ,GAAEo3sB,GAAiBp3sB,GAAKA,QAEpC,SAASs3sB,GAAsBx+W,IAC3B,OAAOlpW,OAAOsa,KAAK4uV,IACdlnX,IAAIu4B,IAAQ,IAAGitsB,GAAiBjtsB,OAAQitsB,GAAiBt+W,GAAO3uV,QAChEj4B,KAAK,GACb,CAN2ColuB,CAAsBt3sB,GAAK2qgB,aACtE,CAiBD,MAAM4sM,GAAa,gBACnB,SAASC,GAAc9muB,IACnB,MAAM0yB,GAAQ1yB,GAAI0yB,MAAMm0sB,IACxB,OAAOn0sB,GAAQA,GAAM,GAAK,EAC7B,CACD,MAAMq0sB,GAAiB,YAMvB,MAAMC,GAAuB,UAM7B,MAAMnB,GACFlmuB,YAAYiE,IACR/D,KAAK+D,IAAMA,GACX/D,KAAKynG,UAAY1jG,EACpB,CACDkiuB,mBAEI,OADAjmuB,KAAKonuB,gBAAgB,KACE,KAAnBpnuB,KAAKynG,WAAoBznG,KAAKqnuB,eAAe,MAAQrnuB,KAAKqnuB,eAAe,KAClE,IAAI7B,GAAgB,GAAI,IAG5B,IAAIA,GAAgB,GAAIxluB,KAAKsnuB,gBACvC,CACDpB,mBACI,MAAM39W,GAAS,GACf,GAAIvoX,KAAKonuB,gBAAgB,KACrB,GACIpnuB,KAAKunuB,gBAAgBh/W,UAChBvoX,KAAKonuB,gBAAgB,MAElC,OAAO7+W,EACV,CACD49W,gBACI,OAAOnmuB,KAAKonuB,gBAAgB,KAAOlmuB,mBAAmBlB,KAAKynG,WAAa,IAC3E,CACD6/nB,gBACI,GAAuB,KAAnBtnuB,KAAKynG,UACL,MAAO,GAEXznG,KAAKonuB,gBAAgB,KACrB,MAAMx3sB,GAAW,GAIjB,IAHK5vB,KAAKqnuB,eAAe,MACrBz3sB,GAAS5T,KAAKhc,KAAKwnuB,gBAEhBxnuB,KAAKqnuB,eAAe,OAASrnuB,KAAKqnuB,eAAe,QAAUrnuB,KAAKqnuB,eAAe,OAClFrnuB,KAAKs+I,QAAQ,KACb1uH,GAAS5T,KAAKhc,KAAKwnuB,gBAEvB,IAAI7isB,GAAW,GACX3kC,KAAKqnuB,eAAe,QACpBrnuB,KAAKs+I,QAAQ,KACb35G,GAAW3kC,KAAKynuB,aAAY,IAEhC,IAAInhZ,GAAM,GACV,OAAItmV,KAAKqnuB,eAAe,OACpB/gZ,GAAMtmV,KAAKynuB,aAAY,KAEvB73sB,GAAStvB,OAAS,GAAK+e,OAAOsa,KAAKgL,IAAUrkC,OAAS,KACtDgmV,GAAI88Y,IAAkB,IAAIoC,GAAgB51sB,GAAU+U,KAEjD2hT,EACV,CAGDkhZ,eACI,MAAM/3sB,GAAOw3sB,GAAcjnuB,KAAKynG,WAChC,GAAa,KAATh4E,IAAezvB,KAAKqnuB,eAAe,KACnC,MAAM,IAAI5jH,MAAc,KAvdsBC,OAydlD,YAAKple,QAAQ7uH,IACN,IAAIi2sB,GAAW76Z,GAAOp7S,IAAOzvB,KAAK0nuB,oBAC5C,CACDA,oBACI,MAAMn/W,GAAS,GACf,KAAOvoX,KAAKonuB,gBAAgB,MACxBpnuB,KAAK2nuB,WAAWp/W,IAEpB,OAAOA,EACV,CACDo/W,WAAWp/W,IACP,MAAM3uV,GAAMqtsB,GAAcjnuB,KAAKynG,WAC/B,IAAK7tE,GACD,OAEJ55B,KAAKs+I,QAAQ1kH,IACb,IAAI1xB,GAAQ,GACZ,GAAIlI,KAAKonuB,gBAAgB,KAAM,CAC3B,MAAMQ,GAAaX,GAAcjnuB,KAAKynG,WAClCmgoB,KACA1/tB,GAAQ0/tB,GACR5nuB,KAAKs+I,QAAQp2I,IAEpB,CACDqgX,GAAO19C,GAAOjxS,KAAQixS,GAAO3iU,GAChC,CAEDq/tB,gBAAgBh/W,IACZ,MAAM3uV,GAjGd,SAASiusB,GAAiB1nuB,IACtB,MAAM0yB,GAAQ1yB,GAAI0yB,MAAMq0sB,IACxB,OAAOr0sB,GAAQA,GAAM,GAAK,EAC7B,CA8FmBg1sB,CAAiB7nuB,KAAKynG,WAClC,IAAK7tE,GACD,OAEJ55B,KAAKs+I,QAAQ1kH,IACb,IAAI1xB,GAAQ,GACZ,GAAIlI,KAAKonuB,gBAAgB,KAAM,CAC3B,MAAMQ,GAlGlB,SAASE,GAAwB3nuB,IAC7B,MAAM0yB,GAAQ1yB,GAAI0yB,MAAMs0sB,IACxB,OAAOt0sB,GAAQA,GAAM,GAAK,EAC7B,CA+F8Bi1sB,CAAwB9nuB,KAAKynG,WAC5CmgoB,KACA1/tB,GAAQ0/tB,GACR5nuB,KAAKs+I,QAAQp2I,IAEpB,CACD,MAAM6/tB,GAAajB,GAAYltsB,IACzBousB,GAAalB,GAAY5+tB,IAC/B,GAAIqgX,GAAOnmX,eAAe2luB,IAAa,CAEnC,IAAIE,GAAa1/W,GAAOw/W,IACnB5muB,MAAMkuB,QAAQ44sB,MACfA,GAAa,CAACA,IACd1/W,GAAOw/W,IAAcE,IAEzBA,GAAWjstB,KAAKgstB,GACnB,MAGGz/W,GAAOw/W,IAAcC,EAE5B,CAEDP,YAAYS,IACR,MAAMt4sB,GAAW,GAEjB,IADA5vB,KAAKs+I,QAAQ,MACLt+I,KAAKonuB,gBAAgB,MAAQpnuB,KAAKynG,UAAUnnG,OAAS,GAAG,CAC5D,MAAMmvB,GAAOw3sB,GAAcjnuB,KAAKynG,WAC1BxiG,GAAOjF,KAAKynG,UAAUh4E,GAAKnvB,QAGjC,GAAa,MAAT2E,IAAyB,MAATA,IAAyB,MAATA,GAChC,MAAM,IAAIw+mB,MAAc,KA5hBkBC,OA8hB9C,IAAIykH,GACA14sB,GAAKxuB,QAAQ,MAAO,GACpBknuB,GAAa14sB,GAAK/tB,MAAM,EAAG+tB,GAAKxuB,QAAQ,MACxCjB,KAAKs+I,QAAQ6plB,IACbnouB,KAAKs+I,QAAQ,MAER4plB,KACLC,GAAa/E,IAEjB,MAAMz+rB,GAAW3kC,KAAKsnuB,gBACtB13sB,GAASu4sB,IAA+C,IAAjC9otB,OAAOsa,KAAKgL,IAAUrkC,OAAeqkC,GAASy+rB,IACjE,IAAIoC,GAAgB,GAAI7gsB,IAC5B3kC,KAAKonuB,gBAAgB,KACxB,CACD,OAAOx3sB,EACV,CACDy3sB,eAAelnuB,IACX,OAAOH,KAAKynG,UAAUghG,WAAWtoM,GACpC,CAEDinuB,gBAAgBjnuB,IACZ,QAAIH,KAAKqnuB,eAAelnuB,MACpBH,KAAKynG,UAAYznG,KAAKynG,UAAUv1D,UAAU/xC,GAAIG,SACvC,EAGd,CACDg+I,QAAQn+I,IACJ,IAAKH,KAAKonuB,gBAAgBjnuB,IACtB,MAAM,IAAIsjnB,MAAc,KA3jBsBC,MA6jBrD,EAEL,SAAS0kH,GAAWC,IAChB,OAAOA,GAAcz4sB,SAAStvB,OAAS,EACnC,IAAIkluB,GAAgB,GAAI,CAAEprmB,CAACgpmB,IAAiBiF,KAC5CA,EACP,CAMD,SAASC,GAAmB7E,IACxB,MAAM8E,GAAc,GACpB,UAAW5B,MAAetntB,OAAOsa,KAAK8psB,GAAa9+rB,UAAW,CAC1D,MACM6jsB,GAAiBF,GADT7E,GAAa9+rB,SAASgisB,MAGhC6B,GAAe54sB,SAAStvB,OAAS,GAAKkouB,GAAezygB,iBACrDwygB,GAAY5B,IAAe6B,GAElC,CAED,OAUJ,SAASC,GAAqBzlsB,IAC1B,GAA2B,IAAvBA,GAAEyhsB,kBAA0BzhsB,GAAE2B,SAASy+rB,IAAiB,CACxD,MAAM7huB,GAAIyhC,GAAE2B,SAASy+rB,IACrB,OAAO,IAAIoC,GAAgBxisB,GAAEpT,SAAS9J,OAAOvkB,GAAEquB,UAAWruB,GAAEojC,SAC/D,CACD,OAAO3B,EACV,CAhBUylsB,CADG,IAAIjD,GAAgB/B,GAAa7zsB,SAAU24sB,IAExD,CAgBD,SAASG,GAAU7wgB,IACf,OAAOA,cAAautgB,EACvB;;;;;;;OAwGD,SAASuD,GAAc9juB,GAAO+juB,GAASn9c,GAAUukV,GAAajxW,IAC1D,GAAwB,IAApB0sB,GAASnrR,OACT,OAAO8lV,GAAKwiZ,GAAQjkqB,KAAMikqB,GAAQjkqB,KAAMikqB,GAAQjkqB,KAAMqriB,GAAajxW,IAEvE,MAAMqxB,GAAMy4c,GAAkBp9c,IAC9B,GAAI2E,GAAI04c,SACJ,OAAO1iZ,GAAKwiZ,GAAQjkqB,KAAMikqB,GAAQjkqB,KAAM,IAAI6gqB,GAAgB,GAAI,IAAKx1H,GAAajxW,IAqBtF,OAnBA,SAASgqe,GAAyBC,IAC9B,MAAMC,GAwJd,SAASC,GAAqB94c,GAAKg2D,GAAMq9Y,GAAcuF,IACnD,GAAI54c,GAAI+4c,WACJ,OAAO,IAAIC,GAAShjZ,GAAKzhR,MAAM,EAAM,GAEzC,IAAsB,IAAlBqkqB,GAAsB,CAItB,MAAMK,GAAkB5F,KAAiBr9Y,GAAKzhR,KAC9C,OAAO,IAAIykqB,GAAS3F,GAAc4F,GAAiB,EACtD,CACD,MAAM9ljB,GAAW+ljB,GAAel5c,GAAI3E,SAAS,IAAM,EAAI,EAEvD,OAAO89c,GAAiC9F,GAD1BuF,GAAgBzljB,GAC+B6sG,GAAIo5c,mBACpE,CAtKgCN,CAAqB94c,GAAKw4c,GAAS/juB,GAAM4kuB,UAAUC,YAAaV,IACnFvF,GAAewF,GAAiBI,gBAClCM,GAA2BV,GAAiBxF,aAAcwF,GAAiBz8tB,MAAO4jR,GAAI3E,UACtFm+c,GAAmBX,GAAiBxF,aAAcwF,GAAiBz8tB,MAAO4jR,GAAI3E,UAClF,OAAO26D,GAAKwiZ,GAAQjkqB,KAAMskqB,GAAiBxF,aAAcA,GAAczzH,GAAajxW,GACvF,CAKcgqe,CAAyBlkuB,GAAM4kuB,UAAUI,eAS3D,CACD,SAASP,GAAejnd,IACpB,MAA0B,iBAAZA,IAAmC,MAAXA,KAAoBA,GAAQynd,UAAYznd,GAAQ0nd,WACzF,CAKD,SAASC,GAAqB3nd,IAC1B,MAA0B,iBAAZA,IAAmC,MAAXA,IAAmBA,GAAQynd,OACpE,CACD,SAAS1jZ,GAAK6jZ,GAASC,GAAiBC,GAAiBn6H,GAAajxW,IAClE,IAMIspe,GANA+B,GAAK,GACLp6H,IACAv/lB,GAAQu/lB,GAAa,CAAC9nmB,GAAOT,MACzB2iuB,GAAG3iuB,IAAQtG,MAAMkuB,QAAQnnB,IAASA,GAAM7G,IAAKw2N,IAAO,GAAEA,MAAQ,GAAE3vN,OAKpEmguB,GADA4B,KAAYC,GACIC,GAGAE,GAAeJ,GAASC,GAAiBC,IAE7D,MAAMG,GAAUlC,GAAWE,GAAmBD,KAC9C,OAAO,IAAIjD,GAAQkF,GAASF,GAAIrre,GACnC,CAQD,SAASsre,GAAeh1tB,GAASk1tB,GAAYC,IACzC,MAAM7lsB,GAAW,GACjBl0B,UAAQ4E,GAAQsvB,SAAU,CAACpjC,GAAG4muB,MAEtBxjsB,GAASwjsB,IADT5muB,KAAMgpuB,GACiBC,GAGAH,GAAe9ouB,GAAGgpuB,GAAYC,GAAhB,GAGtC,IAAIhF,GAAgBnwtB,GAAQua,SAAU+U,GAChD,CACD,MAAM8lsB,GACF3quB,YAAYqpuB,GAAYK,GAAoB/9c,IAIxC,GAHAzrR,KAAKmpuB,WAAaA,GAClBnpuB,KAAKwpuB,mBAAqBA,GAC1BxpuB,KAAKyrR,SAAWA,GACZ09c,IAAc19c,GAASnrR,OAAS,GAAKgpuB,GAAe79c,GAAS,IAC7D,MAAM,IAAIg4V,MAAc,KAhLsBC,OAkLlD,MAAMgnH,GAAgBj/c,GAASpmQ,KAAK2ktB,IACpC,GAAIU,IAAiBA,KAAkB10tB,GAAKy1Q,IACxC,MAAM,IAAIg4V,MAAc,KApLsBC,MAsLrD,CACDolH,SACI,OAAO9ouB,KAAKmpuB,YAAuC,IAAzBnpuB,KAAKyrR,SAASnrR,QAAoC,KAApBN,KAAKyrR,SAAS,EACzE,EAGL,SAASo9c,GAAkBp9c,IACvB,GAA4B,iBAAhBA,GAAS,IAAwC,IAApBA,GAASnrR,QAAgC,MAAhBmrR,GAAS,GACvE,OAAO,IAAIg/c,IAAW,EAAM,EAAGh/c,IAEnC,IAAI+9c,GAAqB,EACrBL,IAAa,EACjB,MAAM7iZ,GAAM76D,GAAS9lQ,OAAO,CAAC2gU,GAAKr+B,GAAK0ib,MACnC,GAAmB,iBAAR1ib,IAA2B,MAAPA,GAAa,CACxC,GAAIA,GAAI6hb,QAAS,CACb,MAAMA,GAAU,GAChBr5tB,UAAQw3S,GAAI6hb,QAAS,CAACr+c,GAAUhkR,MAC5BqiuB,GAAQriuB,IAA4B,iBAAbgkR,GAAwBA,GAAS1pR,MAAM,KAAO0pR,KAElE,IAAI66D,GAAK,CAAEwjZ,YACrB,CACD,GAAI7hb,GAAI8hb,YACJ,MAAO,IAAIzjZ,GAAKr+B,GAAI8hb,YAE3B,CACD,MAAqB,iBAAR9hb,GACF,IAAIq+B,GAAKr+B,IAEL,IAAX0ib,IACA1ib,GAAIlmT,MAAM,KAAK0O,QAAQ,CAACm6tB,GAASjxhB,MACZ,GAAbA,IAA8B,MAAZixhB,KAGA,GAAbjxhB,IAA8B,KAAZixhB,GACvBzB,IAAa,EAEI,OAAZyB,GACLpB,KAEgB,IAAXoB,IACLtkZ,GAAItqU,KAAK4utB,IAAT,GAGDtkZ,IAEJ,IAAIA,GAAKr+B,GAAT,EACR,IACH,OAAO,IAAIwib,GAAWtB,GAAYK,GAAoBljZ,GACzD,CACD,MAAM8iZ,GACFtpuB,YAAY2juB,GAAc4F,GAAiB78tB,IACvCxM,KAAKyjuB,aAAeA,GACpBzjuB,KAAKqpuB,gBAAkBA,GACvBrpuB,KAAKwM,MAAQA,EAChB,EAmCL,SAAS+8tB,GAAiCz8rB,GAAOtgC,GAAOg9tB,IACpD,IAAI/+rB,GAAIqC,GACJ6oV,GAAKnpX,GACLo9P,GAAK4/d,GACT,KAAO5/d,GAAK+rH,IAAI,CAGZ,GAFA/rH,IAAM+rH,GACNlrV,GAAIA,GAAE9S,QACD8S,GACD,MAAM,IAAIg5kB,MAAc,KAvRsBC,OAyRlD/tP,GAAKlrV,GAAE7a,SAAStvB,MACnB,CACD,OAAO,IAAI8ouB,GAAS3+rB,IAAG,EAAOkrV,GAAK/rH,GACtC,CAOD,SAASgge,GAAmBnG,GAAcrirB,GAAYqqO,IAIlD,GAHKg4c,KACDA,GAAe,IAAI+B,GAAgB,GAAI,KAEN,IAAjC/B,GAAa7zsB,SAAStvB,QAAgBmjuB,GAAa1tgB,cACnD,OAAO4zgB,GAA2BlG,GAAcrirB,GAAYqqO,IAEhE,MAAMrmF,GA4CV,SAASyliB,GAAapH,GAAcrirB,GAAYqqO,IAC5C,IAAIq/c,GAAsB,EACtBC,GAAmB3prB,GACvB,MAAM4prB,GAAU,CAAEn4sB,OAAO,EAAOo4sB,UAAW,EAAGC,aAAc,GAC5D,KAAOH,GAAmBtH,GAAa7zsB,SAAStvB,QAAQ,CACpD,GAAIwquB,IAAuBr/c,GAASnrR,OAChC,OAAO0quB,GACX,MAAMv7sB,GAAOg0sB,GAAa7zsB,SAASm7sB,IAC7B1od,GAAUoJ,GAASq/c,IAIzB,GAAId,GAAqB3nd,IACrB,MAEJ,MAAMhsF,GAAQ,GAAEgsF,KACVp9Q,GAAO6luB,GAAsBr/c,GAASnrR,OAAS,EAAImrR,GAASq/c,GAAsB,GAAK,KAC7F,GAAIC,GAAmB,QAAch2tB,IAATshL,GACxB,MACJ,GAAIA,IAAQpxL,IAAyB,iBAATA,SAAuC8P,IAAjB9P,GAAK6kuB,QAAuB,CAC1E,IAAKz5b,GAAQh6G,GAAMpxL,GAAMwqB,IACrB,OAAOu7sB,GACXF,IAAuB,CAC1B,KACI,CACD,IAAKz6b,GAAQh6G,GAAM,GAAI5mK,IACnB,OAAOu7sB,GACXF,IACH,CACDC,IACH,CACD,MAAO,CAAEl4sB,OAAO,EAAMo4sB,UAAWF,GAAkBG,aAAcJ,GACpE,CA5EaD,CAAapH,GAAcrirB,GAAYqqO,IAC3C0/c,GAAiB1/c,GAAS/pR,MAAM0jM,GAAE8liB,cACxC,GAAI9liB,GAAEvyK,OAASuyK,GAAE6liB,UAAYxH,GAAa7zsB,SAAStvB,OAAQ,CACvD,MAAMmqC,GAAI,IAAI+6rB,GAAgB/B,GAAa7zsB,SAASluB,MAAM,EAAG0jM,GAAE6liB,WAAY,IAC3ExgsB,UAAE9F,SAASy+rB,IACP,IAAIoC,GAAgB/B,GAAa7zsB,SAASluB,MAAM0jM,GAAE6liB,WAAYxH,GAAa9+rB,UACxEglsB,GAA2Bl/rB,GAAG,EAAG0gsB,GAC3C,CACI,OAAI/liB,GAAEvyK,OAAmC,IAA1Bs4sB,GAAe7quB,OACxB,IAAIkluB,GAAgB/B,GAAa7zsB,SAAU,IAE7Cw1K,GAAEvyK,QAAU4wsB,GAAa1tgB,cACvBq1gB,GAAsB3H,GAAcrirB,GAAYqqO,IAElDrmF,GAAEvyK,MACA82sB,GAA2BlG,GAAc,EAAG0H,IAG5CC,GAAsB3H,GAAcrirB,GAAYqqO,GAE9D,CACD,SAASk+c,GAA2BlG,GAAcrirB,GAAYqqO,IAC1D,GAAwB,IAApBA,GAASnrR,OACT,OAAO,IAAIkluB,GAAgB/B,GAAa7zsB,SAAU,IAEjD,CACD,MAAMk6sB,GAvCd,SAASuB,GAAW5/c,IAChB,OAAIu+c,GAAqBv+c,GAAS,IACvBA,GAAS,GAAGq+c,QAEhB,CAAE1vmB,CAACgpmB,IAAiB33c,GAC9B,CAkCuB4/c,CAAW5/c,IACrB9mP,GAAW,GACjBl0B,UAAQq5tB,GAAS,CAACr+c,GAAU6/c,MACA,iBAAb7/c,KACPA,GAAW,CAACA,KAEC,OAAbA,KACA9mP,GAAS2msB,IAAU1B,GAAmBnG,GAAa9+rB,SAAS2msB,IAASlqrB,GAAYqqO,IAA5C,GAG7Ch7Q,GAAQgztB,GAAa9+rB,SAAU,CAACgC,GAAOggsB,WACN5xtB,IAAzB+0tB,GAAQnD,MACRhisB,GAASgisB,IAAehgsB,MAGzB,IAAI6+rB,GAAgB/B,GAAa7zsB,SAAU+U,GACrD,CACJ,CAkCD,SAASymsB,GAAsB3H,GAAcrirB,GAAYqqO,IACrD,MAAMnxM,GAAQmppB,GAAa7zsB,SAASluB,MAAM,EAAG0/C,IAC7C,IAAI5rC,GAAI,EACR,KAAOA,GAAIi2Q,GAASnrR,QAAQ,CACxB,MAAM+hR,GAAUoJ,GAASj2Q,IACzB,GAAIw0tB,GAAqB3nd,IAAU,CAC/B,MAAM19O,GAAW4msB,GAAyBlpd,GAAQynd,SAClD,OAAO,IAAItE,GAAgBlrpB,GAAO31C,GACrC,CAED,GAAU,IAANnvB,IAAW8ztB,GAAe79c,GAAS,IAAK,CACxC,MAAMvqP,GAAIuisB,GAAa7zsB,SAASwxB,IAChCk5B,GAAMt+D,KAAK,IAAI0ptB,GAAWxksB,GAAEzR,KAAM80N,GAAUknC,GAAS,MACrDj2Q,KACA,QACH,CACD,MAAM6gL,GAAO2ziB,GAAqB3nd,IAAWA,GAAQynd,QAAQ1G,IAAmB,GAAE/gd,KAC5Ep9Q,GAAQuQ,GAAIi2Q,GAASnrR,OAAS,EAAKmrR,GAASj2Q,GAAI,GAAK,KACvD6gL,IAAQpxL,IAAQqkuB,GAAerkuB,KAC/Bq1E,GAAMt+D,KAAK,IAAI0ptB,GAAWrviB,GAAMkuD,GAAUt/O,MAC1CuQ,IAAK,IAGL8kE,GAAMt+D,KAAK,IAAI0ptB,GAAWrviB,GAAM,KAChC7gL,KAEP,CACD,OAAO,IAAIgwtB,GAAgBlrpB,GAAO,GACrC,CACD,SAASixpB,GAAyBzB,IAC9B,MAAMnlsB,GAAW,GACjBl0B,UAAQq5tB,GAAS,CAACr+c,GAAU6/c,MACA,iBAAb7/c,KACPA,GAAW,CAACA,KAEC,OAAbA,KACA9mP,GAAS2msB,IAAUF,GAAsB,IAAI5F,GAAgB,GAAI,IAAK,EAAG/5c,IAAjC,GAGzC9mP,EACV,CACD,SAAS4/M,GAAUgkI,IACf,MAAMjiC,GAAM,GACZ71U,UAAQ83W,GAAQ,CAAC1wJ,GAAGne,KAAM4sI,GAAI5sI,IAAM,GAAEme,MAC/ByuH,EACV,CACD,SAASj2C,GAAQ5gR,GAAM84V,GAAQxkT,IAC3B,OAAOt0C,IAAQs0C,GAAQt0C,MAAQi1P,GAAa6jG,GAAQxkT,GAAQq2d,WAC/D;;;;;;;OAiCD,MAAMoxM,GACF1ruB,YAEAooB,GAEAnkB,IACI/D,KAAKkoB,GAAKA,GACVloB,KAAK+D,IAAMA,EACd,EAOL,MAAM0nuB,WAAwBD,GAC1B1ruB,YAEAooB,GAEAnkB,GAEA2nuB,GAAoB,aAEpBC,GAAgB,MACZ1ttB,MAAMiK,GAAInkB,IACV/D,KAAKye,KAAO,EACZze,KAAK0ruB,kBAAoBA,GACzB1ruB,KAAK2ruB,cAAgBA,EACxB,CAEDlquB,WACI,MAAQ,uBAAsBzB,KAAKkoB,aAAaloB,KAAK+D,OACxD,EAWL,MAAM6nuB,WAAsBJ,GACxB1ruB,YAEAooB,GAEAnkB,GAEA8nuB,IACI5ttB,MAAMiK,GAAInkB,IACV/D,KAAK6ruB,kBAAoBA,GACzB7ruB,KAAKye,KAAO,CACf,CAEDhd,WACI,MAAQ,qBAAoBzB,KAAKkoB,aAAaloB,KAAK+D,6BAA6B/D,KAAK6ruB,qBACxF,EAaL,MAAMC,WAAyBN,GAC3B1ruB,YAEAooB,GAEAnkB,GAKAgouB,GAMA/1mB,IACI/3G,MAAMiK,GAAInkB,IACV/D,KAAK+ruB,OAASA,GACd/ruB,KAAKg2H,KAAOA,GACZh2H,KAAKye,KAAO,CACf,CAEDhd,WACI,MAAQ,wBAAuBzB,KAAKkoB,aAAaloB,KAAK+D,OACzD,EAWL,MAAMiouB,WAAwBR,GAC1B1ruB,YAEAooB,GAEAnkB,GAEA43B,GAOA9e,IACIoB,MAAMiK,GAAInkB,IACV/D,KAAK27B,MAAQA,GACb37B,KAAK6c,OAASA,GACd7c,KAAKye,KAAO,CACf,CAEDhd,WACI,MAAQ,uBAAsBzB,KAAKkoB,aAAaloB,KAAK+D,gBAAgB/D,KAAK27B,QAC7E,EAOL,MAAMswsB,WAAyBT,GAC3B1ruB,YAEAooB,GAEAnkB,GAEA8nuB,GAEArysB,IACIvb,MAAMiK,GAAInkB,IACV/D,KAAK6ruB,kBAAoBA,GACzB7ruB,KAAKw5B,MAAQA,GACbx5B,KAAKye,KAAO,CACf,CAEDhd,WACI,MAAQ,wBAAuBzB,KAAKkoB,aAAaloB,KAAK+D,6BAA6B/D,KAAK6ruB,8BAA8B7ruB,KAAKw5B,QAC9H,EASL,MAAM0ysB,WAAyBV,GAC3B1ruB,YAEAooB,GAEAnkB,GAEA8nuB,GAEArysB,IACIvb,MAAMiK,GAAInkB,IACV/D,KAAK6ruB,kBAAoBA,GACzB7ruB,KAAKw5B,MAAQA,GACbx5B,KAAKye,KAAO,CACf,CACDhd,WACI,MAAQ,wBAAuBzB,KAAKkoB,aAAaloB,KAAK+D,6BAA6B/D,KAAK6ruB,8BAA8B7ruB,KAAKw5B,QAC9H,EASL,MAAM2ysB,WAAuBX,GACzB1ruB,YAEAooB,GAEAnkB,GAEA8nuB,GAEArysB,GAEAu7Y,IACI92Z,MAAMiK,GAAInkB,IACV/D,KAAK6ruB,kBAAoBA,GACzB7ruB,KAAKw5B,MAAQA,GACbx5B,KAAK+0a,eAAiBA,GACtB/0a,KAAKye,KAAO,CACf,CACDhd,WACI,MAAQ,sBAAqBzB,KAAKkoB,aAAaloB,KAAK+D,6BAA6B/D,KAAK6ruB,8BAA8B7ruB,KAAKw5B,0BAA0Bx5B,KAAK+0a,iBAC3J,EAYL,MAAMq3T,WAAqBZ,GACvB1ruB,YAEAooB,GAEAnkB,GAEA8nuB,GAEArysB,IACIvb,MAAMiK,GAAInkB,IACV/D,KAAK6ruB,kBAAoBA,GACzB7ruB,KAAKw5B,MAAQA,GACbx5B,KAAKye,KAAO,CACf,CACDhd,WACI,MAAQ,oBAAmBzB,KAAKkoB,aAAaloB,KAAK+D,6BAA6B/D,KAAK6ruB,8BAA8B7ruB,KAAKw5B,QAC1H,EAQL,MAAM6ysB,UAAmBb,GACrB1ruB,YAEAooB,GAEAnkB,GAEA8nuB,GAEArysB,IACIvb,MAAMiK,GAAInkB,IACV/D,KAAK6ruB,kBAAoBA,GACzB7ruB,KAAKw5B,MAAQA,GACbx5B,KAAKye,KAAO,CACf,CACDhd,WACI,MAAQ,kBAAiBzB,KAAKkoB,aAAaloB,KAAK+D,6BAA6B/D,KAAK6ruB,8BAA8B7ruB,KAAKw5B,QACxH,EASL,MAAM8ysB,GACFxsuB,YAEA+E,IACI7E,KAAK6E,MAAQA,GACb7E,KAAKye,KAAO,CACf,CACDhd,WACI,MAAQ,8BAA6BzB,KAAK6E,MAAM4qB,OACnD,EASL,MAAM88sB,GACFzsuB,YAEA+E,IACI7E,KAAK6E,MAAQA,GACb7E,KAAKye,KAAO,EACf,CACDhd,WACI,MAAQ,4BAA2BzB,KAAK6E,MAAM4qB,OACjD,EAUL,MAAM+8sB,GACF1suB,YAEA2puB,IACIzpuB,KAAKypuB,SAAWA,GAChBzpuB,KAAKye,KAAO,EACf,CACDhd,WAEI,MAAQ,+BADKzB,KAAKypuB,SAASgD,aAAezsuB,KAAKypuB,SAASgD,YAAYh9sB,MAAQ,MAE/E,EASL,MAAMi9sB,GACF5suB,YAEA2puB,IACIzpuB,KAAKypuB,SAAWA,GAChBzpuB,KAAKye,KAAO,EACf,CACDhd,WAEI,MAAQ,6BADKzB,KAAKypuB,SAASgD,aAAezsuB,KAAKypuB,SAASgD,YAAYh9sB,MAAQ,MAE/E,EAUL,MAAMk9sB,GACF7suB,YAEA2puB,IACIzpuB,KAAKypuB,SAAWA,GAChBzpuB,KAAKye,KAAO,EACf,CACDhd,WAEI,MAAQ,0BADKzB,KAAKypuB,SAASgD,aAAezsuB,KAAKypuB,SAASgD,YAAYh9sB,MAAQ,MAE/E,EAUL,MAAMm9sB,GACF9suB,YAEA2puB,IACIzpuB,KAAKypuB,SAAWA,GAChBzpuB,KAAKye,KAAO,EACf,CACDhd,WAEI,MAAQ,wBADKzB,KAAKypuB,SAASgD,aAAezsuB,KAAKypuB,SAASgD,YAAYh9sB,MAAQ,MAE/E,EAOL,MAAM2rsB,GACFt7tB,YAEA+suB,GAEAlqsB,GAEAnhB,IACIxhB,KAAK6suB,YAAcA,GACnB7suB,KAAK2iC,SAAWA,GAChB3iC,KAAKwhB,OAASA,GACdxhB,KAAKye,KAAO,EACf,CACDhd,WACI,MAAM8kC,GAAMvmC,KAAK2iC,SAAY,GAAE3iC,KAAK2iC,SAAS,OAAO3iC,KAAK2iC,SAAS,KAAO,KACzE,MAAQ,mBAAkB3iC,KAAKwhB,uBAAuB+kB,MACzD;;;;;;;;AAkDL,MAAMumsB,GACFhtuB,YAAY6kE,IACR3kE,KAAKgwF,MAAQrrB,EAChB,CACGA,WACA,OAAO3kE,KAAKgwF,MAAM9nF,KACrB,CAIDyvB,OAAO5Z,IACH,MAAMmjB,GAAIlhC,KAAK+suB,aAAahvtB,IAC5B,OAAOmjB,GAAE5gC,OAAS,EAAI4gC,GAAEA,GAAE5gC,OAAS,GAAK,IAC3C,CAIDqkC,SAAS5mB,IACL,MAAM+8M,GAAIlB,GAAS77M,GAAG/d,KAAKgwF,OAC3B,OAAO8qI,GAAIA,GAAEn2L,SAAStjC,IAAI0c,IAAKA,GAAE7V,OAAS,EAC7C,CAIDqK,WAAWwL,IACP,MAAM+8M,GAAIlB,GAAS77M,GAAG/d,KAAKgwF,OAC3B,OAAO8qI,IAAKA,GAAEn2L,SAASrkC,OAAS,EAAIw6N,GAAEn2L,SAAS,GAAGz8B,MAAQ,IAC7D,CAIDyje,SAAS5td,IACL,MAAMmjB,GAAI8rsB,GAASjvtB,GAAG/d,KAAKgwF,OAC3B,OAAI9uD,GAAE5gC,OAAS,EACJ,GACD4gC,GAAEA,GAAE5gC,OAAS,GAAGqkC,SAAStjC,IAAIE,IAAKA,GAAE2G,OACrCoN,OAAOqhW,IAAMA,KAAO54V,GAChC,CAIDgvtB,aAAahvtB,IACT,OAAOivtB,GAASjvtB,GAAG/d,KAAKgwF,OAAO3uF,IAAI2hC,IAAKA,GAAE96B,MAC7C,EAGL,SAAS0xN,GAAS1xN,GAAOe,IACrB,GAAIf,KAAUe,GAAKf,MACf,OAAOe,GACX,UAAW09B,MAAS19B,GAAK07B,SAAU,CAC/B,MAAM17B,GAAO2wN,GAAS1xN,GAAOy+B,IAC7B,GAAI19B,GACA,OAAOA,EACd,CACD,OAAO,IACV,CAED,SAAS+juB,GAAS9kuB,GAAOe,IACrB,GAAIf,KAAUe,GAAKf,MACf,MAAO,CAACe,IACZ,UAAW09B,MAAS19B,GAAK07B,SAAU,CAC/B,MAAMlV,GAAOu9sB,GAAS9kuB,GAAOy+B,IAC7B,GAAIlX,GAAKnvB,OACLmvB,UAAKq0C,QAAQ76D,IACNwmB,EAEd,CACD,MAAO,EACV,CACD,MAAMw9sB,GACFntuB,YAAYoI,GAAOy8B,IACf3kC,KAAKkI,MAAQA,GACblI,KAAK2kC,SAAWA,EACnB,CACDljC,WACI,MAAQ,YAAWzB,KAAKkI,QAC3B,EAGL,SAASgluB,GAAkBjkuB,IACvB,MAAM5H,GAAM,GACZ,OAAI4H,IACAA,GAAK07B,SAASl0B,QAAQk2B,IAAStlC,GAAIslC,GAAMz+B,MAAMojuB,QAAU3ksB,IAEtDtlC;;;;;;;OACV,CAwCD,MAAM8ruB,WAAoBL,GAEtBhtuB,YAAY6kE,GAEZ8kqB,IACIxrtB,MAAM0mD,IACN3kE,KAAKypuB,SAAWA,GAChB2D,GAAeptuB,KAAM2kE,GACxB,CACDljE,WACI,OAAOzB,KAAKypuB,SAAShouB,UACxB,EAEL,SAAS4ruB,GAAiBzE,GAASjyE,IAC/B,MAAM8yE,GAUV,SAAS6D,GAAyB1E,GAASjyE,IACvC,MAIM42E,GAAY,IAAIC,GAAuB,GAJzB,GAEK,GACR,GAFC,GAGmFpK,GAAgBzsE,GAAe,KAAMiyE,GAAQjkqB,MAAM,EAAI,IAC5J,OAAO,IAAI8oqB,GAAoB,GAAI,IAAIR,GAASM,GAAW,IAC9D,CAjBoBD,CAAyB1E,GAASjyE,IAC7C+2E,GAAW,IAAIn0kB,IAAgB,CAAC,IAAImskB,GAAW,GAAI,MACnDiI,GAAc,IAAIp0kB,IAAgB,IAClCq0kB,GAAY,IAAIr0kB,IAAgB,IAChCs0kB,GAAmB,IAAIt0kB,IAAgB,IACvCwlG,GAAW,IAAIxlG,IAAgB,IAC/Bg0kB,GAAY,IAAIO,GAAeJ,GAAUC,GAAaE,GAAkB9ue,GAAU6ue,GAAWxK,GAAgBzsE,GAAe8yE,GAAS9kqB,MAC3I4oqB,UAAU9D,SAAWA,GAAS9kqB,KACvB,IAAIwoqB,GAAY,IAAIF,GAASM,GAAW,IAAK9D,GACvD,CA4BD,MAAMqE,GAEFhuuB,YAEAiE,GAEAwkX,GAEAynP,GAEAjxW,GAEAx/O,GAEA+rtB,GAEAzqjB,GAAWktjB,IACP/tuB,KAAK+D,IAAMA,GACX/D,KAAKuoX,OAASA,GACdvoX,KAAKgwmB,YAAcA,GACnBhwmB,KAAK++P,SAAWA,GAChB/+P,KAAKuf,KAAOA,GACZvf,KAAKsruB,OAASA,GACdtruB,KAAK6gL,UAAYA,GAEjB7gL,KAAKymB,MAAQzmB,KAAKuf,MAAM9Z,QAAKpE,MAAKmpC,IAAMA,GAAE64rB,QAA7B,EAAiD3oiB,WAAG3lL,GACjE/U,KAAKguuB,gBAAkBD,EAC1B,CAEGtB,kBACA,OAAOzsuB,KAAKguuB,gBAAgBvB,WAC/B,CAEG9nqB,WACA,OAAO3kE,KAAKiuuB,aAAatpqB,IAC5B,CAEGhtC,aACA,OAAO33B,KAAKiuuB,aAAat2sB,OAAO33B,KACnC,CAEGuS,iBACA,OAAOvS,KAAKiuuB,aAAa17tB,WAAWvS,KACvC,CAEG2kC,eACA,OAAO3kC,KAAKiuuB,aAAatpsB,SAAS3kC,KACrC,CAEG+suB,mBACA,OAAO/suB,KAAKiuuB,aAAalB,aAAa/suB,KACzC,CAMGkuuB,eACA,OAAKluuB,KAAKmuuB,YACNnuuB,KAAKmuuB,UAAYnuuB,KAAKuoX,OAAO9iX,QAAKpE,MAAK6/B,IAAMqisB,GAAkBrisB,OAE5DlhC,KAAKmuuB,SACf,CAKG9I,oBACA,OAAKrluB,KAAKsluB,iBACNtluB,KAAKsluB,eACDtluB,KAAKgwmB,YAAYvqmB,QAAKpE,MAAK6/B,IAAMqisB,GAAkBrisB,OAEpDlhC,KAAKsluB,cACf,CACD7juB,WACI,OAAOzB,KAAKypuB,SAAWzpuB,KAAKypuB,SAAShouB,WAAc,UAASzB,KAAKguuB,kBACpE,EAOL,SAASI,GAA2BvpuB,GAAOwpuB,GAA4B,aACnE,MAAMtB,GAAelouB,GAAMkouB,aAC3B,IAAIuB,GAAyB,EAC7B,GAAkC,WAA9BD,GAEA,IADAC,GAAyBvB,GAAazsuB,OAAS,EACxCguuB,IAA0B,GAAG,CAChC,MAAMj5tB,GAAU03tB,GAAauB,IACvB32sB,GAASo1sB,GAAauB,GAAyB,GAErD,GAAIj5tB,GAAQo3tB,aAA4C,KAA7Bp3tB,GAAQo3tB,YAAYh9sB,KAC3C6+sB,aAGM32sB,GAAOkpJ,UAIb,MAHAytjB,IAGA,CAEP,CAEL,OAGJ,SAASC,GAAiBxB,IACtB,OAAOA,GAAapntB,OAAO,CAAC2gU,GAAKjwJ,MAItB,CAAEkyL,OAHM,IAAKjiC,GAAIiiC,UAAWlyL,GAAKkyL,QAGvBhpW,KAFJ,IAAK+mU,GAAI/mU,QAAS82K,GAAK92K,MAEbvX,QADP,IAAKquL,GAAK92K,QAAS+mU,GAAIt+U,WAAYquL,GAAKo2iB,aAAalttB,QAAS82K,GAAKm4iB,iBAEpF,CAAEjmX,OAAQ,GAAIhpW,KAAM,GAAIvX,QAAS,IACvC,CAVUumuB,CAAiBxB,GAAarruB,MAAM4suB,IAC9C,CAiCD,MAAMd,GAEF1tuB,YAEAiE,GAoBAwkX,GAEAynP,GAEAjxW,GAEAx/O,GAEA+rtB,GAEAzqjB,GAAW4rjB,GAAagC,GAAYzF,GAAehhuB,GAAS0muB,IACxD1uuB,KAAK+D,IAAMA,GACX/D,KAAKuoX,OAASA,GACdvoX,KAAKgwmB,YAAcA,GACnBhwmB,KAAK++P,SAAWA,GAChB/+P,KAAKuf,KAAOA,GACZvf,KAAKsruB,OAASA,GACdtruB,KAAK6gL,UAAYA,GAEjB7gL,KAAKymB,MAAQzmB,KAAKuf,OAAO8jtB,IACzBrjuB,KAAKysuB,YAAcA,GACnBzsuB,KAAK0puB,YAAc+E,GACnBzuuB,KAAK6puB,eAAiBb,GACtBhpuB,KAAK2uuB,wBAA0BD,IAA0B1F,GACzDhpuB,KAAK4uuB,SAAW5muB,EACnB,CAEG28D,WACA,OAAO3kE,KAAKiuuB,aAAatpqB,IAC5B,CAEGhtC,aACA,OAAO33B,KAAKiuuB,aAAat2sB,OAAO33B,KACnC,CAEGuS,iBACA,OAAOvS,KAAKiuuB,aAAa17tB,WAAWvS,KACvC,CAEG2kC,eACA,OAAO3kC,KAAKiuuB,aAAatpsB,SAAS3kC,KACrC,CAEG+suB,mBACA,OAAO/suB,KAAKiuuB,aAAalB,aAAa/suB,KACzC,CACGkuuB,eACA,OAAKluuB,KAAKmuuB,YACNnuuB,KAAKmuuB,UAAY5K,GAAkBvjuB,KAAKuoX,SAErCvoX,KAAKmuuB,SACf,CACG9I,oBACA,OAAKrluB,KAAKsluB,iBACNtluB,KAAKsluB,eAAiB/B,GAAkBvjuB,KAAKgwmB,cAE1ChwmB,KAAKsluB,cACf,CACD7juB,WAGI,MAAQ,cAFIzB,KAAK+D,IAAI1C,IAAI0iE,IAAWA,GAAQtiE,YAAYE,KAAK,gBAC7C3B,KAAKysuB,YAAczsuB,KAAKysuB,YAAYh9sB,KAAO,MAE9D,EA6BL,MAAMg+sB,WAA4BX,GAE9BhtuB,YAEAiE,GAAK4gE,IACD1mD,MAAM0mD,IACN3kE,KAAK+D,IAAMA,GACXqpuB,GAAeptuB,KAAM2kE,GACxB,CACDljE,WACI,OAAO0uQ,GAAcnwQ,KAAKgwF,MAC7B,EAEL,SAASo9oB,GAAe5zsB,GAAOvwB,IAC3BA,GAAKf,MAAM+luB,aAAez0sB,GAC1BvwB,GAAK07B,SAASl0B,QAAQlP,IAAK6ruB,GAAe5zsB,GAAOj4B,IACpD,CACD,SAAS4uQ,GAAclnQ,IACnB,MAAM1H,GAAI0H,GAAK07B,SAASrkC,OAAS,EAAK,MAAK2I,GAAK07B,SAAStjC,IAAI8uQ,IAAexuQ,KAAK,WAAa,GAC9F,MAAQ,GAAEsH,GAAKf,QAAQ3G,IAC1B,CAMD,SAASstuB,GAAsBhquB,IAC3B,GAAIA,GAAM4kuB,SAAU,CAChB,MAAMnX,GAAkBzttB,GAAM4kuB,SACxBqF,GAAejquB,GAAMmpuB,gBAC3BnpuB,GAAM4kuB,SAAWqF,GACZpqd,GAAa4tc,GAAgBtiH,YAAa8+H,GAAa9+H,cACxDnrmB,GAAMmrmB,YAAY/qmB,KAAK6puB,GAAa9+H,aAEpCsiH,GAAgBvzd,WAAa+ve,GAAa/ve,UAC1Cl6P,GAAMk6P,SAAS95P,KAAK6puB,GAAa/ve,UAEhC2lB,GAAa4tc,GAAgB/pW,OAAQumX,GAAavmX,SACnD1jX,GAAM0jX,OAAOtjX,KAAK6puB,GAAavmX,QAtiE3C,SAASwmX,GAAmB5xsB,GAAGpF,IAC3B,GAAIoF,GAAE78B,SAAWy3B,GAAEz3B,OACf,OAAO,EACX,QAASkV,GAAI,EAAGA,GAAI2nB,GAAE78B,SAAUkV,GAC5B,IAAKkvQ,GAAavnP,GAAE3nB,IAAIuiB,GAAEviB,KACtB,OAAO,EAEf,OAAO,CACV,CAgiEYu5tB,CAAmBzc,GAAgBvutB,IAAK+quB,GAAa/quB,MACtDc,GAAMd,IAAIkB,KAAK6puB,GAAa/quB,KAE3B2gR,GAAa4tc,GAAgB/ysB,KAAMuvtB,GAAavvtB,OACjD1a,GAAM0a,KAAKta,KAAK6puB,GAAavvtB,KAEpC,MAEG1a,GAAM4kuB,SAAW5kuB,GAAMmpuB,gBAEvBnpuB,GAAM0a,KAAKta,KAAKJ,GAAMmpuB,gBAAgBzutB,KAE7C,CACD,SAASyvtB,GAA0B7xsB,GAAGpF,IAClC,MAAMk3sB,GAAiBvqd,GAAavnP,GAAEorV,OAAQxwV,GAAEwwV,SAnwDpD,SAAS2mX,GAAc91gB,GAAIz4N,IACvB,OAAO4juB,GAAUnrgB,GAAIz4N,KAAOy4N,GAAG54C,MAAM,CAACrjJ,GAAG3nB,KAAMkvQ,GAAavnP,GAAEi9f,WAAYz5hB,GAAG6U,IAAG4khB,YACnF,CAiwD8D80M,CAAc/xsB,GAAEp5B,IAAKg0B,GAAEh0B,KAC5EoruB,IAAmBhysB,GAAExF,SAAYI,GAAEJ,OACzC,OAAOs3sB,KAAmBE,MACpBhysB,GAAExF,QAAUq3sB,GAA0B7xsB,GAAExF,OAAQI,GAAEJ,QAC3D;;;;;;;OAaD,SAASy3sB,GAAWC,GAAoBh5iB,GAAM+9G,IAE1C,GAAIA,IAAai7b,GAAmBC,iBAAiBj5iB,GAAKnuL,MAAOksS,GAAUlsS,MAAMuhuB,UAAW,CACxF,MAAMvhuB,GAAQksS,GAAUlsS,MACxBA,GAAM8luB,gBAAkB33iB,GAAKnuL,MAC7B,MAAMy8B,GAmBd,SAAS4qsB,GAAsBF,GAAoBh5iB,GAAM+9G,IACrD,OAAO/9G,GAAK1xJ,SAAStjC,IAAIslC,KACrB,UAAWzF,MAAKkzQ,GAAUzvQ,SACtB,GAAI0qsB,GAAmBC,iBAAiB3osB,GAAMz+B,MAAOg5B,GAAEh5B,MAAMuhuB,UACzD,OAAO2F,GAAWC,GAAoB1osB,GAAOzF,IAGrD,OAAOkusB,GAAWC,GAAoB1osB,GAArB,EAExB,CA5BwB4osB,CAAsBF,GAAoBh5iB,GAAM+9G,IACjE,OAAO,IAAI64b,GAAS/kuB,GAAOy8B,GAC9B,CACI,CACD,GAAI0qsB,GAAmBG,aAAan5iB,GAAKnuL,OAAQ,CAE7C,MAAMunuB,GAAsBJ,GAAmBK,SAASr5iB,GAAKnuL,OAC7D,GAA4B,OAAxBunuB,GAA8B,CAC9B,MAAMrpZ,GAAOqpZ,GAAoB5quB,MACjCuhV,UAAKl+U,MAAM8luB,gBAAkB33iB,GAAKnuL,MAClCk+U,GAAKzhT,SAAW0xJ,GAAK1xJ,SAAStjC,IAAIE,IAAK6tuB,GAAWC,GAAoB9tuB,KAC/D6kV,EACV,CACJ,CACD,MAAMl+U,GAed,SAASynuB,GAAqBpuuB,IAC1B,OAAO,IAAIusuB,GAAe,IAAIv0kB,IAAgBh4J,GAAEwC,KAAM,IAAIw1J,IAAgBh4J,GAAEgnX,QAAS,IAAIhvN,IAAgBh4J,GAAEyumB,aAAc,IAAIz2c,IAAgBh4J,GAAEw9P,UAAW,IAAIxlG,IAAgBh4J,GAAEge,MAAOhe,GAAE+puB,OAAQ/puB,GAAEs/K,UAAWt/K,GACjN;;;;;;;OAjBqBouuB,CAAqBt5iB,GAAKnuL,OAClCy8B,GAAW0xJ,GAAK1xJ,SAAStjC,IAAIE,IAAK6tuB,GAAWC,GAAoB9tuB,KACvE,OAAO,IAAI0ruB,GAAS/kuB,GAAOy8B,GAC9B,CACJ,CAsBD,MAAMirsB,GAA6B,6BACnC,SAASC,GAA2BC,GAAeC,IAC/C,MAAQC,cAAYC,8BAA8BvH,GAAUqH,IAAY,CAAEC,WAAYD,GAAUE,+BAA2Bl7tB,GAAcg7tB,GACnIp0sB,GAAQu0sB,IAAyBxsH,EAAwE,EAA6CqsH,IAC5Jp0sB,UAAM53B,IAAMisuB,GACZr0sB,GAAMs0sB,0BAA4BA,GAC3Bt0sB,EACV,CACD,SAASu0sB,GAAyBrwtB,GAASm2G,GAAMm6mB,IAC7C,MAAMx0sB,GAAQ,IAAIp7B,MAAM,8BAAgCsf,IAAW,KACnE8b,UAAMi0sB,KAA8B,EACpCj0sB,GAAMy0sB,iBAAmBp6mB,GACrBm6mB,KACAx0sB,GAAM53B,IAAMosuB,IAETx0sB,EACV,CACD,SAAS00sB,GAAwC10sB,IAC7C,OAAO20sB,GAA6B30sB,KAAU+ssB,GAAU/ssB,GAAM53B,IACjE,CACD,SAASusuB,GAA6B30sB,IAClC,OAAOA,IAASA,GAAMi0sB,GACzB;;;;;;;OAcD,MAAMW,GACFzwuB,cACIE,KAAKsruB,OAAS,KACdtruB,KAAK6E,MAAQ,KAKb7E,KAAK8rN,SAAW,KAChB9rN,KAAK6lL,SAAW,KAChB7lL,KAAK2kC,SAAW,IAAI6rsB,GACpBxwuB,KAAKywuB,UAAY,IACpB,EAOL,MAAMD,GACF1wuB,cAEIE,KAAK0wuB,SAAW,IAAI1/kB,GACvB,CAED2/kB,qBAAqBC,GAAWtF,IAC5B,MAAM7ztB,GAAUzX,KAAK6wuB,mBAAmBD,IACxCn5tB,GAAQ6ztB,OAASA,GACjBtruB,KAAK0wuB,SAASn9sB,IAAIq9sB,GAAWn5tB,GAChC,CAMDq5tB,uBAAuBF,IACnB,MAAMn5tB,GAAUzX,KAAKoyF,WAAWw+oB,IAC5Bn5tB,KACAA,GAAQ6ztB,OAAS,KACjB7ztB,GAAQg5tB,UAAY,KAE3B,CAKDM,sBACI,MAAML,GAAW1wuB,KAAK0wuB,SACtB,YAAKA,SAAW,IAAI1/kB,IACb0/kB,EACV,CACDM,mBAAmBN,IACf1wuB,KAAK0wuB,SAAWA,EACnB,CACDG,mBAAmBD,IACf,IAAIn5tB,GAAUzX,KAAKoyF,WAAWw+oB,IAC9B,OAAKn5tB,KACDA,GAAU,IAAI84tB,GACdvwuB,KAAK0wuB,SAASn9sB,IAAIq9sB,GAAWn5tB,KAE1BA,EACV,CACD26E,WAAWw+oB,IACP,OAAO5wuB,KAAK0wuB,SAAS3wtB,IAAI6wtB,KAAc,IAC1C,EAELJ,GAAuBztuB,UAAvB,4BAAmHytuB,GAAnH,EACAA,GAAuBvtuB,WAp4DyED,MAo4DhG,OAAuHwtuB,GAAvHttuB,QAAuHstuB,GAAvH,qBAA2J;;;;;;;;AAa3J,MAAMS,IAAoDvtH,EAoD1D,MAAMwtH,GACFpxuB,YAAYqxuB,GAAgBntuB,GAAUyD,GAAMm8J,GAAgBq1f,IACxDj5pB,KAAKmxuB,eAAiBA,GACtBnxuB,KAAKgE,SAAWA,GAChBhE,KAAK4jK,eAAiBA,GACtB5jK,KAAKi5pB,oBAAsBA,GAC3Bj5pB,KAAKutuB,UAAY,KACjBvtuB,KAAKoxuB,gBAAkB,KACvBpxuB,KAAKqxuB,eAAiB,IAAInmuB,MAC1BlL,KAAKsxuB,iBAAmB,IAAIpmuB,MAK5BlL,KAAKuxuB,aAAe,IAAIrmuB,MAKxBlL,KAAKwxuB,aAAe,IAAItmuB,MACxBlL,KAAKyH,KAAOA,IAAQ27tB,GACpB+N,GAAeR,qBAAqB3wuB,KAAKyH,KAAMzH,KAClD,CAED6Q,cAEQ7Q,KAAKmxuB,eAAe/+oB,WAAWpyF,KAAKyH,OAAO6juB,SAAWtruB,MACtDA,KAAKmxuB,eAAeL,uBAAuB9wuB,KAAKyH,KAEvD,CAED6H,WACI,IAAKtP,KAAKutuB,UAAW,CAGjB,MAAM91tB,GAAUzX,KAAKmxuB,eAAe/+oB,WAAWpyF,KAAKyH,MAChDgQ,IAAWA,GAAQ5S,QACf4S,GAAQg5tB,UAERzwuB,KAAK22V,OAAOl/U,GAAQg5tB,UAAWh5tB,GAAQ5S,OAIvC7E,KAAKyxuB,aAAah6tB,GAAQ5S,MAAO4S,GAAQouK,UAGpD,CACJ,CACG6rjB,kBACA,QAAS1xuB,KAAKutuB,SACjB,CAKG1sjB,gBACA,IAAK7gL,KAAKutuB,UACN,MAAM,IAAI9pH,MAAc,KAAkDwtH,IAC9E,OAAOjxuB,KAAKutuB,UAAU7stB,QACzB,CACGixtB,qBACA,IAAK3xuB,KAAKutuB,UACN,MAAM,IAAI9pH,MAAc,KAAkDwtH,IAC9E,OAAOjxuB,KAAKoxuB,eACf,CACGQ,yBACA,OAAI5xuB,KAAKoxuB,gBACEpxuB,KAAKoxuB,gBAAgB3H,SAASlqtB,KAElC,EACV,CAIDs4oB,SACI,IAAK73pB,KAAKutuB,UACN,MAAM,IAAI9pH,MAAc,KAAkDwtH,IAC9EjxuB,KAAKgE,SAAS6zpB,SACd,MAAMt4c,GAAMv/M,KAAKutuB,UACjB,YAAKA,UAAY,KACjBvtuB,KAAKoxuB,gBAAkB,KACvBpxuB,KAAKwxuB,aAAaphuB,KAAKmvM,GAAI7+L,UACpB6+L,EACV,CAIDo3I,OAAO10I,GAAK0vhB,IACR3xuB,KAAKutuB,UAAYtrhB,GACjBjiN,KAAKoxuB,gBAAkBO,GACvB3xuB,KAAKgE,SAASyiC,OAAOw7K,GAAIs/S,UACzBvhgB,KAAKuxuB,aAAanhuB,KAAK6xM,GAAIvhM,SAC9B,CACD7K,aACI,GAAI7V,KAAKutuB,UAAW,CAChB,MAAMhsuB,GAAIvB,KAAK6gL,UACf7gL,KAAKutuB,UAAUpgtB,UACfntB,KAAKutuB,UAAY,KACjBvtuB,KAAKoxuB,gBAAkB,KACvBpxuB,KAAKsxuB,iBAAiBlhuB,KAAK7O,GAC9B,CACJ,CACDkwuB,aAAaE,GAAgBE,IACzB,GAAI7xuB,KAAK0xuB,YACL,MAAM,IAAIjuH,MAAc,KAAsDwtH,IAElFjxuB,KAAKoxuB,gBAAkBO,GACvB,MAAM3tuB,GAAWhE,KAAKgE,SAEhB68K,GADW8wjB,GAAe3D,gBACLntjB,UACrBixjB,GAAgB9xuB,KAAKmxuB,eAAeN,mBAAmB7wuB,KAAKyH,MAAMk9B,SAClEkhJ,GAAW,IAAIksjB,GAAeJ,GAAgBG,GAAe9tuB,GAAS6hL,UAC5E,GAAIgsjB,IAuDZ,SAASG,GAA2BxrtB,IAChC,QAASA,GAAKwlM,uBACjB;;;;;;;OAzDiCgmhB,CAA2BH,IAAqB,CACtE,MAAM3uuB,GAAU2uuB,GAAmB7lhB,wBAAwBnrC,IAC3D7gL,KAAKutuB,UAAYvpuB,GAASooN,gBAAgBlpN,GAASc,GAAS1D,OAAQulL,GACvE,KACI,CACD,MAAMoze,GAAsB44E,IAAsB7xuB,KAAKi5pB,oBACvDj5pB,KAAKutuB,UAAYvpuB,GAASooN,gBAAgBvrC,GAAW,CAAEr0K,MAAOxI,GAAS1D,OAAQulL,YAAUoze,wBAC5F,CAGDj5pB,KAAK4jK,eAAehmJ,eACpB5d,KAAKqxuB,eAAejhuB,KAAKpQ,KAAKutuB,UAAU7stB,SAC3C,EAELwwtB,GAAanuuB,UAAb,4BAAyGmuuB,IAnkETluuB,MAmkEuCwtuB,IAnkEvCxtuB,MAmkE0EA,OAnkE1EA,MAmkE0G,QAnkE1GA,MAmkE8IA,OAnkE9IA,MAmkE+KA,OAA/Q,EACAkuuB,GAAa59tB,UApkEmFtQ,MAokEhG,MAA6FkuuB,GAA7F39tB,gLAwBA,MAAMw+tB,GACFjyuB,YAAY+E,GAAOituB,GAAen6sB,IAC9B33B,KAAK6E,MAAQA,GACb7E,KAAK8xuB,cAAgBA,GACrB9xuB,KAAK23B,OAASA,EACjB,CACD5X,IAAIle,GAAO+pN,IACP,OAAI/pN,KAAUisuB,GACH9tuB,KAAK6E,MAEZhD,KAAU2uuB,GACHxwuB,KAAK8xuB,cAET9xuB,KAAK23B,OAAO5X,IAAIle,GAAO+pN,GACjC,EAsBL,MAAMqmhB;;;;;;;;AA4BN,SAASC,GAAiCrtuB,GAAOstuB,IAC7C,OAAIttuB,GAAMqB,YAAcrB,GAAMg2qB,YAC1Bh2qB,GAAMg2qB,aACFH,OAA0B71qB,GAAMqB,UAAWisuB,GAAkB,UAASttuB,GAAM4qB,SAE7E5qB,GAAMg2qB,WAAas3D,EAC7B,CAgHD,SAASC,GAAkB7nsB,IACvB,MAAM5F,GAAW4F,GAAE5F,UAAY4F,GAAE5F,SAAStjC,IAAI+wuB,IACxC7wuB,GAAIojC,GAAW,IAAK4F,GAAG5F,aAAa,IAAK4F,IAC/C,OAAMhpC,GAAEs/K,YAAct/K,GAAE8wuB,gBAAmB1tsB,IAAYpjC,GAAE+3e,eACpD/3e,GAAE+puB,QAAU/puB,GAAE+puB,SAAWlI,KAC1B7huB,GAAEs/K,UAAYoxjB,IAEX1wuB,EACV,CAED,SAAS+wuB,GAAUztuB,IACf,OAAOA,GAAMymuB,QAAUlI,EAC1B,CAKD,SAASmP,GAAsBC,GAAQrK,IACnC,MAAMsK,GAAeD,GAAOl9tB,OAAOi1B,IAAK+nsB,GAAU/nsB,MAAO49rB,IACzDsK,UAAaz2tB,QAAQw2tB,GAAOl9tB,OAAOi1B,IAAK+nsB,GAAU/nsB,MAAO49rB,KAClDsK,EACV,CAaD,SAASC,GAAwBjJ,IAC7B,IAAKA,GACD,OAAO,KAIX,GAAIA,GAASgD,aAAa5xD,UACtB,OAAO4uD,GAASgD,YAAY5xD,UAEhC,QAAS73oB,GAAIymsB,GAAS9xsB,OAAQqL,GAAGA,GAAIA,GAAErL,OAAQ,CAC3C,MAAM9yB,GAAQm+B,GAAEypsB,YAKhB,GAAI5nuB,IAAO8tuB,gBACP,OAAO9tuB,GAAM8tuB,gBACjB,GAAI9tuB,IAAOg2qB,UACP,OAAOh2qB,GAAMg2qB,SACpB,CACD,OAAO,IACV;;;;;;;OAvMDo3D,GAAsBlvuB,UAAtB,4BAAkHkvuB,GAAlH,EACAA,GAAsB17tB,UAnoE0EvT,MAmoEhG,MAAsGivuB,GAAtG1+tB,qDAnoEgGvQ,OAmoEhGuf,8CAnoEgGvf,MAmoEoG,kBAApM,gBAAgSkuuB,IAAhSz4tB,kBAoNA,MAAMm6tB,GACF9yuB,YAAYuvuB,GAAoBwD,GAAaC,GAAWC,IACpD/yuB,KAAKqvuB,mBAAqBA,GAC1BrvuB,KAAK6yuB,YAAcA,GACnB7yuB,KAAK8yuB,UAAYA,GACjB9yuB,KAAK+yuB,aAAeA,EACvB,CACD18tB,SAAS86tB,IACL,MAAM6B,GAAahzuB,KAAK6yuB,YAAY7ipB,MAC9BijpB,GAAWjzuB,KAAK8yuB,UAAY9yuB,KAAK8yuB,UAAU9ipB,MAAQ,KACzDhwF,KAAKkzuB,sBAAsBF,GAAYC,GAAU9B,IACjDtC,GAAsB7uuB,KAAK6yuB,YAAYluqB,MACvC3kE,KAAKmzuB,oBAAoBH,GAAYC,GAAU9B,GAClD,CAED+B,sBAAsBE,GAAYptd,GAAU0qd,IACxC,MAAM/rsB,GAAWuosB,GAAkBlnd,IAEnCotd,GAAWzusB,SAASl0B,QAAQ4iuB,KACxB,MAAMC,GAAkBD,GAAYnruB,MAAMojuB,OAC1CtruB,KAAKuzuB,iBAAiBF,GAAa1usB,GAAS2usB,IAAkB5C,WACvD/rsB,GAAS2usB,MAGpB7iuB,GAAQk0B,GAAU,CAACkzL,GAAG+4gB,MAClB5wuB,KAAKwzuB,8BAA8B37gB,GAAG64gB,GAAtC,EAEP,CACD6C,iBAAiBH,GAAYptd,GAAUi4b,IACnC,MAAMrsI,GAASwhK,GAAWlruB,MACpBmuL,GAAO2vF,GAAWA,GAAS99Q,MAAQ,KACzC,GAAI0pkB,KAAWv7Y,GAEX,GAAIu7Y,GAAO/wZ,UAAW,CAElB,MAAMppK,GAAUwmsB,GAAc7rnB,WAAWw/e,GAAO05J,QAC5C7ztB,IACAzX,KAAKkzuB,sBAAsBE,GAAYptd,GAAUvuQ,GAAQktB,SAEhE,MAGG3kC,KAAKkzuB,sBAAsBE,GAAYptd,GAAUi4b,SAIjD5nhB,IAEAr2L,KAAKwzuB,8BAA8Bxtd,GAAUi4b,GAGxD,CACDu1B,8BAA8B3uuB,GAAOssuB,IAG7BtsuB,GAAMqD,MAAM24K,WAAa7gL,KAAKqvuB,mBAAmBoE,aAAa5uuB,GAAMqD,MAAMuhuB,UAC1EzpuB,KAAK0zuB,2BAA2B7uuB,GAAOssuB,IAGvCnxuB,KAAK2zuB,yBAAyB9uuB,GAAOssuB,GAE5C,CACDuC,2BAA2B7uuB,GAAOssuB,IAC9B,MAAM15tB,GAAU05tB,GAAe/+oB,WAAWvtF,GAAMqD,MAAMojuB,QAChDoF,GAAWj5tB,IAAW5S,GAAMqD,MAAM24K,UAAYppK,GAAQktB,SAAWwssB,GACjExssB,GAAWuosB,GAAkBrouB,IACnC,UAAW8huB,MAAetntB,OAAOsa,KAAKgL,IAClC3kC,KAAKwzuB,8BAA8B7usB,GAASgisB,IAAc+J,IAE9D,GAAIj5tB,IAAWA,GAAQ6ztB,OAAQ,CAC3B,MAAMh/gB,GAAe70M,GAAQ6ztB,OAAOzzE,SAC9B64E,GAAWj5tB,GAAQktB,SAASossB,sBAClC/wuB,KAAKqvuB,mBAAmB/1kB,MAAMz0J,GAAMqD,MAAMuhuB,SAAU,CAAEn9gB,gBAAcznN,SAAO6ruB,aAC9E,CACJ,CACDiD,yBAAyB9uuB,GAAOssuB,IAC5B,MAAM15tB,GAAU05tB,GAAe/+oB,WAAWvtF,GAAMqD,MAAMojuB,QAGhDoF,GAAWj5tB,IAAW5S,GAAMqD,MAAM24K,UAAYppK,GAAQktB,SAAWwssB,GACjExssB,GAAWuosB,GAAkBrouB,IACnC,UAAW8huB,MAAetntB,OAAOsa,KAAKgL,IAClC3kC,KAAKwzuB,8BAA8B7usB,GAASgisB,IAAc+J,IAE1Dj5tB,IAAWA,GAAQ6ztB,SAEnB7ztB,GAAQ6ztB,OAAOz1tB,aAEf4B,GAAQktB,SAASossB,sBAGjBt5tB,GAAQg5tB,UAAY,KACpBh5tB,GAAQq0M,SAAW,KACnBr0M,GAAQ5S,MAAQ,KAEvB,CACDsuuB,oBAAoBC,GAAYptd,GAAU0qd,IACtC,MAAM/rsB,GAAWuosB,GAAkBlnd,IACnCotd,GAAWzusB,SAASl0B,QAAQlP,KACxBvB,KAAK4zuB,eAAeryuB,GAAGojC,GAASpjC,GAAE2G,MAAMojuB,QAASoF,IACjD1wuB,KAAK+yuB,aAAa,IAAInG,GAAcrruB,GAAE2G,MAAMuhuB,UAA5C,GAEA2J,GAAWzusB,SAASrkC,QACpBN,KAAK+yuB,aAAa,IAAIrG,GAAmB0G,GAAWlruB,MAAMuhuB,UAEjE,CACDmK,eAAeR,GAAYptd,GAAUmrd,IACjC,MAAMv/J,GAASwhK,GAAWlruB,MACpBmuL,GAAO2vF,GAAWA,GAAS99Q,MAAQ,KAGzC,GAFA2muB,GAAsBj9J,IAElBA,KAAWv7Y,GACX,GAAIu7Y,GAAO/wZ,UAAW,CAElB,MAAMppK,GAAU05tB,GAAeN,mBAAmBj/J,GAAO05J,QACzDtruB,KAAKmzuB,oBAAoBC,GAAYptd,GAAUvuQ,GAAQktB,SAC1D,MAGG3kC,KAAKmzuB,oBAAoBC,GAAYptd,GAAUmrd,SAA/C,GAIAv/J,GAAO/wZ,UAAW,CAElB,MAAMppK,GAAU05tB,GAAeN,mBAAmBj/J,GAAO05J,QACzD,GAAItruB,KAAKqvuB,mBAAmBG,aAAa59J,GAAO63J,UAAW,CACvD,MAAMj1b,GAASx0S,KAAKqvuB,mBAAmBK,SAAS99J,GAAO63J,UACvDzpuB,KAAKqvuB,mBAAmB/1kB,MAAMs4a,GAAO63J,SAAU,MAC/ChytB,GAAQktB,SAASqssB,mBAAmBx8b,GAAOk8b,UAC3Cj5tB,GAAQg5tB,UAAYj8b,GAAOloF,aAC3B70M,GAAQ5S,MAAQ2vS,GAAO3vS,MAAMqD,MACzBuP,GAAQ6ztB,QAGR7ztB,GAAQ6ztB,OAAO30Y,OAAOniD,GAAOloF,aAAckoF,GAAO3vS,MAAMqD,OAE5D2muB,GAAsBr6b,GAAO3vS,MAAMqD,OACnClI,KAAKmzuB,oBAAoBC,GAAY,KAAM37tB,GAAQktB,SACtD,KACI,CACD,MAAMkhJ,GAAW6sjB,GAAwB9gK,GAAO63J,UAC1CoK,GAAqBhujB,IAAU9lK,IAAIs4oB,QAA6B,KACtE5gpB,GAAQg5tB,UAAY,KACpBh5tB,GAAQ5S,MAAQ+skB,GAChBn6jB,GAAQq0M,SAAW+nhB,GACnBp8tB,GAAQouK,SAAWA,GACfpuK,GAAQ6ztB,QAGR7ztB,GAAQ6ztB,OAAOmG,aAAa7/J,GAAQn6jB,GAAQouK,UAEhD7lL,KAAKmzuB,oBAAoBC,GAAY,KAAM37tB,GAAQktB,SACtD,CACJ,MAGG3kC,KAAKmzuB,oBAAoBC,GAAY,KAAMjC,GAGtD;;;;;;;OAUL,MAAM2C,GACFh0uB,YAAY2vB,IACRzvB,KAAKyvB,KAAOA,GACZzvB,KAAK6E,MAAQ7E,KAAKyvB,KAAKzvB,KAAKyvB,KAAKnvB,OAAS,EAC7C,EAEL,MAAMyzuB,GACFj0uB,YAAY+gL,GAAWh8K,IACnB7E,KAAK6gL,UAAYA,GACjB7gL,KAAK6E,MAAQA,EAChB,EAEL,SAASmvuB,GAAkBpiK,GAAQv7Y,GAAM86iB,IACrC,MAAM6B,GAAaphK,GAAO5hf,MAE1B,OAAOikpB,GAAoBjB,GADV38iB,GAAOA,GAAKrmG,MAAQ,KACYmhpB,GAAgB,CAAC6B,GAAW9quB,OAChF,CAOD,SAASgsuB,GAA2BC,GAAiBtujB,IACjD,MAAMo/c,GAAYrxS,SACZhiU,GAASi0J,GAAS9lK,IAAIo0tB,GAAiBlvG,IAC7C,OAAIrzmB,KAAWqzmB,GACoB,mBAApBkvG,KAAkC,EAACC,OAAcD,IAMjDtujB,GAAS9lK,IAAIo0tB,IAJbA,GAORvitB,EACV,CACD,SAASqitB,GAAoBb,GAAYptd,GAAU0qd,GAAU2D,GAAYl5gB,GAAS,CAC9Em5gB,oBAAqB,GACrBC,kBAAmB,KAEnB,MAAMC,GAAetH,GAAkBlnd,IAEvCotd,UAAWzusB,SAASl0B,QAAQlP,MAQhC,SAASkzuB,GAAerB,GAAYptd,GAAUmrd,GAAgBkD,GAAYl5gB,GAAS,CAC/Em5gB,oBAAqB,GACrBC,kBAAmB,KAEnB,MAAM3iK,GAASwhK,GAAWlruB,MACpBmuL,GAAO2vF,GAAWA,GAAS99Q,MAAQ,KACnCuP,GAAU05tB,GAAiBA,GAAe/+oB,WAAWghpB,GAAWlruB,MAAMojuB,QAAU,KAEtF,GAAIj1iB,IAAQu7Y,GAAO66J,cAAgBp2iB,GAAKo2iB,YAAa,CACjD,MAAMiI,GAqCd,SAASC,GAA4Bt+iB,GAAMu7Y,GAAQtwc,IAC/C,GAAoB,mBAATA,GACP,OAAOA,GAAK+0D,GAAMu7Y,IAEtB,OAAQtwc,QACC,mBACD,OAAQijmB,GAAUluiB,GAAKtyL,IAAK6tkB,GAAO7tkB,KAAlB,IAChB,gCACD,OAAQwguB,GAAUluiB,GAAKtyL,IAAK6tkB,GAAO7tkB,OAC9B2gR,GAAaruF,GAAK25a,YAAap+B,GAAOo+B,aAA1B,IAChB,SACD,OAAO,MACN,4BACD,OAAQg/H,GAA0B34iB,GAAMu7Y,MACnCltT,GAAaruF,GAAK25a,YAAap+B,GAAOo+B,aAC1C,QAED,OAAQg/H,GAA0B34iB,GAAMu7Y,IAEnD,CAxDyB+iK,CAA4Bt+iB,GAAMu7Y,GAAQA,GAAO66J,YAAYmI,uBAC3EF,GACAv5gB,GAAOo5gB,kBAAkBv4tB,KAAK,IAAI83tB,GAAYO,MAI9CziK,GAAOryjB,KAAO82K,GAAK92K,KACnBqyjB,GAAO48J,cAAgBn4iB,GAAKm4iB,eAG5B58J,GAAO/wZ,UACPozjB,GAAoBb,GAAYptd,GAAUvuQ,GAAUA,GAAQktB,SAAW,KAAM0vsB,GAAYl5gB,IAIzF84gB,GAAoBb,GAAYptd,GAAUmrd,GAAgBkD,GAAYl5gB,IAEtEu5gB,IAAaj9tB,IAAWA,GAAQ6ztB,QAAU7ztB,GAAQ6ztB,OAAOoG,aACzDv2gB,GAAOm5gB,oBAAoBt4tB,KAAK,IAAI+3tB,GAAct8tB,GAAQ6ztB,OAAOzqjB,UAAWwV,IAEnF,MAEOA,IACAm9iB,GAA8Bxtd,GAAUvuQ,GAAS0jN,IAErDA,GAAOo5gB,kBAAkBv4tB,KAAK,IAAI83tB,GAAYO,KAE1CziK,GAAO/wZ,UACPozjB,GAAoBb,GAAY,KAAM37tB,GAAUA,GAAQktB,SAAW,KAAM0vsB,GAAYl5gB,IAIrF84gB,GAAoBb,GAAY,KAAMjC,GAAgBkD,GAAYl5gB,IAG1E,OAAOA,EACV,EApDOs5gB,CAAelzuB,GAAGizuB,GAAajzuB,GAAE2G,MAAMojuB,QAASoF,GAAU2D,GAAWvutB,OAAO,CAACvkB,GAAE2G,QAASizN,WACjFq5gB,GAAajzuB,GAAE2G,MAAMojuB,UAGhC76tB,GAAQ+juB,GAAc,CAAC38gB,GAAGne,KAAM85hB,GAA8B37gB,GAAG64gB,GAASt+oB,WAAWsnH,IAAIyhB,KAClFA,EACV,CAmED,SAASq4gB,GAA8B3uuB,GAAO4S,GAAS0jN,IACnD,MAAMx2L,GAAWuosB,GAAkBrouB,IAC7B0lC,GAAI1lC,GAAMqD,MAChBuI,GAAQk0B,GAAU,CAAC17B,GAAM2nuB,MAChBrmsB,GAAEs2I,UAIH2yjB,GAA8BvquB,GADzBwO,GAC+BA,GAAQktB,SAASytD,WAAWw+oB,IAG5B,KAHwCz1gB,IAH5Eq4gB,GAA8BvquB,GAAMwO,GAAS0jN,GAAhB,GAShC5wL,GAAEs2I,WAGEppK,IAAWA,GAAQ6ztB,QAAU7ztB,GAAQ6ztB,OAAOoG,YACjDv2gB,GAAOm5gB,oBAAoBt4tB,KAAK,IAAI+3tB,GAAct8tB,GAAQ6ztB,OAAOzqjB,UAAWt2I,KAH5E4wL,GAAOm5gB,oBAAoBt4tB,KAAK,IAAI+3tB,GAAc,KAAMxpsB,IAQ/D;;;;;;;OAsBD,SAASha,GAAWsnM,IAChB,MAAoB,mBAANA,EACjB,CAyBD,SAASg9gB,GAAapwtB,IAClB,OAAOA,cAAa29sB,GAA0B,eAAZ39sB,IAAGhd,IACxC;;;;;;;OASD,MAAMqtuB,GAAgBlhZ,OAAO,iBAC7B,SAASmhZ,KACL,SAAO3mhB,MAAUymM,OACNjvP,MAAcivP,GAAIxzZ,IAAIuuN,IAAKA,GAAEnqN,QAAKilB,MAAK,IAAD,EAAKu5a,MAAU6wS,OACvDrvuB,QAAKpE,MAAKkxX,KACX,UAAW3gW,MAAU2gW,GACjB,IAAe,IAAX3gW,GAIC,IAAIA,KAAWkjtB,GAEhB,OAAOA,GAEN,IAAe,IAAXljtB,IAAoBA,cAAkBwzsB,GAI3C,OAAOxzsB,GAIf,OAAO,KAlBE,EAmBTtc,MAAQkR,IAASA,KAASsutB,KAApB,EAAoCpqtB,MAAK,IAE1D;;;;;;;OASD,SAASsqtB,GAAYnvjB,GAAUktjB,IAC3B,SAAOrtuB,MAASqY,KACZ,MAAQk3tB,kBAAgB3iB,mBAAiB4iB,QAAUX,qBAAmBD,yBAA0Bv2tB,GAChG,OAAmC,IAA/Bu2tB,GAAoBh0uB,QAA6C,IAA7Bi0uB,GAAkBj0uB,QAAW,EAC1Do6L,MAAG,IAAK38K,GAAGo3tB,cAAc,IAU5C,SAASC,GAAuBj6gB,GAAQk6gB,GAAWC,GAASzvjB,IACxD,SAAOrgL,KAAK21N,IAAQ11N,QAAKC,MAASkhO,IA4EtC,SAAS2ugB,GAAiB10jB,GAAW20jB,GAASF,GAASD,GAAWxvjB,IAC9D,MAAM4vjB,GAAgBD,IAAWA,GAAQ/I,YAAc+I,GAAQ/I,YAAYgJ,cAAgB,KAC3F,IAAKA,IAA0C,IAAzBA,GAAcn1uB,OAChC,SAAOo6L,OAAG,GACd,MAAMg7iB,GAA2BD,GAAcp0uB,IAAKE,KAChD,MAAMo0uB,GAAkBjD,GAAwB8C,KAAY3vjB,GACtD01Y,GAAQ24K,GAA2B3yuB,GAAGo0uB,IAI5C,OAAO3R,GA9Jf,SAAS4R,GAAgBr6K,IACrB,OAAOA,IAAShriB,GAAWgriB,GAAMk6K,cACpC,CAyJwBG,CAAgBr6K,IAC7BA,GAAMk6K,cAAc50jB,GAAW20jB,GAASF,GAASD,IACjDM,GAAgBzvL,aAAa,IAAMqV,GAAM16Y,GAAW20jB,GAASF,GAASD,MACtC5vuB,KAAKsQ,KAAlC,GAEX,SAAO2kL,MAAGg7iB,IAA0BjwuB,KAAKsvuB,KAC5C,CAzF8CQ,CAAiB3ugB,GAAM/lD,UAAW+lD,GAAM/hO,MAAOywuB,GAASD,GAAWxvjB,KAAY9vK,GAAM6b,KAC1G,IAAXA,IACR,GACN,CAZcwjtB,CAAuBd,GAAqBW,GAAgB3iB,GAAiBzsiB,IAC/EpgL,QAAKC,MAAS+vuB,IACRA,IA7EnB,SAASv+gB,GAAUW,IACf,MAAoB,kBAANA,EACjB,CA2EmCX,CAAUu+gB,IAW9C,SAASI,GAAqB9H,GAAgB5ygB,GAAQt1C,GAAUktjB,IAC5D,SAAOvtuB,KAAK21N,IAAQ11N,QAAK8nP,MAAW3mB,OACzB9gN,MA2Bf,SAASgwtB,GAAyBrM,GAAUsJ,IACxC,OAAiB,OAAbtJ,IAAqBsJ,IACrBA,GAAa,IAAIvG,GAAqB/C,MAA1B,EAET/uiB,OAAG,EACb,CAhCqBo7iB,CAAyBlvgB,GAAM/hO,MAAM8yB,OAAQo7sB,IAanE,SAASgD,GAAoBtM,GAAUsJ,IACnC,OAAiB,OAAbtJ,IAAqBsJ,IACrBA,GAAa,IAAIpG,GAAgBlD,MAArB,EAET/uiB,OAAG,EACb,CAlBiFq7iB,CAAoBnvgB,GAAM/hO,MAAOkuuB,IAiDnH,SAASiD,GAAoBX,GAAW5ltB,GAAMo2J,IAC1C,MAAMowjB,GAAYxmtB,GAAKA,GAAKnvB,OAAS,GAK/B41uB,GAJyBzmtB,GAAK/tB,MAAM,EAAG+tB,GAAKnvB,OAAS,GACtD80C,UACA/zC,IAAI6/B,IApSb,SAASi1sB,GAAoBj1sB,IACzB,MAAMk1sB,GAAmBl1sB,GAAEursB,YAAcvrsB,GAAEursB,YAAY2J,iBAAmB,KAC1E,OAAKA,IAAgD,IAA5BA,GAAiB91uB,OAEnC,CAAE2I,KAAMi4B,GAAGg0sB,OAAQkB,IADf,IAEd,CA+RiBD,CAAoBj1sB,KAC7B5rB,OAAO6pK,IAAW,OAANA,IAC2C99K,IAAKmpC,IACtDl4B,GAAM,KACT,MAAM+juB,GAAe7rsB,GAAE0qsB,OAAO7zuB,IAAK+0uB,KAC/B,MAAMT,GAAkBjD,GAAwBlosB,GAAEvhC,OAAS48K,GACrD01Y,GAAQ24K,GAA2BkC,GAAkBT,IAI3D,OAAO3R,GAhJvB,SAASsS,GAAmB/6K,IACxB,OAAOA,IAAShriB,GAAWgriB,GAAM66K,iBACpC,CA2IgCE,CAAmB/6K,IAChCA,GAAM66K,iBAAiBH,GAAWZ,IAClCM,GAAgBzvL,aAAa,IAAMqV,GAAM06K,GAAWZ,MACpB5vuB,KAAKsQ,KAAlC,GAEX,SAAO2kL,MAAG27iB,IAAc5wuB,KAAKsvuB,KAAtB,IAGf,SAAOr6iB,MAAGw7iB,IAA8BzwuB,KAAKsvuB,KAChD,CArEiIiB,CAAoBjI,GAAgBnngB,GAAMn3M,KAAMo2J,IAiClL,SAAS0wjB,GAAelB,GAAWY,GAAWpwjB,IAC1C,MAAM2wjB,GAAcP,GAAUxJ,YAAcwJ,GAAUxJ,YAAY+J,YAAc,KAChF,IAAKA,IAAsC,IAAvBA,GAAYl2uB,OAC5B,SAAOo6L,OAAG,GACd,MAAM+7iB,GAAyBD,GAAYn1uB,IAAKm1uB,IACrClkuB,GAAM,KACT,MAAMqjuB,GAAkBjD,GAAwBuD,KAAcpwjB,GACxD01Y,GAAQ24K,GAA2BsC,GAAab,IAItD,OAAO3R,GAhInB,SAAS0S,GAAcn7K,IACnB,OAAOA,IAAShriB,GAAWgriB,GAAMi7K,YACpC,CA2H4BE,CAAcn7K,IAC3BA,GAAMi7K,YAAYP,GAAWZ,IAC7BM,GAAgBzvL,aAAa,IAAMqV,GAAM06K,GAAWZ,MACpB5vuB,KAAKsQ,KAAlC,IAGf,SAAO2kL,MAAG+7iB,IAAwBhxuB,KAAKsvuB,KAC1C,CAhD4LwB,CAAexI,GAAgBnngB,GAAM/hO,MAAOghL,MACjO9vK,GAAM6b,KACY,IAAXA,IACR,GACN,CAhBeiktB,CAAqBZ,GAAgBV,GAAmB1ujB,GAAUktjB,KAA9C,EACpBr4iB,MAAG+6iB,MAHO,EAIdp0uB,MAAI8zuB,SAAsBp3tB,GAAGo3tB,mBAL1B,EAOd,CA4FD,SAASwB,GAAiB9wjB,GAAUhhL,GAAO+qB,GAAUkgtB,IACjD,MAAM8G,GAAU/xuB,GAAM+xuB,QACtB,QAAgB7huB,IAAZ6huB,IAA4C,IAAnBA,GAAQt2uB,OACjC,SAAOo6L,OAAG,GAEd,MAAMm8iB,GAAqBD,GAAQv1uB,IAAKy1uB,KACpC,MAAMv7K,GAAQ24K,GAA2B4C,GAAgBjxjB,IAIzD,OAAOm+iB,GArLf,SAAS+S,GAAUx7K,IACf,OAAOA,IAAShriB,GAAWgriB,GAAMq7K,QACpC,CAgLwBG,CAAUx7K,IACvBA,GAAMq7K,QAAQ/xuB,GAAO+qB,IACrBi2J,GAASqgY,aAAa,IAAMqV,GAAM12jB,GAAO+qB,KACpB,GAE7B,SAAO8qK,MAAGm8iB,IACLpxuB,KAAKsvuB,KAAyBiC,GAAkBlH,IACxD,CACD,SAASkH,GAAkBlH,IACvB,SAAOrquB,SAAK46F,MAAKzuE,KACb,GAAK82sB,GAAU92sB,IAEf,MAAMi+sB,GAA2BC,EAAel+sB,GAAhB,IAHrB,EAIXvwB,MAAIuwB,KAAqB,IAAXA,IACrB,CACD,SAASqltB,GAAkBpxjB,GAAUhhL,GAAO+qB,GAAUkgtB,IAClD,MAAMoH,GAAWryuB,GAAMqyuB,SACvB,IAAKA,IAAgC,IAApBA,GAAS52uB,OACtB,SAAOo6L,OAAG,GACd,MAAMy8iB,GAAsBD,GAAS71uB,IAAIy1uB,KACrC,MAAMv7K,GAAQ24K,GAA2B4C,GAAgBjxjB,IAIzD,OAAOm+iB,GA9Lf,SAASoT,GAAW77K,IAChB,OAAOA,IAAShriB,GAAWgriB,GAAM27K,SACpC,CAyLwBE,CAAW77K,IACxBA,GAAM27K,SAASryuB,GAAO+qB,IACtBi2J,GAASqgY,aAAa,IAAMqV,GAAM12jB,GAAO+qB,KACpB,GAE7B,SAAO8qK,MAAGy8iB,IACL1xuB,KAAKsvuB,KAAyBiC,KACtC;;;;;;;OASD,MAAMK,GAAY,CACdzwsB,SAAS,EACT0wsB,iBAAkB,GAClBC,kBAAmB,GACnBn9M,WAAY,GACZo9M,wBAAyB,IAE7B,SAASC,GAAgBhU,GAAc5+tB,GAAO+qB,GAAUi2J,GAAUiqjB,IAC9D,MAAMl+sB,GAASiB,GAAM4wsB,GAAc5+tB,GAAO+qB,IAC1C,OAAKgC,GAAOgV,QAMLqwsB,GADPpxjB,GAAWqsjB,GAAiCrtuB,GAAOghL,IAChBhhL,GAAO+qB,IACrCnqB,QAAKpE,MAAKw2N,KAAY,IAANA,GAAajmM,GAAS,IAAKyltB,OADzC,EALI38iB,MAAG9oK,GAOjB,CACD,SAASiB,GAAM4wsB,GAAc5+tB,GAAO+qB,IAChC,GAAmB,KAAf/qB,GAAM4qB,KACN,MAAwB,SAApB5qB,GAAM6+tB,YAAyBD,GAAa1tgB,eAAiBnmM,GAAStvB,OAAS,GACxE,IAAK+2uB,IAET,CACHzwsB,SAAS,EACT0wsB,iBAAkB,GAClBC,kBAAmB3ntB,GACnBwqgB,WAAY,GACZo9M,wBAAyB,IAIjC,MAAMlxZ,IADUzhV,GAAMiyN,SAAW0sgB,IACb5zsB,GAAU6zsB,GAAc5+tB,IAC5C,IAAKyhV,GACD,MAAO,IAAK+wZ,IAChB,MAAM1T,GAAY,GAClBlztB,GAAQ61U,GAAIq9Y,UAAW,CAAC9rgB,GAAGne,MACvBiqhB,GAAUjqhB,IAAKme,GAAEpoM,OAErB,MAAM2qgB,GAAa9zM,GAAIs9Y,SAAStjuB,OAAS,EACrC,IAAKqjuB,MAAcr9Y,GAAIs9Y,SAASt9Y,GAAIs9Y,SAAStjuB,OAAS,GAAG85hB,YACzDupM,GACJ,MAAO,CACH/8rB,SAAS,EACT0wsB,iBAAkBhxZ,GAAIs9Y,SACtB2T,kBAAmB3ntB,GAASluB,MAAM4kV,GAAIs9Y,SAAStjuB,QAE/C85hB,cACAo9M,wBAAyBlxZ,GAAIq9Y,WAAa,GAEjD,CACD,SAAS5huB,GAAM0huB,GAAc6T,GAAkBI,GAAgB33uB,GAAQ43uB,GAAyB,aAC5F,GAAID,GAAep3uB,OAAS,GAsDhC,SAASs3uB,GAAyCnU,GAAciU,GAAgBlF,IAC5E,OAAOA,GAAOh3pB,KAAKjxC,IAAKstsB,GAAepU,GAAciU,GAAgBntsB,KAAM+nsB,GAAU/nsB,MAAO64rB,GAC/F,CAvDOwU,CAAyCnU,GAAciU,GAAgB33uB,IAAS,CAChF,MAAMijC,GAAI,IAAIwisB,GAAgB8R,GAqCtC,SAASQ,GAA4BrU,GAAc6T,GAAkB9E,GAAQuF,IACzE,MAAMzxZ,GAAM,GACZA,GAAI88Y,IAAkB2U,GACtBA,GAAeC,eAAiBvU,GAChCsU,GAAeE,mBAAqBX,GAAiBh3uB,OACrD,UAAWiqC,MAAKiosB,GACZ,GAAe,KAAXjosB,GAAE9a,MAAe6itB,GAAU/nsB,MAAO64rB,GAAgB,CAClD,MAAMpgsB,GAAI,IAAIwisB,GAAgB,GAAI,IAClCxisB,GAAEg1sB,eAAiBvU,GACnBzgsB,GAAEi1sB,mBAAqBX,GAAiBh3uB,OACxCgmV,GAAIgsZ,GAAU/nsB,KAAMvH,EACvB,CAEL,OAAOsjT,EACV,CAnDuDwxZ,CAA4BrU,GAAc6T,GAAkBv3uB,GAAQ,IAAIyluB,GAAgBkS,GAAgBjU,GAAa9+rB,YACrK3B,UAAEg1sB,eAAiBvU,GACnBzgsB,GAAEi1sB,mBAAqBX,GAAiBh3uB,OACjC,CAAEmjuB,aAAczgsB,GAAG00sB,eAAgB,GAC7C,CACD,GAA8B,IAA1BA,GAAep3uB,QAkDvB,SAAS43uB,GAAyBzU,GAAciU,GAAgBlF,IAC5D,OAAOA,GAAOh3pB,KAAKjxC,IAAKstsB,GAAepU,GAAciU,GAAgBntsB,IACxE,CAnDO2tsB,CAAyBzU,GAAciU,GAAgB33uB,IAAS,CAChE,MAAMijC,GAAI,IAAIwisB,GAAgB/B,GAAa7zsB,SAUnD,SAASuotB,GAAgC1U,GAAc6T,GAAkBI,GAAgBlF,GAAQ7tsB,GAAUgzsB,IACvG,MAAMrxZ,GAAM,GACZ,UAAW/7S,MAAKiosB,GACZ,GAAIqF,GAAepU,GAAciU,GAAgBntsB,MAAO5F,GAAS2tsB,GAAU/nsB,KAAK,CAC5E,MAAMvH,GAAI,IAAIwisB,GAAgB,GAAI,IAClCxisB,GAAEg1sB,eAAiBvU,GAEfzgsB,GAAEi1sB,mBADyB,WAA3BN,GACuBlU,GAAa7zsB,SAAStvB,OAMtBg3uB,GAAiBh3uB,OAE5CgmV,GAAIgsZ,GAAU/nsB,KAAMvH,EACvB,CAEL,MAAO,IAAK2B,MAAa2hT,GAC5B,CA7B4D6xZ,CAAgC1U,GAAc6T,GAAkBI,GAAgB33uB,GAAQ0juB,GAAa9+rB,SAAUgzsB,KACpK30sB,UAAEg1sB,eAAiBvU,GACnBzgsB,GAAEi1sB,mBAAqBX,GAAiBh3uB,OACjC,CAAEmjuB,aAAczgsB,GAAG00sB,kBAC7B,CACD,MAAM10sB,GAAI,IAAIwisB,GAAgB/B,GAAa7zsB,SAAU6zsB,GAAa9+rB,UAClE3B,UAAEg1sB,eAAiBvU,GACnBzgsB,GAAEi1sB,mBAAqBX,GAAiBh3uB,OACjC,CAAEmjuB,aAAczgsB,GAAG00sB,kBAC7B,CA0CD,SAASG,GAAepU,GAAciU,GAAgBntsB,IAClD,SAAKk5rB,GAAa1tgB,eAAiB2hhB,GAAep3uB,OAAS,IAAsB,SAAhBiqC,GAAEm5rB,YAGjD,KAAXn5rB,GAAE9a,IACZ,CAMD,SAAS2otB,GAAiBvzuB,GAAOwzuB,GAAYzotB,GAAU07sB,IAYnD,SAAIgH,GAAUztuB,MAAWymuB,IACpBA,KAAWlI,IAAmByU,GAAeQ,GAAYzotB,GAAU/qB,OAGrD,OAAfA,GAAM4qB,MAGHoD,GAAMwltB,GAAYxzuB,GAAO+qB,IAAUgX,QAC7C,CACD,SAAS0xsB,GAAiB7U,GAAc7zsB,GAAU07sB,IAC9C,OAA2B,IAApB17sB,GAAStvB,SAAiBmjuB,GAAa9+rB,SAAS2msB,GAC1D;;;;;;;OASD,MAAMiN,IAAoD70H,EAC1D,MAAM80H,GACF14uB,YAAY2juB,IACRzjuB,KAAKyjuB,aAAeA,IAAgB,IACvC,EAEL,MAAMgV,GACF34uB,YAAY8ouB,IACR5ouB,KAAK4ouB,QAAUA,EAClB,EAEL,SAASoC,GAAQvH,IACb,SAAO7+H,MAAW,IAAI4zI,GAAU/U,IACnC,CACD,SAASiV,GAAiBC,IACtB,SAAO/zI,MAAW,IAAI6zI,GAAiBE,IAC1C,CAiBD,MAAMC,GACF94uB,YAAY+lL,GAAUgzjB,GAAc/I,GAAelH,GAAS7ouB,IACxDC,KAAK6lL,SAAWA,GAChB7lL,KAAK64uB,aAAeA,GACpB74uB,KAAK8vuB,cAAgBA,GACrB9vuB,KAAK4ouB,QAAUA,GACf5ouB,KAAKD,OAASA,GACdC,KAAK84uB,gBAAiB,CACzB,CACD3ktB,QACI,MAAM4ktB,GAAah3uB,GAAM/B,KAAK4ouB,QAAQjkqB,KAAM,GAAI,GAAI3kE,KAAKD,QAAQ0juB,aAO3DuV,GAAmB,IAAIxT,GAAgBuT,GAAWnptB,SAAUmptB,GAAWp0sB,UAK7E,OAJkB3kC,KAAKi5uB,mBAAmBj5uB,KAAK6lL,SAAU7lL,KAAKD,OAAQi5uB,GAAkB5V,IAC5D39tB,QAAKpE,MAAK23uB,IAC3Bh5uB,KAAK2ouB,cAAcL,GAAmB0Q,IAAmBh5uB,KAAK4ouB,QAAQ54H,YAAahwmB,KAAK4ouB,QAAQ7pe,YAE1Ft5P,QAAKu9N,MAAYv+M,KAC9B,GAAIA,cAAag0tB,GAGb,YAAKK,gBAAiB,EAEf94uB,KAAK6yB,MAAMpO,GAAEmktB,SAExB,MAAInktB,cAAa+ztB,GACPx4uB,KAAKk5uB,aAAaz0tB,IAEtBA,KAEb,CACDoO,MAAMuzT,IAKF,OAJkBpmV,KAAKi5uB,mBAAmBj5uB,KAAK6lL,SAAU7lL,KAAKD,OAAQqmV,GAAKzhR,KAAMy+pB,IACvD39tB,QAAKpE,MAAK23uB,IACzBh5uB,KAAK2ouB,cAAcL,GAAmB0Q,IAAmB5yZ,GAAK4pR,YAAa5pR,GAAKrnF,YAE5Et5P,QAAKu9N,MAAYv+M,KAC5B,MAAIA,cAAa+ztB,GACPx4uB,KAAKk5uB,aAAaz0tB,IAEtBA,KAEb,CACDy0tB,aAAaz0tB,IACT,OAAO,IAAIg/lB,MAAc,KAAsC80H,GAClE,CACD5P,cAAcN,GAAer4H,GAAajxW,IACtC,MAAMp6L,GAAOyjqB,GAAWC,IACxB,OAAO,IAAIjD,GAAQzgqB,GAAMqriB,GAAajxW,GACzC,CACDk6e,mBAAmBpzjB,GAAU2sjB,GAAQ/O,GAAc6H,IAC/C,OAAqC,IAAjC7H,GAAa7zsB,SAAStvB,QAAgBmjuB,GAAa1tgB,cAC5C/1N,KAAKg8Y,eAAen2N,GAAU2sjB,GAAQ/O,IACxCh+tB,QAAKpE,MAAKsjC,IAAa,IAAI6gsB,GAAgB,GAAI7gsB,MAEjD3kC,KAAKm5uB,cAActzjB,GAAU49iB,GAAc+O,GAAQ/O,GAAa7zsB,SAAU07sB,IAAQ,EAC5F,CAEDtvV,eAAen2N,GAAU2sjB,GAAQ/O,IAG7B,MAAM2V,GAAe,GACrB,UAAWzysB,MAAStnB,OAAOsa,KAAK8psB,GAAa9+rB,UAC3B,YAAVgC,GACAyysB,GAAat1qB,QAAQn9B,IAGrByysB,GAAap9tB,KAAK2qB,IAG1B,SAAOnhC,KAAK4zuB,IACP3zuB,QAAK8nP,MAAUo5e,KAChB,MAAMhgsB,GAAQ88rB,GAAa9+rB,SAASgisB,IAI9B0S,GAAe9G,GAAsBC,GAAQ7L,IACnD,OAAO3muB,KAAKi5uB,mBAAmBpzjB,GAAUwzjB,GAAc1ysB,GAAOggsB,IACzDlhuB,QAAKpE,MAAI2hC,MAAQ+gC,QAAS/gC,GAAGsosB,OAAQ3E,MADnC,IANQ,EAQf/riB,MAAK,CAACj2J,GAAU20sB,MAChB30sB,GAAS20sB,GAAchO,QAAUgO,GAAcv1qB,QACxCp/B,IACR,IAAK40sB,KACX,CACDJ,cAActzjB,GAAU49iB,GAAc+O,GAAQ5itB,GAAU07sB,GAAQwN,IAC5D,SAAOtzuB,KAAKgtuB,IAAQ/suB,QAAK8nP,MAAUhjN,IACbvqC,KAAKw5uB,0BAA0B3zjB,GAAU49iB,GAAc+O,GAAQjosB,GAAG3a,GAAU07sB,GAAQwN,IACrFrzuB,QAAKu9N,MAAYv+M,KAC9B,GAAIA,cAAa+ztB,GACb,SAAO99iB,MAAG,MAEd,MAAMj2K,OAEV1O,GAAOitB,MAAQA,KAAV,EAAcggM,MAAW,CAACv+M,GAAG06J,MAClC,GAAI01jB,GAAapwtB,IACb,OAAI6ztB,GAAiB7U,GAAc7zsB,GAAU07sB,KAAzB,EACT5wiB,MAAG,IAAI8qiB,GAAgB,GAAI,KAE/BwF,GAAQvH,IAEnB,MAAMh/sB,KAEb,CACD+0tB,0BAA0B3zjB,GAAU49iB,GAAc+O,GAAQ3tuB,GAAOy1E,GAAOgxpB,GAAQwN,IAC5E,OAAKV,GAAiBvzuB,GAAO4+tB,GAAcnppB,GAAOgxpB,SAGzBv2tB,IAArBlQ,GAAMmruB,WACChwuB,KAAKy5uB,yBAAyB5zjB,GAAU49iB,GAAc5+tB,GAAOy1E,GAAOgxpB,IAE3EwN,IAAkB94uB,KAAK84uB,eAChB94uB,KAAK05uB,uCAAuC7zjB,GAAU49iB,GAAc+O,GAAQ3tuB,GAAOy1E,GAAOgxpB,IAE9FN,GAAQvH,IARJuH,GAAQvH,GAStB,CACDiW,uCAAuC7zjB,GAAU49iB,GAAc+O,GAAQ3tuB,GAAO+qB,GAAU07sB,IACpF,MAAmB,OAAfzmuB,GAAM4qB,KACCzvB,KAAK25uB,kDAAkD9zjB,GAAU2sjB,GAAQ3tuB,GAAOymuB,IAEpFtruB,KAAK45uB,8CAA8C/zjB,GAAU49iB,GAAc+O,GAAQ3tuB,GAAO+qB,GAAU07sB,GAC9G,CACDqO,kDAAkD9zjB,GAAU2sjB,GAAQ3tuB,GAAOymuB,IACvE,MAAMqN,GAAU34uB,KAAK65uB,sBAAsB,GAAIh1uB,GAAMmruB,WAAY,IACjE,OAAInruB,GAAMmruB,WAAWvniB,WAAW,KACrBiwiB,GAAiBC,IAErB34uB,KAAK85uB,mBAAmBj1uB,GAAO8zuB,IAASlzuB,QAAKC,MAAUq0uB,KAC1D,MAAMjtsB,GAAQ,IAAI04rB,GAAgBuU,GAAa,IAC/C,OAAO/5uB,KAAKm5uB,cAActzjB,GAAU/4I,GAAO0lsB,GAAQuH,GAAazO,IAAQ,EAAjE,GAEd,CACDsO,8CAA8C/zjB,GAAU49iB,GAAc+O,GAAQ3tuB,GAAO+qB,GAAU07sB,IAC3F,MAAQ1ksB,WAAS0wsB,oBAAkBC,qBAAmBC,4BAA4B3ktB,GAAM4wsB,GAAc5+tB,GAAO+qB,IAC7G,IAAKgX,GACD,OAAOoksB,GAAQvH,IACnB,MAAMkV,GAAU34uB,KAAK65uB,sBAAsBvC,GAAkBzyuB,GAAMmruB,WAAYwH,IAC/E,OAAI3yuB,GAAMmruB,WAAWvniB,WAAW,KACrBiwiB,GAAiBC,IAErB34uB,KAAK85uB,mBAAmBj1uB,GAAO8zuB,IAASlzuB,QAAKC,MAAUq0uB,IACnD/5uB,KAAKm5uB,cAActzjB,GAAU49iB,GAAc+O,GAAQuH,GAAYj0tB,OAAOyxtB,IAAoBjM,IAAQ,IAEhH,CACDmO,yBAAyB5zjB,GAAUm0jB,GAAiBn1uB,GAAO+qB,GAAU07sB,IACjE,MAAmB,OAAfzmuB,GAAM4qB,MAENo2J,GAAWqsjB,GAAiCrtuB,GAAOghL,IAC/ChhL,GAAMy0e,cACUz0e,GAAMo1uB,iBAClBv/iB,MAAG,CAAE83iB,OAAQ3tuB,GAAMo1uB,cAAep0jB,SAAUhhL,GAAM8tuB,kBAClD3yuB,KAAK64uB,aAAav/P,aAAazzT,GAAUhhL,KAC9BY,QAAKpE,MAAK64uB,KACrBr1uB,GAAMo1uB,cAAgBC,GAAI1H,OAC1B3tuB,GAAM8tuB,gBAAkBuH,GAAIr0jB,SACrB,IAAI2/iB,GAAgB51sB,GAAU,QAHlC,EAMJ8qK,MAAG,IAAI8qiB,GAAgB51sB,GAAU,MAErC6ntB,GAAgBuC,GAAiBn1uB,GAAO+qB,GAAUi2J,GAAU7lL,KAAK8vuB,eACnErquB,QAAK2oN,MAAU,EAAGxnL,WAAS0wsB,oBAAkBC,wBACzC3wsB,IAGLi/I,GAAWhhL,GAAMg2qB,WAAah1f,GACT7lL,KAAKm6uB,eAAet0jB,GAAUhhL,GAAO+qB,IACtCnqB,QAAKC,MAAU00uB,KAC/B,MAAMC,GAAgBD,GAAav0jB,UAAYA,GACzC01Z,GAAc6+J,GAAa5H,QACzB/O,aAAc6W,GAAmB5C,mBAAmB31uB,GAAMi4uB,GAAiB1C,GAAkBC,GAAmBh8J,IAElHkoJ,GAAe,IAAI+B,GAAgB8U,GAAkB1qtB,SAAU0qtB,GAAkB31sB,UACvF,GAA8B,IAA1B+ysB,GAAep3uB,QAAgBmjuB,GAAa1tgB,cAE5C,OADkB/1N,KAAKg8Y,eAAeq+V,GAAe9+J,GAAakoJ,IACjDh+tB,QAAKpE,MAAKsjC,IAAa,IAAI6gsB,GAAgB8R,GAAkB3ysB,MAElF,GAA2B,IAAvB42iB,GAAYj7kB,QAA0C,IAA1Bo3uB,GAAep3uB,OAC3C,SAAOo6L,MAAG,IAAI8qiB,GAAgB8R,GAAkB,KAEpD,MAAMiD,GAAkBjI,GAAUztuB,MAAWymuB,GAE7C,OADkBtruB,KAAKm5uB,cAAckB,GAAe5W,GAAcloJ,GAAam8J,GAAgB6C,GAAkBnX,GAAiBkI,IAAQ,GACzH7luB,QAAKpE,MAAKm5uB,IAAO,IAAIhV,GAAgB8R,GAAiBxxtB,OAAO00tB,GAAG5qtB,UAAW4qtB,GAAG71sB,WAAxF,KAnBAqmsB,GAAQgP,KAsB1B,CACDG,eAAet0jB,GAAUhhL,GAAO+qB,IAC5B,OAAI/qB,GAAM8/B,YAEC+1J,MAAG,CAAE83iB,OAAQ3tuB,GAAM8/B,SAAUkhJ,cAEpChhL,GAAMy0e,kBAEsBvke,IAAxBlQ,GAAMo1uB,eAAkBlluB,EACjB2lL,MAAG,CAAE83iB,OAAQ3tuB,GAAMo1uB,cAAep0jB,SAAUhhL,GAAM8tuB,kBAEtDgE,GAAiB9wjB,GAAUhhL,GAAO+qB,GAAU5vB,KAAK8vuB,eACnDrquB,QAAKC,MAAU+0uB,IACZA,GACOz6uB,KAAK64uB,aAAav/P,aAAazzT,GAAUhhL,IAC3CY,QAAK46F,MAAK65oB,KACXr1uB,GAAMo1uB,cAAgBC,GAAI1H,OAC1B3tuB,GAAM8tuB,gBAAkBuH,GAAIr0jB,YA1NpD,SAAS60jB,GAAa71uB,IAClB,SAAO+/lB,MAAWsrI,GAAyBqI,GACuD,GACrG,CA0NsBmC,MATJ,EAYJhgjB,MAAG,CAAE83iB,OAAQ,GAAI3sjB,aAC3B,CACDi0jB,mBAAmBj1uB,GAAO+juB,IACtB,IAAItiZ,GAAM,GACN/kV,GAAIqnuB,GAAQjkqB,KAChB,OAAa,CAET,GADA2hR,GAAMA,GAAIxgU,OAAOvkB,GAAEquB,UACQ,IAAvBruB,GAAEkjuB,iBACF,SAAO/piB,MAAG4rJ,IAEd,GAAI/kV,GAAEkjuB,iBAAmB,IAAMljuB,GAAEojC,SAASy+rB,IACtC,OAA4Bv+tB,GAAMmruB,YA9O9C,EAAOprI,MAAW,IAAI6e,MAAc,IAAmD80H,KAgP/Eh3uB,GAAIA,GAAEojC,SAASy+rB,GAClB,CACJ,CACDyW,sBAAsBjqtB,GAAUogtB,GAAYrM,IACxC,OAAO3juB,KAAK26uB,2BAA2B3K,GAAYhwuB,KAAK8vuB,cAAc5tuB,MAAM8tuB,IAAapgtB,GAAU+zsB,GACtG,CACDgX,2BAA2B3K,GAAYpH,GAASh5sB,GAAU+zsB,IACtD,MAAM2G,GAAUtquB,KAAK46uB,mBAAmB5K,GAAYpH,GAAQjkqB,KAAM/0C,GAAU+zsB,IAC5E,OAAO,IAAIyB,GAAQkF,GAAStquB,KAAK66uB,kBAAkBjS,GAAQ54H,YAAahwmB,KAAK4ouB,QAAQ54H,aAAc44H,GAAQ7pe,SAC9G,CACD87e,kBAAkBC,GAAkBC,IAChC,MAAMz0Z,GAAM,GACZ71U,UAAQqquB,GAAkB,CAACjjhB,GAAGne,MAE1B,GADqC,iBAANme,IAAkBA,GAAEpvB,WAAW,KACzC,CACjB,MAAMuyiB,GAAanjhB,GAAE3lL,UAAU,GAC/Bo0S,GAAI5sI,IAAKqhiB,GAAaC,GACzB,MAEG10Z,GAAI5sI,IAAKme,KAGVyuH,EACV,CACDs0Z,mBAAmB5K,GAAYljsB,GAAOld,GAAU+zsB,IAC5C,MAAMsX,GAAkBj7uB,KAAKw/E,eAAewwpB,GAAYljsB,GAAMld,SAAUA,GAAU+zsB,IAClF,IAAIh/rB,GAAW,GACfl0B,UAAQq8B,GAAMnI,SAAU,CAACgC,GAAOl/B,MAC5Bk9B,GAASl9B,IAAQzH,KAAK46uB,mBAAmB5K,GAAYrpsB,GAAO/W,GAAU+zsB,GAArD,GAEd,IAAI6B,GAAgByV,GAAiBt2sB,GAC/C,CACD66C,eAAewwpB,GAAYkL,GAAoBC,GAAgBxX,IAC3D,OAAOuX,GAAmB75uB,IAAI2hC,IAAKA,GAAEvT,KAAKg5K,WAAW,KAAOzoM,KAAKo7uB,aAAapL,GAAYhtsB,GAAG2gsB,IACzF3juB,KAAKq7uB,aAAar4sB,GAAGm4sB,IAC5B,CACDC,aAAapL,GAAYsL,GAAsB3X,IAC3C,MAAMp9rB,GAAMo9rB,GAAU2X,GAAqB7rtB,KAAKyiB,UAAU,IAC1D,IAAK3L,GACD,MAAM,IAAIk9kB,MAAc,KAA8C80H,IAE1E,OAAOhysB,EACV,CACD80sB,aAAaC,GAAsBH,IAC/B,IAAIr6uB,GAAM,EACV,UAAWkiC,MAAKm4sB,GAAgB,CAC5B,GAAIn4sB,GAAEvT,OAAS6rtB,GAAqB7rtB,KAChC0rtB,UAAet0rB,OAAO/lD,IACfkiC,GAEXliC,IACH,CACD,OAAOw6uB,EACV;;;;;;;OAUL,SAASC,GAAetiF,GAAqB4/E,GAAc/I,GAAe/vuB,IACtE,SAAOquN,MAAUrwM,IApSrB,SAASy9tB,GAAiB31jB,GAAUgzjB,GAAc/I,GAAelH,GAAS7ouB,IACtE,OAAO,IAAI64uB,GAAe/yjB,GAAUgzjB,GAAc/I,GAAelH,GAAS7ouB,IAAQo0B,OACrF,CAkSyBqntB,CAAiBviF,GAAqB4/E,GAAc/I,GAAe/xtB,GAAE09tB,aAAc17uB,IACpG0F,QAAKpE,MAAIwquB,SAA2B9ttB,GAAG8ttB,yBAC/C;;;;;;;OAUD,MAAM6P,IAMN,SAASC,GAAY91jB,GAAU+1jB,GAAmB77uB,GAAQ6ouB,GAAS7kuB,GAAK+ruB,GAAezB,GAA4B,YAAasJ,GAAyB,UACrJ,OAAO,IAAIziM,GAAWrvX,GAAU+1jB,GAAmB77uB,GAAQ6ouB,GAAS7kuB,GAAKsquB,GAA2BsJ,GAAwB7H,IACvHt/L,YACA/qiB,QAAK2oN,MAAUx8L,IACD,OAAXA,GARZ,SAASiqtB,GAAmBp3tB,IAExB,OAAO,IAAIigE,KAAYmwU,IAAQA,GAAIl5X,MAAMlX,IAC5C,CAMkBo3tB,CAAmB,IAAIH,KAAL,EAGlBhhjB,MAAG9oK,KAGrB,CACD,MAAMsjhB,GACFp1iB,YAAY+lL,GAAU+1jB,GAAmB77uB,GAAQ6ouB,GAAS7kuB,GAAKsquB,GAA2BsJ,GAAwB7H,IAC9G9vuB,KAAK6lL,SAAWA,GAChB7lL,KAAK47uB,kBAAoBA,GACzB57uB,KAAKD,OAASA,GACdC,KAAK4ouB,QAAUA,GACf5ouB,KAAK+D,IAAMA,GACX/D,KAAKquuB,0BAA4BA,GACjCruuB,KAAK23uB,uBAAyBA,GAC9B33uB,KAAK8vuB,cAAgBA,EACxB,CACDt/L,YACI,MAAMwoM,GAAmBj3uB,GAAM/B,KAAK4ouB,QAAQjkqB,KAAM,GAAI,GAAI3kE,KAAKD,OAAOuV,OAAO/T,SAAsBwT,IAAjBxT,GAAEyuuB,YAA2BhwuB,KAAK23uB,wBAC/GlU,aACL,OAAOzjuB,KAAK87uB,oBAAoB97uB,KAAK6lL,SAAU7lL,KAAKD,OAAQi5uB,GAAkB5V,IACzE39tB,QAAKpE,MAAIsjC,KACV,GAAiB,OAAbA,GACA,OAAO,KAIX,MAAMggC,GAAO,IAAI6oqB,GAAuB,GAAInutB,OAAOqtI,OAAO,IAAKrtI,OAAOqtI,OAAO,IAAK1sJ,KAAK4ouB,QAAQ54H,cAAgBhwmB,KAAK4ouB,QAAQ7pe,SAAU,GAAIqke,GAAgBpjuB,KAAK47uB,kBAAmB,KAAM57uB,KAAK4ouB,QAAQjkqB,MAAM,EAAI,IACzMolK,GAAW,IAAIkjgB,GAAStoqB,GAAMhgC,IAC9Bo3sB,GAAa,IAAItO,GAAoBztuB,KAAK+D,IAAKgmO,IACrD,YAAKiygB,qBAAqBD,GAAW/rpB,OAC9B+rpB,KAEd,CACDC,qBAAqBC,IACjB,MAAMp3uB,GAAQo3uB,GAAU/zuB,MAClBsN,GAAI44tB,GAA2BvpuB,GAAO7E,KAAKquuB,2BACjDxpuB,GAAM0jX,OAASlpW,OAAOqtI,OAAOl3I,GAAE+yW,QAC/B1jX,GAAM0a,KAAOF,OAAOqtI,OAAOl3I,GAAE+J,MAC7B08tB,GAAUt3sB,SAASl0B,QAAQqqN,IAAK96N,KAAKg8uB,qBAAqBlhhB,IAC7D,CACDghhB,oBAAoBj2jB,GAAU9lL,GAAQ0juB,GAAc6H,IAChD,OAAqC,IAAjC7H,GAAa7zsB,SAAStvB,QAAgBmjuB,GAAa1tgB,cAC5C/1N,KAAKqpuB,gBAAgBxjjB,GAAU9lL,GAAQ0juB,IAE3CzjuB,KAAKk8uB,eAAer2jB,GAAU9lL,GAAQ0juB,GAAcA,GAAa7zsB,SAAU07sB,GACrF,CASDjC,gBAAgBxjjB,GAAU9lL,GAAQ0juB,IAC9B,SAAOj+tB,KAAK6Z,OAAOsa,KAAK8psB,GAAa9+rB,WAChCl/B,QAAK8nP,MAAUo5e,KAChB,MAAMhgsB,GAAQ88rB,GAAa9+rB,SAASgisB,IAI9B8L,GAAeF,GAAsBxyuB,GAAQ4muB,IACnD,OAAO3muB,KAAK87uB,oBAAoBj2jB,GAAU4sjB,GAAc9rsB,GAAOggsB,GAAxD,IANQ,EAOf/riB,MAAK,CAACj2J,GAAUw3sB,KACXx3sB,IAAaw3sB,IAElBx3sB,GAAS3oB,QAAQmguB,IACVx3sB,IAFI,OAFP,EAKJk2J,MAAUl2J,IAAyB,OAAbA,IAAoBo+rB,GAAe,MAAOwW,MAAM,EAAIl4uB,MAAIsjC,KAC9E,GAAiB,OAAbA,GACA,OAAO,KAIX,MAAMy3sB,GAAiBC,GAAsB13sB,IAC7C,OAoGZ,SAAS23sB,GAA4BhzpB,IACjCA,GAAM1nD,KAAK,CAACzE,GAAGpF,KACPoF,GAAEj1B,MAAMojuB,SAAWlI,IACZ,EACPrrsB,GAAE7vB,MAAMojuB,SAAWlI,GACZ,EACJjmsB,GAAEj1B,MAAMojuB,OAAOhkN,cAAcvvf,GAAE7vB,MAAMojuB,QAEnD,CAvGWgR,CAA4BF,IACrBA,KAEd,CACDF,eAAer2jB,GAAU2sjB,GAAQ/O,GAAc7zsB,GAAU07sB,IACrD,SAAO9luB,KAAKgtuB,IAAQ/suB,QAAK8nP,MAAUhjN,IACxBvqC,KAAKu8uB,2BAA2BhysB,GAAEswoB,WAAah1f,GAAUt7I,GAAGk5rB,GAAc7zsB,GAAU07sB,KAC3Fv1tB,GAAOsS,MAAQA,KAAV,EAAc26M,MAAWv+M,KAC9B,GAAIowtB,GAAapwtB,IACb,OAAI6ztB,GAAiB7U,GAAc7zsB,GAAU07sB,KAAzB,EACT5wiB,MAAG,KAAD,EAENA,MAAG,MAEd,MAAMj2K,KAEb,CACD83tB,2BAA2B12jB,GAAUhhL,GAAOwzuB,GAAYzotB,GAAU07sB,IAC9D,GAAIzmuB,GAAMmruB,aAAeoI,GAAiBvzuB,GAAOwzuB,GAAYzotB,GAAU07sB,IACnE,SAAO5wiB,MAAG,MACd,IAAI8hjB,GACJ,GAAmB,OAAf33uB,GAAM4qB,KAAe,CACrB,MAAM84V,GAAS34V,GAAStvB,OAAS,EAAI0V,GAAK4Z,IAAUwqgB,WAAa,GAC3DqiN,GAAiBC,GAAkBrE,IAAczotB,GAAStvB,OAC1DmpuB,GAAW,IAAI+D,GAAuB59sB,GAAU24V,GAAQlpW,OAAOqtI,OAAO,IAAK1sJ,KAAK4ouB,QAAQ54H,cAAgBhwmB,KAAK4ouB,QAAQ7pe,SAAUwqC,GAAQ1kS,IAAQytuB,GAAUztuB,IAAQA,GAAMg8K,WAAah8K,GAAM83uB,kBAAoB,KAAM93uB,GAAO+3uB,GAAsBvE,IAAaoE,GAAgBI,GAAWh4uB,IAK3R43uB,IACJD,MAAc9hjB,MAAG,CACb+uiB,YACA6N,iBAAkB,GAClBC,kBAAmB,IAE1B,MAEGiF,GACI/E,GAAgBY,GAAYxzuB,GAAO+qB,GAAUi2J,GAAU7lL,KAAK8vuB,eACvDrquB,QAAKpE,MAAI,EAAGulC,WAAS0wsB,oBAAkBC,qBAAmBn9M,kBAC3D,IAAKxzf,GACD,OAAO,KAEX,MAAM61sB,GAAiBC,GAAkBrE,IAAcf,GAAiBh3uB,OAIxE,MAAO,CAAEmpuB,SAHQ,IAAI+D,GAAuB8J,GAAkBl9M,GAAY/6gB,OAAOqtI,OAAO,IAAK1sJ,KAAK4ouB,QAAQ54H,cAAgBhwmB,KAAK4ouB,QAAQ7pe,SAAUwqC,GAAQ1kS,IAAQytuB,GAAUztuB,IAAQA,GAAMg8K,WAAah8K,GAAM83uB,kBAAoB,KAAM93uB,GAAO+3uB,GAAsBvE,IAAaoE,GAAgBI,GAAWh4uB,IAEvS43uB,IACenF,oBAAkBC,qBAA9B,IAGnB,OAAOiF,GAAY/2uB,QAAK2oN,MAAWx8L,KAC/B,GAAe,OAAXA,GACA,SAAO8oK,MAAG,MAEd,MAAQ+uiB,YAAU6N,oBAAkBC,sBAAsB3ltB,GAE1Di0J,GAAWhhL,GAAMg2qB,WAAah1f,GAC9B,MAAMw0jB,GAAgBx1uB,GAAM8tuB,iBAAmB9sjB,GACzC01Z,GA8ClB,SAAS4+J,GAAet1uB,IACpB,OAAIA,GAAM8/B,SACC9/B,GAAM8/B,SAEb9/B,GAAMy0e,aACCz0e,GAAMo1uB,cAEV,EACV,CAtD+BE,CAAet1uB,KAC3B4+tB,gBAAciU,mBAAmB31uB,GAAMs2uB,GAAYf,GAAkBC,GAI7Eh8J,GAAYjmkB,OAAO/T,SAAsBwT,IAAjBxT,GAAEyuuB,YAA2BhwuB,KAAK23uB,wBAC1D,GAA8B,IAA1BD,GAAep3uB,QAAgBmjuB,GAAa1tgB,cAC5C,OAAO/1N,KAAKqpuB,gBAAgBgR,GAAe9+J,GAAakoJ,IAAch+tB,QAAKpE,MAAIsjC,IAC1D,OAAbA,GACO,KAEJ,CAAC,IAAIsosB,GAASxD,GAAU9ksB,OAGvC,GAA2B,IAAvB42iB,GAAYj7kB,QAA0C,IAA1Bo3uB,GAAep3uB,OAC3C,SAAOo6L,MAAG,CAAC,IAAIuyiB,GAASxD,GAAU,MAEtC,MAAM8Q,GAAkBjI,GAAUztuB,MAAWymuB,GAS7C,OAAOtruB,KACFk8uB,eAAe7B,GAAe9+J,GAAakoJ,GAAciU,GAAgB6C,GAAkBnX,GAAiBkI,IAC5G7luB,QAAKpE,MAAIsjC,IACO,OAAbA,GACO,KAEJ,CAAC,IAAIsosB,GAASxD,GAAU9ksB,MAN5B,GASd,EAoBL,SAASm4sB,GAAmB7zuB,IACxB,MAAMlJ,GAASkJ,GAAKf,MAAMukuB,YAC1B,OAAO1suB,IAA0B,KAAhBA,GAAO0vB,WAAqC1a,IAAtBhV,GAAOiwuB,UACjD,CAMD,SAASqM,GAAsB/ypB,IAC3B,MAAM13D,GAAS,GAETmrtB,GAAc,IAAIzhtB,IACxB,UAAWryB,MAAQqgF,GAAO,CACtB,IAAKwzpB,GAAmB7zuB,IAAO,CAC3B2oB,GAAO5V,KAAK/S,IACZ,QACH,CACD,MAAM+zuB,GAAyBprtB,GAAOvM,KAAK43tB,IAAch0uB,GAAKf,MAAMukuB,cAAgBwQ,GAAW/0uB,MAAMukuB,kBACtE13tB,IAA3BiouB,IACAA,GAAuBr4sB,SAAS3oB,QAAQ/S,GAAK07B,UAC7Co4sB,GAAY/wuB,IAAIgxuB,KAGhBprtB,GAAO5V,KAAK/S,GAEnB,CAKD,UAAWi0uB,MAAcH,GAAa,CAClC,MAAMX,GAAiBC,GAAsBa,GAAWv4sB,UACxD/S,GAAO5V,KAAK,IAAIixtB,GAASiQ,GAAWh1uB,MAAOk0uB,IAC9C,CACD,OAAOxqtB,GAAOtc,OAAOwlN,KAAMiihB,GAAY9htB,IAAI6/L,IAC9C,CAaD,SAAS8hhB,GAAsBnZ,IAC3B,IAAIzgsB,GAAIygsB,GACR,KAAOzgsB,GAAEg1sB,gBACLh1sB,GAAIA,GAAEg1sB,eAEV,OAAOh1sB,EACV,CACD,SAAS05sB,GAAkBjZ,IACvB,IAAIzgsB,GAAIygsB,GACJn9Y,GAAMtjT,GAAEi1sB,oBAAsB,EAClC,KAAOj1sB,GAAEg1sB,gBACLh1sB,GAAIA,GAAEg1sB,eACN1xZ,IAAOtjT,GAAEi1sB,oBAAsB,EAEnC,OAAO3xZ,GAAM,CAChB,CAUD,SAAS/8C,GAAQ1kS,IACb,OAAOA,GAAM0a,MAAQ,EACxB,CACD,SAASs9tB,GAAWh4uB,IAChB,OAAOA,GAAMmD,SAAW,EAC3B;;;;;;;;;;;;;;;AAqBD,SAASm1uB,GAAY9O,GAA2BxojB,IAC5C,SAAOngL,MAASqY,KACZ,MAAQk3tB,kBAAgBC,QAAUX,uBAAwBx2tB,GAC1D,IAAKw2tB,GAAkBj0uB,OACnB,SAAOo6L,MAAG38K,IAEd,IAAIq/tB,GAA4B,EAChC,SAAO53uB,KAAK+uuB,IACP9uuB,QAAK8nP,MAAU3mB,IAG5B,SAASy2gB,GAAWpH,GAAWZ,GAAWhH,GAA2BxojB,IACjE,MAAM9lL,GAASk2uB,GAAUxJ,YACnBzkuB,GAAUiuuB,GAAUrH,SAC1B,YAAsB75tB,IAAlBhV,IAAQ0mB,QAAwB62tB,GAAev9uB,MAC/CiI,GAAQq7tB,IAAiBtjuB,GAAO0mB,OAWxC,SAAS82tB,GAAYv1uB,GAASiuuB,GAAWZ,GAAWxvjB,IAChD,MAAMlsJ,GAUV,SAAS6jtB,GAAYzqtB,IACjB,MAAO,IAAI1T,OAAOsa,KAAK5G,OAAS1T,OAAO4oiB,sBAAsBl1hB,IAChE,CAZgByqtB,CAAYx1uB,IACzB,GAAoB,IAAhB2xB,GAAKr5B,OACL,SAAOo6L,MAAG,IAEd,MAAMn7K,GAAO,GACb,SAAO/Z,KAAKm0B,IAAMl0B,QAAKC,MAASk0B,IAQpC,SAAS6jtB,GAAY3G,GAAgBb,GAAWZ,GAAWxvjB,IACvD,MAAM8vjB,GAAkBjD,GAAwBuD,KAAcpwjB,GACxDimC,GAAWoohB,GAA2B4C,GAAgBnB,IAI5D,OAAO3R,GAHel4gB,GAAS9jN,QAC3B8jN,GAAS9jN,QAAQiuuB,GAAWZ,IAC5BM,GAAgBzvL,aAAa,IAAMp6V,GAASmqhB,GAAWZ,KAE9D,CAf0CoI,CAAYz1uB,GAAQ4xB,IAAMq8sB,GAAWZ,GAAWxvjB,IAClFpgL,KAAKsQ,MAAK,EAAIsqF,MAAKn4F,KACpBqX,GAAKqa,IAAO1xB,OACVi7tB,GAAS,IAAD,EAAKp8H,MAAMxnlB,KAAD,EAAQyjN,MAAYv+M,IAAMowtB,GAAapwtB,IAAK22K,QAAQwpa,MAAWnglB,KAC1F,CAnBU84tB,CAAYv1uB,GAASiuuB,GAAWZ,GAAWxvjB,IAAUpgL,QAAKpE,MAAKq8uB,KAClEzH,GAAUzH,cAAgBkP,GAC1BzH,GAAU12tB,KAAO6utB,GAA2B6H,GAAW5H,IAA2BrmuB,QAC9EjI,IAAUu9uB,GAAev9uB,MACzBk2uB,GAAU12tB,KAAK8jtB,IAAiBtjuB,GAAO0mB,OAEpC,OAEd,CAjBoC42tB,CAAWz2gB,GAAM/hO,MAAOowuB,GAAgB5G,GAA2BxojB,MAA7E,EAAyFxlF,MAAI,IAAM+8oB,MAA8Bja,GAAS,IAAD,EAAKz9tB,MAASy5K,IAAKi+jB,KAA8B7I,GAAkBj0uB,UAASo6L,MAAG38K,IAAKq9K,MADzO,EAGd,CAsCD,SAASkijB,GAAev9uB,IACpB,MAA+B,iBAAjBA,GAAO0mB,OAAuC,OAAjB1mB,GAAO0mB,KACrD;;;;;;;OAeD,SAASk3tB,GAAU14uB,IACf,SAAOmpN,MAAUyJ,KACb,MAAM+lhB,GAAa34uB,GAAK4yN,IACxB,OAAI+lhB,MACOp4uB,KAAKo4uB,IAAYn4uB,QAAKpE,MAAI,IAAMw2N,MAAhC,EAEJn9B,MAAGm9B,GAAD,EAEhB;;;;;;;OAgCD,MAAMgmhB,GAIFC,WAAWrU,IACP,IAAIsU,GACAl5uB,GAAQ4kuB,GAAS9kqB,KACrB,UAAiB5vD,IAAVlQ,IACHk5uB,GAAY/9uB,KAAKg+uB,yBAAyBn5uB,KAAUk5uB,GACpDl5uB,GAAQA,GAAM8/B,SAAStf,KAAKshB,IAASA,GAAM2ksB,SAAWlI,IAE1D,OAAO2a,EACV,CAKDC,yBAAyBvU,IACrB,OAAOA,GAASlqtB,KAAK8jtB,GACxB,EAELwa,GAAc96uB,UAAd,4BAA0G86uB,GAA1G,EACAA,GAAc56uB,WA3xHkFD,MA2xHhG,OAA8G66uB,GAA9G36uB,0BAA6J,EAAMizQ,OAAO8ne,GAA1K,aAAyI,SAQzI,MAAMA,WAA6BJ,GAC/B/9uB,YAAY2mB,IACRxI,QACAje,KAAKymB,MAAQA,EAChB,CAMDy3tB,YAAYzU,IACR,MAAMhjtB,GAAQzmB,KAAK89uB,WAAWrU,SAChB10tB,IAAV0R,IACAzmB,KAAKymB,MAAM+3sB,SAAS/3sB,GAE3B,EAELw3tB,GAAqBl7uB,UAArB,4BAAiHk7uB,IApzHjBj7uB,MAozHuDqQ,OAAvJ,EACA4quB,GAAqBh7uB,WArzH2ED,MAqzHhG,OAAqHi7uB,GAArH/6uB,QAAqH+6uB,GAArH,qBAAuJ;;;;;;;;AAgCvJ,MAAME,IAgDN,MAAMC,WA7BN,MAAMC,GAKF5K,aAAa5uuB,IACT,OAAO,CACV,CAIDy0J,MAAMz0J,GAAOy5uB,IAAiB,CAE9B9O,aAAa3quB,IACT,OAAO,CACV,CAED6quB,SAAS7quB,IACL,OAAO,IACV,CAMDyquB,iBAAiB19J,GAAQv7Y,IACrB,OAAOu7Y,GAAO66J,cAAgBp2iB,GAAKo2iB,WACtC;;;;;;;OAYL,MAMM8R,GAAuB,IAAI3+uB,MAAiD,GAAI,CAClFonnB,WAAY,OACZ9jnB,QAAS,MAAO,KAqBds7uB,GAAS,IAAI5+uB,MAAe;;;;;;;OAClC,MAAM6+uB,GACF3+uB,YAAY+lL,GAAUmie,IAClBhopB,KAAK6lL,SAAWA,GAChB7lL,KAAKgopB,SAAWA,GAChBhopB,KAAK0+uB,iBAAmB,IAAI5uc,QAC5B9vS,KAAK2+uB,gBAAkB,IAAI7uc,OAC9B,CACDuic,cAAcxtuB,IACV,GAAI7E,KAAK0+uB,iBAAiB3+tB,IAAIlb,IAC1B,OAAO7E,KAAK0+uB,iBAAiB3+tB,IAAIlb,IAEhC,GAAIA,GAAM83uB,iBACX,SAAOjijB,MAAG71L,GAAM83uB,kBAEhB38uB,KAAK4+uB,qBACL5+uB,KAAK4+uB,oBAAoB/5uB,IAE7B,MAAMg6uB,GAAa7a,GAAmBn/tB,GAAMwtuB,iBACvC5suB,QAAK46F,MAAIwgF,KACN7gL,KAAK8+uB,mBACL9+uB,KAAK8+uB,kBAAkBj6uB,IAG3BA,GAAM83uB,iBAAmB97jB,MALhB,EAMT4iD,MAAS,KACTzjO,KAAK0+uB,iBAAiBxjtB,OAAOr2B,GAA7B,IAGEi4b,GAAS,IAAI4lS,GAAsBmc,GAAY,IAAM,IAAIx0uB,MAAW5E,KAAK8imB,MAC/E,YAAKm2I,iBAAiBnrtB,IAAI1uB,GAAOi4b,IAC1BA,EACV,CACDw8C,aAAa3tR,GAAgB9mN,IACzB,GAAI7E,KAAK2+uB,gBAAgB5+tB,IAAIlb,IACzB,OAAO7E,KAAK2+uB,gBAAgB5+tB,IAAIlb,IAE/B,GAAIA,GAAMo1uB,cACX,SAAOv/iB,MAAG,CAAE83iB,OAAQ3tuB,GAAMo1uB,cAAep0jB,SAAUhhL,GAAM8tuB,kBAEzD3yuB,KAAK4+uB,qBACL5+uB,KAAK4+uB,oBAAoB/5uB,IAG7B,MAAMg6uB,GADyB7+uB,KAAK++uB,0BAA0Bl6uB,GAAMy0e,cAC1B7ze,QAAKpE,MAAK29uB,KAC5Ch/uB,KAAK8+uB,mBACL9+uB,KAAK8+uB,kBAAkBj6uB,IAI3B,IAAIghL,GACAo5jB,GACAC,IAA8B,EAC9B/9uB,MAAMkuB,QAAQ2vtB,KACdC,GAAYD,GACZE,IAA8B,IAG9Br5jB,GAAWm5jB,GAAgB7ytB,OAAOw/L,IAAgB9lC,SAKlDo5jB,GAAYnhgB,GAAQj4D,GAAS9lK,IAAIy+tB,GAAQ,GAAIroH,WAAmBA,kBAEpE,MAAMq8G,GAASyM,GAAU59uB,IAAI+wuB,IAC7B+M,MACO,CAAE3M,UAAQ3sjB,YAAV,IAvBuC,EAwB9C49C,MAAS,KACTzjO,KAAK2+uB,gBAAgBzjtB,OAAOr2B,GAA5B,IAGEi4b,GAAS,IAAI4lS,GAAsBmc,GAAY,IAAM,IAAIx0uB,MAC1D5E,KAAK8imB,MACV,YAAKo2I,gBAAgBprtB,IAAI1uB,GAAOi4b,IACzBA,EACV,CACDiiT,0BAA0BzlQ,IACtB,OAAO0qP,GAAmB1qP,MAAgB7ze,QAAKC,MAAUqY,IACjDA,cAAaw8pB,OAAmBp5qB,MAAMkuB,QAAQtR,KAAd,EACzB28K,MAAG38K,KAAD,EAGFvY,KAAKxF,KAAKgopB,SAASuiC,mBAAmBxsqB,MAGxD,EAEL0guB,GAAmB17uB,UAAnB,4BAA+G07uB,IApgIfz7uB,MAogImDA,OApgInDA,MAogI2EA,OAA3K,EACAy7uB,GAAmBx7uB,WArgI6ED,MAqgIhG,OAAmHy7uB,GAAnHv7uB,QAAmHu7uB,GAAnH,qBAAmJ;;;;;;;;AAoBnJ,MAAMW,IAKN,MAAMC,GACFC,iBAAiBv7uB,IACb,OAAO,CACV,CACDw7uB,QAAQx7uB,IACJ,OAAOA,EACV,CACDkZ,MAAMuiuB,GAAYC,IACd,OAAOD,EACV;;;;;;;OAUL,MAAME,IAAoD,EAC1D,SAAShktB,GAAoBC,IACzB,MAAMA,EACT,CACD,SAASgktB,GAAgChktB,GAAOm0sB,GAAe/ruB,IAC3D,OAAO+ruB,GAAc5tuB,MAAM,IAC9B,CAKD,MAAM09uB,GAAoB,CACtBtlqB,MAAO,QACPykL,SAAU,UACVule,aAAc,UACdt0H,YAAa,SAMX6vI,GAAqB,CACvBvlqB,MAAO,SACPykL,SAAU,UACVule,aAAc,UACdt0H,YAAa,UAyBjB,SAAS8vI,KACL,MAAMhQ,MAAgB35d,OAAO2vd,IACvB4K,MAAWv6d,OAAOq6d,IAClBxsuB,MAAWmyQ,OAAOrpI,OAClB+4C,MAAWswF,OAAO+1W,OAClB87B,MAAW7xY,OAAOk0a,OAClBtqrB,MAASo2Q,OAAOqoe,GAAQ,CAAE1xtB,UAAU,KAAW,GAC/CgyT,MAAO3oE,OAAOooe,GAAsB,CAAEzxtB,UAAU,KAAW,GAC3DiztB,MAAuB5pe,OAAO8ne,IAC9B+B,MAAgB7pe,OAAO0ne,GAAe,CAAE/wtB,UAAU,IAClDmztB,MAAsB9pe,OAAOipe,GAAqB,CAAEtytB,UAAU,IAC9DuitB,MAAqBl5d,OAAOgoe,GAAoB,CAAErxtB,UAAU,IAC5DoztB,GAAS,IAAIC,GAAO,KAAMrQ,GAAeY,GAAU1suB,GAAU6hL,GAAUmie,GAAUlqa,GAAQ/9O,KAC/F,OAAIkgvB,KACAC,GAAOD,oBAAsBA,IAE7B5Q,KACA6Q,GAAO7Q,mBAAqBA,IAEhC6Q,GAAOF,cAAgBA,IAAiBD,GA1C5C,SAASK,GAA2Btha,GAAMoha,IAClCpha,GAAK7/M,eACLihnB,GAAOjhnB,aAAe6/M,GAAK7/M,cAE3B6/M,GAAKuha,2BACLH,GAAOG,yBAA2Bvha,GAAKuha,0BAEvCvha,GAAKwha,sBACLJ,GAAOI,oBAAsBxha,GAAKwha,qBAElCxha,GAAKuvZ,4BACL6R,GAAO7R,0BAA4BvvZ,GAAKuvZ,2BAExCvvZ,GAAK64Z,yBACLuI,GAAOvI,uBAAyB74Z,GAAK64Z,wBAErC74Z,GAAKyha,oBACLL,GAAOK,kBAAoBzha,GAAKyha,mBAEhCzha,GAAK0ha,+BACLN,GAAOM,6BAA+B1ha,GAAK0ha,6BAElD,CAqBGJ,CAA2Btha,GAAMoha,IAE1BA,EACV,CAaD,MAAMC,GAKFrgvB,YAAY87uB,GAAmB9L,GAAe2Q,GAAcz8uB,GAAU6hL,GAAUmie,GAAUjopB,IACtFC,KAAK47uB,kBAAoBA,GACzB57uB,KAAK8vuB,cAAgBA,GACrB9vuB,KAAKygvB,aAAeA,GACpBzgvB,KAAKgE,SAAWA,GAChBhE,KAAKD,OAASA,GACdC,KAAK0gvB,yBAA2B,KAChC1gvB,KAAK2gvB,kBAAoB,KACzB3gvB,KAAK4gvB,UAAW,EAChB5gvB,KAAK6gvB,aAAe,EASpB7gvB,KAAK8gvB,cAAgB,EACrB9gvB,KAAK+gvB,iBAAkB,EAIvB/gvB,KAAK61B,OAAS,IAAIxrB,KAIlBrK,KAAKi/H,aAAevjG,GAOpB17B,KAAKqgvB,yBAA2BV,GAKhC3/uB,KAAKghvB,WAAY,EACjBhhvB,KAAKihvB,kBAAmB,EAOxBjhvB,KAAKkhvB,mBAAqB,OAAMxmjB,WAAG,GAKnC16L,KAAKigvB,oBAAsB,IAAIZ,GAI/Br/uB,KAAKqvuB,mBAAqB,IAAI+O,GAc9Bp+uB,KAAKsgvB,oBAAsB,SAU3BtgvB,KAAKquuB,0BAA4B,YAQjCruuB,KAAKugvB,kBAAoB,WAOzBvgvB,KAAK23uB,uBAAyB,YAuB9B33uB,KAAKwgvB,6BAA+B,UAGpCxgvB,KAAK64uB,aAAehzjB,GAAS9lK,IAAI0+tB,IACjCz+uB,KAAK64uB,aAAaiG,kBAFCv0sB,IAAMvqC,KAAKmhvB,aAAa,IAAI5U,GAAmBhisB,KAGlEvqC,KAAK64uB,aAAa+F,oBAJGr0sB,IAAMvqC,KAAKmhvB,aAAa,IAAI7U,GAAqB/hsB,KAKtEvqC,KAAKiG,SAAW4/K,GAAS9lK,IAAIs/lB,OAC7Br/mB,KAAKi4B,QAAU4tJ,GAAS9lK,IAAIohtB,OAC5B,MAAMr2tB,GAAS+6K,GAAS9lK,IAAIijL,OAC5BhjM,KAAK+gvB,gBAAkBj2uB,cAAkBk4L,OAAUA,wBACnDhjM,KAAKohvB,YAAYrhvB,IACjBC,KAAKqhvB,eA7gJb,SAASC,KACL,OAAO,IAAIlc,GAAQ,IAAII,GAAgB,GAAI,IAAK,GAAI,KACvD,CA2gJ6B8b,GACtBthvB,KAAKuhvB,WAAavhvB,KAAKqhvB,eACvBrhvB,KAAKwhvB,eAAiBxhvB,KAAKqhvB,eAC3BrhvB,KAAKyhvB,YAAcpU,GAAiBrtuB,KAAKqhvB,eAAgBrhvB,KAAK47uB,mBAC9D57uB,KAAK4kE,YAAc,IAAI20F,IAAgB,CACnCrxI,GAAI,EACJw5tB,aAAc,EACdL,eAAgBrhvB,KAAKqhvB,eACrBM,cAAe3hvB,KAAKqhvB,eACpB5F,aAAcz7uB,KAAKigvB,oBAAoBV,QAAQv/uB,KAAKqhvB,gBACpDxV,kBAAmB7ruB,KAAKigvB,oBAAoBV,QAAQv/uB,KAAKqhvB,gBACzDO,OAAQ5hvB,KAAKqhvB,eACbQ,OAAQ,GACR75uB,QAAS,KACTkvF,OAAQ,KACRY,QAASvyF,QAAQyC,SAAQ,GACzB2oB,OAAQ,aACRg7sB,cAAe,KACfrZ,gBAAiBtytB,KAAKyhvB,YAAYhY,SAClCwL,eAAgB,KAChB6M,mBAAoB9hvB,KAAKyhvB,YACzBM,kBAAmB,KACnB7M,OAAQ,CAAEX,kBAAmB,GAAID,oBAAqB,IACtDa,aAAc,OAElBn1uB,KAAKgivB,YAAchivB,KAAKiivB,iBAAiBjivB,KAAK4kE,aAC9C5kE,KAAKkivB,oBACR,CAMGC,oBACA,OAAOnivB,KAAKgE,SAASq7Q,YAAY+ie,kBACpC,CACDH,iBAAiBr9qB,IACb,MAAMy9qB,GAAgBrivB,KAAK61B,OAC3B,OAAO+uC,GAAYn/D,QAAK6P,MAAOyI,IAAc,IAATA,GAAEmK,KAAR,EAE9B7mB,MAAI0c,SAAWA,GAAG09tB,aAAcz7uB,KAAKigvB,oBAAoBV,QAAQxhuB,GAAE6juB,YAAhE,EAEHxzhB,MAAUk0hB,KACN,IAAIh9I,IAAY,EACZyE,IAAU,EACd,SAAOrva,MAAG4njB,IACL78uB,QAEL46F,MAAItiF,KACA/d,KAAK2gvB,kBAAoB,CACrBz4tB,GAAInK,GAAEmK,GACNq6tB,WAAYxkuB,GAAE6juB,OACdnG,aAAc19tB,GAAE09tB,aAChBzntB,QAASjW,GAAE4S,OACXkxtB,OAAQ9juB,GAAE8juB,OACVW,mBAAoBxivB,KAAK0gvB,yBACrB,IAAK1gvB,KAAK0gvB,yBAA0B8B,mBAAoB,MACxD,KARiB,IAD1B,EAWCp0hB,MAAUrwM,KACV,MAAMyjuB,GAAiBxhvB,KAAKwhvB,eAAe//uB,WACrCghvB,IAAiBzivB,KAAKghvB,WACxBjjuB,GAAE09tB,aAAah6uB,aAAe+/uB,IAK9BA,KAAmBxhvB,KAAKqhvB,eAAe5/uB,WAG3C,IAFwD,WAA7BzB,KAAKsgvB,qBAA0CmC,KACtEzivB,KAAKigvB,oBAAoBX,iBAAiBvhuB,GAAE6juB,QAI5C,OAAIc,GAA6B3kuB,GAAE4S,UAC/B3wB,KAAKwhvB,eAAiBzjuB,GAAE09tB,iBAErB/gjB,MAAG38K,IAAGtY,QAEb2oN,MAAUrwM,KACN,MAAM0uI,GAAazsJ,KAAK4kE,YAAY1a,WAEpC,OADAm4rB,GAAcp9uB,KAAK,IAAIwmuB,GAAgB1ttB,GAAEmK,GAAIloB,KAAK2ivB,aAAa5kuB,GAAE09tB,cAAe19tB,GAAE4S,OAAQ5S,GAAE4ttB,gBACxFl/kB,KAAezsJ,KAAK4kE,YAAY1a,WACzBkxI,KAIJ71L,QAAQyC,QAAQ+V,GAAhB,GAGXw9tB,GAAev7uB,KAAKiG,SAAS4/K,SAAU7lL,KAAK64uB,aAAc74uB,KAAK8vuB,cAAe9vuB,KAAKD,SAArE,EAGdsgG,MAAItiF,KACA/d,KAAK2gvB,kBAAoB,IAClB3gvB,KAAK2gvB,kBACRiC,SAAU7kuB,GAAE8ttB,mBAEhByW,GAAuBzW,kBAAoB9ttB,GAAE8ttB,oBA9tBrE,SAASr7L,GAAU3qX,GAAU+1jB,GAAmB77uB,GAAQojS,GAAYkrc,GAA2BsJ,IAC3F,SAAOjyuB,MAASqY,IAAK49tB,GAAY91jB,GAAU+1jB,GAAmB77uB,GAAQge,GAAE8ttB,kBAAmB1oc,GAAW6lM,UAAUjrd,GAAE8ttB,mBAAoB1oc,GAAYkrc,GAA2BsJ,IACxKlyuB,QAAKpE,MAAI4zuB,SAAwBl3tB,GAAGk3tB,sBAC5C,CA8tBmBzkM,CAAUxwiB,KAAKiG,SAAS4/K,SAAU7lL,KAAK47uB,kBAAmB57uB,KAAKD,OAAQC,KAAK8vuB,cAAe9vuB,KAAKquuB,0BAA2BruuB,KAAK23uB,yBAAvH,EAETt3oB,MAAItiF,KAEA,GADAukuB,GAAuBrN,eAAiBl3tB,GAAEk3tB,eACX,UAA3Bj1uB,KAAKugvB,kBAA+B,CACpC,IAAKxiuB,GAAE8juB,OAAOgB,mBAAoB,CAC9B,MAAMjB,GAAS5hvB,KAAKigvB,oBAAoBhjuB,MAAMc,GAAE8ttB,kBAAmB9ttB,GAAE6juB,QACrE5hvB,KAAK8ivB,cAAclB,GAAQ7juB,GAC9B,CACD/d,KAAKwhvB,eAAiBzjuB,GAAE8ttB,iBAC3B,CAED,MAAMkX,GAAmB,IAAI9W,GAAiBlutB,GAAEmK,GAAIloB,KAAK2ivB,aAAa5kuB,GAAE09tB,cAAez7uB,KAAK2ivB,aAAa5kuB,GAAE8ttB,mBAAoB9ttB,GAAEk3tB,gBACjIoN,GAAcp9uB,KAAK89uB,GAAnB,IASJ,GAL2BN,IAAiBzivB,KAAKuhvB,YAC7CvhvB,KAAKigvB,oBAAoBX,iBAAiBt/uB,KAAKuhvB,YAI3B,CACpB,MAAQr5tB,MAAIuztB,gBAAc9qtB,UAAQg7sB,iBAAekW,WAAW9juB,GACtDiluB,GAAW,IAAIvX,GAAgBvjtB,GAAIloB,KAAK2ivB,aAAalH,IAAe9qtB,GAAQg7sB,IAClF0W,GAAcp9uB,KAAK+9uB,IACnB,MAAM/N,GAAiB5H,GAAiBoO,GAAcz7uB,KAAK47uB,mBAAmBnS,SAC9E6Y,UAAyB,IAClBvkuB,GACHk3tB,kBACApJ,kBAAmB4P,GACnBoG,OAAQ,IAAKA,GAAQgB,oBAAoB,EAAOI,YAAY,KAJvC,EAMlBvojB,MAAG4njB,GACb,CAOG,YAAKf,WAAaxjuB,GAAE6juB,OACpB7juB,GAAE/V,QAAQ,MACHozL,QApFN,EAyFb/6F,MAAItiF,KACA,MAAMmluB,GAAc,IAAIhX,GAAiBnutB,GAAEmK,GAAIloB,KAAK2ivB,aAAa5kuB,GAAE09tB,cAAez7uB,KAAK2ivB,aAAa5kuB,GAAE8ttB,mBAAoB9ttB,GAAEk3tB,gBAC5Hj1uB,KAAKmhvB,aAAa+B,GAAlB,IAFD,EAGC7hvB,MAAI0c,IACJukuB,GAAyB,IAClBvkuB,GACHm3tB,OAAQlB,GAAkBj2tB,GAAEk3tB,eAAgBl3tB,GAAEu0sB,gBAAiBtytB,KAAKygvB,gBAGxEzL,GAAYh1uB,KAAKiG,SAAS4/K,SAAW8/L,IAAQ3lX,KAAKmhvB,aAAax7X,MAApD,EAA2DtlR,MAAItiF,KAE1E,GADAukuB,GAAuBnN,aAAep3tB,GAAEo3tB,aACpCzM,GAAU3qtB,GAAEo3tB,cACZ,MAAMtF,GAA2B7vuB,KAAK8vuB,cAAe/xtB,GAAEo3tB,cAE3D,MAAMgO,GAAY,IAAIhX,GAAeputB,GAAEmK,GAAIloB,KAAK2ivB,aAAa5kuB,GAAE09tB,cAAez7uB,KAAK2ivB,aAAa5kuB,GAAE8ttB,mBAAoB9ttB,GAAEk3tB,iBAAkBl3tB,GAAEo3tB,cAC5In1uB,KAAKmhvB,aAAagC,GAAlB,IANyE,EAOzE7tuB,MAAOyI,MACFA,GAAEo3tB,eACHn1uB,KAAKojvB,eAAerluB,IACpB/d,KAAKqjvB,2BAA2BtluB,GAAG,GAAI,IAChC,IAKf4/tB,GAAU5/tB,KACN,GAAIA,GAAEm3tB,OAAOX,kBAAkBj0uB,OAC3B,SAAOo6L,MAAG38K,IAAGtY,QAAK46F,MAAItiF,KAClB,MAAMuluB,GAAe,IAAIlX,GAAarutB,GAAEmK,GAAIloB,KAAK2ivB,aAAa5kuB,GAAE09tB,cAAez7uB,KAAK2ivB,aAAa5kuB,GAAE8ttB,mBAAoB9ttB,GAAEk3tB,gBACzHj1uB,KAAKmhvB,aAAamC,GAAlB,IAFiB,EAGjBl1hB,MAAUrwM,KACV,IAAIwluB,IAAe,EACnB,SAAO7ojB,MAAG38K,IAAGtY,KAAK03uB,GAAYn9uB,KAAKquuB,0BAA2BruuB,KAAKiG,SAAS4/K,WAA/C,EAA0DxlF,MAAI,CACvFp7F,KAAM,IAAMs+uB,IAAe,EAC3BzspB,SAAU,KACDyspB,KACDvjvB,KAAKojvB,eAAerluB,IACpB/d,KAAKqjvB,2BAA2BtluB,GAE5B,GAAI,GAFR,IALL,IAFE,EAaTsiF,MAAItiF,KACJ,MAAMyluB,GAAa,IAAInX,EAAWtutB,GAAEmK,GAAIloB,KAAK2ivB,aAAa5kuB,GAAE09tB,cAAez7uB,KAAK2ivB,aAAa5kuB,GAAE8ttB,mBAAoB9ttB,GAAEk3tB,gBACrHj1uB,KAAKmhvB,aAAaqC,GAAlB,GAlBG,GAwBf7F,GAAW5/tB,KACP,MAAM0luB,GAAkB5+uB,KACpB,MAAM6+uB,GAAU,GACZ7+uB,GAAM4nuB,aAAa4F,gBAClBxtuB,GAAM4nuB,YAAYkQ,kBACnB+G,GAAQ1nuB,KAAKhc,KAAK64uB,aAAaxG,cAAcxtuB,GAAM4nuB,aAC9ChnuB,QAAK46F,MAAIsjpB,KACV9+uB,GAAMg8K,UAAY8ikB,MADT,EAETtivB,MAAI,UAEZ,UAAWslC,MAAS9hC,GAAM8/B,SACtB++sB,GAAQ1nuB,QAAQynuB,GAAe98sB,KAEnC,OAAO+8sB,IAEX,SAAO99kB,MAAc69kB,GAAe1luB,GAAEk3tB,eAAetwqB,OAChDl/D,KAAKs9tB,MAAc,EAAIr4sB,MAAK,GAD1B,GAEPiztB,GAAU,IAAM39uB,KAAKkhvB,uBAAZ,EAAmC7/uB,MAAK0c,KACjD,MAAMgkuB,GA1vFtB,SAAS6B,GAAkBvU,GAAoBh5iB,GAAM+9G,IACjD,MAAMzvO,GAAOyqqB,GAAWC,GAAoBh5iB,GAAKrmG,MAAOokN,GAAYA,GAAUpkN,WAAQj7E,GACtF,OAAO,IAAIo4tB,GAAYxoqB,GAAM0xH,GAChC,CAuvFyCutjB,CAAkB5jvB,KAAKqvuB,mBAAoBtxtB,GAAEk3tB,eAAgBl3tB,GAAE+juB,oBACzFQ,UAAyB,IAAKvkuB,GAAGgkuB,qBACzBO,IAHuC,EAUnDjipB,MAAKtiF,KACD/d,KAAKqhvB,eAAiBtjuB,GAAE8ttB,kBACxB7ruB,KAAKuhvB,WACDvhvB,KAAKigvB,oBAAoBhjuB,MAAMc,GAAE8ttB,kBAAmB9ttB,GAAE6juB,QAC1D5hvB,KAAKyhvB,YAAc1juB,GAAEgkuB,kBACU,aAA3B/hvB,KAAKugvB,oBACAxiuB,GAAE8juB,OAAOgB,oBACV7ivB,KAAK8ivB,cAAc9ivB,KAAKuhvB,WAAYxjuB,IAExC/d,KAAKwhvB,eAAiBzjuB,GAAE8ttB,qBAtqErB,EAAC4U,GAAcpR,GAAoB0D,QAAiB1xuB,MAAI0c,KAC3E,IAAI60tB,GAAevD,GAAoBtxtB,GAAEgkuB,kBAAmBhkuB,GAAE+juB,mBAAoB/O,IAC7E18tB,SAASoquB,IACP1iuB,KAqqEK61tB,CAAe5zuB,KAAKygvB,aAAczgvB,KAAKqvuB,mBAAqB1pX,IAAQ3lX,KAAKmhvB,aAAax7X,MAAxE,EAA+EtlR,MAAI,CACjGp7F,OACIqgmB,IAAY,CACf,EACDxugB,WACIwugB,IAAY,CACf,KAN+F,EAOhG7hY,MAAS,KAOT,IAAK6hY,KAAcyE,GAAS,CACxB,MAAM85I,GAGF,GACJ7jvB,KAAKqjvB,2BAA2Bf,GAAwBuB,GAAmB,EAC9E,CAGG7jvB,KAAK2gvB,mBAAmBz4tB,KAAOo6tB,GAAuBp6tB,KACtDloB,KAAK2gvB,kBAAoB,SAjBrB,EAmBR39gB,MAAYv+M,KAIZ,GAHAsllB,IAAU,EAGNumI,GAA6B7rtB,IAAI,CAC5B4rtB,GAAwC5rtB,MAOzCzkB,KAAKghvB,WAAY,EACjBhhvB,KAAKojvB,eAAed,IAAwB,IAEhD,MAAMwB,GAAY,IAAIhY,GAAiBwW,GAAuBp6tB,GAAIloB,KAAK2ivB,aAAaL,GAAuB7G,cAAeh3tB,GAAE5E,QAAS4E,GAAE2rtB,kBAIvI,GAHAiS,GAAcp9uB,KAAK6+uB,IAGdzT,GAAwC5rtB,IAGxC,CACD,MAAMs/tB,GAAa/jvB,KAAKigvB,oBAAoBhjuB,MAAMwH,GAAE1gB,IAAK/D,KAAKuhvB,YACxDM,GAAS,CACXgB,mBAAoBP,GAAuBT,OAAOgB,mBAKlDI,WAAuC,UAA3BjjvB,KAAKugvB,mBACbmC,GAA6BJ,GAAuB3xtB,SAE5D3wB,KAAKgkvB,mBAAmBD,GAAY,aAAc,KAAMlC,GAAQ,CAC5D75uB,QAASs6uB,GAAuBt6uB,QAChCkvF,OAAQorpB,GAAuBprpB,OAC/BY,QAASwqpB,GAAuBxqpB,SAEvC,MAlBGwqpB,GAAuBt6uB,SAAQ,EAqBtC,KACI,CACDhI,KAAKojvB,eAAed,IAAwB,GAC5C,MAAM2B,GAAW,IAAIjY,GAAgBsW,GAAuBp6tB,GAAIloB,KAAK2ivB,aAAaL,GAAuB7G,cAAeh3tB,GAAG69tB,GAAuBrN,qBAAkBlguB,GACpKstuB,GAAcp9uB,KAAKg/uB,IACnB,IACI3B,GAAuBt6uB,QAAQhI,KAAKi/H,aAAax6G,IAIpD,CAHA,MACMy/tB,IACH5B,GAAuBprpB,OAAOgtpB,GACjC,CACJ,CACD,OAAO9ojB,OA/QJ,GAmRd,CAKD+ojB,uBAAuBvI,IACnB57uB,KAAK47uB,kBAAoBA,GAGzB57uB,KAAKyhvB,YAAY98qB,KAAKk8G,UAAY7gL,KAAK47uB,iBAC1C,CACDwI,cAAcrmuB,IACV/d,KAAK4kE,YAAY3/D,KAAK,IAAKjF,KAAK4kE,YAAY18D,SAAU6V,IACzD,CAIDsmuB,oBACIrkvB,KAAKskvB,8BACqB,IAAtBtkvB,KAAK6gvB,cACL7gvB,KAAKukvB,cAAcvkvB,KAAKgE,SAASyrB,MAAK,GAAO,CAAEwztB,YAAY,GAElE,CAMDqB,8BAIStkvB,KAAKwkvB,uBACNxkvB,KAAKwkvB,qBAAuBxkvB,KAAKgE,SAASkI,UAAU8D,KAChD,MAAM2gB,GAA2B,aAAlB3gB,GAAMyO,KAAyB,WAAa,aAC5C,aAAXkS,IAGAje,WAAW,KACP,MAAMmvuB,GAAS,CAAEoB,YAAY,GAGvBzptB,GAAQxpB,GAAMwpB,OAAOqntB,aAAe7wuB,GAAMwpB,MAAQ,KACxD,GAAIA,GAAO,CACP,MAAMirtB,GAAY,IAAKjrtB,WAChBirtB,GAAU5D,oBACV4D,GAAUrC,mBACqB,IAAlC/iuB,OAAOsa,KAAK8qtB,IAAWnkvB,SACvBuhvB,GAAOrotB,MAAQirtB,GAEtB,CACD,MAAM7b,GAAU5ouB,KAAK0kvB,SAAS10uB,GAAMjM,KACpC/D,KAAKgkvB,mBAAmBpb,GAASj4sB,GAAQ6I,GAAOqotB,GAAhD,EACD,EAfO,GAmBzB,CAEG99uB,UACA,OAAO/D,KAAK2ivB,aAAa3ivB,KAAKqhvB,eACjC,CAKDsD,uBACI,OAAO3kvB,KAAK2gvB,iBACf,CAEDQ,aAAanxuB,IACThQ,KAAK61B,OAAO5wB,KAAK+K,GACpB,CAiBDoxuB,YAAYrhvB,IAERC,KAAKD,OAASA,GAAOsB,IAAI+wuB,IACzBpyuB,KAAKghvB,WAAY,EACjBhhvB,KAAKihvB,kBAAmB,CAC3B,CAEDpwuB,cACI7Q,KAAKu4I,SACR,CAEDA,UACIv4I,KAAK4kE,YAAYkyB,WACb92F,KAAKwkvB,uBACLxkvB,KAAKwkvB,qBAAqBvzuB,cAC1BjR,KAAKwkvB,0BAAuBzvuB,GAEhC/U,KAAK4gvB,UAAW,CACnB,CAiDDjY,cAAcl9c,GAAUm5d,GAAmB,IACvC,MAAQC,cAAY70I,eAAajxW,YAAU+lf,uBAAqBC,qBAAqBH,GAC/EzntB,GAAI0ntB,IAAc7kvB,KAAKyhvB,YAAY98qB,KACnCv8D,GAAI28uB,GAAmB/kvB,KAAKqhvB,eAAetif,SAAWA,GAC5D,IAAI/gH,GAAI,KACR,OAAQ8mmB,QACC,QACD9mmB,GAAI,IAAKh+I,KAAKqhvB,eAAerxI,eAAgBA,IAC7C,UACC,WACDhyd,GAAIh+I,KAAKqhvB,eAAerxI,YACxB,cAEAhyd,GAAIgyd,IAAe,KAE3B,OAAU,OAANhyd,KACAA,GAAIh+I,KAAKglvB,iBAAiBhnmB,KAEvB2qlB,GAAcxrsB,GAAGn9B,KAAKqhvB,eAAgB51d,GAAUztI,GAAG51I,IAAK,KAClE,CAyBDm8uB,cAAcxgvB,GAAK89uB,GAAS,CACxBgB,oBAAoB,IAMpB,MAAMja,GAAUF,GAAU3kuB,IAAOA,GAAM/D,KAAK0kvB,SAAS3gvB,IAC/CggvB,GAAa/jvB,KAAKigvB,oBAAoBhjuB,MAAM2rtB,GAAS5ouB,KAAKuhvB,YAChE,OAAOvhvB,KAAKgkvB,mBAAmBD,GAAY,aAAc,KAAMlC,GAClE,CA+BD3tuB,SAASu3Q,GAAUo2d,GAAS,CAAEgB,oBAAoB,IAC9CoC,OAoNR,SAASA,GAAiBx5d,IACtB,QAASj2Q,GAAI,EAAGA,GAAIi2Q,GAASnrR,OAAQkV,KAAK,CACtC,MAAMyyS,GAAMx8B,GAASj2Q,IACrB,GAAW,MAAPyyS,GACA,MAAM,IAAIw7T,MAAc,KAA6Ci8H,GAE5E,CACJ,CA3NOuF,CAAiBx5d,IACVzrR,KAAKukvB,cAAcvkvB,KAAK2ouB,cAAcl9c,GAAUo2d,IAASA,GACnE,CAEDc,aAAa5+uB,IACT,OAAO/D,KAAK8vuB,cAAc9mQ,UAAUjle,GACvC,CAED2gvB,SAAS3gvB,IACL,IAAI6kuB,GACJ,IACIA,GAAU5ouB,KAAK8vuB,cAAc5tuB,MAAM6B,GAItC,CAHA,MACM0gB,IACHmktB,GAAU5ouB,KAAKqgvB,yBAAyB57tB,GAAGzkB,KAAK8vuB,cAAe/ruB,GAClE,CACD,OAAO6kuB,EACV,CACDngjB,SAAS1kL,GAAKmhvB,IACV,IAAIl/uB,GAUJ,GARIA,IADiB,IAAjBk/uB,GACU,IAAKtF,KAEO,IAAjBsF,GACK,IAAKrF,IAGLqF,GAEVxc,GAAU3kuB,IACV,OAAOghuB,GAAa/kuB,KAAKqhvB,eAAgBt9uB,GAAKiC,IAElD,MAAM4iuB,GAAU5ouB,KAAK0kvB,SAAS3gvB,IAC9B,OAAOghuB,GAAa/kuB,KAAKqhvB,eAAgBzY,GAAS5iuB,GACrD,CACDg/uB,iBAAiBz8X,IACb,OAAOlpW,OAAOsa,KAAK4uV,IAAQ5iW,OAAO,CAACiM,GAAQgI,MACvC,MAAM1xB,GAAQqgX,GAAO3uV,IACrB,OAAc,MAAV1xB,KACA0pB,GAAOgI,IAAO1xB,IAEX0pB,IACR,GACN,CACDswtB,qBACIlivB,KAAKgivB,YAAY91uB,UAAU6R,KACvB/d,KAAKghvB,WAAY,EACjBhhvB,KAAKihvB,iBAAmBljuB,GAAEmK,GAC1BloB,KAAK8gvB,cAAgB/iuB,GAAE2juB,aACvB1hvB,KAAK61B,OACA5wB,KAAK,IAAI2muB,GAAc7ttB,GAAEmK,GAAIloB,KAAK2ivB,aAAa5kuB,GAAE09tB,cAAez7uB,KAAK2ivB,aAAa3ivB,KAAKqhvB,kBAC5FrhvB,KAAK0gvB,yBAA2B1gvB,KAAK2gvB,kBACrC3gvB,KAAKggvB,eAAe9B,YAAYl+uB,KAAKyhvB,YAAYhY,UACjD1rtB,GAAE/V,SAAQ,EAAV,EACDyc,KACCzkB,KAAKi4B,QAAQ80L,KAAM,+BAA8BtoM,KAAjD,EAEP,CACDu/tB,mBAAmBpC,GAAQjxtB,GAAQg7sB,GAAekW,GAAQsD,IACtD,GAAInlvB,KAAK4gvB,SACL,OAAOr7uB,QAAQyC,SAAQ,GAE3B,IAAIA,GACAkvF,GACAY,GACAqtpB,IACAn9uB,GAAUm9uB,GAAan9uB,QACvBkvF,GAASiupB,GAAajupB,OACtBY,GAAUqtpB,GAAartpB,SAGvBA,GAAU,IAAIvyF,QAAQ,CAAC+gV,GAAK6iW,MACxBnhrB,GAAUs+U,GACVpvP,GAASiylB,KAGjB,MAAMjhqB,KAAOloB,KAAK6gvB,aAClB,IAAIa,GACJ,MAA0C,aAAtC1hvB,KAAKwgvB,8BACwC,IAAvBxgvB,KAAK8gvB,gBAEvBnV,GAAgB3ruB,KAAKgE,SAASq7Q,YAM9Bqie,GADA/V,IAAiBA,GAAcyW,mBAChBzW,GAAcyW,mBAKzBP,GAAOoB,YAAcpB,GAAOgB,mBACb7ivB,KAAKmivB,eAAiB,GAGrBnivB,KAAKmivB,eAAiB,GAAK,GAMnDT,GAAe,EAEnB1hvB,KAAKokvB,cAAc,CACfl8tB,MACAw5tB,gBACA/wtB,UACAg7sB,iBACA0V,eAAgBrhvB,KAAKqhvB,eACrBM,cAAe3hvB,KAAKuhvB,WACpBK,UACAC,UACA75uB,WACAkvF,UACAY,WACAw6nB,gBAAiBtytB,KAAKyhvB,YAAYhY,SAClCqY,mBAAoB9hvB,KAAKyhvB,cAItB3ppB,GAAQ0sgB,MAAO//kB,IACXlf,QAAQ2xF,OAAOzyE,IAE7B,CACDq+tB,cAAc/+uB,GAAKga,IACf,MAAM0R,GAAOzvB,KAAK8vuB,cAAc9mQ,UAAUjle,IACpCy1B,GAAQ,IAAKzb,GAAE8juB,OAAOrotB,SAAUx5B,KAAKolvB,sBAAsBrnuB,GAAEmK,GAAInK,GAAE2juB,eACrE1hvB,KAAKgE,SAAS0smB,qBAAqBjhlB,KAAW1R,GAAE8juB,OAAOoB,WACvDjjvB,KAAKgE,SAAS8qmB,aAAar/kB,GAAM,GAAI+J,IAGrCx5B,KAAKgE,SAAS+qmB,GAAGt/kB,GAAM,GAAI+J,GAElC,CAKD4ptB,eAAerluB,GAAGsnuB,IAA2B,GACzC,GAA0C,aAAtCrlvB,KAAKwgvB,6BAA6C,CAClD,MAAM8E,GAAqBtlvB,KAAK8gvB,cAAgB/iuB,GAAE2juB,aAMH,aAAb3juB,GAAE4S,QAAoD,UAA3B3wB,KAAKugvB,mBAC9DvgvB,KAAKqhvB,iBAAmBrhvB,KAAK2gvB,mBAAmBiC,UACG,IAAvB0C,GAGvBtlvB,KAAKqhvB,iBAAmBrhvB,KAAK2gvB,mBAAmBiC,UAAmC,IAAvB0C,KAIjEtlvB,KAAKsmU,WAAWvoT,IAGhB/d,KAAKwhvB,eAAiBzjuB,GAAEsjuB,eACxBrhvB,KAAKulvB,4BAVLvlvB,KAAKgE,SAAS+pmB,UAAUu3I,GAgB/B,KAC8C,YAAtCtlvB,KAAKwgvB,+BAKN6E,IACArlvB,KAAKsmU,WAAWvoT,IAEpB/d,KAAKulvB,2BAEZ,CACDj/a,WAAWvoT,IACP/d,KAAKyhvB,YAAc1juB,GAAE+juB,mBACrB9hvB,KAAKqhvB,eAAiBtjuB,GAAEsjuB,eAMxBrhvB,KAAKuhvB,WAAavhvB,KAAKigvB,oBAAoBhjuB,MAAMjd,KAAKqhvB,eAAgBtjuB,GAAE6juB,OAC3E,CACD2D,2BACIvlvB,KAAKgE,SAAS8qmB,aAAa9umB,KAAK8vuB,cAAc9mQ,UAAUhpe,KAAKuhvB,YAAa,GAAIvhvB,KAAKolvB,sBAAsBplvB,KAAKihvB,iBAAkBjhvB,KAAK8gvB,eACxI,CACDuC,2BAA2BtluB,GAAGgutB,GAAQ/1mB,IAClC,MAAM8tnB,GAAY,IAAIhY,GAAiB/ttB,GAAEmK,GAAIloB,KAAK2ivB,aAAa5kuB,GAAE09tB,cAAe1P,GAAQ/1mB,IACxFh2H,KAAKmhvB,aAAa2C,IAClB/luB,GAAE/V,SAAQ,EACb,CACDo9uB,sBAAsBvE,GAAc2E,IAChC,MAA0C,aAAtCxlvB,KAAKwgvB,6BACE,CAAEK,gBAAcuB,mBAAeoD,IAEnC,CAAE3E,gBACZ,EAmBL,SAAS6B,GAA6B/xtB,IAClC,MAAkB,eAAXA,EACV;;;;;;;OAnBDwvtB,GAAOp9uB,UAAP,aA1gKgGC,MA0gKhG,EACAm9uB,GAAOl9uB,WA3gKyFD,MA2gKhG,OAAuGm9uB,GAAvGj9uB,0BAA+I48uB,IAA/I,aAA2H,SA4H3H,MAAM2F,GACF3lvB,YAAYogvB,GAAQr7uB,GAAO6gvB,GAAmB/6uB,GAAU7B,IACpD9I,KAAKkgvB,OAASA,GACdlgvB,KAAK6E,MAAQA,GACb7E,KAAK0lvB,kBAAoBA,GACzB1lvB,KAAK2K,SAAWA,GAChB3K,KAAK8I,GAAKA,GACV9I,KAAK2lvB,mBAAoB,EACzB3lvB,KAAK4lvB,qBAAsB,EAC3B5lvB,KAAK6lvB,aAAc,EACnB7lvB,KAAKyrR,SAAW,KAEhBzrR,KAAKy6Z,UAAY,IAAIpwZ,KACrBrK,KAAK8lvB,2BAA2B,IACnC,CAOGf,qBAAiBA,IACjB/kvB,KAAK2lvB,qBAAoB/8C,OAAiBm8C,GAC7C,CACGA,uBACA,OAAO/kvB,KAAK2lvB,iBACf,CAOG9C,uBAAmBA,IACnB7ivB,KAAK4lvB,uBAAsBh9C,OAAiBi6C,GAC/C,CACGA,yBACA,OAAO7ivB,KAAK4lvB,mBACf,CAOG3C,eAAWA,IACXjjvB,KAAK6lvB,eAAcj9C,OAAiBq6C,GACvC,CACGA,iBACA,OAAOjjvB,KAAK6lvB,WACf,CAKDC,2BAA2BC,IACvB,GAA8B,MAA1B/lvB,KAAK0lvB,kBACL,OAEJ,MAAM/6uB,GAAW3K,KAAK2K,SAChBwB,GAAgBnM,KAAK8I,GAAGqD,cACV,OAAhB45uB,GACAp7uB,GAASiF,aAAazD,GAAe,WAAY45uB,IAGjDp7uB,GAAS2G,gBAAgBnF,GAAe,WAE/C,CAEDkE,YAAYpE,IAGRjM,KAAKy6Z,UAAUx1Z,KAAKjF,KACvB,CAQGgmvB,eAAWv6d,IACK,MAAZA,IACAzrR,KAAKyrR,SAAWtqR,MAAMkuB,QAAQo8P,IAAYA,GAAW,CAACA,IACtDzrR,KAAK8lvB,2BAA2B,OAGhC9lvB,KAAKyrR,SAAW,KAChBzrR,KAAK8lvB,2BAA2B,MAEvC,CAEDvtuB,UACI,GAAqB,OAAjBvY,KAAK4ouB,QACL,OAAO,EAEX,MAAMiZ,GAAS,CACXgB,mBAAoB7ivB,KAAK6ivB,mBACzBI,WAAYjjvB,KAAKijvB,WACjBzptB,MAAOx5B,KAAKw5B,OAEhB,YAAK0mtB,OAAOqE,cAAcvkvB,KAAK4ouB,QAASiZ,KACjC,CACV,CACGjZ,cACA,OAAsB,OAAlB5ouB,KAAKyrR,SACE,KAEJzrR,KAAKkgvB,OAAOvX,cAAc3ouB,KAAKyrR,SAAU,CAG5Co5d,gBAAgC9vuB,IAApB/U,KAAK6kvB,WAA2B7kvB,KAAK6kvB,WAAa7kvB,KAAK6E,MACnEmrmB,YAAahwmB,KAAKgwmB,YAClBjxW,SAAU/+P,KAAK++P,SACf+lf,oBAAqB9kvB,KAAK8kvB,oBAC1BC,iBAAkB/kvB,KAAK+kvB,kBAE9B,EAELU,GAAW1ivB,UAAX,4BAAuG0ivB,IA9vKPzivB,MA8vKmCm9uB,IA9vKnCn9uB,MA8vKsD8quB,IA9vKtD9quB,MA8vKiF,YA9vKjFA,MA8vKyHA,OA9vKzHA,MA8vKkJA,OAAlP,EACAyivB,GAAWnyuB,UA/vKqFtQ,MA+vKhG,MAA2FyivB,GAA3FlyuB,mFA/vKgGvQ,MA+vKhG,0BAA2FwQ,YAA3F,+RA/vKgGxQ,SA0yKhG,MAAMijvB,GACFnmvB,YAAYogvB,GAAQr7uB,GAAOsrmB,IACvBnwmB,KAAKkgvB,OAASA,GACdlgvB,KAAK6E,MAAQA,GACb7E,KAAKmwmB,iBAAmBA,GACxBnwmB,KAAK2lvB,mBAAoB,EACzB3lvB,KAAK4lvB,qBAAsB,EAC3B5lvB,KAAK6lvB,aAAc,EACnB7lvB,KAAKyrR,SAAW,KAIhBzrR,KAAK8qF,KAAO,KAEZ9qF,KAAKy6Z,UAAY,IAAIpwZ,KACrBrK,KAAK+5J,aAAemmlB,GAAOrqtB,OAAO3pB,UAAW82B,KACrCA,cAAa4osB,IACb5ruB,KAAKkmvB,wBAAL,EAGX,CAOGnB,qBAAiBA,IACjB/kvB,KAAK2lvB,qBAAoB/8C,OAAiBm8C,GAC7C,CACGA,uBACA,OAAO/kvB,KAAK2lvB,iBACf,CAOG9C,uBAAmBA,IACnB7ivB,KAAK4lvB,uBAAsBh9C,OAAiBi6C,GAC/C,CACGA,yBACA,OAAO7ivB,KAAK4lvB,mBACf,CAOG3C,eAAWA,IACXjjvB,KAAK6lvB,eAAcj9C,OAAiBq6C,GACvC,CACGA,iBACA,OAAOjjvB,KAAK6lvB,WACf,CAQGG,eAAWv6d,IAEPzrR,KAAKyrR,SADO,MAAZA,GACgBtqR,MAAMkuB,QAAQo8P,IAAYA,GAAW,CAACA,IAGtC,IAEvB,CAEDp7Q,YAAYpE,IACRjM,KAAKkmvB,yBACLlmvB,KAAKy6Z,UAAUx1Z,KAAKjF,KACvB,CAED6Q,cACI7Q,KAAK+5J,aAAa9oJ,aACrB,CAEDsH,QAAQ9N,GAAQwuF,GAASC,GAAU1+E,GAAQowK,IAIvC,GAHe,IAAXngL,IAAgBwuF,IAAWC,IAAY1+E,IAAUowK,IAG1B,iBAAhB5qL,KAAK6c,QAAsC,SAAf7c,KAAK6c,QAAsC,OAAjB7c,KAAK4ouB,QAClE,OAAO,EAEX,MAAMiZ,GAAS,CACXgB,mBAAoB7ivB,KAAK6ivB,mBACzBI,WAAYjjvB,KAAKijvB,WACjBzptB,MAAOx5B,KAAKw5B,OAEhB,YAAK0mtB,OAAOqE,cAAcvkvB,KAAK4ouB,QAASiZ,KACjC,CACV,CACDqE,yBACIlmvB,KAAK8qF,KAAwB,OAAjB9qF,KAAK4ouB,QACb5ouB,KAAKmwmB,iBAAiBN,mBAAmB7vmB,KAAKkgvB,OAAOyC,aAAa3ivB,KAAK4ouB,UACvE,IACP,CACGA,cACA,OAAsB,OAAlB5ouB,KAAKyrR,SACE,KAEJzrR,KAAKkgvB,OAAOvX,cAAc3ouB,KAAKyrR,SAAU,CAG5Co5d,gBAAgC9vuB,IAApB/U,KAAK6kvB,WAA2B7kvB,KAAK6kvB,WAAa7kvB,KAAK6E,MACnEmrmB,YAAahwmB,KAAKgwmB,YAClBjxW,SAAU/+P,KAAK++P,SACf+lf,oBAAqB9kvB,KAAK8kvB,oBAC1BC,iBAAkB/kvB,KAAK+kvB,kBAE9B,EAELkB,GAAmBljvB,UAAnB,4BAA+GkjvB,IA/5KfjjvB,MA+5KmDm9uB,IA/5KnDn9uB,MA+5KsE8quB,IA/5KtE9quB,MA+5KiG6e,OAAjM,EACAokuB,GAAmB3yuB,UAh6K6EtQ,MAg6KhG,MAAmGijvB,GAAnG1yuB,yGAh6KgGvQ,MAg6KhG,4BAAmGwQ,iEAAnG,SAh6KgGxQ,MAg6KhG,mBAh6KgGA,CAg6KhG,eAh6KgGA,MAg6KhG,6SAh6KgGA;;;;;;;;AAghLhG,MAAMmjvB,GACFrmvB,YAAYogvB,GAAQx3uB,GAASiC,GAAUyQ,GAAKksQ,GAAM8+d,IAC9CpmvB,KAAKkgvB,OAASA,GACdlgvB,KAAK0I,QAAUA,GACf1I,KAAK2K,SAAWA,GAChB3K,KAAKob,IAAMA,GACXpb,KAAKsnR,KAAOA,GACZtnR,KAAKomvB,aAAeA,GACpBpmvB,KAAK2M,QAAU,GACf3M,KAAKyoL,UAAW,EAQhBzoL,KAAKqmvB,wBAA0B,CAAEliB,OAAO,GAiBxCnkuB,KAAKsmvB,eAAiB,IAAIp7uB,MAC1BlL,KAAKumvB,yBAA2BrG,GAAOrqtB,OAAO3pB,UAAW82B,KACjDA,cAAa4osB,IACb5ruB,KAAK4nE,QAAL,EAGX,CAED9xD,sBAEI4kL,QAAG16L,KAAKkqnB,MAAMj+mB,QAASjM,KAAKwmvB,eAAev6uB,WAASyuL,MAAG,OAAOj1L,QAAKo8lB,SAAY31lB,UAAUizK,KACrFn/K,KAAK4nE,SACL5nE,KAAKymvB,8BAAL,EAEP,CACDA,+BACIzmvB,KAAK0mvB,8BAA8Bz1uB,cACnC,MAAM01uB,GAAiB,IAAI3mvB,KAAKkqnB,MAAM90mB,aAAcpV,KAAKwmvB,eAAepxuB,UAAWpV,KAAKsnR,KAAMtnR,KAAKomvB,cAC9F9wuB,OAAQgyQ,MAAWA,IACnBjmR,IAAIimR,IAAQA,GAAKmzI,WACtBz6Z,KAAK0mvB,gCAA+BlhvB,KAAKmhvB,IAAgBlhvB,QAAKo8lB,SAAY31lB,UAAUo7Q,KAC5EtnR,KAAKyoL,WAAazoL,KAAK4mvB,aAAa5mvB,KAAKkgvB,OAAvBlgvB,CAA+BsnR,KACjDtnR,KAAK4nE,QAAL,EAGX,CACGi/qB,qBAAiBtnuB,IACjB,MAAM5S,GAAUxL,MAAMkuB,QAAQ9P,IAAQA,GAAOA,GAAKxd,MAAM,KACxD/B,KAAK2M,QAAUA,GAAQ2I,OAAO/T,MAAOA,GACxC,CAED8O,YAAYpE,IACRjM,KAAK4nE,QACR,CAED/2D,cACI7Q,KAAKumvB,yBAAyBt1uB,cAC9BjR,KAAK0mvB,8BAA8Bz1uB,aACtC,CACD22D,UACS5nE,KAAKkqnB,QAAUlqnB,KAAKwmvB,iBAAmBxmvB,KAAKkgvB,OAAOc,WAExDz7uB,QAAQyC,UAAUK,KAAK,KACnB,MAAMy+uB,GAAiB9mvB,KAAK8mvB,iBACxB9mvB,KAAKyoL,WAAaq+jB,KAClB9mvB,KAAKyoL,SAAWq+jB,GAChB9mvB,KAAKob,IAAIwC,eACT5d,KAAK2M,QAAQ8D,QAASlP,KACdulvB,GACA9mvB,KAAK2K,SAASyH,SAASpS,KAAK0I,QAAQyD,cAAe5K,IAGnDvB,KAAK2K,SAASqI,YAAYhT,KAAK0I,QAAQyD,cAAe5K,GAAtD,GAGJulvB,SAAiD/xuB,IAA/B/U,KAAK+mvB,sBACvB/mvB,KAAK2K,SAASiF,aAAa5P,KAAK0I,QAAQyD,cAAe,eAAgBnM,KAAK+mvB,sBAAsBtlvB,YAGlGzB,KAAK2K,SAAS2G,gBAAgBtR,KAAK0I,QAAQyD,cAAe,gBAG9DnM,KAAKsmvB,eAAel2uB,KAAK02uB,IAAzB,EAGX,CACDF,aAAa1G,IACT,MAAMl6uB,GA4Cd,SAASghvB,GAAqBhhvB,IAC1B,QAASA,GAAQs0E,KACpB;;;;;;;OA9CuB0sqB,CAAqBhnvB,KAAKqmvB,yBACtCrmvB,KAAKqmvB,wBAEJrmvB,KAAKqmvB,wBAAwBliB,QAAS,EAC3C,OAAQ78c,MAASA,GAAKshd,SAAUsX,GAAOz3jB,SAAS6+F,GAAKshd,QAAS5iuB,GACjE,CACD8gvB,iBACI,MAAMG,GAAkBjnvB,KAAK4mvB,aAAa5mvB,KAAKkgvB,QAC/C,OAAOlgvB,KAAKsnR,MAAQ2/d,GAAgBjnvB,KAAKsnR,OACrCtnR,KAAKomvB,cAAgBa,GAAgBjnvB,KAAKomvB,eAC1CpmvB,KAAKkqnB,MAAM1uiB,KAAKyrqB,KAAoBjnvB,KAAKwmvB,eAAehrqB,KAAKyrqB,GACpE,EAELd,GAAiBpjvB,UAAjB,4BAA6GojvB,IAloLbnjvB,MAkoL+Cm9uB,IAloL/Cn9uB,MAkoLkEA,OAloLlEA,MAkoL4FA,OAloL5FA,MAkoLqHA,OAloLrHA,MAkoLsJyivB,GAAtP,GAloLgGzivB,MAkoL6LijvB,GAA7R,KACAE,GAAiB7yuB,UAnoL+EtQ,MAmoLhG,MAAiGmjvB,GAAjG5yuB,mFAnoLgGvQ,MAmoLhGwT,GAA0ZivuB,GAA1Z,GAnoLgGzivB,MAmoLhGwT,GAAweyvuB,GAAxe,iBAnoLgGjjvB,MAmoLhGyT,GAnoLgGzT,WAmoLhGwQ,aAnoLgGxQ,MAmoLhGyT,GAnoLgGzT,WAmoLhGwQ,qQAnoLgGxQ,SAmrLhG,MAAMkkvB,IAaN,MAAMC,GACFC,QAAQvivB,GAAO2rB,IACX,OAAOA,KAAK/qB,QAAKu9N,MAAW,OAAMtoC,MAAG,OACxC,EAELysjB,GAAkBpkvB,UAAlB,4BAA8GokvB,GAA9G,EACAA,GAAkBlkvB,WAtsL8ED,MAssLhG,OAAkHmkvB,GAAlHjkvB,QAAkHikvB,GAAlH,qBAAiJ,SAcjJ,MAAME,GACFD,QAAQvivB,GAAO2rB,IACX,SAAOkqK,MAAG,KACb,EAEL2sjB,GAAatkvB,UAAb,4BAAyGskvB,GAAzG,EACAA,GAAapkvB,WA1tLmFD,MA0tLhG,OAA6GqkvB,GAA7GnkvB,QAA6GmkvB,GAA7G,qBAAuI,SAiBvI,MAAMC,GACFxnvB,YAAYogvB,GAAQl4F,GAAUnie,GAAU0hkB,GAAoBzqT,IACxD98b,KAAKkgvB,OAASA,GACdlgvB,KAAK6lL,SAAWA,GAChB7lL,KAAKunvB,mBAAqBA,GAC1BvnvB,KAAK88b,OAASA,EACjB,CACD0qT,kBACIxnvB,KAAK+5J,aACD/5J,KAAKkgvB,OAAOrqtB,OACPpwB,QAAK6P,MAAQmP,IAAMA,cAAamntB,KAArB,EAAqCr+e,MAAU,IAAMvtP,KAAKonvB,YACrEl7uB,UAAU,OACtB,CACDk7uB,UACI,OAAOpnvB,KAAKynvB,cAAcznvB,KAAK6lL,SAAU7lL,KAAKkgvB,OAAOngvB,OACxD,CAED8Q,cACQ7Q,KAAK+5J,cACL/5J,KAAK+5J,aAAa9oJ,aAEzB,CACDw2uB,cAAc5hkB,GAAU2sjB,IACpB,MAAMlsZ,GAAM,GACZ,UAAWzhV,MAAS2tuB,GAAQ,CACpB3tuB,GAAMqB,YAAcrB,GAAMg2qB,YAC1Bh2qB,GAAMg2qB,aACFH,OAA0B71qB,GAAMqB,UAAW2/K,GAAW,UAAShhL,GAAM4qB,SAE7E,MAAMi4tB,GAA0B7ivB,GAAMg2qB,WAAah1f,GAC7C8hkB,GAAsB9ivB,GAAM8tuB,iBAAmB+U,GAShD7ivB,GAAMy0e,eAAiBz0e,GAAMo1uB,oBAAmClluB,IAAlBlQ,GAAM+xuB,SACpD/xuB,GAAMwtuB,gBAAkBxtuB,GAAM83uB,iBAC/Br2Z,GAAItqU,KAAKhc,KAAK4nvB,cAAcF,GAAyB7ivB,MAEhDA,GAAM8/B,UAAY9/B,GAAMo1uB,gBAC7B3zZ,GAAItqU,KAAKhc,KAAKynvB,cAAcE,GAAsB9ivB,GAAM8/B,UAAY9/B,GAAMo1uB,eAEjF,CACD,SAAOz0uB,KAAK8gV,IAAK7gV,QAAKo8lB,QACzB,CACD+lJ,cAAc/hkB,GAAUhhL,IACpB,OAAO7E,KAAKunvB,mBAAmBH,QAAQvivB,GAAO,KAC1C,IAAIgjvB,GAEAA,GADAhjvB,GAAMy0e,mBAAkCvke,IAAlBlQ,GAAM+xuB,QACV52uB,KAAK88b,OAAOw8C,aAAazzT,GAAUhhL,KAGrDgjvB,EAAkBntjB,MAAG,MAEzB,MAAMotjB,GAAyBD,GAAgBpivB,QAAKC,MAAU3F,IAC3C,OAAXA,IAAW,EACJ26L,WAAG,IAEd71L,GAAMo1uB,cAAgBl6uB,GAAOyyuB,OAC7B3tuB,GAAM8tuB,gBAAkB5yuB,GAAO8lL,SAGxB7lL,KAAKynvB,cAAc1nvB,GAAO8lL,UAAYA,GAAU9lL,GAAOyyuB,WAElE,GAAI3tuB,GAAMwtuB,gBAAkBxtuB,GAAM83uB,iBAAkB,CAChD,MAAMoL,GAAiB/nvB,KAAK88b,OAAOu1S,cAAcxtuB,IACjD,SAAOW,KAAK,CAACsivB,GAAwBC,KAAiBtivB,QAAKo8lB,QAC9D,CAEG,OAAOimJ,IAGlB,EAELR,GAAgBvkvB,UAAhB,4BAA4GukvB,IAzzLZtkvB,MAyzL6Cm9uB,IAzzL7Cn9uB,MAyzLgEA,OAzzLhEA,MAyzLwFA,OAzzLxFA,MAyzL2HkkvB,IAzzL3HlkvB,MAyzL0Jy7uB,IAA1P,EACA6I,GAAgBrkvB,WA1zLgFD,MA0zLhG,OAAgHskvB,GAAhHpkvB,QAAgHokvB,GAAhH,qBAA6I;;;;;;;;AAa7I,MAAMU,GAAkB,IAAIpovB,MAAe,IAC3C,MAAMqovB,GACFnovB,YAAYogvB,GACYgI,GAAkBlivB,GAAU,IAChDhG,KAAKkgvB,OAASA,GACdlgvB,KAAKkovB,iBAAmBA,GACxBlovB,KAAKgG,QAAUA,GACfhG,KAAKmovB,OAAS,EACdnovB,KAAKoovB,WAAa,aAClBpovB,KAAKqovB,WAAa,EAClBrovB,KAAKs5J,MAAQ,GAEbtzJ,GAAQsivB,0BAA4BtivB,GAAQsivB,2BAA6B,WACzEtivB,GAAQuivB,gBAAkBvivB,GAAQuivB,iBAAmB,UACxD,CACDhqlB,OAImD,aAA3Cv+J,KAAKgG,QAAQsivB,2BACbtovB,KAAKkovB,iBAAiB//H,4BAA4B,UAEtDnonB,KAAKumvB,yBAA2BvmvB,KAAKwovB,qBACrCxovB,KAAKyovB,yBAA2BzovB,KAAK0ovB,qBACxC,CACDF,qBACI,OAAOxovB,KAAKkgvB,OAAOrqtB,OAAO3pB,UAAUuY,KAC5BA,cAAagntB,IAEbzruB,KAAKs5J,MAAMt5J,KAAKmovB,QAAUnovB,KAAKkovB,iBAAiBhhI,oBAChDlnnB,KAAKoovB,WAAa3juB,GAAEintB,kBACpB1ruB,KAAKqovB,WAAa5juB,GAAEkntB,cAAgBlntB,GAAEkntB,cAAckV,aAAe,GAE9Dp8tB,cAAamntB,KAClB5ruB,KAAKmovB,OAAS1juB,GAAEyD,GAChBloB,KAAK2ovB,oBAAoBlkuB,GAAGzkB,KAAKkgvB,OAAOwE,SAASjguB,GAAEontB,mBAAmB9se,UAAtE,EAGX,CACD2pf,sBACI,OAAO1ovB,KAAKkgvB,OAAOrqtB,OAAO3pB,UAAUuY,KAC1BA,cAAa22sB,KAGf32sB,GAAEke,SAC6C,QAA3C3iC,KAAKgG,QAAQsivB,0BACbtovB,KAAKkovB,iBAAiB9gI,iBAAiB,CAAC,EAAG,IAEK,YAA3CpnnB,KAAKgG,QAAQsivB,2BAClBtovB,KAAKkovB,iBAAiB9gI,iBAAiB3imB,GAAEke,UAKzCle,GAAEjD,QAA2C,YAAjCxhB,KAAKgG,QAAQuivB,gBACzBvovB,KAAKkovB,iBAAiB7gI,eAAe5imB,GAAEjD,QAES,aAA3CxhB,KAAKgG,QAAQsivB,2BAClBtovB,KAAKkovB,iBAAiB9gI,iBAAiB,CAAC,EAAG,IAA3C,EAIf,CACDuhI,oBAAoB9b,GAAarrtB,IAC7BxhB,KAAKkgvB,OAAOiB,aAAa,IAAI/lB,GAAOyR,GAAiC,aAApB7suB,KAAKoovB,WAA4BpovB,KAAKs5J,MAAMt5J,KAAKqovB,YAAc,KAAM7muB,IACzH,CAED3Q,cACQ7Q,KAAKumvB,0BACLvmvB,KAAKumvB,yBAAyBt1uB,cAE9BjR,KAAKyovB,0BACLzovB,KAAKyovB,yBAAyBx3uB,aAErC,EAELg3uB,GAAellvB,UAAf,aAn5LgGC,MAm5LhG,EACAilvB,GAAehlvB,WAp5LiFD,MAo5LhG,OAA+GilvB,GAA/G/kvB,QAA+G+kvB,GAA/G,YA6DA,SAASW,GAAU1I,IACf,OAAOA,GAAOuB,YAAY98qB,IAC7B,CAID,SAASkkrB,GAAc93Y,GAAM7qW,IACzB,MAAO,CAAE4ivB,WAAO/3Y,GAAM0nS,gBAAYvyoB,GACrC,CAgBD,SAAS6ivB,GAAcvW,IACnB,MAAO,CACH,CAAErsuB,QAASq4uB,GAAQl4uB,OAAO,EAAME,SAAUgsuB,IAEjD,CAsCD,SAASwW,KACL,MAAMnjkB,MAAWswF,OAAO+1W,OACxB,OAAQ+8H,KACJ,MAAMhniB,GAAMp8B,GAAS9lK,IAAI4hf,OACzB,GAAIsnP,KAA6BhniB,GAAI4/S,WAAW,GAC5C,OAEJ,MAAMq+O,GAASr6jB,GAAS9lK,IAAIoguB,IACtB+I,GAAgBrjkB,GAAS9lK,IAAIopuB,IACM,IAArCtjkB,GAAS9lK,IAAIqpuB,KACblJ,GAAOmE,oBAEXx+jB,GAAS9lK,IAAIspuB,GAAkB,KAAMlzH,iBAAuBqxH,kBAC5D3hkB,GAAS9lK,IAAIiouB,GAAiB,KAAM7xH,iBAAuB53d,OAC3D2hlB,GAAOiE,uBAAuBliiB,GAAIgxe,eAAe,IACjDi2D,GAAcjkvB,OACdikvB,GAAcpypB,UAAd,CAEP,CAMD,MAAMqypB,GAAiB,IAAIvpvB,MAA4D,GAAI,CACvFsD,QAAS,IACE,IAAImH,OAGb++uB,GAAqB,IAAIxpvB,MAAsD,GAAI,CAAEonnB,WAAY,OAAQ9jnB,QAAS,IAAM,IA2B9H,SAASomvB,KAmEL,OAAOT,GAAc,EAlEH,CACd,CAAE1ivB,QAASijvB,GAAoB5ivB,SAAU,GACzC,CACIL,QAAS4irB,MACTzirB,OAAO,EACPm3Z,KAAM,CAACyuN,OACP3wd,WAAasqB,KACT,MAAM0jkB,GAAsB1jkB,GAAS9lK,IAAIqulB,MAAsB7omB,QAAQyC,QAAQ,OAC/E,IAAIwhvB,IAAiB,EA0BrB,MAAO,IACID,GAAoBlhvB,KAAK,IACrB,IAAI9C,QAAQyC,KACf,MAAMk4uB,GAASr6jB,GAAS9lK,IAAIoguB,IACtB+I,GAAgBrjkB,GAAS9lK,IAAIopuB,KAvB/C,SAASM,GAAoBnvuB,IACVurK,GAAS9lK,IAAIoguB,IACrBtqtB,OACFpwB,QAAK6P,MAAQmP,IAAMA,cAAamntB,IAAiBnntB,cAAaqntB,IAC/DrntB,cAAauntB,KADD,EACmB3quB,MAAIojB,IAC/BA,cAAamntB,IAIGnntB,cAAaqntB,KACjB,IAAXrntB,GAAEuxG,MACY,IAAXvxG,GAAEuxG,OAEW,OATa,EAUlC1gH,MAAQsc,IAAsB,OAAXA,KAAb,EAA+BlH,MAAK,IACzCxe,UAAU,KACXoO,IAAM,EAEb,EAMWmvuB,CAAoB,KAGhBzhvB,IAAQ,GACRwhvB,IAAiB,IAErBtJ,GAAOgB,mBAAqB,KAIxBl5uB,IAAQ,GAEHwhvB,IACMN,GAAclhtB,UAId0yJ,WAAG,GAJiCwujB,IAOnDhJ,GAAOmE,mBAAP,GAxBD,IAgC1B,CA6FD,MAAMgF,GAAmB,IAAIzpvB,MAAoD;;;;;;;;AA6EjF,MAQM8pvB,GAAuB,IAAI9pvB,MAAgE,wBAK3F+pvB,GAAmB,CACrB78mB,MACA,CAAE3mI,QAAS2/tB,GAAez/tB,SAAU0/tB,IACpC,CAAE5/tB,QAASg6uB,GAAQ5klB,WAAYuklB,IAC/BtP,GACA,CAAErquB,QAAS2nuB,GAAgBvykB,WAAYqtlB,GAAWnrV,KAAM,CAAC0iV,KACzD1B,IAEJ,SAASmL,KACL,OAAO,IAAIl5D,MAAa,SAAUyvD,GACrC,CAsBD,MAAM0J,GACF/pvB,YAAYy7jB,IAAU,CAmBRx1jB,eAACysuB,GAAQzyuB,IACnB,MAAO,CACHkG,SAAU4jvB,GACV3jvB,UAAW,CACPyjvB,GAC6E,GAC7EZ,GAAcvW,IACd,CACIrsuB,QAASujvB,GACTnulB,WAAYuulB,GACZrsV,KAAM,CAAC,CAAC0iV,GAAQ,IAAI1pH,MAAY,IAAIO,SAExC,CAAE7wnB,QAASo4uB,GAAsB/3uB,SAAUzG,IAAkB,IAC7DA,IAAQgqvB,QAiEb,CAAE5jvB,QAASopmB,MAAkBlpmB,SAAU6pmB,OAKvC,CAAE/pmB,QAASopmB,MAAkBlpmB,SAAUmpmB,OArBvC,CACHrpmB,QAAS6hvB,GACTzslB,WAAY,KACR,MAAM2klB,MAAS/pe,OAAOgqe,IAChB+H,MAAmB/xe,OAAO2wW,OAC1B/mnB,MAASo2Q,OAAOooe,IACtB,OAAIx+uB,GAAOk7J,cACPitlB,GAAiBj1hB,UAAUlzN,GAAOk7J,cAE/B,IAAIgtlB,GAAe/H,GAAQgI,GAAkBnovB,GAA7C,GAxDHA,IAAQwnvB,oBAjIAA,GAiIoCxnvB,GAAOwnvB,mBA5HxDsB,GAAc,EAJH,CACd,CAAE1ivB,QAASkjvB,GAAkBnruB,YAAaopuB,IAC1C,CAAEnhvB,QAAS+gvB,GAAoBhpuB,YAAaqpuB,OA8HmC9uG,gBAAa,GACpF,CAAEtyoB,QAASuqrB,MAAcpqrB,OAAO,EAAMi1J,WAAYqulB,IAClD7pvB,IAAQskvB,kBAAoB2F,GAAyBjqvB,IAAU,GA8FpE,CAGH,CAAEoG,QAAS8jvB,GAAoB1ulB,WAAYytlB,IAC3C,CAAE7ivB,QAASyjrB,KAAwBtjrB,OAAO,EAAM4X,YAAa+ruB,OArOrE,IAAwB1C,EAuInB,CAiBcxhvB,gBAACysuB,IACZ,MAAO,CAAEvsuB,SAAU4jvB,GAAc3jvB,UAAW,CAAC6ivB,GAAcvW,KAC9D,EA6CL,SAASsX,GAAoB5J,IAKzB,MAAO,SACV,CAGD,SAAS8J,GAAyBjqvB,IAC9B,MAAO,CAC0B,aAA7BA,GAAOskvB,kBAjSJwE,GAAc,EAbH,CACd,CACI1ivB,QAAS4irB,MACTzirB,OAAO,EACPi1J,WAAY,KACR,MAAM2klB,MAAS/pe,OAAOgqe,IACtB,MAAO,KACHD,GAAOoE,6BAAP,CACH,GAGT,CAAEn+uB,QAASijvB,GAAoB5ivB,SAAU,KAmSiCiyoB,gBAAa,GAC1D,oBAA7B14oB,GAAOskvB,kBACHiF,KAAuC7wG,gBACvC,GAEX,CA3DDoxG,GAAa9mvB,UAAb,4BAAyG8mvB,IAp6MT7mvB,MAo6MuC0mvB,GAAvI,KACAG,GAAapjvB,UAr6MmFzD,MAq6MhG,MAA0G6mvB,KAC1GA,GAAanjvB,UAt6MmF1D,MAs6MhG,UAAkIivuB,MAiElI,MAAMgY,GAAqB,IAAIrqvB,MAAoD;;;;;;;;AAoBnE,IAAIinnB,MAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAZ,gCCx8NhB,6BACA,IACA,iBACA3+mB,WAIA,CAHA,MAAIyzB,IAEJ,YADAu7D,KAEA,CAEAjrC,QACAjkD,MAEAzC,8BAEA,CAEe,cACf,kBACA,WACA6U,YACA,kCACA,oBAEA,gBACA8vuB,0BACA,CAEA,gBACAA,2BACA,CAEA3qJ,UACA,EACA,CACA","names":["JWT_OPTIONS","InjectionToken","JwtHelperService","constructor","config","this","tokenGetter","urlBase64Decode","str","output","replace","length","Error","b64DecodeUnicode","b64decode","String","bs","buffer","bc","idx","charAt","fromCharCode","indexOf","decodeURIComponent","Array","prototype","map","call","c","charCodeAt","toString","slice","join","decodeToken","token","parts","split","decoded","JSON","parse","getTokenExpirationDate","hasOwnProperty","date","Date","setUTCSeconds","exp","isTokenExpired","offsetSeconds","valueOf","getAuthScheme","authScheme","request","ɵfac","i0","ɵprov","factory","JwtInterceptor","jwtHelper","document","standardPorts","headerName","allowedDomains","disallowedRoutes","throwNoTokenError","skipWhenExpired","isAllowedDomain","requestUrl","URL","url","location","origin","host","hostName","hostname","port","includes","findIndex","domain","RegExp","test","isDisallowedRoute","requestedUrl","route","parsedRoute","pathname","handleInterception","next","tokenIsExpired","clone","setHeaders","handle","intercept","Promise","from","pipe","mergeMap","asyncToken","DOCUMENT","JwtModule","parentModule","static","options","ngModule","providers","provide","HTTP_INTERCEPTORS","useClass","multi","jwtOptionsProvider","useValue","ɵmod","ɵinj","_r15","ctx_r14","ctx_r16","_r7","ctx_r6","ctx_r8","ctx_r9","ctx_r10","_r6","ctx_r5","ctx_r7","ctx_r3","_r9","packageMetadata","name","productName","productCodes","publishDate","version","licensingDocsUrl","resolvedPromise","resolve","isPresent","value","tick","f","then","isDocumentNode","container","nodeType","closest","element","selector","matches","Element","el","sel","msMatchesSelector","node","parentNode","SIZES","small","medium","large","ROUNDNESS","full","getStylingClasses","componentType","stylingOption","previousValue","newValue","toRemove","toAdd","getThemeColorClasses","prevFillMode","fillMode","KendoButtonService","buttonClicked","Subject","buttonClicked$","asObservable","click","button","ButtonDirective","renderer","service","localization","ngZone","toggleable","role","selectedChange","EventEmitter","isDisabled","isIcon","isIconClass","_size","_rounded","_fillMode","_themeColor","_focused","subs","Subscription","validatePackage","direction","rtl","add","changes","subscribe","nativeElement","togglable","selected","_selected","tabIndex","index","icon","iconSetter","classes","addIcon","updateIconNode","iconClass","iconClassName","imageUrl","addImgIcon","bind","removeImageNode","disabled","isDocumentAvailable","userAgent","desktopBrowser","detectDesktopBrowser","mobileOS","detectMobileOS","mozilla","browser","isFirefox","navigator","blur","setProperty","size","newSize","handleClasses","rounded","newRounded","newFillMode","themeColor","newThemeColor","handleThemeColor","isFocused","toggleClass","classButton","isToggleable","roleSetter","classDisabled","classActive","getDirection","onFocus","onBlur","primary","look","ngOnInit","isSpan","tagName","addTextSpan","hasAttribute","toggleAriaPressed","setAttribute","runOutsideAngular","listen","_onButtonClick","event","isSpaceOrEnter","keyCode","Keys","emit","ngOnChanges","change","isChanged","ngAfterViewInit","forEach","input","ngAfterViewChecked","setIconTextClasses","ngOnDestroy","imageNode","iconNode","iconSpanNode","unsubscribe","clearTimeout","deferTimeout","focus","attribute","removeAttribute","setSelected","changed","hasObservers","run","shouldSet","hasText","textContent","trim","createElement","appendChild","prependChild","classNames","span","addClass","childNodes","defer","firstChild","insertBefore","callback","setTimeout","insertIcon","removeChild","removeIconNode","hasIcon","className","removeClass","elem","removeFillMode","addFillMode","themeColorClass","i1","ɵdir","selectors","ctx","LocalizationService","L10N_PREFIX","PreventableEvent","prevented","preventDefault","isDefaultPrevented","tabindex","ButtonGroupComponent","selection","navigate","_tabIndex","currentTabIndex","wrapperClass","disabledClass","stretchedClass","width","getRole","isSelectionSingle","dir","ariaDisabled","wrapperWidth","wrapperTabIndex","undefined","keydown","navigateFocus","focusedIndex","buttons","toArray","current","filter","_current","i","focusout","relatedTarget","defocus","newSelectionValue","deactivate","ngAfterContentInit","first","last","ngAfterContentChecked","verifySettings","lastIndex","eventArgs","activate","isDevMode","ɵcmp","dirIndex","_t","ngContentSelectors","_c0","ButtonModule","ButtonGroupModule","CommonModule","FocusService","focused","resetFocus","FocusableDirective","focusService","elementRef","subscribeEvents","TemplateContextDirective","viewContainerRef","templateContext","context","insertedViewRef","remove","templateRef","createEmbeddedView","ListComponent","onItemClick","onItemBlur","sizeClass","getText","dataItem","textField","text","getIconClasses","onClick","i2","encapsulation","ButtonItemTemplateDirective","ListModule","KeyEvents","NavigationAction","keypress","keyup","Undefined","Open","Close","Enter","EnterPress","EnterUp","Tab","Esc","Navigate","NAVIGATION_CONFIG","NavigationService","open","close","enter","enterpress","enterup","tab","esc","useLeftRightArrows","process","args","keyEvent","action","isEnter","altKey","step","flipNavigation","start","min","max","end","toLowerCase","ListButton","navigationService","wrapperRef","_zone","cdr","_open","_disabled","_active","_popupSettings","animate","popupClass","listId","guid","_isFocused","wrapper","popupClasses","push","openState","togglePopupVisibility","emitItemClickHandler","focusWrapper","focusFirstTimeout","blurTimeout","subscribeListItemFocusEvent","subscribeComponentBlurredEvent","subscribeNavigationEvents","handleTab","fromEvent","wrapperContains","target","blurWrapper","enterHandler","focusFirstItem","merge","keyDownHandler","keyHandler","keyPressHandler","keyUpHandler","eventData","_data","_itemClick","focusButton","contains","_blur","markForCheck","Messages","ComponentMessages","t","LocalizedSplitButtonMessagesDirective","super","useExisting","forwardRef","NAVIGATION_SETTINGS_PROVIDER$2","SplitButtonComponent","zone","popupService","elRef","type","arrowButtonIcon","buttonClick","itemClick","activeArrow","buttonText","lockFocus","popupSubs","isOpen","toggle","popupSettings","settings","Object","assign","data","_toggle","active","componentTabIndex","widgetClasses","ariaLabel","message","replaceMessagePlaceholder","get","onButtonFocus","onArrowButtonClick","toggleButtonActiveState","enable","toggleArrowButtonActiveState","onButtonClick","onButtonBlur","updateButtonText","popupRef","popup","instance","newSettings","currentValue","popupAlign","popupElement","anchorAlign","align","horizontal","vertical","destroyPopup","innerText","appendTo","containerRef","createPopup","anchor","content","popupTemplate","popupAnchorViewportLeave","popupOpen","i3","_c3","_c4","ElementRef","_c5","_c6","ViewContainerRef","$localize","SplitButtonCustomMessagesComponent","override","decls","SplitButtonModule","PopupModule","NAVIGATION_SETTINGS_PROVIDER$1","DropDownButtonComponent","mousedown","mouseup","openPopup","handleFocus","onArrowKeyNavigate","onNavigationEnterUp","onNavigationOpen","onNavigationClose","_c10","DropDownButtonModule","ChipComponent","localizationService","removable","contentClick","hostClass","ariaChecked","hasIconClass","avatarClass","selectedClass","focusedClass","chip","attachElementEventHandlers","kendoIconClass","verifyIconSettings","customIconClass","chipAvatarClass","removeIconClass","removeIcon","onRemoveClick","e","sender","originalEvent","iconsToCheck","ChipListComponent","sizeValue","single","multiple","$event","isRemoveClicked","clickedChip","chips","find","removeEventArgs","removedChip","setSelection","dynamicRTLSubscription","selectedChips","reduce","acc","cur","concat","clearSelection","ChipModule","getAnchorAlign","fabAlign","getPopupAlign","DialItemTemplateDirective","FloatingActionButtonTemplateDirective","DialItemComponent","localisationService","item","title","label","itemTitle","indexAttr","iconClasses","hAlign","getTextDirectionClass","ltr","DialListComponent","subscriptions","detectChanges","bottomClass","topClass","NAVIGATION_SETTINGS_PROVIDER","SIZE_CLASSES","ROUNDED_CLASSES","FILLMODE_CLASS","DEFAULT_OFFSET","DEFAULT_THEME_COLOR","FloatingActionButtonComponent","builder","positionMode","dialItemAnimation","dialItems","dialItemClick","id","_align","_offset","x","y","animationEnd","initialSetup","fixedClass","absoluteClass","offset","offsetStyles","option","alignClass","toggleDial","hasDialItems","shouldOpen","openDial","closeDial","ariaExpanded","ariaHasPopup","clickHandler","toggleDialWithEvents","getAttribute","emitItemClick","focusHandler","blurHandler","inputValue","classesToRemove","classesToAdd","onEnterPressed","clickEventArgs","onNavigationEnterPress","focusedItem","isIconFab","setStyle","positionPopup","popupMouseDownListener","closePopup","isValidAnimation","playAnimation","take","animation","duration","dialItemTemplate","fabWidth","getBoundingClientRect","popupEl","querySelector","left","popupLeft","isEndAlign","leftValue","rtlLeftValue","style","hostElement","horizontalPosition","horizontalOffset","verticalPosition","verticalOffset","top","middle","bottom","center","playerFor","build","create","durationSettings","animationSettings","gap","openAnimation","isBottom","sequence","query","opacity","transform","stagger","optional","closeAnimation","player","play","onDone","destroy","animationDuration","animationGap","i4","i8","FloatingActionButtonModule","EventsModule","ButtonsModule","ARC","BLACK","BOTTOM","CENTER","CIRCLE","DATE","DEFAULT_FONT","FORMAT_REGEX","HEIGHT","INSIDE","LEFT","MAX_VALUE","Number","MIN_VALUE","NONE","OBJECT","OUTSIDE","RIGHT","ROUNDED_RECT","STRING","TOP","VALUE","WHITE","WIDTH","X","Y","isArray","classArray","SPACE_REGEX","alignPathToPixel","path","stroke","drawing","segments","round","translate","clockwise","angle1","angle2","isNumber","isNaN","isString","convertableToNumber","isFinite","isFunction","fn","deepExtendOne","destination","source","property","propInit","propValue","propType","getTime","destProp","deepExtend","arguments","isObject","styleValue","SIZE_STYLES_REGEX","isSizeField","field","elementStyles","styles","stylesArray","result","window","getComputedStyle","parseFloat","getSpacing","defaultSpacing","spacing","right","compile","template","TemplateService","userImplementation","getTemplate","FIELD_REGEX","getterCache","getter","fields","match","indexAccessor","obj","grep","array","hasClasses","names","HashMap","_map","_key","set","inArray","interpolateValue","progress","TRIGGER","InstanceObserver","observer","handlers","handlerMap","trigger","callObserver","fnName","apply","requiresHandlers","support","mousewheelDelta","delta","wheelDelta","webkit","Math","devicePixelRatio","detail","ceil","floor","eventCoordinates","defined","pageX","clientX","pageY","clientY","eventElement","touch","initialTouch","now","promiseAll","promises","all","bindEvents","events","eventName","eventNames","addEventListener","elementOffset","box","documentElement","pageYOffset","scrollTop","clientTop","pageXOffset","scrollLeft","clientLeft","getPixels","elementSize","parseInt","height","unbindEvents","removeEventListener","elementPadding","paddingLeft","paddingTop","matrixRegexp","transformMatrix","Matrix","parseMatrix","matrixString","members","elementScale","matrix","parent","parentElement","parentMatrix","multiplyCopy","b","logToConsole","console","log","append","drawing_utils_append","drawing_utils_bindEvents","drawing_utils_defined","deg","drawing_utils_deg","drawing_utils_elementOffset","drawing_utils_elementSize","drawing_utils_eventCoordinates","drawing_utils_eventElement","hashKey","drawing_utils_last","limitValue","objectKey","rad","drawing_utils_rad","drawing_utils_round","drawing_utils_unbindEvents","valueOrDefault","FontLoader","fonts","state","depth","MAX_DEPTH","keys","key","fetchFonts","font","load","loadFonts","setDefaultOptions","proto","sparseArrayLimits","arr","predicate","geometry","unit","autoTextColor","color","Color","isDark","DELETED","LegacySet","values","_index","_values","has","delete","clear","SetWrapper","_set","Set","createHashSet","supported","supportsSet","defaultErrorHandler","error","common_keys","autoMajorUnit","diff","DEFAULT_PRECISION","abs","scale","pow","relativeValue","scaleMultiplier","Point","Class","equals","point","rotate","degrees","theta","cosT","cos","sinT","sin","cx","cy","multiply","a","distanceTo","dx","dy","sqrt","angle","radius","radians","Box","x1","y1","x2","y2","move","wrap","targetBox","wrapPoint","arrayPoint","snapTo","axis","alignTo","targetCenter","shrink","dw","dh","expand","pad","padding","unpad","containsPoint","points","getHash","overlaps","rotation","r1","rotatePoint","r2","r3","r4","toRect","geom","hasSize","alignment","c1","c2","sizeFunc","Ring","innerRadius","startAngle","setRadius","newRadius","radianAngle","ax","ay","adjacentBox","distance","sector","midAndle","midPoint","hw","hh","sa","ca","p","endAngle","vector","startPoint","startVector","endPoint","endVector","dist","getBBox","allAngles","sort","numericComparer","startAngleIndex","endAngleIndex","angles","ShapeBuilder","createRing","arc","radiusX","radiusY","draw","innerEnd","pointAt","lineTo","swing","position","PI","linear","easeOutElastic","time","s","asin","animationFrameProxy","wnd","animationFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","AnimationFactory","_items","register","items","Animation","_options","easing","setup","delay","easingFunctions","finish","abort","loop","_stopped","wallTime","easingPosition","ChartElement","children","initUserOptions","reflow","currentChild","getRoot","getSender","getService","chartService","translateChildren","childrenCount","renderVisual","visible","createVisual","addVisual","renderChildren","createAnimation","renderComplete","visual","chartElement","appendVisual","zIndex","childVisual","noclip","clipRoot","stackRoot","stackVisual","isStackRoot","visuals","pos","sibling","insert","traverse","child","matched","hasHighlight","highlight","createHighlight","toggleHighlight","show","customVisual","_highlight","highlightOptions","fill","highlightVisualArgs","series","category","percentage","runningTotal","total","createGradientOverlay","gradientOptions","overlay","createGradient","closed","elements","supportsPointInactiveOpacity","BoxElement","margin","shrinkToFit","hasSetSize","borderWidth","border","reflowPaddingBox","vAlign","paddingBox","contentBox","hasBox","background","visualStyle","dashType","cursor","ShapeElement","pointData","getElement","halfWidth","halfHeight","moveTo","rect","borderRadius","setCornerRadius","visualOptions","RADIAL","core_gradients","glass","stops","sharpBevel","roundedBevel","roundedGlass","supportVML","sharpGlass","bubbleShadow","boxDiff","r","d","g","h","boxes","RootElement","rootOptions","gradients","currentBox","createBackground","hashCode","gradient","GRADIENTS","drawingGradient","innerRadialStops","usedSpace","currentStops","currentStop","cleanGradients","_observers","FloatElement","_initDirection","groupAxis","elementAxis","groupSizeField","elementSizeField","groupSpacing","elementSpacing","vSpacing","reflowChildren","groups","groupsSize","maxGroupElementsSize","groupOptions","groupsCount","groupsStart","alignStart","groupStart","groupIdx","group","groupElements","elementStart","groupElementsCount","groupElementStart","groupSize","elementBox","maxSize","groupElementsSize","DrawingText","Text","baseline","topLeft","rectToBox","bottomRight","ROWS_SPLIT_REGEX","TextBox","_initContainer","_autoReflow","rows","floatElement","textOptions","rowIdx","visualFn","_boxReflow","visualBox","visualContext","clippedBBox","normalBox","rotatedBox","rotationTransform","getDefaultVisual","boxCenter","Title","defaultOptions","titleOptions","AxisLabel","format","culture","widget","alignRotation","bbox","rotationMatrix","rotationOrigin","alignAxis","distanceAxis","axisAnchor","transformCopy","topRight","bottomLeft","j","distanceLeft","distanceRight","alignEnd","alignCenter","Note","render","hide","childAlias","noteTemplate","auto","aliasFor","marker","wrapperBox","line","lineStart","linePoints","createLine","defaultVisual","over","out","parseDate","firstDay","IntlService","implementation","FORMAT_REPLACE_REGEX","FormatService","intlService","_intlService","intl","formatString","localeAuto","locale","placeholderFormat","substring","ChartService","chart","Boolean","notify","isPannable","pannable","lock","DomEventsBuilder","createAxisTick","tickOptions","tickX","tickY","createAxisGridLine","gridLine","lineEnd","Axis","labels","majorTickSize","minorTickSize","minorTicks","minorTickType","majorTicks","majorTickType","initFields","_deferLabels","createLabels","createTitle","createNotes","labelsRange","skip","labelsCount","normalizeLabelRotation","labelOptions","clearLabels","autoRotateLabels","range","labelContext","count","createAxisLabel","clearTitle","lineBox","mirror","axisX","axisY","lineWidth","visualSize","notes","parseNoteValue","note","reverse","createPlotBands","gridLinesVisual","gridLines","_gridLines","createTicks","lineGroup","majorUnit","tickLineOptions","tickPositions","skipUnit","getMajorTickPositions","getMinorTickPositions","minorUnit","_alignLines","_lineGroup","getActualTickSize","tickSize","_backgroundPath","plotBands","plotArea","_plotbandGroup","altAxis","pane","axes","slotX","slotY","getSlot","to","createPlotBandLabel","bandRect","textbox","labelTemplate","createGridLines","minorGridLines","majorGridLines","axisLineVisible","linePos","lineOptions","sizeFn","titleSize","space","boxSize","maxLabelSize","labelSize","arrangeTitle","arrangeLabels","arrangeNotes","getLabelsTickPositions","labelTickIndex","labelsBetweenTicks","tickIx","firstTickPosition","nextTickPosition","positionStart","positionEnd","positionLabel","labelOffset","labelBox","labelX","labelY","autoRotateLabelAngle","slotWidth","limit","labelAngle","slot","shouldRenderNote","noteSlot","secondAxis","axisLabelText","tmpl","defaultText","maxLabelOffset","lastLabel","offsetField","startPosition","endPosition","maxStartOffset","maxEndOffset","startTick","endTick","limitRange","rangeSize","minValue","maxValue","valueRange","seriesMin","seriesMax","lineDir","lineInfo","lineSize","axisDir","axisOrigin","pointOffset","scaleToDelta","rawScale","MAX_SCALE","justified","prepareUserOptions","axisCrossingValue","MILLISECONDS","SECONDS","MINUTES","HOURS","DAYS","WEEKS","MONTHS","YEARS","TIME_PER_MINUTE","TIME_PER_HOUR","TIME_PER_DAY","TIME_PER_WEEK","TIME_PER_MONTH","TIME_PER_YEAR","TIME_PER_UNIT","years","months","weeks","days","hours","minutes","seconds","milliseconds","absoluteDateDiff","getTimezoneOffset","addTicks","ticks","toDate","adjustDST","getHours","setHours","addDuration","dateValue","weekStartDay","getFullYear","getMonth","startOfWeek","daysToSubtract","day","getDay","getDate","addHours","roundedDate","setMinutes","tzDiff","getSeconds","setSeconds","getMilliseconds","setMilliseconds","floorDate","ceilDate","dateComparer","dateDiff","toTime","dateEquals","timeIndex","baseUnit","dateIndex","baseUnitStep","startDate","parseDates","dates","CategoryAxis","_ticks","categoriesHash","copy","categories","srcCategories","definedMin","definedMax","rangeIndices","totalRange","totalRangeIndices","roundedRange","_seriesMax","scaleOptions","hideOutOfRangeLabels","valueAxis","firstLabel","getTicks","labelTicks","tickIndices","stepSize","indices","getTickPositions","positions","cache","hash","_hash","hasMinor","filterOutOfRangePositions","inRange","startIndex","endIndex","slotBox","singleSlot","p1","p2","limitSlot","limittedSlot","categoryIndex","pointCategoryIndex","startValue","getCategory","totalIndex","categoryAt","categoriesCount","translateRange","scaleRange","minDelta","maxDelta","zoomRange","totalMin","totalMax","dataItems","hideOutOfRangeNotes","pan","pointsRange","diffStart","diffEnd","rangeMin","rangeMax","_categoriesMap","currentRangeIndices","totalCount","mapCategories","DateLabelFormats","BASE_UNITS","FIT","categoryRange","_range","EmptyDateRange","displayIndices","displayRange","valueIndex","valuesCount","dateAt","DateRange","roundToBaseUnit","lowerEnd","roundToTotalStep","expandEnd","justifyEnd","valueStart","displayStart","valueEnd","displayEnd","_indices","minIdx","maxIdx","upper","roundedStep","autoBaseUnit","startUnit","startStep","categoryLimits","autoBaseUnitSteps","maxDateGroups","autoUnit","unitSteps","nextStep","autoUnitIx","units","totalUnits","shift","initUnit","defaultBaseUnit","lastCategory","minDiff","categoryIx","DateCategoryAxis","dataRange","_parsed","panning","userSetBaseUnit","userSetBaseUnitStep","maxDivisions","divisionOptions","dataRangeOptions","divisionRange","rangeLabels","splice","isEmpty","totalLimits","panRange","datesRange","indicesRange","fit","maxDiff","rangeDiff","autoBaseUnitStep","baseUnitIndex","stepIndex","createRangeLabels","arrangeRangeLabels","autoRotateRangeLabels","hideOverlappingLabels","clip","rangeLabel","firstRangeLabel","lastRangeLabel","unitFormat","dateFormats","createLabel","rotateLabel","dateRange","limitCoordinate","MIN_VALUE_RANGE","NumericAxis","autoOptions","autoAxisOptions","narrowRange","autoMin","autoAxisMin","narrow","axisMin","autoMax","autoAxisMax","axisMax","roundToMajorUnit","remainderClose","totalOptions","totalAxisOptions","axisOptions","userOptions","userSetMin","userSetMax","clearNullValues","userSetLimits","totalMajorUnit","getDivisions","stepValue","divisions","skipStep","getValue","endValue","isValidRange","divisor","ratio","remainder","DateValueAxis","axisCrossingValues","applyDefaults","timeUnits","baseUnitTime","actualUnits","unitsToAdd","head","tail","limittedRange","LogarithmicAxis","base","logMaxRemainder","initRange","throwNegativeValuesError","logMin","logMax","floorMax","traverseMajorTicksPositions","tickPosition","traverseMinorTicksPositions","power","minorOptions","_minorIntervalOptions","minorStep","info","grid_lines_mixin","majorAngles","minorAngles","skipMajor","majorGridLineAngles","renderMajorGridLines","minorGridLineAngles","renderMinorGridLines","renderGridLines","radiusCallback","circle","gridLineAngles","skipAngles","divs","intervals","altAxisVisible","alpha","intervalAngle","RadarCategoryAxis","reflowLabels","measureBox","skipOption","stepOption","divCount","divAngle","majorIntervals","minorIntervals","interval","minorAngle","minorRadius","band","plotBandSlot","ring","totalDivs","slotAngle","fromValue","slotStart","GridLinesMixin","PolarAxis","instanceOptions","tmp","atan2","RadarNumericAxisMixin","polarAxis","bandStyle","shape","plotBandPoints","innerPoints","outerPoints","innerCircle","outerCircle","radarMajorGridLinePositions","radarMinorGridLinePositions","tickRadius","angleIx","angularDistance","gamma","beta","axisType","RadarNumericAxis","minorSkipStep","RadarLogarithmicAxis","CurveProcessor","dataPoints","removeDuplicates","initialControlPoint","lastControlPoint","p0","pop","tangent","controlOut","firstControlPoint","secondControlPoint","controlPoints","cp0","cp1","invertAxis","lineFunction","calculateFunction","isLine","xField","yField","restrict","switchOrientation","monotonic","isMonotonicByField","sign","numberSign","oldXField","restrictControlPoint","cp","p3","t1","t2","xValue","yValue","controlPoint","ChartAxis","_axis","findAxisByName","ChartPane","chartsVisual","chartContainer","_pane","ChartPlotArea","_plotArea","backgroundVisual","_bgVisual","countNumbers","Aggregates","sum","sumOrNull","avg","aggregates","getField","row","SeriesBinder","_valueFields","_otherFields","_nullValue","_undefinedValue","seriesTypes","valueFields","otherFields","_makeValue","canonicalFields","bindPoint","pointIx","fieldData","_bindFromArray","srcValueFields","sourceFields","srcPointFields","_bindFromObject","initialValue","object","srcFields","fieldName","srcFieldName","sourceFieldName","percentRegex","standardDeviationRegex","ErrorRangeCalculator","errorValue","initGlobalRanges","deviationMatch","exec","valueGetter","createValueGetter","average","getAverage","deviation","getStandardDeviation","errorRange","low","high","globalRange","standardError","getStandardError","binder","getErrorRange","pointValue","percentValue","isSample","squareDifferenceSum","INITIAL_ANIMATION_DURATION","FADEIN","START_SCALE","msie","ERROR_LOW_FIELD","ERROR_HIGH_FIELD","ZERO","INTERPOLATE","ABOVE","BELOW","SMOOTH","STEP","AREA","BAR","BOX_PLOT","BUBBLE","BULLET","CANDLESTICK","COLUMN","DONUT","FUNNEL","HEATMAP","HORIZONTAL_WATERFALL","LINE","OHLC","PIE","POLAR_AREA","POLAR_LINE","POLAR_SCATTER","RADAR_AREA","RADAR_COLUMN","RADAR_LINE","RANGE_AREA","RANGE_BAR","RANGE_COLUMN","SCATTER","SCATTER_LINE","VERTICAL_AREA","VERTICAL_BOX_PLOT","VERTICAL_BULLET","VERTICAL_LINE","VERTICAL_RANGE_AREA","WATERFALL","EQUALLY_SPACED_SERIES","SERIES_HOVER","PLOT_AREA_HOVER","PLOT_AREA_LEAVE","DRAG","DRAG_END","DRAG_START","ZOOM_START","ZOOM","ZOOM_END","SELECT_START","SELECT","SELECT_END","SHOW_TOOLTIP","HIDE_TOOLTIP","LOGARITHMIC","CATEGORY","INSIDE_END","OUTSIDE_END","MOUSEWHEEL","ErrorBarBase","isVertical","endCaps","valueBox","getAxis","centerBox","capsWidth","getCapsWidth","capValue","capStart","capEnd","createDefaultVisual","CategoricalErrorBar","seriesValueAxis","evalOptions","dryRun","defaults","needsEval","excluded","seriesCount","CategoricalChart","categoryAxis","seriesCategoryAxis","valueAxisRanges","categoryPoints","seriesPoints","seriesOptions","_evalSeries","traverseDataPoints","addValue","pointOptions","seriesIx","pointType","invertAxes","plotValue","isStacked100","otherValues","categorySum","other","stack","otherStack","plotRange","isStacked","positive","prevValue","isStackedBar","otherValue","categoryAxisCrossingValue","stackLimits","axisName","stackName","pIx","updateStackRange","chartSeries","limitsCache","limits","errorTotals","negative","addErrorBar","errorBars","lowValue","highValue","seriesErrorRanges","addPointErrorBar","stackedErrorRange","updateRange","errorBar","createPoint","owner","noteText","evalPointOptions","_defaults","doEval","axisRange","namedValueAxes","categorySlots","chartPoints","currentSeries","categorySlot","valueSlot","pointSlot","aboveAxis","stackValue","reflowPoint","reflowCategories","limitPoints","limitPoint","axisIndex","_outOfRangeCallback","currentCategory","_bindPoint","outOfRangePoint","_bindCache","bindCache","formatPointValue","point_events_mixin","hover","note_mixin","createNote","LinePoint","tooltipTracking","markers","_rendered","createMarker","labelText","formatValue","markerBorder","brightness","toHex","markerBox","_childBox","childBox","reflowLabel","noteTargetBox","defaultColor","shadow","highlightVisual","halfSize","tooltipAnchor","clipBox","horizontalAlign","verticalAlign","overlapsBox","unclipElements","PointEventsMixin","NoteMixin","LineSegment","toGeometryPoints","segmentVisual","coords","getNearestPoint","StepLineMixin","calculateStepPoints","stepAxis","stepDir","previousPoint","toGeometryPoint","stepPoint","lintPoint","StepLineSegment","SplineSegment","curve","line_chart_mixin","renderSegments","lastSegment","_segments","sortedPoints","sortPoints","pointCount","seriesMissingValues","createSegment","_addSegment","unshift","segment","missingValues","allPoints","nearestPoint","nearestPointDistance","pointDistance","ClipAnimation","_setEnd","suspend","setX","resume","anyHasZIndex","root","transitions","clipPath","_setChildrenAnimation","animationPoints","LineChart","LineChartMixin","ClipAnimationMixin","AreaSegment","prevSegment","stackPoints","createFill","createStroke","lineCap","strokeSegments","_strokeSegments","createStrokeSegments","segmentsFromPoints","stackSegments","createStackSegments","hasStackSegment","fillSegments","hasStackSegments","fillToAxes","fillPath","crossingValue","endSlot","firstPoint","lastPoint","StepAreaSegment","SplineAreaSegment","curveProcessor","controlIn","AreaChart","previousSegment","_gapStackPoints","_stackPoints","stackPoint","startIdx","endIdx","_outOfRangeMinPoint","currentSeriesIx","_previousSegmentPoint","gapStackPoint","_createGapStackPoint","segmentIx","seriesIdx","AxisGroupRangeTracker","axisRanges","update","chartAxisRanges","chartRange","reset","BarLabel","textBox","alignToClipBox","parentBox","hasGradientOverlay","Bar","rectVisual","createRect","strokeOpacity","getBorderColor","lineJoin","baseColor","_brightness","borderColor","forEachReverse","ClusterLayout","slots","slotSize","StackWrap","positionAxis","BarChart","clusterType","stackType","negativeColor","cluster","getStackWrap","stackGroup","wraps","stackWrap","_stackGroup","zeroSlot","stackAxis","childrenLength","_setAnimationOptions","pointVisual","Candlestick","ocSlot","lhSlot","realBody","mid","lines","reflowNote","_mainVisual","mainVisual","createOverlay","createBody","createLines","body","drawLines","lineStyle","normalColor","tooltip","areNumbers","CandlestickChart","hasValue","splitValue","downColor","BoxPlot","whiskerSlot","boxSlot","q1","q3","reflowBoxSlot","lower","reflowWhiskerSlot","medianSlot","median","mean","meanSlot","meanPoints","calcMeanPoints","whiskerPoints","calcWhiskerPoints","medianPoints","calcMedianPoints","renderOutliers","outliers","outerFence","outlierValue","extremes","markersBorder","reflowOutliers","whiskers","VerticalBoxPlot","BoxPlotChart","filterOutliers","ScatterErrorBar","seriesAxes","ScatterChart","_initFields","xAxisRanges","yAxisRanges","valueErrorField","lowField","highField","createMissingValue","xAxis","xAxisName","yAxis","yAxisName","xAxisRange","yAxisRange","namedXAxes","namedYAxes","Bubble","highlightGroup","BubbleChart","_maxSize","negativeValues","updateBubblesSize","pointsCount","animationOptions","minR","minSize","maxR","minArea","areaRatio","area","Target","Bullet","targetValueSlot","targetSlotX","targetSlotY","targetSlot","bodyVisual","BulletChart","wrapData","seriesItem","bulletOptions","bullet","BaseTooltip","getStyle","pointColor","backgroundColor","paddingBottom","paddingRight","tooltipOptions","CrosshairTooltip","crosshair","formatService","initAxisName","showAt","stickyMode","formattedValue","getAnchor","Crosshair","moveLine","getBox","dim","axisLineBox","currentAxis","ChartContainer","shouldClip","_clipBox","chartsBox","clipRect","unclipLabels","charts","Pane","paneID","ID","appendAxis","appendAxisAt","appendChart","empty","removeAxis","removeChart","allAxes","vGridLines","hGridLines","refresh","notifyRender","axisValueField","paneIndex","appendIfNotNull","segmentVisible","pointVisibility","bindSegments","equalsIgnoreCase","filterSeriesByType","types","getDateField","isDateAxis","sampleCategory","dateCategory","singleItemOrArray","AREA_REGEX","findNext","hasItem","pointHasValue","outPoint","createOutOfRangePoints","hasMinPoint","hasMaxPoint","minPoint","maxPoint","_outOfRangeMaxPoint","PlotAreaBase","initSeries","legend","crosshairs","originalOptions","createPanes","createCrosshairs","paneDefaults","paneOptions","panes","panesLength","currentPane","crosshairOptions","currentCrosshair","removeCrosshairs","hideCrosshairs","findPane","matchingPane","findPointPane","axisToRemove","filteredAxes","chartToRemove","filteredCharts","addToLegend","inactiveItems","inactiveItemsLabels","seriesVisible","visibleInLegend","itemLabelOptions","markerColor","groupAxes","xAxes","yAxes","paneIx","paneAxes","axisIx","any","groupSeriesByPane","seriesByPane","seriesPaneName","filterVisibleSeries","reflowPanes","detachLabels","reflowAxes","reflowCharts","redraw","panesArray","crossingAxes","crossingValues","valuesToAdd","defaultValue","alignAxisTo","targetAxis","targetCrossingValue","slotEdge","targetEdge","axisBox","alignAxes","xAnchor","yAnchor","xAnchorCrossings","yAnchorCrossings","leftAnchors","rightAnchors","topAnchors","bottomAnchors","paneId","paneAnchor","anchorCrossings","_overlap","_mirrored","shrinkAxisWidth","axisGroupBox","overflowX","shrinkAxisHeight","shrinked","overflowY","fitAxes","offsetX","paneBox","offsetY","reflowPaneAxes","autoRotateAxisLabels","groupedAxes","allPaneAxes","rotated","chartPane","remainingHeight","autoHeightPanes","percents","backgroundBox","axesCount","axisA","axisB","chartsBoxes","addBackgroundPaths","multipath","paths","backgroundContainsPoint","isTransparent","bg","pointsByCategoryIndex","pointsBySeriesIndex","seriesIndex","filterPoints","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxisCount","labelAxis","createLabelAxis","onAxis","edge","isSingleAxis","some","plotarea_events_mixin","_dispatchEvent","SeriesAggregator","defaultAggregates","seriesFields","_seriesFields","rootAggregate","aggregate","_series","_binder","fieldAggregate","canonicalName","aggregatePoints","srcPoints","_bindPoints","firstDataItem","srcValues","_bindField","setValue","parentObj","DefaultAggregates","seriesType","RangeBar","fromOptions","toOptions","labelFrom","_createLabel","labelTo","RangeBarChart","plotLimits","RangeLinePoint","RangeAreaPoint","initLabelsFormat","fromPoint","toPoint","copyFields","fromBox","toBox","positionLabels","fromLabelPosition","toLabelPosition","RangeAreaSegment","toPoints","fromSegments","fromPoints","toPath","fromPath","SplineRangeAreaSegment","createCurveSegments","StepRangeAreaSegment","RangeAreaChart","segmentType","fromSlot","toSlot","OHLCPoint","oPoints","cPoints","lhPoints","oSlot","cSlot","OHLCChart","WaterfallSegment","WaterfallChart","createSegments","totalCategories","summary","prevPoint","AREA_SERIES","OUT_OF_RANGE_SERIES","CategoricalPlotArea","namedCategoryAxes","valueAxisRangeTracker","stack100","createCategoryAxes","aggregateCategories","createCategoryAxesLabels","createCharts","createValueAxes","paneSeries","visibleSeries","groupSeriesByCategoryAxis","groupIx","createChartGroup","createAreaChart","createRangeAreaChart","createBarChart","createRangeBarChart","createBulletChart","createCandlestickChart","createBoxPlotChart","createOHLCChart","createWaterfallChart","createLineChart","srcSeries","processedSeries","_currentPointsCache","_seriesPointsCache","axisPane","categoryField","aggregateSeries","filterSeries","dataLength","outOfRangePoints","clearSeriesPointsCache","seriesSourcePoints","dateAxis","srcData","getFn","aggregator","categoryItem","categoryIdx","categoriesToAdd","defaultPaneName","stackableChartOptions","firstSeries","categoryAxes","unique","axisSeries","groupSeries","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","rangeAreaChart","waterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","centeredSeries","seriesAxis","aggregatedAxis","definitions","isJustified","primaryAxis","tracker","defaultRange","baseOptions","defaultAxisRange","eventType","_eventCoordinates","pointPane","updateAxisOptions","targetOptions","PlotAreaEventsMixin","Observable","_events","one","getArray","handlersIsFunction","handler","original","unbind","_defaultPrevented","Surface","_kendoExportVisual","exportVisual","_click","_handler","_mouseenter","_mouseleave","_mousemove","_visual","Group","_enableTracking","eventTarget","domNode","_kendoNode","srcElement","getSize","currentSize","setSize","_resize","resize","force","suspendTracking","_suspendedTracking","resumeTracking","_elementOffset","_surfacePoint","coord","inverseTransform","invert","BaseNode","observe","removeObserver","addObserver","insertAt","removeSelf","invalidate","geometryChange","optionsChange","childrenChange","renderAttr","renderAllAttr","attrs","renderStyle","SVG_NS","renderSVG","svg","innerHTML","testFragment","testContainer","hasParser","DOMParser","namespaceURI","chartDoc","parseFromString","importedDoc","adoptNode","TRANSFORM","DefinitionMap","isDefinition","Node","clearDefinitions","childNode","NODE_MAP","createDefinitions","attachTo","domElement","setElement","nodes","childElement","css","updateDefinition","attr","removeAttr","allAttr","allCss","mapTransform","renderTransform","transformChange","mapStyle","renderOpacity","renderId","hasDefinitions","definition","definitionChange","refUrl","renderDefinitions","mapDefinitions","skipBaseHref","baseHref","baseUrl","getElementsByTagName","href","hashIndex","GradientStopNode","renderOffset","GradientNode","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","userSpace","LinearGradientNode","RadialGradientNode","ClipNode","DefinitionNode","definitionMap","addDefinitions","removeDefinitions","createDefinition","LinearGradient","RadialGradient","addDefinition","mapItem","removeDefinition","RootNode","defs","firstElementChild","DASH_ARRAYS","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","SOLID","ATTRIBUTE_MAP","PathNode","renderData","mapFill","mapStroke","printPath","currentType","printPoints","segmentStart","segmentEnd","renderLinecap","renderDashType","renderStroke","dashArray","renderFill","ArcNode","CircleNode","GroupNode","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","htmlEncode","ImageNode","mapPosition","mapSource","tl","renderPosition","encode","src","renderSource","MultiPathNode","RectNode","cornerRadius","rx","ry","ENTITY_REGEX","decodeEntities","_element","TextNode","measure","setY","renderContent","normalizeText","renderTextAnchor","BaseSurface","_root","_template","_rootElement","alignToScreen","ctm","getScreenCTM","mouseover","mouseout","mousemove","viewBox","canvas_node_map","renderPath","prevOut","bezierCurveTo","closePath","initClip","clearClip","setClip","beginPath","setTransform","loadElements","cors","setOpacity","globalAlpha","opactity","traversable","renderTo","save","restore","throttle","timeout","lastExecTime","throttled","elapsed","cancel","canvas","getContext","invalidateHandler","_invalidate","_rescale","_devicePixelRatio","fixedScale","clearRect","QuadRoot","shapes","_add","_quadNode","pointShapes","QuadNode","inBounds","nodeRect","nodeBottomRight","inserted","_initChildren","Rect","ROOT_SIZE","ShapesQuadTree","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","zIndexComparer","levelWeight","parents","_zIndex","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","SurfaceCursor","surface","_resetCursor","_shapeCursor","_defaultCursor","_getCursor","_setCursor","renderPoints","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","rawBBox","createLinearGradient","createRadialGradient","addGradientStops","stop","parseColor","addColorStop","toCssRgba","strokeStyle","mozDash","webkitLineDash","onLoad","onError","loading","createPromise","img","Image","crossOrigin","complete","onload","onerror","drawImage","reject","Path","textAlign","fillText","strokeText","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","image","rootElement","loadingStates","promise","resolveDataURL","toDataURL","currentShape","_currentShape","hasDocument","SurfaceFactory","hasFeature","SVGSurface","CanvasSurface","preferred","Highlight","_points","arrayPoints","togglePointHighlight","toggleHandler","isHighlighted","acceptKey","mouseKey","ctrlKey","shiftKey","toChartAxisRanges","ranges","Pannable","_panAxes","updatedAxes","ZoomSelection","marquee","_marquee","marqueeColor","removeElement","setStyles","zoomPane","_zoomPane","_zoomPaneClipBox","_selectionPosition","selectionPosition","_updateAxisRanges","zoom","startLocation","MousewheelZoom","rate","updateRanges","translateToPoint","transofrm","createTransform","sizeField","alignStartReverse","DEFAULT_OPTIONS","alignContent","justifyContent","alignItems","orientation","lineSpacing","revers","Layout","_rect","_fieldMap","_initMap","fieldMap","groupsSizeField","groupsAxis","justifyAlign","_initGroups","groupOrigin","elementOrigin","Size","groupBox","arrangeElements","bboxes","scaledStart","newStart","_newGroup","addGroup","_addToGroup","LegendLayout","legendItem","LegendItem","createContainer","markerOptions","eventSink","_itemOverlay","_legendItemHover","pointIndex","_unsetActivePoint","HORIZONTAL","CUSTOM","Legend","createContainers","createLegendTitle","createItems","userAlign","hasTitle","itemsContainer","innerElement","hasItems","legendBox","containerCustomReflow","containerReflow","alignTarget","containerBox","createTitleLayout","appendTitleLayoutContent","layout","PlotAreaFactory","_registry","registry","entry","createDiv","closestHandle","Selection","_dateAxis","initOptions","offsetHeight","createElements","onPane","leftMask","rightMask","leftHandle","rightHandle","selectionStyles","leftHandleHeight","rightHandleHeight","borderLeftWidth","borderRightWidth","cssText","mousewheel","_mousewheelHandler","_mousewheel","Sl","_domEvents","stopPropagation","_start","_move","_end","tap","_tap","press","_press","gesturestart","_gesturestart","gesturechange","_gesturechange","gestureend","_gestureend","_mwTimeout","_state","_rangeEventArgs","_value","moveTarget","oldRange","rightClick","which","_toModelCoordinates","touches","_slot","leftMaskWidth","rightMaskWidth","toValue","zDir","relative","Tooltip","SharedTooltip","tooltipPoints","_slotAnchor","_defaultAnchor","shared","categoryText","categoryFormat","slotCenter","centerPoint","BarChartAnimation","fromScale","scaleX","scaleY","BubbleAnimation","FadeInAnimation","fadeTo","PieAnimation","ScatterLineChart","missingValue","XYPlotArea","xAxisRangeTracker","yAxisRangeTracker","filteredSeries","createScatterChart","createScatterLineChart","createBubbleChart","createAxes","createXYAxis","namedAxes","isLog","typeSamples","seriesAxisName","firstPointValue","inferredDate","xAxesOptions","yAxesOptions","xValues","yValues","PieSegment","themeLabels","theme","seriesDefaults","animationDelay","labelsOptions","labelsDistance","labelHeight","labelWidth","lp","createSegmentVisual","borderOptions","fallbackFill","singleSegment","tooltipAlignment","RAD_30","RAD_60","sine","cosine","pie_chart_mixin","createLegendItem","legendOptions","pointVisible","legendItems","PieChart","seriesColors","colorsCount","anglePerValue","constantAngle","currentAngle","explode","evalSegmentOptions","segmentOptions","seriesConfigs","minWidth","halfMinWidth","defaultPadding","newBox","newBoxCenter","leftSideLabels","rightSideLabels","seriesConfig","labelComparator","leftLabelsReflow","rightLabelsReflow","distances","distanceBetweenLabels","distributeLabels","lr","firstBox","secondBox","remaining","_takeDistance","amount","available","labelDistance","boxX","boxY","hAlignLabel","connectors","_connectorLines","connectorsColor","connectorLine","sr","crossing","intersection","pointInCircle","autoFit","pieCenter","bboxBottom","reverseValue","originalX","a1","a2","b1","b2","uat","ub","ua","PieChartMixin","PiePlotArea","createPieChart","pieChart","DonutSegment","DonutChart","holeSize","totalSize","seriesWithoutSize","DonutPlotArea","createDonutChart","donutChart","PolarPlotAreaBase","createPolarAxis","createValueAxis","valueAxisOptions","axisDefaultRange","valueAxisBox","heightDiff","PolarScatterChart","valueRadius","PolarLineChart","SplinePolarAreaSegment","_polarAxisCenter","PolarAreaSegment","centerSegment","xComparer","PolarAreaChart","_hasMissingValuesGap","PolarPlotArea","scatterChart","RadarLineChart","seriesSegments","groupBySeriesIx","isFirstDataPoint","isLastDataPoint","SplineRadarAreaSegment","RadarAreaSegment","RadarAreaChart","RadarSegment","RadarClusterLayout","slotSector","RadarStackLayout","childSector","RadarBarChart","RadarPlotArea","_hasBarCharts","_isStacked100","chartOptions","FunnelSegment","chartBox","createPath","FunnelChart","labelPadding","dynamicSlopeReflow","totalHeight","firstSegment","maxSegment","lastUpperSide","previousOffset","previousHeight","nextSegment","nextPercentage","dynamicHeight","segmentSpacing","constantSlopeReflow","decreasingWidth","neckRatio","finalNarrow","dynamicSlope","FunnelPlotArea","createFunnelChart","funnelChart","HeatmapPoint","labelColor","isRoundRect","halfBorderWidth","HeatmapChart","setRange","minLightnessOffset","hsl","toHSL","l","toCss","colorScale","indexX","indexY","xRange","yRange","xIndex","yIndex","xIn","yIn","HeatmapPlotArea","bindCategories","createAxisLabels","xCategories","yCategories","createHeatmapChart","xAxisOptions","yAxisOptions","firstCategory","COLOR","FIRST","MAX","NOTE_TEXT","errorLow","errorHigh","AXIS_NAMES","MOUSEMOVE","CONTEXTMENU","MOUSELEAVE","Chart","themeOptions","observers","_initElement","_originalOptions","_theme","_initTheme","_initHandlers","_initSurface","fontLoaded","_destroyed","_redraw","_attachEvents","_setElementClass","seriesCopies","resolveAxisAliases","aliases","alias","applySeriesColors","chartArea","offsetWidth","_selections","_destroySelections","_setupSelection","_noTransitionsRedraw","paneName","_model","findPaneByName","findPaneByIndex","seriesName","categoryName","pointByCategoryName","togglePointsHighlight","showTooltip","_sharedTooltip","_tooltip","hideTooltip","_surfaceWrap","renderAs","_destroySurface","_surfaceMouseenterHandler","_surfaceMouseleaveHandler","model","_getModel","_destroyView","_createTooltip","_createPannable","_createZoomSelection","_createMousewheelZoom","triggerPaneRender","_navState","_cancelDomEvents","exportOptions","currentOptions","clearMissingValues","_pannable","zoomable","_zoomSelection","_mousewheelZoom","_toggleDragZoomEvents","allowDrag","allowZoom","_dragZoomEnabled","touchAction","_touchAction","_toggleDomEvents","drag","domEvents","toggleDrag","toggleZoom","_createSharedTooltip","applyAxisDefaults","themeAxisDefaults","axisDefaults","mapAxisOptions","axisColor","applySeriesDefaults","seriesLength","commonDefaults","themeSeriesDefaults","commonThemeDefaults","cleanupNestedSeriesDefaults","colors","seriesColor","_createPlotArea","_modelOptions","skipSeries","selections","select","_selectStart","_select","_selectEnd","_clickHandler","_mouseleaveHandler","_mouseover","_mouseout","_toDocumentCoordinates","og","sg","_shouldAttachMouseMove","$h","_hoveredPoint","hovered","_stopChartHandlers","_gestureDistance","_zooming","mousewheelZoom","previousGestureDistance","scaleDelta","_drawingChartElement","leave","_startNavigation","_suppressHover","_endNavigation","_mousewheelZoomRate","totalDelta","chartEvent","_getChartElement","coordinates","_elementPadding","_padding","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","handlingTap","activePoint","_activePoint","multipleSeries","hasInactiveOpacity","_hasInactiveOpacity","_updateHoveredPoint","_displayTooltip","_displayInactiveOpacity","_activeChartInstance","_updateSeriesOpacity","_applySeriesOpacity","highlightPoints","chartInstance","_chartInstanceFromPoint","inactivePoints","_getInactivePoints","_getInactiveOpacityForSeries","_getAllPointsOfType","hoveredPoint","resetOpacity","currSeries","defaultOpacity","_getDefaultOpacityForSeries","inactiveOpacity","activeSeries","hasDefaultInactiveOpacity","defaultInactiveOpacity","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","_trackCrosshairs","overPlotArea","_tooltipCategoryIx","_sharedHighlight","pointArgs","hoverArgs","hideElements","keepTooltipOpen","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","clearInterval","autoBind","bindCategoryAxisFromSeries","uniqueCategories","bindable","dataIx","dataRow","uniqueDates","srcDates","comparer","sortDates","transpose","rowCount","rowIx","colCount","colIx","_isBindable","transitionsState","updateMouseMoveHandler","applyOptions","setOptions","setDirection","setIntlService","noTransitionsRedraw","bar","column","rangeColumn","verticalLine","pie","donut","verticalArea","scatter","scatterLine","bubble","candlestick","ohlc","boxPlot","verticalBullet","polarArea","polarLine","radarArea","radarLine","waterfall","DATA_FIELDS","fieldValue","originalValue","nullValue","ChartSharedTooltip","NO_CROSSHAIR","display","wrapNumber","Sparkline","_initialWidth","stage","displayState","_autoWidth","inline","_calculateWidth","currentChart","pointWidth","FadeOutAnimation","_initialOpacity","div","NavigatorHint","chartPadding","scroll","scrollWidth","minPos","clearHideTimeout","_visible","visibility","tooltipStyle","marginTop","borderTopWidth","_hideTimeout","_hideAnimation","hideDelay","NAVIGATOR_PANE","NAVIGATOR_AXIS","Navigator","hint","chartObserver","Ju","Od","jd","qu","clean","_redrawSelf","initSelection","mainAxis","axisClone","ClonedObject","selectStart","selectEnd","filterAxes","silent","redrawSlaves","slavePanes","_drag","navigatorAxis","naviRange","inNavigator","liveDrag","showHint","_dragEnd","readSelection","_zoom","fromIx","toIx","_zoomEnd","__navi","naviOptions","attachAxes","attachSeries","valueAxes","justifyAxis","_collapse","autoBindElements","user","navigatorSeries","dateField","StockChart","stockDefaults","destroyNavigator","_fullRedraw","_dirty","partialRedraw","dirty","_seriesCount","copyNavigatorCategories","Arc","paintable","measurable","withGeometry","GeometryArc","_bbox","_geometry","curvePoints","curveTo","_containsPoint","_isOnPath","GeometryRect","alignElements","stackElements","otherAxis","previousBBox","createStackElements","vStack","wrapElements","stacks","getStacks","stackSize","addElementToStack","startElement","elementIdx","vWrap","rectSize","PathParser","multiPath","MultiPath","parsePath","exportGroup","rootGroup","getOrigin","exportRoot","exportImage","surfaceOptions","exportSVG","raw","encodeBase64","ARROW_POINTER","BAR_POINTER","DEGREE","LINEAR","RADIAL_POINTER","RADIAL_RANGE_POINTER","setOrigin","buildLabelElement","fromRect","geo","styleGeometry","styleBox","getRange","gauge_Path","Gauge","contextService","surfaceElement","pointerValue","pointer","pointers","_setValueOptions","_draw","_visuals","allValues","arrayValues","_toggleTransitions","_surfaceSize","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","currentTheme","areaGeometry","_surfaceElement","_getSize","defaultSize","_defaultSize","linear_scale_Path","renderAxisTick","tickRenderOptions","renderTicks","tickGroup","LinearScale","renderLabels","scaleLine","renderLine","scaleTicks","renderRanges","linePath","Pointer","_oldValue","repaint","LinearPointer","track","trackSize","pointerHalfSize","pointerBox","pointerRangeBox","trackBox","getElementOptions","_margin","ArrowLinearPointerAnimation","toScale","translateX","translateY","ArrowLinearPointer","pointerShape","elementOptions","BarLinearPointerAnimation","newPoints","oldPoints","speed","setter","toUpperCase","bar_linear_pointer_Group","BarLinearPointer","minSlot","sizeAxis","p4","pointerPath","oldShape","renderTrack","trackOptions","LinearGauge","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","scaleElements","pointerType","plotAreaBox","scaleBox","overflow","radial_scale_Arc","radial_scale_Path","drawTicks","tickAngles","getRadiusX","tickStart","tickEnd","rangeSegment","RadialScale","renderArc","labelElements","repositionRanges","hasRanges","ticksSize","labelsGroup","rangeDistance","isInside","hasLabelElements","setRadiusX","setRadiusY","paddingWidth","paddingHeight","labelPos","labelElement","prevLabelPos","labelTransform","rangeRadius","getRangeRadius","rangeSegments","segmentsCount","createRange","rangeGeom","rangePlaceholderColor","tickArc","majorTickAngles","allTicks","_tickDifference","minorTickAngles","normalizeTickAngles","tickCount","repositionTicks","minor","newPoint","xDiff","yDiff","RadialPointerAnimation","newAngle","oldAngle","Circle","radial_pointer_Group","RadialPointer","setAngle","_renderNeedle","_renderCap","capSize","cap","needleColor","needlePath","capColor","arrow","RadialGauge","_initialPlotArea","fitScale","alignScale","_buildPointers","getDiff","midDiff","oldDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","ArcScale","rangeLineCap","placeholderRangeAngle","setEndAngle","setStartAngle","addRange","RangePointerAnimation","startColor","currentColor","RangePointer","rangeColor","Encoding","initProperties","quietZoneLength","addQuietZone","convertedValue","initValue","addData","pattern","invalidCharacterError","character","addCheckSum","extend","Code11","characterMap","cCheckSumTotal","kCheckSumTotal","kCheckSumMinLength","checkSumMod","DASH_VALUE","DASH","START","STOP","addPattern","addCharacter","setBaseUnit","cValue","getWeightedSum","checksum","kValue","weightedSum","weightedValue","Code39Base","minBaseUnitLength","addStart","pushCheckSum","addStop","prepareValues","characterData","addBase","Code39","minRatio","maxRatio","gapWidth","splitCharacter","patternMappings","w","B","W","A","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","Z","$","patternString","minBaseUnit","minHeight","getBaseUnit","toFixed","getBaseWidth","characterLength","addCharacterGap","Code39ExtendedBase","addExtended","code","patterns","extendedMappings","patternIndex","shiftCharacters","dataCharacter","specialAsciiCodes","shiftValuesAsciiCodes","Code93","SHIFT0","SHIFT1","SHIFT2","SHIFT3","TERMINATION_BAR","checkSumLength","charData","checkValues","_getCheckValues","_findCharacterByValue","wightedSum","numberRegex","alphanumericRegex","State128","encoding","is","isCode","pushState","State128AB","states","_initMoves","FNC4","SHIFT","encodingState","_moves","maxLength","numberMatch","substr","_moveFNC","_shiftState","_moveState","fnc","previousState","shifted","MOVE","states128","next4","getSubstring","_initSubStates","dependentStates","subState","_getSubState","_initSubState","_pushStart","pushData","subStates","_getAll","FNC1","startState","startAI","endAI","applicationIdentifiers","multiKey","ids","nextStart","separatorLength","regexSeparators","getBySeparator","getByLength","ai","validate","applicationIdentifier","getApplicationIdentifier","unsupportedAIError","Code128Base","_initStates","checkSum","getNextState","temp","MsiBase","checkSumType","checkSums","startStopLength","Modulo10","evenSum","oddSum","odd","Modulo11","weight","checkValue","Modulo11Modulo10","mod11Value","Modulo10Modulo10","mod10Value","Ean13","keyTable","digits","valueAsString","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","arrToAdd","limitedHeight","even","Encodings","code11","code39","code39extended","Code39Extended","code93","code93extended","Code93Extended","characterByValue","code128","Code128","code128a","Code128a","code128b","Code128b","code128c","Code128c","CodeGS1128","msimod10","MsiMod10","msimod11","MsiMod11","msimod1010","MsiMod1010","msimod1110","MsiMod1110","postnet","Postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","ean8","Ean8","ean13","surfaceSize","surfaceType","clientWidth","clientHeight","Barcode","errorHandler","_setOptions","_initSurfaceElement","_createSurface","_destroySurfaceElement","_render","textMargin","encodedValue","textToDisplay","textHeight","barHeight","_getBackground","_getText","_bandsGroup","_getBands","stepX","patternItem","_textbox","splitInto","chunkLength","toBitsString","bitString","toDecimal","FreeCellVisitor","startColumn","getNextCell","getNextRemainderCell","EncodingResult","dataString","IsoEncoder","getEncodingResult","inputString","errorCorrectionLevel","modes","getModes","previousMode","chooseMode","mode","modeString","nextMode","dataCodewordsCount","getDataCodewordsCount","DataModeInstances","getStringBitsLength","getVersion","getDataString","QRDataMode","modeIndicator","bitsInCharacterCount","getVersionIndex","getBitsCharacterCount","getModeCountString","numeric","NumericQRDataMode","inputLength","mod3","alphanumeric","AlphaNumericQRDataMode","characters","byte","ByteQRDataMode","Utf8Encoder","encodingMode","utfBOM","initialModeCountStringLength","encodeCharacter","bytesCount","getBytesCount","significantOnes","VersionsCodewordsInformation","totalDataCodewords","errorCodewordsPerBlock","ALPHA_NUMERIC","powersOfTwo","powersOfTwoResult","irregularAlignmentPatternsStartDistance","finderPattern","alignmentPattern","errorCorrectionPatterns","paddingCodewords","maskPatternConditions","alphaPattern","alphaRegex","alphaNumericRegex","byteRegex","generatorPolynomials","fillFunctionCell","matrices","bit","fillDataCell","xorPolynomials","multiplyPolynomials","multiplyByConstant","polynomial","generateErrorCodewords","errorCodewordsCount","generator","generatorPolynomial","steps","errorCodewords","minNumericBeforeAlpha","minNumericBeforeByte","minAlphaBeforeByte","numericMatch","alphaMatch","alphaNumeric","alphaNumericMatch","encodeBCH","codeLength","generatorNumber","polynomialLength","valueNumber","valueString","dividePolynomials","numberX","numberY","yLength","xLength","getNumberAt","addFormatInformation","addVersionInformation","quotient","mod","modules","addCentricPattern","addFinderSeparator","nextX","nextY","scoreFinderPatternOccurance","scores","rowColumn","scoreAdjacentSameBits","previousBits","adjacentBits","calculateDarkModulesRatioScore","darkModules","percent","mod5","previous","encodeData","encoder","createQRCodeDataEncoder","encodingResult","versionInformation","padDataString","initialDataString","dataBitsCount","terminatorIndex","paddingCodewordIndex","blocks","getBlocks","dataStream","versionCodewordsInformation","dataBlock","blockCodewordsCount","groupBlocksCount","messagePolynomial","codeword","codewordStart","dataBlocks","errorBlocks","versionGroups","blockIdx","codewordIdx","initMatrices","addFinderPatterns","addAlignmentPatterns","startDistance","addTimingFunctions","fillData","block","cell","cellVisitor","scoreMaskMatrixes","adjacentSameBits","modulesLength","rowIndex","columnIndex","matrixIndex","optimalMatrix","encodeVersionInformation","encodeFormatInformation","encodedString","generatePowersOfTwo","generateGeneratorPolynomials","firstPolynomial","secondPolynomial","crossPattern","squarePattern","QRCodeDefaults","QRCode","elementWidth","elementHeight","quietZoneSize","dataSize","contentSize","errorCorrection","_calculateBaseUnit","_renderBackground","_renderMatrix","_hasCustomLogo","_renderLogo","_isSwiss","_renderSwissCode","qrSize","imageRect","logoSize","_getLogoSize","logoUrl","crossSize","crossOffset","_renderShape","matrixSize","newOptions","defautLogoSize","datums","WGS84","toSquare","math","atan","tan","Location","lat","lng","DISTANCE_ITERATIONS","DISTANCE_CONVERGENCE","DISTANCE_PRECISION","FORMAT","loc","precision","dest","datum","greatCircleTo","initialBearing","initialDatum","bearing","fromLat","fromLng","dToR","initialDest","azimuthFrom","azimuthTo","prevLambda","sinLambda","cosLambda","sino","cosA2","coso","cos2om","sigma","U1","sinU1","cosU1","U2","sinU2","cosU2","lambda","converged","sinA","u2","deltao","lngAndLat","fromLatLng","PI_DIV_2","PI_DIV_4","DEG_TO_RAD","Mercator","_initOptions","MAX_LNG","MAX_LAT","INVERSE_ITERATIONS","INVERSE_CONVERGENCE","forward","clamp","proj","lng0","centralMeridian","_projectLat","ecc","ts","con","inverse","_inverseY","ecch","phi","dphi","SphericalMercator","EPSG3857","_proj","_tm","_itm","toLocation","defineProperty","convertToHtml","html","removeChildren","prepend","originElement","toHyphens","toPixels","endsWith","detectOS","minorVersion","os","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","flat","formFactorRxs","tablet","browserRxs","omini","omobile","firefox","mobilesafari","ie","chrome","agent","device","testRegex","majorVersion","flatVersion","regexes","dflt","regex","getEventMap","eventMap","down","up","getSupportedFeatures","msPointers","safari","opera","documentMode","detectBrowser","mobileChrome","crios","PointerEvent","MSPointerEvent","mouseAndTouchPresent","eventCapture","table","transforms","prefix","hasTransitions","lowPrefix","delayedClick","meta","proxy","method","on","useCapture","addEventListeners","eventFilter","eventHandler","closestMatchingTarget","currentTarget","off","removeEventListeners","applyEventMap","queryEventMap","setDefaultEvents","noop","FUNCTION","that","_setEvents","Attribution","extent","_extent","newItem","_itemText","appendHtml","separator","showElement","hideElement","inZoomLevel","_inZoomLevel","minZoom","maxZoom","inArea","_inArea","newMin","newMax","directionsMap","createButton","navigateUpButton","navigateRightlButton","navigateDownButton","navigateLeftButton","_keyroot","_tabindex","_keydownHandler","_keydown","dispose","targetElement","TABINDEX","_pan","panStep","ZoomControl","zoomInButton","zoomOutButton","_change","zoomStep","PLUS","MINUS","Extent","initialNw","initialSe","nw","se","containsAny","locs","include","includeAll","edges","ne","sw","World","CENTER_CHANGE","widgetService","_anchor","documentPoint","Layer","scrollElement","_beforeReset","_reset","_panEnd","_activate","_updateAttribution","_deactivate","_applyExtent","_setVisibility","matchMinZoom","matchMaxZoom","inside","attribution","_readData","_hasData","_layerIndex","layers","compileTemplate","renderSize","TileLayer","subdomains","viewType","_viewType","_view","locationToLayer","viewOrigin","_updateView","TileView","view","extentToPoint","tileSize","urlTemplate","pool","TilePool","_center","_viewOrigin","pointToTileIndex","tileCount","firstTileIndex","indexToPoint","subdomainText","subdomainIndex","tile","createTile","currentIndex","tileOptions","wrapIndex","subdomain","errorUrlTemplate","boundary","wrapValue","wrappedValue","ImageTile","maxWidth","maxHeight","urlOptions","errorUrl","z","quadkey","q","_remove","_create","maxDist","CHANGE","TapCapture","capture","_release","attachEvent","captureNext","cancelCapture","PaneDimension","forcedEnabled","scrollSize","makeVirtual","virtual","_virtualMin","_virtualMax","virtualSize","outOfBounds","forceEnabled","getTotal","rescale","scaledTotal","minScale","centerOffset","enabled","PaneDimensions","forcedMinScale","maxScale","newScale","centerCoordinates","PaneAxis","dimension","movable","dragMove","dragDelta","resistance","translateAxis","elastic","dimensions","userEvents","gesture","closestAnchor","previousGesture","previousCenter","scaleWith","Movable","transformStyle","webkitTransformOrigin","_saveCoordinates","by","scaleTo","moveAxis","newCoordinates","ShapeLayer","_initRoot","_markers","_translateSurface","_load","features","geometries","_clearMarkers","_loader","GeoJsonLoader","shapeCreated","cancelled","renderPointsAsMarkers","_createMarker","layer","featureCreated","_panning","locationToView","_eventArgs","layerIndex","shapeIndex","_tooltipAnchor","_tooltipContext","eventOffset","_panHandler","panHandler","locator","defaultStyle","unwrap","_loadGeometryTo","_featureCreated","_shapeCreated","properties","_loadPolygon","_setLineFill","_loadPoint","_loadShape","rings","_buildPolygon","viewToLocation","BubbleLayer","valueField","newData","scaleType","_scaleType","getLocation","locationField","symbol","_createSymbol","_drawSymbol","Scales","Symbols","SqrtScale","_domain","domainRange","outputRange","_ratio","rel","square","MOUSE_ENTER","MOUSE_LEAVE","MARKER_CLASS","MarkerLayer","_markerClickHandler","_markerClick","_addOne","Marker","arg","addTo","getTitle","titleField","markerIndex","_markerMouseEnter","_createMarkerEventArgs","_markerMouseLeave","_mouseEnterHandler","_mouseEnter","_mouseLeaveHandler","_mouseLeave","attributes","_createEventArgs","_tickProxy","_tick","_started","done","onEnd","onCancel","Transition","timePassed","initial","_easeProxy","ease","DEFAULT_MIN_HOLD","DEFAULT_THRESHOLD","TAP","DOUBLETAP","RELEASE","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","api","mouse","getTouches","changedTouches","identifier","pointerId","TouchAxis","invalidZeroEvents","_updateLocationData","velocity","timeStamp","timeDelta","initialDelta","client","screen","Touch","touchInfo","useClickAsTap","threshold","pressEvent","_clicks","supportDoubleTap","_moved","_finished","_holdTimeout","_hold","minHold","_trigger","_clickTimeout","preventMove","_shouldNotMove","_withinIgnoreThreshold","UserEvents","endTime","activeTouches","activeTouchIndex","isMoved","startTime","jQueryEvent","xDelta","yDelta","withEachUpEvent","downEvents","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","enableGlobalSurface","global","ownerDocument","pressed","_surfaceMoveHandler","_surfaceEndHandler","_elementStartHandler","_elementClickHandler","defaultAction","preventDragEvent","_elementDragStartHandler","_elementSelectHandler","preventIfMovingProxy","preventIfMoving","_isMoved","_disposeAll","_isMultiTouch","touchDelta","touch1","touch2","_apiCall","_maxTouchesReached","_eachTouch","methodName","matchingTouch","dict","ZoomSnapBack","tapCapture","DragInertia","transition","freeze","_moveTo","paneAxis","_snapBack","velocityMultiplier","friction","snapBack","AnimatedScroller","_updateCoordinates","setCoordinates","setCallback","ScrollBar","scrollMovable","alwaysVisible","paneSize","sizeRatio","Scroller","hasScrolling","hasNativeScrolling","_native","useNative","scrollHeader","fixedContainer","wrapInner","inner","avoidScrolling","velocityX","velocityY","horizontalSwipe","originatedFromFixedContainer","ownsElement","verticalSwipe","zoomSnapBack","animatedScroller","scrollTo","mousewheelScrolling","_wheelScrollHandler","_wheelScroll","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","_wheelTimeout","deltaY","wheelDeltaY","VERTICAL_AXIS","scrollHeight","contentResized","_scale","zoomOut","disable","animatedScrollTo","pullHandled","_paneChange","scrollBar","visibleScrollHints","pullOffset","messages","pullTemplate","releaseTemplate","refreshTemplate","MapService","MARKER","LOCATION","layersMap","tf","renderPos","Map","_init","scroller","zoomControl","markerLayer","initObserver","initServices","_notifyObserver","crs","_getOrigin","_initScroller","_initMarkers","_initControls","_initLayers","level","zoomLevel","_setExtent","_getExtent","wraparound","locationObject","_layerSize","layerToLocation","pointObject","translateWith","pointResult","eventToView","eventToLayer","eventToLocation","viewSize","_setOrigin","originLocation","_origin","newExtent","layerWidth","layerHeight","_zoomAround","pivot","controls","_createAttribution","_createNavigator","_createZoomControl","_createControlElement","defaultPosition","posSelector","_navigatorPan","_navigatorCenter","bounds","_virtualSize","_scrollEnd","_zoomControlChange","_scroll","_scaleStart","_doubleTap","_createLayer","layerDefaults","layerOptions","markerDefaults","layerConstructor","_scrollOffset","_panComplete","_panEndTimestamp","_scaleToZoom","gestureCenter","centerLocation","originPoint","tiles","_resetScroller","xBounds","yBounds","_renderLayers","newZoom","toZoom","fromZoom","SANS","SANS12","SANS16","TRANSPARENT","rangeArea","verticalRangeArea","outliersField","meanField","heatmap","funnel","horizontalWaterfall","rangeBar","verticalBoxPlot","baseTheme","point_r15","getTouch","domEvent","shouldBindGroup","groupNames","eventGroups","DomEvents","hammerInstance","eventHandlers","panstart","panmove","panend","pinchstart","pinchmove","pinchend","previousArgs","xLocation","yLocation","pointer1","pointer2","srcEvent","deltaX","eventGroup","nameIdx","recognizer","dateCategoryAxisFormats","dateValueAxisFormats","skeleton","DomEventsBuilder$1","HAMMER","Hammer","recognizers","Tap","Pan","Pinch","Press","DonutCenterTemplateDirective","ItemChange","CollectionService","onItemChange$","copyChanges","propertyName","toSimpleChanges","SimpleChange","THROTTLE_MS","Change","ConfigurationService","store","BehaviorSubject","initSource","onFastChange$","onChange$","auditTime","CollectionItemComponent","configurationService","collectionService","subscription","notifyChanges","SettingsComponent","configKey","markAsVisible","SeriesTooltipComponent","seriesTooltipTemplateRef","seriesTooltipTemplate","TemplateRef","flag","SeriesItemComponent","toggleVisibility","togglePointVisibility","pv","seriesTooltip","COLLISION","collision","onInit","scrollOffset","bodyFactory","CrosshairTooltipComponent","changeDetectorRef","PopupService","POPUP_CONTAINER","useFactory","i4$1","AXES","CrosshairTooltipsContainerComponent","tooltipKeys","tooltipsMap","tooltipComponents","crossahirTooltipComponents","createCrosshairTooltips","newMap","mapTooltips","removeTooltip","tooltips","axesCrosshairTooltipOptions","tooltipIdx","SeriesTooltipTemplateDirective","SharedTooltipTemplateDirective","TooltipTemplatePoint","xLow","xHigh","yLow","yHigh","hasParent","TooltipTemplateService","setTemplate","seriesTemplates","setSeriesTemplates","setSharedTemplate","sharedTemplate","getSharedTemplate","TooltipPopupComponent","templateService","seriesTooltipContext","seriesSharedTooltipContext","seriesSharedTooltipTemplateRef","defaultSharedTooltipTemplate","sharedTemplateContext","pointTemplateRef","containsElement","nameColumn","colorMarker","colspan","wrapPoints","defaultSeriesTooltipTemplate","pointFormat","mouseleaveSubscription","ChartInstanceObserver","legendItemClick","init","BaseEvent","LegendEvent","NoteEvent","RenderEvent","_e","SeriesEvent","EVENT_MAP$1","axisLabelClick","AxisLabelClickEvent","DragEvent","dragEnd","DragEndEvent","dragStart","DragStartEvent","legendItemHover","LegendItemHoverEvent","legendItemLeave","LegendItemLeaveEvent","noteClick","NoteClickEvent","noteHover","NoteHoverEvent","noteLeave","NoteLeaveEvent","paneRender","PaneRenderEvent","plotAreaClick","PlotAreaClickEvent","plotAreaHover","PlotAreaHoverEvent","plotAreaLeave","PlotAreaLeaveEvent","SelectEvent","SelectEndEvent","SelectStartEvent","seriesClick","SeriesClickEvent","seriesHover","SeriesHoverEvent","seriesOver","SeriesOverEvent","seriesLeave","SeriesLeaveEvent","ZoomEvent","zoomEnd","ZoomEndEvent","zoomStart","ZoomStartEvent","InstanceEventService","LegendItemClickEvent","fontWeight","fontSize","fontFamily","computedBackgroundColor","ThemeService","loaded","loadTheme","readTheme","readDefaultTheme","queryColor","chartBaseTheme","setColors","setFonts","setSeriesColors","destroyElement","seriesTemplate","mapColor","queryStyle","setInactiveOpacity","defaultFont","titleFont","paneTitleFont","labelFont","querySelectorAll","unsetColor","letter","letterPos","num","seriesPos","varName","emitter","ChartComponent","themeService","instanceEventService","changeDetector","resizeRateLimit","suppressTransitions","hostClasses","refreshWait","canRender","chartMouseleave","domSubscriptions","intlChange","rtlChange","autoResize","resizeTimeout","destroyed","redrawTimeout","createInstance","getPlotArea","instanceObserver","onResize","onLegendItemClick","seriesComponents","onRender","donutCenterStyle","getDonutCenterStyle","onShowTooltip","crossahirTooltips","tooltipInstance","onHideTooltip","activeEmitter","updateDirection","setChartAreaSize","updateOptions","tooltipMouseleave","combineLatest","inZone","deferredRedraw","isRTL","_c1","AxisDefaultsComponent","AxisDefaultsCrosshairComponent","AxisDefaultsCrosshairTooltipComponent","AxisDefaultsLabelsComponent","AxisDefaultsTitleComponent","CollectionComponent","processChanges","readItems","CategoryAxisItemComponent","localeId","LOCALE_ID","CategoryAxisComponent","CategoryAxisCrosshairComponent","CategoryAxisCrosshairTooltipComponent","CategoryAxisLabelsComponent","CategoryAxisRangeLabelsComponent","CategoryAxisNotesComponent","CategoryAxisNotesIconComponent","CategoryAxisNotesLabelComponent","CategoryAxisSelectComponent","CategoryAxisTitleComponent","ChartAreaComponent","LegendComponent","LegendInactiveItemsComponent","LegendItemComponent","PaneComponent","PaneDefaultsComponent","PaneDefaultsTitleComponent","PanesComponent","PanesTitleComponent","PlotAreaComponent","SeriesComponent","tooltipTemplateService","readTooltipTemplates","templates","SeriesDefaultsComponent","SeriesDefaultsLabelsComponent","SeriesDefaultsLabelsFromComponent","SeriesDefaultsLabelsToComponent","SeriesDefaultsNotesComponent","SeriesDefaultsNotesIconComponent","SeriesDefaultsNotesLabelComponent","SeriesDefaultsTooltipComponent","SeriesErrorBarsComponent","SeriesExtremesComponent","SeriesHighlightComponent","SeriesLabelsComponent","SeriesLabelsFromComponent","SeriesLabelsToComponent","SeriesMarkersComponent","SeriesNotesComponent","SeriesNotesIconComponent","SeriesNotesLabelComponent","SeriesOutliersComponent","TitleComponent","TooltipComponent","sharedTooltipTemplate","ValueAxisItemComponent","ValueAxisComponent","ValueAxisCrosshairComponent","ValueAxisCrosshairTooltipComponent","ValueAxisLabelsComponent","ValueAxisNotesComponent","ValueAxisNotesIconComponent","ValueAxisNotesLabelComponent","ValueAxisTitleComponent","XAxisItemComponent","XAxisComponent","XAxisCrosshairComponent","XAxisCrosshairTooltipComponent","XAxisLabelsComponent","XAxisNotesComponent","XAxisNotesIconComponent","XAxisNotesLabelComponent","XAxisTitleComponent","YAxisItemComponent","YAxisComponent","YAxisCrosshairComponent","YAxisCrosshairTooltipComponent","YAxisLabelsComponent","YAxisNotesComponent","YAxisNotesIconComponent","YAxisNotesLabelComponent","YAxisTitleComponent","ZoomableComponent","WeekStartDay","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","RootConfigurationService","EVENT_MAP","navigatorFilter","NavigatorFilterEvent","StockInstanceEventService","NAVIGATOR_DEFAULTS","StockChartComponent","skipNavigatorRedraw","applyNavigatorDefaults","PREFIX","PrefixConfigurationService","rootService","NavigatorComponent","NavigatorCategoryAxisComponent","NavigatorCategoryAxisCrosshairComponent","NavigatorCategoryAxisCrosshairTooltipComponent","NavigatorCategoryAxisLabelsComponent","NavigatorCategoryAxisNotesComponent","NavigatorCategoryAxisNotesIconComponent","NavigatorCategoryAxisNotesLabelComponent","NavigatorCategoryAxisSelectComponent","NavigatorCategoryAxisTitleComponent","NavigatorHintComponent","NavigatorPaneComponent","NavigatorPaneTitleComponent","NavigatorSelectComponent","NavigatorSeriesItemComponent","NavigatorSeriesComponent","NavigatorSeriesErrorBarsComponent","NavigatorSeriesExtremesComponent","NavigatorSeriesHighlightComponent","NavigatorSeriesLabelsComponent","NavigatorSeriesLabelsFromComponent","NavigatorSeriesLabelsToComponent","NavigatorSeriesMarkersComponent","NavigatorSeriesNotesComponent","NavigatorSeriesNotesIconComponent","NavigatorSeriesNotesLabelComponent","NavigatorSeriesOutliersComponent","NavigatorSeriesTooltipComponent","SparklineComponent","tooltipWrapperClass","tooltipContentClasses","ChartModule","imports","ResizeSensorModule","StockChartModule","SparklineModule","ChartsModule","touchRegExp","normalizeEvent","isTouch","Draggable","release","mouseOnly","_pressHandler","_dragHandler","_releaseHandler","_ignoreMouse","_mouseOnly","_touchstart","_touchmove","_touchend","_restoreMouse","_mousedown","_mouseup","_pointerdown","isPrimary","_pointermove","_pointerup","bindTo","_unbindFromCurrent","_bindToCurrent","_usePointers","supportPointerEvent","default","skipFirstChange","isFirstChange","anyChanged","propertyNames","random","DraggableDirective","enableDrag","kendoPress","kendoDrag","kendoRelease","toggleDraggable","destroyDraggable","draggable","DraggableModule","EventsOutsideAngularDirective","scope","ResizeService","resizeBatchService","acceptedSize","acceptSize","lastWidth","lastHeight","checkChanges","schedule","checkSize","initSize","WRAP_STYLE","EXPAND_CHILD_STYLE","ResizeCompatService","isScheduled","expandChild","prop","getPropertyValue","computedProp","shrinkChild","HAS_OBSERVER","ResizeObserver","ResizeObserverService","resizeObserver","disconnect","ResizeBatchService","scheduled","flush","ResizeSensorComponent","rateLimit","serviceType","resizeService","throttleTime","KendoInput","Alt","ArrowDown","ArrowLeft","ArrowRight","ArrowUp","Backspace","Control","Delete","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","End","Escape","F1","F2","F10","Home","Insert","KeyA","KeyB","KeyC","KeyD","KeyE","KeyF","KeyG","KeyH","KeyI","KeyJ","KeyK","KeyL","KeyM","KeyN","KeyO","KeyP","KeyQ","KeyR","KeyS","KeyT","KeyU","KeyV","KeyW","KeyX","KeyY","KeyZ","NumpadDecimal","PageDown","PageUp","Shift","Space","cloneDate","hour","newDate","addDays","setDate","createDate","year","month","setFullYear","isEqual","candidate","expected","lastDayOfMonth","getMinutes","addMonths","expectedMonth","setMonth","normalize","setYear","addYears","addDecades","addCenturies","normalizeYear","firstDecadeOfCentury","lastDecadeOfCentury","firstYearOfDecade","lastYearOfDecade","lastMonthOfYear","durationInCenturies","durationInDecades","addWeeks","firstDayOfMonth","Direction","Forward","Backward","dayOfWeek","weekDay","newDay","durationInMonths","firstMonthOfYear","durationInYears","Day","moveDateToWeekStart","prevDayOfWeek","calcWeekInYear","firstWeekInYear","diffInMS","weekInYear","prevWeekDate","nextWeekDate","weekNumber","animationFrameProvider","cancelAnimationFrame","delegate","timestamp","AnimationFrameAction","AsyncAction","scheduler","work","requestAsyncId","actions","_scheduled","recycleAsyncId","AnimationFrameScheduler","AsyncScheduler","flushId","execute","animationFrameScheduler","ctx_r2","cell_r14","name_r11","_r13","ctx_r12","ctx_r15","ctx_r0","_r5","ctx_r4","name_r5","_r4","ctx_r11","ctx_r17","ctx_r18","ctx_r19","ctx_r20","_r8","item_r1","_r10","ctx_r13","Action","CalendarViewEnum","Left","Right","Up","Down","PrevView","NextView","FirstInView","LastInView","LowerView","UpperView","decade","century","MIDNIGHT_DATE","MIN_DATE","MAX_DATE","MIN_TIME","MAX_TIME","EMPTY_SELECTIONRANGE","requiresZoneOnBlur","ngControl","touched","control","updateOn","currentFocusTarget","blurArgs","activeElement","isSet","setTime","normalizeTimes","candidateValue","setYears","setHours$1","isInRange","isInTimeRange","dateInRange","getNow","getToday","noop$2","_","isWindowAvailable","shiftWeekNames","domContainerFactory","hasChange","hasExistingValue","list","isInSelectionRange","selectionRange","either","value1","value2","clampRange","isEqualRange","updated","initialStart","initialEnd","updatedStart","updatedEnd","areDatesEqual","second","every","mergeDateAndTime","lastMillisecondOfDate","msPaddingFromFormat","getSizeClass","component","getRoundedClass","getFillModeClass","solid","outline","DEFAULT_ROUNDED","DEFAULT_SIZE","DEFAULT_FILL_MODE","EMPTY_DATA$3","ACTIONS$3","CenturyViewService","addToDate","datesList","cellUID","focusedDate","isActiveView","selectedDates","viewDate","cells","firstDate","lastDate","today","rowOffset","baseDate","cellOffset","cellDate","nextCentury","isRangeStart","isRangeEnd","isRangeMid","isSelected","isWeekend","isRangeSplitEnd","isRangeSplitStart","isToday","cellTitle","isInArray","aboveMin","belowMax","beginningOfPeriod","firstYear","lastDayOfPeriod","modifier","navigationTitle","rowLength","viewsCount","viewsInRange","EMPTY_DATA$2","ACTIONS$2","DecadeViewService","nextDecade","EMPTY_DATA$1","ACTIONS$1","MonthViewService","isDateDisabled","firstMonthDate","firstMonthDay","lastMonthDate","lastMonthDay","cellDay","otherMonth","isOtherMonth","lowerBound","upperBound","formatDate","abbrMonthNames","wideMonthNames","prependCell","weekendRange","dateFormatNames","nameType","EMPTY_DATA","ACTIONS","upStep","downStep","YearViewService","currentYear","changedYear","services$1","BusViewService","injector","viewChanged","configure","moveDown","moveUp","moveToBottom","activeView","canMoveDown","canMoveUp","viewOffset","WeekNamesService","getWeekNames","includeWeekNumber","weekNames","closestInScope","noop$1","DisabledDatesService","initialize","disabledDates","isNumberArray","disabledWeekDays","isDateArray","normalizedDisabledDates","notifyInvalidInput","notifyServiceChange","KForOfContext","$implicit","kForOf","KForOf","_viewContainer","_differs","_differ","kForTemplate","kForTrackBy","getTypeNameForDebugging","ngDoCheck","_applyChanges","viewContainerLength","tuples","forEachOperation","record","ViewComponent","bus","disabledDatesService","isActive","cellClick","weekNumberCellClick","cellEnter","cellLeave","colSpan","disabledDatesChange","showWeekNumbers","updateData","currentCellIndex","unsubscribeCallback","isHorizontal","isMonthView","shouldRenderCellContent","cellCtx","rowCtx","firstWeekDateContext","getWeekNumber","getWeekNumberContext","getStyles","isEndActive","activeRangeEnd","isStartActive","cls","stringifyClassObject","tableCellIndex","cellIndex","handleWeekNumberClick","week","availableDates","cellMouseoverHandler","mouseLeaveHandler","closestCell","cellContext","cellByIndex","metaKey","modifiers","emitCellLeave","i7","i5","HorizontalViewListComponent","weekService","views","showViewHeader","animateNavigation","activeDateChange","getComponentClass","intlSubscription","getComponentMonthClass","getComponentYearClass","getComponentDecadeClass","getComponentCenturyClass","initService","clampDate","activeViewChanged","viewsHasChanged","isInDates","activeDate","getTake","setTableMinWidth","getCaptionTitle","getCaptionClass","animateView","initialContainerWidth","tableWidth","nextAnimationDate","prevAnimationDate","tabRect","containerGap","columnGap","oncancel","onfinish","removeStyle","isListInRange","canNavigate","containerWidth","HeaderComponent","todayAvailable","rangeLength","isPrevDisabled","isNextDisabled","showNavigationButtons","todayButtonClick","prevButtonClick","nextButtonClick","l10nChange","setTodayAvailability","activeViewValue","todayMessage","handleTodayClick","handleNavigation","currentDate","prevButtonTitle","nextButtonTitle","nextDate","isTodayInRange","i1$1","KEY_TO_ACTION","SelectionService","performSelection","selectionMode","activeViewEnum","rangePivot","isDateSelected","CellTemplateDirective","MonthCellTemplateDirective","YearCellTemplateDirective","DecadeCellTemplateDirective","CenturyCellTemplateDirective","WeekNumberCellTemplateDirective","HeaderTitleTemplateDirective","minValidator","err","minError","maxValidator","maxError","disabledDatesRangeValidator","selectedRange","disabledDatesInRange","Messages$1","MultiViewCalendarLocalizedMessagesDirective","VALUE_DOC_LINK$5","RANGE_CALENDAR_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","MultiViewCalendarComponent","RANGE_CALENDAR_RANGE_VALIDATORS","NG_VALIDATORS","selectionService","rangeValidation","disabledDatesRangeValidation","isHeaderActive","bottomView","topView","activeViewChange","valueChange","blurEvent","isHovered","prevView","nextView","_min","_max","_focusedDate","onControlChange","onControlTouched","onValidatorChange","minValidateFn","maxValidateFn","disabledDatesRangeValidateFn","setClasses","verifyValue","lastSelected","_selectionRange","cellTemplateRef","_cellTemplateRef","cellTemplate","monthCellTemplateRef","_monthCellTemplateRef","monthCellTemplate","yearCellTemplateRef","_yearCellTemplateRef","yearCellTemplate","decadeCellTemplateRef","_decadeCellTemplateRef","decadeCellTemplate","centuryCellTemplateRef","_centuryCellTemplateRef","centuryCellTemplate","weekNumberTemplateRef","_weekNumberTemplateRef","weekNumberTemplate","headerTitleTemplateRef","_headerTitleTemplateRef","headerTitleTemplate","bottomViewEnum","topViewEnum","widgetId","calendarTabIndex","ariaActivedescendant","handleFocusout","headerElement","handleMouseEnter","handleMouseLeave","handleMousedown","handleClick","viewList","emitNavigate","updateButtonState","verifyChanges","handleHeaderFocus","handleDateChange","canNavigateDown","sameDates","parseSelectionToValue","handleTodayButtonClick","todayDate","isSameView","isBottomView","setActiveDate","writeValue","registerOnChange","registerOnTouched","setDisabledState","registerOnValidatorChange","activeCellTemplate","navigateView","emitCellEvent","handleCellClick","selectionModifiers","i18n_8","i18n_10","RowHeightService","rowHeight","detailRowHeight","offsets","heights","agg","expandDetail","updateRowHeight","collapseDetail","prev","curr","ScrollAction","PageAction","ScrollerService","scrollObservable","firstLoaded","bottomOffset","topOffset","rowHeightService","lastLoaded","lastScroll","subject","ReplaySubject","offsetBufferRows","rowsForHeight","skipWithOffset","scrollSubscription","onScroll","scrollPosition","offsetSize","firstItemIndex","lastItemIndex","nonVisibleBuffer","SCROLLER_FACTORY_TOKEN","ScrollDirection","scrollModifiers","scrollNormalizers","scrollValidators","VirtualizationComponent","scrollerFactory","itemHeight","itemWidth","maxScrollDifference","scrollOffsetSize","scrollDuration","activeIndexChange","pageChange","scrollChange","wrapperClasses","dispatcher","horizontalClass","totalVertexLength","containerOffsetSize","getContainerProperty","containerScrollSize","containerScrollPosition","createRowHeightService","containerScrollSubscription","scroll$","emitActiveIndex","animationSubscription","activeIndex","itemIndex","itemOffset","isIndexVisible","containerTop","containerBottom","isListScrolled","scrollProperty","scrollToIndex","scrollToBottom","animateToIndex","indexOffset","getContainerScrollDirection","scrollRange","scrollStep","modifyScroll","normalizeScroll","isScrollValid","of","stream","scan","takeWhile","containerScroll","maxScroll","containerMaxScroll","difference","staticOffset","differenceToScroll","EMPTY","lastActiveIndex","DEFAULT_SCROLLER_FACTORY","observable","div$1","ul$1","li$1","td","th","tr","tbody","thead","repeat","mapper","scrollable$1","navigationList","navElement","viewFactory","renderWeekHeader","viewElement","contentElement","getScrollable","classList","monthView","yearView","decadeView","getBody","CalendarDOMService","ensureHeights","calendarHeight","calculateHeights","hostContainer","batch","monthViewHeight","headerHeight","scrollableContentHeight","calendarWidth","monthViewWidth","scrollableContentWidth","yearViewHeight","scrollableYearContentHeight","yearViewWidth","decadeViewHeight","centuryViewHeight","decadeViewWidth","centuryViewWidth","navigationItemHeight","viewHeight","viewDimension","viewWidth","viewProp","hostClone","cloneNode","NavigationComponent","dom","indexToScroll","maxViewHeight","totalChanged","virtualization","onPageChange","_c14","ViewListComponent","cols","minViewsToRender","getBottomOffset","colWidth","generateDates","date1","date2","isEqualMonthYear","updateIndex","isScrolled","getScrollableHeight","ScrollSyncService","magnitude","divideByMagnitude","powerByMagnitude","sync","navScrolled","monthScrolled","navSubscription","scrollSiblingOf","viewSubscription","scrolledElement","siblingComponent","calculateScroll","scrollableElement","NavigationItemTemplateDirective","PickerService","sameDateSelected","dateCompletenessChange","MultiViewCalendarCustomMessagesComponent","CalendarMessages","CalendarLocalizedMessagesDirective","VALUE_DOC_LINK$4","virtualizationProp","CALENDAR_VALUE_ACCESSOR","CalendarComponent","CALENDAR_RANGE_VALIDATORS","KENDO_INPUT_PROVIDER","scrollSyncService","pickerService","navigation","activeViewDateChange","syncNavigation","_type","calendar","activeViewDate","lastDayInPeriod","setAriaActivedescendant","_disabledDates","navigationItemTemplateRef","_navigationItemTemplateRef","navigationItemTemplate","localizationChangeSubscription","viewChangeSubscription","handleActiveViewChange","NgControl","navigationView","unbindCallback","pageChangeSubscription","focusTarget","multiViewCalendar","blurTarget","NgZone","handleMultiViewCalendarValueChange","emitSameDate","handleNavigate","emitEvent","handleActiveDateChange","handleBlur","emitBlur","emitFocus","handleMultiViewCalendarKeydown","handleComponentClick","handleKeydown","arrowKeyPressed","focusedCellId","i18n_17","i18n_19","incompleteDateValidator","incomplete","incompleteDate","Arrow","None","DateInputMessages","DateInputLocalizedMessagesDirective","DATE_PART_REGEXP","TIME_PART_REGEXP","SHORT_PATTERN_LENGTH_REGEXP","unpadZero","Mask","symbols","KendoDate","formatPlaceholder","twoDigitYearMax","leadingZero","monthNames","typedMonthPart","knownParts","m","allFormatedMonths","dayPeriods","allDayPeriods","sampleFormat","dateFormatString","setExisting","splitDateFormat","getExisting","shouldNormalizeCentury","part","getDateObject","getTextAndFormat","modifyPart","normalizeCentury","parsePart","currentChar","resetSegmentValue","resetLeadingZero","switchToNext","dateParts","baseFormat","replaced","suffix","currentMaxLength","parsedDate","matchMonth","dayPeriod","matchDayPeriod","isZeroCurrentChar","isAbbrMonth","partMap","incrementLeadingZero","middleNumber","monthNumber","patternValue","partPattern","peekDate","peek","patternLength","patternSatisfied","hasLeadingZero","setLeadingZero","twoDigitYear","cropTwoDigitYear","centuryBase","getNormalizedCenturyBase","peekValue","padZero","typedChar","monthAsNum","lowerChart","am","startsWith","pm","dateFormatParts","partLength","returnValue","mask","resultText","resultFormat","currentSymbol","dateFieldName","DateInputComponent","focusableId","readonly","ariaReadOnly","placeholder","autoCorrect","incompleteDateValidation","spinners","isPopupOpen","hasPopup","valueUpdate","arrowDirection","formatSections","hasMousedown","focusedPriorToMousedown","isDateIncomplete","currentFormat","backspace","incompleteValidator","kendoDate","paste","symbolsMap","dateSymbolMap","updateFormatSections","spinup","spindown","setSpinnerFill","inputElement","dateInput","inputFormat","displayFormat","verifyRange","isEqualToKendoDate","getKendoDate","updateElementValue","setComponentClasses","triggerChange","selectDateSegment","handleButtonClick","modifyDateSegmentValue","caret","millisecond","msDigits","millisecondDigitsInFormat","millisecondStepFor","putDateInRange","updateIncompleteValidationStatus","switchDateSegment","selectNearestSegment","previousFormatSymbol","begin","selectionPresent","selectionStart","selectionEnd","placeholderToggled","handleDragAndDrop","texts","showPlaceholder","isPosition","setSelectionRange","updateOnPaste","mousewheelHandler","handleMouseWheel","handlePaste","handleInput","oldTextOrigin","oldFormat","newTextOrigin","oldIndex","oldTextSeparator","oldText","newText","deletedSymbol","approximateStringMatching","navigationOnly","switchPart","parsedPart","spinner","oldFill","_c21","_c22","_c23","i18n_26","TOUCH_ENABLED","disabledDatesValidator","disabledDate","CalendarCustomMessagesComponent","DatePickerMessages","DatePickerLocalizedMessagesDirective","DatePickerComponent","touchEnabled","calendarType","animateCalendarNavigation","readOnlyInput","disabledDatesValidation","popupUID","_show","disabledDatesValidateFn","pickerSubscriptions","handleSameSelection","handleDateCompletenessChange","toggleButton","inputRole","togglePopup","windowBlurSubscription","handleIconClick","focusInput","handleChange","handleInputChange","mergeTime","focusedElement","isTabExitingCalendar","toggleFocus","handleWindowBlur","blurComponent","_c29","_c30","_c31","i18n_34","i18n_36","i18n_38","TIME_PART","clamp$3","HOURS_IN_DAY","distanceFromMin$3","limit$3","borderValue","barrier","limitDown$3","limitUp$3","HoursService","boundRange","insertUndividedMax","toListItem","selectedValue","getHour","stepper$3","countFromMin","addLast","addMissing","isRangeChanged","isLastMissing","missing","isMissing","selectedIndex","divideByStep","valueInList","lastHour","missingItem","clamp$2","MINUTES_IN_HOUR","distanceFromMin$2","limit$2","limitDown$2","limitUp$2","MinutesService","minute","getMinute","stepper$2","lastMinute","clamp$1","SECONDS_IN_HOUR","distanceFromMin$1","limit$1","limitDown$1","limitUp$1","SecondsService","getSecond","stepper$1","lastSecond","MILLISECONDS_IN_SECOND","distanceFromMin","limitDown","limitUp","MillisecondsService","getMillisecond","stepper","lastMillisecond","isAM","inReverseRange","DayPeriodService","hourAM","candidateAM","normalizedRange","isPM","__","minHour","maxHour","ul","li","TIMELIST_WRAPPER","TimePickerDOMService","timeListHeight","nil","getters","services","$l_dayperiod","$l_hour","$l_minute","$l_second","$l_millisecond","TimeListComponent","componentClass","serviceSettings","valueChanges","hasMissingValue","textHasChanged","listHeight","topThreshold","bottomThreshold","scrollOnce","handleItemClick","scrollUp","isPreviousMissing","isCurrentMissing","oldData","handleKeyDown","debounceTime","isEqualTillMinute","isEqualTillSecond","defaultGetters","minGetter","isEqualTillMillisecond","generateGetters","getterByPart","convertToObject","gettersFactory","generateSnappers","rest","snapValue","snappersFactory","valueMerger","TimePickerMessages","TimeSelectorLocalizedMessagesDirective","listReducer","TimeSelectorComponent","cancelButton","setButton","nowButton","valueReject","showNowButton","_activeListIndex","_steps","timeSelector","timeInRange","snapTime","activeListIndex","timeListWrappers","listWrapper","listIndex","focusedWrapper","timeLists","handleAccept","mergeValue","handleNow","handleReject","handleListFocus","partStep","snappers","hasSteps","focusList","hasActiveButton","accept","k","partIndex","listIdx","partIdx","_c42","_c43","_c44","_c45","i18n_48","i18n_50","i18n_52","i18n_54","i18n_56","TimeSelectorCustomMessagesComponent","TimePickerLocalizedMessagesDirective","formatRegExp","TimePickerComponent","timeRangeValidateFn","timeRangeError","timeRangeValidator","verifyFormat","val","normalizeTime","i18n_62","i18n_64","i18n_66","i18n_68","i18n_70","i18n_72","LocalizedMessagesDirective","timeFormatRegExp","DEFAULT_ACTIVE_TAB","DateTimePickerComponent","activeTab","timeSelectorFormat","timeSelectorMin","timeSelectorMax","calendarValue","calendarMin","calendarMax","_format","_defaultTab","_isActive","setCalendarValue","getDisplayFormat","getTimeSelectorFormat","defaultTab","tabSwitchTransition","disableCalendar","disableTimeSelector","activeTabComponent","detectPopupChanges","handleCalendarValueChange","handleCancel","verifyMinMaxRange","runInZone","switchFocus","focusTargetInComponent","changeActiveTab","handleTabChangeTransitionEnd","dateTimeSelector","handleValueChange","handleInputValueChange","setTimeSelectorMinMax","handleTabOut","focusableSiblingAvailable","nextElementSibling","handleBackTabOut","popupButtonsClasses","buttonType","preventMouseDown","timeFormatPartFilter","previousPart","focusInPopup","focusInWrapper","selectedDate","minDateSelected","maxDateSelected","isInCalendarRange","i18n_77","i18n_79","i18n_81","i18n_83","i18n_85","i18n_87","i18n_89","i18n_91","i18n_93","i18n_95","i18n_97","i18n_99","i18n_101","DateRangePopupTemplateDirective","cmp","DateRangeService","activeRangeEnd$","focusedDate$","endInput$","startInput$","dateRangePopup$","range$","activatePopup","dateRangePopup","deactivatePopup","cancelPopup","hasActiveComponent","isPopup","isStart","isEnd","hasActiveContent","registerStartInput","startInput","registerEndInput","endInput","registerPopup","setActiveRangeEnd","activeRange","setFocusedDate","DateRangeSelectionDirective","dateRangeService","autoCorrectOn","activeRangeEndChange","selectionRangeChange","calendarSubscriptions","isEqualCalendarRange","updateFocusedDate","calendarRange","addSubscriptions","handleHover","rangeEnd","acceptAndEmit","shouldAutoCorrect","activeEnd","hasCompleteRange","DateRangePopupComponent","ref","popupSubscriptions","_calendar","subscribeFocusBlur","contentCalendar","viewCalendar","activateSubscription","blurSubscription","focusSubscription","addPopupSubscriptions","_appendTo","contentTemplate","defaultTemplate","RTL","_c110","DateRangeComponent","showDefault","hasContentPopup","contentPopup","DateRangeInput","navigateCalendarOnFocus","isActiveEnd","popupCalendarActivated","focusActiveDate","toggleActiveClass","initPopup","updateInputValue","unsubscribePopup","correctOn","DateRangeEndInputDirective","rangeService","DateRangeStartInputDirective","CalendarCommonModule","TemplatesModule","MultiViewCalendarModule","IntlModule","VirtualizationModule","CalendarModule","CalendarsModule","DateInputCustomMessagesComponent","DateInputModule","DatePickerCustomMessagesComponent","DatePickerModule","COMPONENT_MODULES$2","DateRangeModule","TimePickerCustomMessagesComponent","COMPONENT_MODULES$1","TimePickerModule","DateTimePickerCustomMessagesComponent","DateTimePickerModule","COMPONENT_MODULES","DateInputsModule","ctx_r1","toClassList","focusableRegex","ctrl","DIALOG_ELEMENTS_HANDLING_ESC_KEY","namesList","isFocusable","checkVisibility","validTabIndex","focusable","isVisible","setHTMLAttributes","parseCSSClassNames","parseObjectClassNames","parseStringClassNames","parseArrayClassNames","currentClassName","splitStringToArray","classesArray","focusableSelector","RESIZE_DIRECTIONS","OFFSET_STYLES","createValueWithUnit","DialogActionsComponent","buttonGroupClassName","actionsTemplate","actionsArray","buttonClass","cssClasses","cssClass","i6","DIALOG_LOCALIZATION_SERVICE","TitleBarLocalizationService","messageService","dialogLocalization","shortKey","DialogTitleBarComponent","closeButtonTitle","closeTitle","onStable","onCloseClick","DialogCloseResult","animateContent","defAnimationConfig","animatedElement","animationConfig","animationSpecs","animations","animationType","startScale","endScale","transformOrigin","startZoom","endZoom","keyframes","startFade","endFade","createPlayer","DEFAULT_ANIMATION_CONFIG","DialogComponent","actionsLayout","titleId","contentId","domSubs","generateTitleId","generateContentId","htmlAttributes","tIndex","_htmlAttributes","setServiceClasses","_cssClass","titlebarContent","handleInitialFocus","titlebarView","actionsView","initDomEvents","dialog","ev","onKeyDown","handleActionButtonFocus","keepFocusWithinComponent","primaryButton","findPrimary","autoFocusedElement","initiallyFocusedElement","shouldFocusPrimary","findPrimaryButton","focusableActionButtons","getAllFocusableChildren","firstFocusable","lastFocusable","getFirstAndLastFocusable","tabAfterLastFocusable","shiftTabAfterFirstFocusable","DialogRef","DialogContentBase","dialogTitleBar","dialogActions","viewQuery","DialogContainerService","DialogInjector","getDialogRef","parentInjector","notFoundValue","DialogService","resolver","containerService","resolveComponentFactory","initializeDialog","dialogRef","contentFrom","createComponent","apiClose","componentRef","preventAction","dialogRefParameter","isNotComponent$1","share","hasContentTitle","hasContentActions","multipleTitles","multipleActions","warn","Renderer2","titleNodes","actionNodes","createText","newZIndex","resizable","createMoveStream","mouseDown","takeUntil","originalY","DragResizeService","stateChange","resizeStart","resizeEnd","lastAction","dragSubscription","restoreOptions","onDrag","dragStarted","currentPosition","switchMap","ensureWidth","handleDrag","startOffsetAndPosition","resizeStarted","currentOffsetAndPosition","handleResize","old","newWidth","newHeight","newTop","newLeft","restoreAction","defaultState","storeOptions","maximizeAction","maximizeState","windowViewPort","minimizeAction","minimizeState","applyManualState","clearHeight","closeAction","windowOffset","o","setPosition","positionWithScroll","getDocumentElement","setRestoreOption","nextPossibleZIndex","nextZIndex","getWindowViewPort","ResizeHandleDirective","setDisplay","WindowTitleBarComponent","dragDirective","isDraggable","subscribeDrag","subscribeStateChange","unsubscribeDrag","unsubscribeState","titleBar","stateSubscription","handleArrow","handleEscape","handleStateChange","WindowMinimizeActionDirective","Button","_service","WindowMaximizeActionDirective","WindowRestoreActionDirective","WindowCloseActionDirective","WindowComponent","keepContent","widthChange","heightChange","topChange","leftChange","draged","resized","windowSubscription","resizeDirections","setOption","restoreButtonTitle","restoreTitle","maximizeButtonTitle","maximizeTitle","minimizeButtonTitle","minimizeTitle","setNextZIndex","setInitialOffset","titleBarContent","titleBarView","isTruthy","updateAllOffset","bringToFront","setDimension","setOffset","showDefaultTitleBar","styleMinWidth","styleMinHeight","stylePosition","wrapperMaximizedClass","wrapperMinimizedClass","onComponentFocus","onComponentBlur","currentZIndex","viewPort","parsedValue","i18n_11","i18n_13","i18n_15","_c17","WindowCloseResult","WindowContainerService","WindowInjector","getWindowRef","WindowRef","WindowService","windowRef","preventClose","windowRefParameter","isNotComponent","titleBarTemplate","DialogContainerDirective","CustomMessagesComponent","SharedModule","DialogModule","WindowContainerDirective","WindowModule","DialogsModule","not","pred","thisArg","skipWhile","operate","subscriber","taking","createOperatorSubscriber","_r11","index_r3","node_r2","DataChangeNotificationService","hasChildren","isChecked","isExpanded","trackBy","ExpandStateService","collapse","IndexBuilderService","INDEX_SEPARATOR","nodeIndex","parentIndex","indexForLevel","lastLevelIndex","NaN","LoadingNotificationService","notifyLoaded","matcher","webkitMatchesSelector","closestWithMatch","isBlank","isBoolean","closestNode","skipTab","isContent","isLoadMoreButton","focusableNode","nodeId","dataItemsEqual","getDataItem","lookup","isArrayWithAtLeastOneItem","v","filterTree","term","operator","ignoreCase","isMatch","matchByFieldAndCase","containsMatches","setParentChain","makeAllVisible","operators","doesnotcontain","startswith","lastIndexOf","doesnotstartwith","endswith","doesnotendwith","matchByCase","buildTreeIndex","fetchLoadedDescendants","filterExpression","descendants","sameValues","as","safe","safeChildren","lastVisibleNode","NavigationModel","ib","firstVisibleNode","lastVisibleChild","findNode","visibleSibling","firstFocusableNode","findParent","parentLevel","findVisibleChild","findVisiblePrev","levelIndex","prevNodesHidden","currentNode","findVisibleNext","hasVisibleChildren","registerItem","loadMoreButton","unregisterItem","childLevel","indexToMatch","isLeaf","n","nextItemIndex","nextItem","expands","moves","checks","selects","loadMore","navigable","focusableItem","moveToFirstVisibleChild","moveToParent","handleEnter","handleSpace","shouldScroll","activeItem","isActiveExpanded","notifyMove","activateParent","activateIndex","activateClosest","activateFocusable","checkIndex","selectIndex","notifyLoadMore","itemAtIndex","updateItem","moveAction","notifyExpand","navigationState","NodeChildrenService","childrenLoaded","NodeTemplateDirective","LoadMoreButtonTemplateDirective","DataBoundComponent","ExpandableComponent","isFirstSelected","firstIndex","setFirstSelected","INDEX_REGEX","TreeViewLookupService","currentLookup","registerChildren","replaceItem","addToParent","itemLookup","mapChildren","parentItem","CheckBoxComponent","checkStateChange","checkState","classWrapper","indeterminate","checked","checkBoxClasses","buildItem","TreeViewItemDirective","expandService","lookupService","loadOnDemand","isInitialized","_isExpanded","_isSelected","isButton","treeItem","parentTreeItem","parentDataItem","registerNavigationItem","setAriaAttributes","updateTabIndex","moveLookupItem","moveNavigationItem","updateNodeAvailability","navState","focusItem","activateItem","shouldExpand","scrollIntoView","preventScroll","firstChange","indexChange","expandable","selectable","checkable","LoadingIndicatorDirective","loadingService","cd","_loading","loadingNotifications","TreeViewItemContentDirective","initialSelection","updateFocusClass","updateSelectionClass","TOP_ITEM","MID_ITEM","BOT_ITEM","TreeViewGroupComponent","indexBuilder","treeViewLookupService","nodeChildrenService","dataChangeNotification","kGroupClass","initialNodesLoaded","loadingMoreNodes","isItemExpandable","expandDisabledNodes","isItemDisabled","singleRecordSubscriptions","moreNodesAvailable","loadMoreService","pageSize","totalNodesCount","getGroupSize","setGroupSize","normalizedSizeValue","registerLoadedNodes","loadMoreButtonIndex","getTotalNodesCount","hasTemplate","nodeTemplateRef","expandNode","checkNode","nodeText","nodesSubscription","loadMoreNodesSubscription","subscribeToNodesChange","loadMoreNodes","setNodeChildren","mapToTreeItem","fetchChildren","catchError","nextFields","fetchMoreNodes","loadMoreLocalNodes","disableParentNodesOnly","setItemClasses","initialLoadMoreButtonIndex","getInitialPageSize","reselectItemAt","finalize","emitChildrenLoaded","contentChildren","mappedChildren","i9","TreeViewComponent","filterInputPlaceholder","fetchNodes","nodeDragStart","nodeDrag","filterStateChange","nodeDrop","nodeDragEnd","addItem","removeItem","checkedChange","selectionChange","filterChange","nodeClick","nodeDblClick","filterable","checkboxes","expandIcons","touchActions","_animate","_nodeTemplateRef","nodeTemplateQuery","loadMoreButtonTemplateRef","_loadMoreButtonTemplateRef","loadMoreButtonTemplateQuery","_hasChildren","_isChecked","preloadChildNodes","attachDomHandlers","focusIndex","rebindChildren","collapseNode","getNodePageSize","verifyLoadMoreService","setNodePageSize","registerLookupItems","keydownHandler","treeItems","currentLevelIndex","buildTreeItem","CheckDirective","treeView","checkedKeysChange","checkActions","checkMultiple","checkSingle","check","expandedItems","checkChildren","addCheckedItemsChildren","isItemChecked","checkParents","checkSettings","toggleCheckOnClick","checkedKeys","lastChange","unsubscribeClick","checkKey","itemKey","isIndexChecked","indexChecked","hasKey","checkOnClick","clickSubscription","currentKey","pendingCheck","checkDisabledChildren","shouldCheck","currentParent","parentKey","allChildrenSelected","childrenSel","lookups","initiallyCheckedItemsCount","disabledItems","DisableDirective","disabledKeys","disableKey","DEFAULT_FILTER_EXPAND_SETTINGS","maxAutoExpandResults","expandMatches","expandedOnClear","ExpandDirective","expandOnFilter","expandedKeysChange","originalExpandedKeys","isFiltered","updateExpandedNodes","collection","autoExpandMatches","getEveryExpandKey","toggleExpand","handleAutoExpand","filterExpandSettings","expandedKeys","expandKey","matchCount","rootNode","indicesToExpand","SelectDirective","selectedKeysChange","selectActions","selectMultiple","selectSingle","getAriaMultiselectable","selectionSettings","selectedKeys","selectKey","DropAction","DropPosition","Add","InsertTop","InsertBottom","InsertMiddle","Invalid","Over","Before","After","TreeItemDropEvent","initializer","isValid","setValid","TreeItemDragStartEvent","hasRelativeStackingContext","memoize","called","isDifferent","getDropPosition","draggedItem","targetTreeView","containerOffset","getContentElement","targetChildOfDraggedItem","itemViewPortCoords","itemDivisionHeight","pointerPosition","itemTop","treeItemFromEventTarget","dropTarget","collapseEmptyParent","parentNodes","treeview","expandDropTarget","getDropTarget","elementFromPoint","updateMovedItemIndex","newIndex","originalIndex","movedItemNewIndexParts","originalItemIndexParts","originalItemParentPathLength","originalItemParentPath","movedItemParentPath","originalItemIndexLevel","originalItemLevelIndex","movedItemLevelIndex","SCROLLBAR_REG_EXP","isTopReached","isBottomReached","scrollElementBy","initialScrollTop","currentStep","iterations","copyPageSize","sourceGroupSize","incrementPageSize","currentPageSize","decrementPageSize","HierarchyEditingService","hierarchyBinding","sourceItem","destinationItem","dropPosition","sourceTree","destinationTree","clonedSourceDataItem","destinationChildren","childrenFor","targetIndex","childrenField","movedItemNewIndex","destinationParentNodes","getParentNodes","shiftIndex","updatedParent","sourceParentNodes","sourceItemIndex","DEFAULT_FILTER_SETTINGS","FilteringBase","visibleNodes","_filterSettings","filterSettings","handleFilterChange","filterData","resetNodesVisibility","updateVisibleNodes","inputs","DragClueComponent","posistionStyle","statusIconClass","DragAndDropAssetService","_componentRef","DragClueService","componentFactoryResolver","clueComponentFactory","cancelReturnAnimation","cancelScroll","animateDragClueToElementPosition","targetElementViewPortCoords","clueElementViewPortCoords","returnAnimation","updateDragClueData","dragClue","updateText","scrollableContainer","nodeName","hasOverflow","hasScrollbar","getScrollableContainer","containerRect","clueRect","firstVisibleClientTopPart","topLimit","bottomLimit","scrollInterval","setInterval","DropHintComponent","pointerEvents","DropHintService","hintComponentFactory","updateDropHintData","dropHint","DragClueTemplateDirective","DropHintTemplateDirective","DEFAULT_SCROLL_SETTINGS","DragAndDropDirective","dragClueService","dropHintService","allowCopy","dropZoneTreeViews","startDragAfter","autoScroll","userSelectStyle","scrollSettings","userProvidedSettings","initalizeDraggable","assetsContainer","dragClueTemplate","dropHintTemplate","handlePress","pendingDragStartEvent","shouldInitiateDragStart","initiateDragStart","notifyDrag","getTargetTreeView","dropHintAnchor","dropAction","previousElementSibling","getDropAction","updateDropHintState","updateDragClueState","handleRelease","notifyDrop","notifyDragEnd","anchorViewPortCoords","notifyDragStart","dragEvent","disableAnimationsForNextTick","dragEndEvent","treeViewTagName","currentPointerCoords","offsetParent","getContainerOffset","indexBuilder$1","mapToWrappers","currentLevelNodes","HierarchyBindingDirective","dragAndDropDirective","originalData","shouldFilter","_childrenField","editService","updateNodes","FlatEditingService","flatBinding","destinationItemId","idField","parentIdField","getLastVisibleChildNodeIndex","rebindData","fetchChildNodes","destinationItemParentId","addChildNodes","sourceDataItem","removeChildNodes","parentChildren","itemChildren","fetchAllDescendantNodes","visibleNodesCount","visibleChildren","lastNode","findChildren","mapToTree","allNodes","FlatDataBindingDirective","isNullOrEmptyString","reduceRight","compose","CheckBoxModule","DragAndDropEditingDirective","handleAdd","handleRemove","LOAD_MORE_DOC_LINK","LoadMoreDirective","pageSizes","rootLevelId","getInitalPageSize","totalField","loadedNodesCount","totalRootNodes","InputsModule","TreeViewModule","_r18","dataItem_r24","ctx_r26","ctx_r35","ctx_r27","_r41","ctx_r40","_r44","ctx_r43","_r19","_r21","_r20","_r16","ctx_r24","_r27","_r29","ctx_r28","_r23","ctx_r22","_r25","_r46","ctx_r45","ctx_r47","_r49","ctx_r48","ctx_r25","ctx_r31","_r22","ctx_r21","ctx_r23","_r30","ctx_r29","ctx_r32","ctx_r33","ctx_r34","isEmptyString","resolveAllValues","customValues","validateComplexValues","resolveValuesInArray","isObjectArray","selectedIndices","extractedValues","getter$1","matchText","word","hasProps","props","isUntouched","parseNumber","normalizedValue","inDropDown","getHierarchicalItemLevel","fetchDescendentNodes","descendent","valueFrom","valueLevel","SearchBarComponent","onNavigate","searchBarClass","_userInput","_previousValue","_placeholder","userInput","setInputSize","previousUserInput","suggestedText","caretIndex","caretAtEnd","writeInputValue","combineStr","setInputSelection","lengthOf","placeholderLength","textLength","kendo_angular_dropdowns_c0","ItemTemplateDirective","HeaderTemplateDirective","FooterTemplateDirective","GroupTemplateDirective","FixedGroupTemplateDirective","onSelect","onChange","newSelection","added","unselect","removed","resetSelection","DataService","grouped","groupIndices","isGrouped","getGroupIndices","_flatData","flatten","itemsCount","header","startFrom","offsetIndex","closestGroup","itemAt","flatIndex","groupAt","groupField","itemGroup","groupIndex","DisabledItemsService","dataService","itemDisabled","isIndexDisabled","defaultItem","NavigationEvent","disabledItemsService","home","nextIndex","clampIndex","firstFocusableIndex","inversedStep","NoDataTemplateDirective","FilterableComponent","DEFAULTS","normalizeVirtualizationSettings","defaultOverrides","ListItemDirective","SelectableDirective","multipleSelection","focusedClassName","selectedClassName","listResize","lastScrollTop","scrollToFocused","selectSubscription","scrollToItem","prepareClasses","hasVirtualScrollbar","checkboxClasses","setOverflow","prefetchData","findCurrentGroup","positionItems","scrollTarget","onCheckedChange","listContentClass","listClass","listItemClass","listVirtualClass","listGroupStickyHeaderClass","listGroupStickyHeaderTextClass","listGroupItemClass","listGroupItemTextClass","normalizedIndex","firstVisibleItem","currentGroup","visibleItems","trunc","nextPage","leftOver","prevPage","changePage","isAltRow","firstGroupHeaderInTargetedPage","contentScrollTop","itemOffsetTop","itemOffsetHeight","contentOffsetHeight","bottomDistance","offsetTop","virtualOffsetHeight","virtualContainer","kendo_angular_dropdowns_c2","kendo_angular_dropdowns_c3","kendo_angular_dropdowns_c4","i11","AUTOCOMPLETE_VALUE_ACCESSOR","AutoCompleteComponent","highlightFirst","clearButton","opened","listBoxId","optionPrefix","onChangeCallback","onTouchedCallback","popupMouseDownHandler","valueChangeSubject","subscribeTouchEvents","wrapperOffsetWidth","popupHeight","listContainerClasses","containerClasses","suggestion","hasMatch","suggest","backspacePressed","clearButtonVisiblity","sameState","triggerPopupEvents","activeDescendant","noDataLabel","messageFor","stringify","_virtualSettings","isLoading","unsubscribeEvents","clearValue","stopImmediatePropagation","focusItemAt","searchbar","popupWrapper","emitChange","search","findIndexPredicate","searchBarChange","currentTextLength","exactMatch","insensitiveMatch","valueHasChanged","valueChangeSubscription","changeSubscription","handleItemChange","handleItemFocus","navigationSubscription","closeSubscription","enterSubscription","escSubscription","touchstartDisposeHandler","_event","anchorPosition","popupPosition","optionsList","popupClose","maxIndex","itemText","_c8","_c9","MultiselectMessages","MultiSelectTreeMessages","ComboBoxMessages","MultiColumnComboBoxMessages","DropDownListMessages","DropDownTreeMessages","COMBOBOX_VALUE_ACCESSOR","ComboBoxComponent","allowCustom","valueNormalizer","defaultVirtualItemHeight","defaultVirtualPageSize","_filtering","_text","filterText","customValueSubject","valueSubject","clearValueSubject","setState","valuePrimitive","isPrimitive","_valuePrimitive","popupWidth","attachStreams","createValueStream","attachSelectClickHandler","valueStream","clearFilter","customValueStreams","partition","allowCustomValueStream","custom","disableCustomValueStream","clearValueStream","valueSubscription","merged","selectionChanged","emitValueChange","selectionArgs","handleNavigationOpen","updateState","selectClickDisposeHandler","clearState","textEmpty","valueEmpty","_previousDataItem","buttonClasses","selectButtonClasses","resolved","findDataItem","confirm","getSuggestion","hasSelected","shouldSuggest","hasFocused","previousText","focusedItemText","useSuggestion","unresolvedSelection","currentText","restoreItemFocus","isCustom","selectClick","preventEventDefault","focusedDataItem","isInDropDown","selectElement","_c16","i18n_21","ValueTemplateDirective","FilterInputDirective","nextTick","DROPDOWNLIST_VALUE_ACCESSOR","DropDownListComponent","filterFocused","filterBlurred","hostElementFocused","hostElementBlurred","selectionSubscription","subscribeFocusEvents","onMouseDown","widgetTabIndex","providedTabIndex","ariaOwns","blurFilterInput","focusComponent","hostTabIndex","isReadonly","isAriaExpanded","hostAriaOwns","hostAriaActivedescendant","hostNoDataLabel","isHomeEnd","focusedItemNotSelected","leftRightKeys","onKeyPress","localizationChangesSubscription","assignAriaDescribedBy","onFilterFocus","filterInputClasses","optionLabelSizeClass","isDisabledDefaultItem","getDefaultItemText","onSelectionChange","itemFromEvent","shouldUsePrevious","shouldUseNewValue","openSubscription","filterBlurredSubscription","concatMap","componentBlurredSubscription","componentBlur","unSubscribeFocusEvents","currentOrDefault","defaultItemIndex","charCode","typingTimeout","selectNext","isInLoop","sameCharsOnly","splitIndex","shuffleData","loopMatch","nextMatch","primitive","ofSameType","handleFilter","trimmed","valueLabelId","CustomItemTemplateDirective","TagTemplateDirective","GroupTagTemplateDirective","RemoveTagEvent","TagListComponent","disabledIndices","removeTag","hostId","tagProp","tag","propField","getPropField","isTagDisabled","positionIndex","isGroupTag","_tag","deleteTag","itemId","tagPrefix","tagAriaHidden","fieldsCount","valueDepth","MULTISELECT_VALUE_ACCESSOR","MultiSelectComponent","differs","tagListId","focusedTagIndex","autoClose","tagMapper","tags","matchingValue","initialized","_checkboxes","selectedDataItems","observableSubscriptions","onSearchBarFocus","onSearchBarBlur","differ","valueChangeDetected","normalizeCheckboxesSettings","hostMousedown","customItemSizeClass","focusedListIndex","addCustomValue","resolveDataItemFromTags","disabledItemsMapper","searchTextAndFocus","navigateInput","selectValue","handleBackspace","handleRemoveTag","removeGroupTag","removeSingleTag","clearAll","_item","createCustomValueStream","onTagMapperChange","isClosed","isTagFocused","handleClose","handleUp","handleHome","handleEnd","handleDelete","handleRightKey","handleLeftKey","handleDownKey","customValueSubscription","dataItemValues","isDataItemDisabled","customItem","startsFrom","i18n_33","ColumnCellTemplateDirective","ColumnHeaderTemplateDirective","ComboBoxColumnComponent","hidden","matchesMedia","SCROLLBAR_WIDTH","scrollbarWidth","getRowWidthFromColumnsMeta","columns","allColumnsWidthsSet","initialRowWidht","totalWidth","MultiColumnComboBoxComponent","removeWindowResizeListener","updateHeaderPadding","tableSizeClass","updateColumnsMediaState","addWindowResizeListener","textFrom","headerPaddingPosition","media","matchMedia","_c35","DEFAULT_POPUP_SETTINGS$1","hasChildren$1","fetchChildren$1","itemDisabled$1","isNodeVisible$1","DropDownTreeComponent","nodeExpand","nodeCollapse","isNodeVisible","guid$1","allNodesHidden","_treeview","_nodes","_dataItem","isNodeExpanded","popupContainerClasses","handleFilterInputChange","selectBy","filterInput","handleDocumentBlur","sub","i18n_46","BaseCheckDirective","checkedItems","getKey","updateItems","CheckAllDirective","checkedItemsChange","currentCheckedState","currentIndeterminateState","isIndeterminate","_node","someChecked","allChecked","handleCheckedChange","getCheckedState","isItemIndeterminate","DEFAULT_POPUP_SETTINGS","DEFAULT_CHECKABLE_SETTINGS","MultiSelectTreeComponent","checkAll","checkBy","showAfter","_checkableSettings","ariaDescribedBy","ariaActiveDescendant","focusedTagId","isWrapperActive","checkableSettings","_dataItems","isTreeViewActive","isFilterActive","isCheckAllActive","checkAllInput","lastNodeOnFocus","handleNodeClick","removeTreeViewFromTabOrder","handleCheckedItemsChange","updateValue","handleTagMapperChange","setTags","_depth","checkAllCheckboxClasses","toggleCheckAll","isEveryDataItemObject","handleTabKey","handleUpKey","isFirstNodeActive","_c51","DropDownTreeFlatBindingDirective","dropDownTree","DropDownTreeHierarchyBindingDirective","MultiSelectTreeFlatBindingDirective","multiSelectTree","MultiSelectTreeHierarchyBindingDirective","DropDownTreesExpandDirective","caseSensitive","FilterDirective","filterChangeSubscription","matchesAnyField","normalizedQuery","normalizeValue","checkItem","getFilterFields","providedFields","rawSettings","SharedDirectivesModule","FormsModule","MultiSelectTreeSummaryTagDirective","multiSelectTreeComponent","createTagMapper","DropDownTreesModule","SummaryTagDirective","multiSelectComponent","AutoCompleteModule","ComboBoxModule","DropDownListModule","MultiSelectModule","DropDownsModule","OrderedMap","found","newKey","self","addToStart","addToEnd","addBefore","place","without","subtract","toObject","findDiffStart","childCount","childA","childB","sameMarkup","isText","nodeSize","findDiffEnd","posA","posB","iA","iB","same","Fragment","nodesBetween","nodeStart","textBetween","blockSeparator","leafText","separated","spec","isBlock","lastChild","withText","cut","cutByIndex","replaceChild","eq","RangeError","maybeChild","otherPos","retIndex","curPos","toStringInner","toJSON","schema","nodeFromJSON","joined","fromArray","compareDeep","Mark","addToSet","placed","excludes","rank","removeFromSet","isInSet","json","marks","none","ReplaceError","Slice","openStart","openEnd","fragment","insertInto","removeBetween","removeRange","fromJSON","openIsolating","isolating","indexTo","offsetTo","canReplace","$from","$to","replaceOuter","prepareSliceForReplace","$along","extra","resolveNoCache","replaceThreeWay","parentOffset","replaceTwoWay","checkJoin","main","compatibleContent","joinable","$before","$after","addNode","$start","$end","textOffset","nodeAfter","nodeBefore","validContent","ResolvedPos","resolveDepth","doc","indexAfter","before","after","dOff","posAtIndex","inclusive","marksAcross","isInline","sharedDepth","blockRange","inlineContent","NodeRange","sameParent","rem","resolveCache","cached","resolveCachePos","resolveCacheSize","emptyAttrs","startPos","hasMarkup","defaultAttrs","sameSet","mark","includeParents","nodeAt","childAfter","childBefore","resolveCached","rangeHasMark","isTextblock","isAtom","toDebugString","wrapMarks","contentMatchAt","contentMatch","matchFragment","replacement","two","validEnd","allowsMarks","canReplaceWith","matchType","canAppend","markFromJSON","ContentMatch","wrapCache","string","nodeTypes","TokenStream","expr","parseExpr","dfa","nfa","labeled","explore","nullFrom","connect","exprs","checkForDeadEnds","dead","hasRequiredAttrs","frag","defaultType","compatible","fillBefore","toEnd","seen","finished","tp","createAndFill","findWrapping","computed","computeWrapping","via","edgeCount","tokens","eat","tok","SyntaxError","parseExprSeq","parseExprSubscript","parseExprAtom","resolveName","typeName","parseExprRange","parseNum","attrName","hasDefault","computeAttrs","built","given","initAttrs","Attribute","NodeType","markSet","atom","whitespace","isRequired","setFrom","createChecked","allowsMarkType","markType","allowedMarks","topType","topNode","MarkType","Schema","contentExprCache","contentExpr","markExpr","gatherMarks","excl","topNodeType","wrappings","ok","rules","rule","normalizeLists","ParseContext","addAll","parseSlice","maxOpen","matchTag","namespace","matchesContext","getAttrs","matchStyle","priority","parseDOM","domParser","schemaRules","blockTags","address","article","aside","blockquote","dd","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","hgroup","hr","noscript","ol","pre","section","tfoot","ignoreTags","script","listTags","wsOptionsFor","preserveWhitespace","OPT_PRESERVE_WS","NodeContext","pendingMarks","activeMarks","stashMarks","popFromStashMark","applyPending","nextType","pending","markMayApply","inlineContext","parser","topContext","topOptions","topMatch","findPositions","needsBlock","addDOM","addTextNode","readStyles","parseStyles","re","addPendingMark","addElement","removePendingMark","nodeValue","domNodeBefore","previousSibling","insertNode","findInText","findInside","matchAfter","ruleID","normalizeList","prevItem","nextSibling","ruleFromNode","ignore","ignoreFallback","closeParent","oldNeedsBlock","leafFallback","addElementByRule","consuming","createTextNode","findPlace","continueAfter","startIn","getContent","contentDOM","findAround","findAtPoint","enterInner","textblockFromContext","closeExtra","preserveWS","topOpen","currentPos","compareDocumentPosition","textNode","useRoot","minDepth","$context","deflt","findSameMarkInSet","upto","stashMark","mozMatchesSelector","DOMSerializer","serializeFragment","createDocumentFragment","keep","rendered","spanning","markDOM","serializeMark","serializeNodeInner","renderSpec","serializeNode","toDOM","structure","xmlNS","createElementNS","setAttributeNS","innerContent","domSerializer","nodesFromSchema","marksFromSchema","gatherToDOM","factor16","makeRecover","recoverIndex","MapResult","delInfo","recover","deleted","deletedBefore","deletedAfter","deletedAcross","StepMap","inverted","recoverOffset","mapResult","assoc","simple","oldSize","del","oldStart","Mapping","maps","appendMap","mirrors","setMirror","appendMapping","mapping","startSize","mirr","getMirror","appendMappingInverted","corr","stepsByID","Step","getMap","stepType","stepClass","jsonID","StepResult","failed","fail","mapFragment","mapped","AddMarkStep","oldSlice","fromReplace","RemoveMarkStep","AddNodeMarkStep","newSet","RemoveNodeMarkStep","ReplaceStep","contentBetween","ReplaceAroundStep","gapFrom","gapTo","canCut","liftTarget","innerRange","around","findWrappingOutside","outer","findWrappingInside","innerMatch","withAttrs","canSplit","typesAfter","$pos","innerType","baseType","canJoin","replaceStep","fitsTrivially","Fitter","unplaced","frontier","findFittable","placeNodes","openMore","dropNode","moveInline","mustMoveInline","placedSize","pass","sliceDepth","contentAt","frontierDepth","inject","openAtEnd","dropFromFragment","closeFrontierNode","openFrontierNode","taken","openEndCount","closeNodeStart","addToFragment","contentAfterFits","findCloseLevel","dropInner","invalidMarks","definesContent","defining","definingForContent","closeFragment","oldOpen","newOpen","coveredDepths","AttrStep","TransformError","__proto__","Transform","docs","maybeStep","addStep","docChanged","replaceWith","replaceRange","deleteRange","targetDepths","preferredTarget","definingAsContext","preferredTargetIndex","leftNodes","preferredDepth","def","openDepth","targetDepth","startSteps","replaceRangeWith","insertPoint","covered","lift","gapStart","gapEnd","splitting","wrappers","setBlockType","mapFrom","canChangeType","clearIncompatible","startM","endM","setNodeMarkup","newNode","setNodeAttribute","addNodeMark","removeNodeMark","typeAfter","addMark","removing","adding","removeMark","parentType","delSteps","allowed","classesById","$anchor","$head","SelectionRange","lastParent","selectionToInsertionEnd","textOnly","TextSelection","findSelectionIn","bias","findFrom","AllSelection","selectionClass","getBookmark","between","warnedAboutTextSelection","checkTextSelection","$cursor","near","ensureMarks","TextBookmark","dPos","NodeSelection","NodeBookmark","isSelectable","atStart","AllBookmark","startLen","_from","_to","_newFrom","newTo","Transaction","curSelectionFor","curSelection","storedMarks","selectionSet","setStoredMarks","addStoredMark","removeStoredMark","storedMarksSet","replaceSelection","replaceSelectionWith","inheritMarks","deleteSelection","insertText","setMeta","getMeta","isGeneric","scrolledIntoView","FieldDesc","desc","baseFields","_marks","_old","Configuration","plugins","pluginsByKey","plugin","EditorState","applyTransaction","filterTransaction","rootTr","transactions","trs","newState","applyInner","haveNew","appendTransaction","oldState","newInstance","$config","reconfigure","pluginFields","bindProps","Function","Plugin","createKey","getState","PluginKey","rowTypeAttr","colgroupAttr","resizableAttr","resizeHandle","dataResizeDirTable","dataResizeDirImage","removeRowType","setRowType","rowsWrapper","htmlToFragment","parsedDocument","pmDocToFragment","restoreTables","emptyElement","domToPmDoc","parseOptions","ProseMirrorDOMParser","parseContent","validateTablesToPmSchema","colgroup","outerHTML","getHtml","changeStylesString","styleText","newStyle","styleToChange","regExp","filtered","nameValue","getTypeName","findNthParentNodeOfType","findNthParentNode","dispatch","getSelectionText","applyToWordDefault","expandSelection","applyToWord","applyToWordOptions","initialPosition","textBefore","textAfter","matchBefore","extendLeft","extendRight","tran","expandToWordWrap","command","cmdState","cmdDispatch","markApplies","can","returned","toggleMark","found$1","cleanMarks","except","excludedMarkTypes","mt","hasMark","altMarks","altStyle","currMarks","selectionMarks","getActiveMarks","hasNodesWithoutMarks","changeStyleFromMark","toChange","styleMark","elementStyle","changeStyleMark","currentMark","newMarkAttrs","newStyleMark","previousAdded","sameAdding","changeStyle","transaction","currentMarks","newAttrs","object1","object2","keys1","keys2","shallowEqual","toggleInlineFormat","markAttrs","styleRemoved","dispatched","markDispatched","removeMarks","applyInlineStyle","marksFromSelection","newStyles","resultStyles","removeLink","cursorNodeIndex","toolMark","linkStart","linkSize","applyLink","commandName","getParentMark","modifyLink","nextState","changeTextBlock","currNode","stateDoc","blockNodes","blocksInSelection","selNode","_parent","addStyles","stylesToApply","changedStyleResult","currentStyles","hasNode","parentBlockFormat","formats","paragraph","heading","getBlockFormats","activeNode","alignBlocks","isAligned","cleanFormatting","blockNodeType","exceptMarks","link","_a","class","__rest","cleanTextBlockFormatting","wrapInList","listType","doJoin","outerRange","$insert","doWrapInList","joinBefore","splitDepth","splitPos","liftListItem","itemType","liftToOuterList","endOfList","liftOutOfList","atEnd","indexBefore","sinkListItem","nestedBefore","listsTypes","orderedList","bulletList","listItem","indentRules","rtlStyle","outdentRules","joinBackward","endOfTextblock","$cut","findCutBefore","deleteBarrier","textblockAt","delStep","side","only","selectNodeBackward","findCutAfter","newlineInCode","defaultBlockAt","exitCode","above","createParagraphNear","liftEmptyBlock","splitBlock","$first","splitBlockKeepMarks","selectAll","conn","joinMaybeClear","canDelAfter","joinAt","selAfter","at","afterText","afterDepth","selectTextblockSide","selectTextblockStart","selectTextblockEnd","autoJoin","isJoinable","wrapDispatchForJoin","_s","chainCommands","commands","pcBaseKeymap","macBaseKeymap","baseKeymap","platform","wrapIn","wrapping","indentBlocks","newMargin","isIndented","canIndentAsListItem","canOutdentAsListItem","isNestedInOL","isNestedInUL","canBeIndented","indent","isIndentableBlock","outdent","liftBlockquote","getListLiftTarget","resPos","toggleListCommand","listNode","grandgrandParent","isRangeOfSingleType","isRangeOfType","getAncestorNodesBetween","maxDepth","findAncestorPosition","nestableBlocks","newPos","liftListItems","pmWrapInList","listAttrs","listItemNodeType","reListStyle","listStyle","styleAttr","execArray","toggleList","fromNode","endNode","listNodes","rootListDepth","liftFollowingList","rootListDepthNum","lifted","listDepth","liftSelectionList","listCol","toggleUnorderedList","bulletListSettings","toggleOrderedList","orderedListSettings","splitListItemKeepMarks","splitListItem","grandParent","depthBefore","depthAfter","alignLeftRules","alignRightRules","alignCenterRules","alignJustifyRules","alignRemoveRules","mac","normalizeKeyName","alt","keymap","bindings","baseName","keyName","isChar","direct","fromCode","withShift","nav","ie_edge","ie_upto10","ie_11up","ie_version","gecko","_chrome","chrome_version","vendor","maxTouchPoints","webkit_version","domIndex","assignedSlot","reusedRange","textRange","setEnd","setStart","isEquivalentPosition","targetNode","targetOff","scanFor","atomElements","hasBlockDesc","contentEditable","pmViewDesc","selectionCollapsed","domSel","collapsed","isCollapsed","rangeCount","getRangeAt","createEvent","initEvent","windowRect","getSide","clientRect","scrollRectIntoView","startDOM","scrollThreshold","someProp","scrollMargin","elt","atTop","bounding","moveX","moveY","defaultView","scrollBy","startX","startY","dX","dY","scrollStack","restoreScrollStack","dTop","preventScrollSupported","findOffsetInNode","coordsClosest","dxClosest","rowBot","rowTop","childIndex","rects","getClientRects","findOffsetInText","len","singleRect","inRect","startI","posAtCoords","caretPositionFromPoint","offsetNode","caretRangeFromPoint","startContainer","startOffset","targetKludge","posFromCaret","outside","docView","nearestDesc","posBefore","posAfter","posFromDOM","posFromElement","posAtStart","BIDI","coordsAtPos","domFromPos","supportEmptyRange","takeSide","flattenV","rectBefore","rectAfter","flattenH","ignoreForCoords","withFlushedState","viewState","maybeRTL","cachedState","cachedDir","cachedResult","endOfTextblockVertical","nearest","endOfTextblockHorizontal","domSelection","modify","oldNode","focusNode","oldOff","focusOffset","oldBidiLevel","caretBidiLevel","domAfterPos","removeAllRanges","ViewDesc","matchesWidget","matchesMark","matchesNode","outerDeco","innerDeco","matchesHack","parseRule","stopEvent","posBeforeChild","posAtEnd","localPosFromDOM","domBefore","domAfter","onlyNodes","nodeDOM","getDesc","descAt","TrailingHackViewDesc","WidgetViewDesc","domAtom","parseRange","fromOffset","toOffset","childBase","emptyChildAt","anchorDOM","headDOM","getSelection","brKludge","anchorNode","anchorOffset","domSelExtended","DOMException","ignoreMutation","mutation","contentLost","markDirty","startInside","endInside","markParentsDirty","ignoreSelection","CompositionViewDesc","textDOM","mut","oldValue","MarkViewDesc","nodeViews","reparseInView","replaceNodes","NodeViewDesc","updateChildren","descObj","applyOuterDeco","CustomNodeViewDesc","TextViewDesc","sameOuterDeco","composition","composing","localCompositionInfo","localComposition","compositionInChild","updater","ViewTreeUpdater","iterDeco","deco","onWidget","onNode","locals","forChild","decoIndex","restNode","widgets","compareSide","cutAt","insideNode","syncToMarks","placeWidget","compIndex","findNodeMatch","findIndexWithChild","updateNodeAt","updateNextNode","addTextblockHacks","destroyRest","protectLocalComposition","renderDescs","iosHacks","oldCSS","nearbyTextNode","textPos","findTextInFragment","childStart","compositionNodes","updateInner","updateOuterDeco","needsWrap","oldDOM","patchOuterDeco","computeOuterDeco","selectNode","deselectNode","docViewDesc","pmIsDeco","inParent","trackWrites","parentDOM","descs","written","childDOM","rm","OuterDecoLevel","noDeco","outerDOM","prevComputed","curComputed","curDOM","patchAttributes","prevList","curList","removeProperty","preMatch","parentDesc","curDesc","descI","fI","destroyBetween","maxKeep","markDesc","targetDesc","nextDOM","requiresGeckoHackNode","addHackNode","hack","selectionFromDOM","inWidget","nearestDescNode","isOnEdge","selectionBetween","editorOwnsSelection","editable","hasFocus","hasSelection","selectionToDOM","syncNodeSelection","allowDefault","curSel","domObserver","currentSelection","delayedSelectionSync","setCurSelection","disconnectSelection","cursorWrapper","selectCursorWrapper","resetEditableFrom","resetEditableTo","brokenSelectBetweenUneditable","temporarilyEditableNear","resetEditable","removeClassOnSelectionChange","hideSelectionGuard","connectSelection","setEditable","wasDraggable","lastSelectedViewDesc","clearNodeSelection","hasFocusAndSelection","moveSelectionBlock","$side","selectHorizontally","mods","nodePos","nodeLen","isIgnorable","skipIgnoredNodesLeft","moveNode","moveOffset","isBlockNode","setSelFocus","skipIgnoredNodesRight","selectVertically","beyond","stopNativeHorizontalDelete","nextNode","switchEditable","captureKeyDown","getMods","safariDownArrowBug","serializeForClipboard","serializer","detachedDoc","wrapMap","parseFromClipboard","plainText","inCode","asText","parsed","readHTML","metas","firstTag","restoreReplacedSpaces","contextNode","sliceData","inlineParents","addContext","closeSlice","normalizeSiblings","lastWrap","inLast","addToSibling","closeRight","wrapped","withWrappers","closeRange","caption","col","_detachedDoc","createHTMLDocument","editHandlers","passiveHandlers","touchstart","touchmove","InputState","lastKeyCode","lastKeyCodeTime","lastClick","lastSelectionOrigin","lastSelectionTime","lastIOSEnter","lastIOSEnterFallbackTimeout","lastFocus","lastTouch","lastAndroidDelete","composingTimeout","compositionEndedAt","domChangeCount","setSelectionOrigin","ensureListeners","currentHandlers","runCustomHandler","defaultPrevented","eventBelongsToView","bubbles","eventCoords","runHandlerOnContext","propName","updateSelection","handleSingleClick","selectClickedNode","selectedNode","selectAt","selectClickedLeaf","handleDoubleClick","handleTripleClick","defaultTripleClick","forceDOMFlush","endComposition","inOrNearComposition","forceFlush","selectNodeModifier","flushed","isNear","MouseDown","targetPos","mightDrag","startDoc","addAttr","setUneditable","updateAllowDefault","contextmenu","timeoutComposition","scheduleComposeEnd","clearComposition","timestampFromCustomEvent","forceUpdate","flushingSoon","compositionstart","compositionupdate","markCursor","compositionend","brokenClipboardAPI","doPaste","singleNode","sliceSingleNode","clipboardData","clearData","setData","captureCopy","selectNodeContents","getData","capturePaste","Dragging","dragCopyModifier","dragstart","dataTransfer","effectAllowed","dragging","dragend","dragover","dragenter","drop","eventPos","$mouse","insertPos","dropPoint","fits","isNode","beforeInsert","beforeinput","inputType","flushSoon","compareObjs","WidgetType","noSpec","oldOffset","Decoration","valid","InlineType","inclusiveStart","inclusiveEnd","DecorationSet","local","decorations","buildTree","findInner","childOff","mapInner","newLocal","onRemove","oldChildren","baseOffset","moved","oldEnd","newEnd","dSize","mustRebuild","fromLocal","toLocal","childOffset","mapAndGatherRemainingDecorations","gather","byPos","addInner","takeSpansForNode","moveSpans","withoutNulls","removeInner","dec","localSet","DecorationGroup","removeOverlap","localsInner","mappedDecos","member","sorted","spans","hasNulls","localStart","subtree","working","insertAhead","viewDecorations","observeOptions","childList","characterDataOldValue","attributeOldValue","useCharData","SelectionState","DOMObserver","handleDOMChange","queue","onCharData","suppressingSelectionUpdates","MutationObserver","mutations","removedNodes","takeRecords","suppressSelectionUpdates","ignoreSelectionChange","commonAncestorContainer","newSel","typeOver","registerMutation","brs","readSel","scrollToSelection","checkCSS","cssChecked","whiteSpace","cssCheckWarned","attributeName","addedNodes","WeakMap","readDOMChange","preferredPos","preferredSide","parseBetween","from_","to_","compare","findDiff","endA","endB","resolveSelection","nextSel","$fromA","inlineChange","looksLikeJoin","$newStart","$newEnd","skipClosingAndOpening","$next","markChange","chFrom","chTo","isMarkChange","curMarks","prevMarks","parsedSel","fromEnd","mayOpen","EditorView","mounted","prevDirectPlugins","pluginViews","_props","directPlugins","checkStateComponent","mount","getEditable","updateCursorWrapper","buildNodeViews","computeDocDeco","initInput","passive","updatePluginViews","handleDOMEvents","prevProps","updateStateInner","setProps","updateSel","pluginsChanged","changedNodeViews","nA","nB","updateDoc","oldScrollPos","overflowAnchor","storeScrollPos","refDOM","refTop","innerHeight","localRect","forceSelUpdate","selectionContextChanged","sel1","sel2","chromeKludge","anchorInRightPlace","resetScrollPos","newRefTop","destroyPluginViews","prevState","pluginView","focusPreventScroll","setActive","stored","getPrototypeOf","domAtPos","posAtDOM","destroyInput","isDestroyed","dispatchEvent","dispatchTransaction","contenteditable","readFromCache","addToCache","cacheSize","cachePos","TableMap","problems","findCell","nextCell","rectBetween","leftA","rightA","topA","bottomA","leftB","rightB","topB","bottomB","cellsInRect","positionAt","rowStart","rowEnd","rowEndIndex","computeMap","tableRole","findWidth","hasRowSpan","rowNode","rowWidth","prevRow","rowspan","mapPos","colWidths","cellNode","colwidth","colW","widthIndex","expectedPos","tableMap","badWidths","findBadColWidths","freshColWidth","getCellAttrs","extraAttrs","widthAttr","widths","getFromDOM","setCellAttrs","setDOMAttr","tableNodeTypes","key$1","cellAround","isInTable","selectionCell","$anchorCell","$headCell","cellNear","pointsAtCell","inSameTable","$a","$b","setAttr","removeColSpan","addColSpan","CellSelection","tableChanged","isRowSelection","rowSelection","isColSelection","colSelection","rowContent","cellRect","extraLeft","extraRight","forEachCell","anchorTop","headTop","anchorBot","headBot","anchorRect","headRect","anchorLeft","headLeft","anchorRight","headRight","anchorCell","headCell","CellBookmark","drawCellSelection","pastedCells","fitSlice","ensureRectangular","isolateHorizontal","cellTop","cellLeft","isolateVertical","updatePos","insertCells","tableStart","recomp","growTable","emptyHead","header_cell","emptyRow","shiftArrow","deleteCellSelection","maybeSetSelection","atEndOfCell","$cell","baseContent","clipCells","newRows","handleMouseDown$1","startEvent","startDOMCell","domInCell","setCellSelection","cellUnderMouse","starting","cellPos","dirStr","mousePos","fixTablesKey","changedDescendants","curSize","fixTables","fixTable","tablePos","mustAdd","prob","tableNodeType","selectedRect","addColumn","refColumn","columnIsHeader","headerCell","removeColumn","mapStart","addRow","rowPos","refRow","rowIsHeader","removeRow","nextRow","deleteRow","mergeCells","cellsOverlapRectangle","indexTop","indexLeft","indexBottom","indexRight","mergedPos","mergedCell","splitCell","splitCellWithType","getCellType","cellWrapping","baseAttrs","lastCell","isHeaderEnabledByType","cellPositions","toggleHeader","useDeprecatedLogic","deprecated_toggleHeader","isHeaderRowEnabled","isHeaderColumnEnabled","selectionStartsAt","cellsRect","newType","relativeCellPos","deleteTable","tableEditing","allowTableNodeSelection","createSelectionBetween","dist_handleTripleClick","normalizeSelection","isCellBoundarySelection","afterFrom","beforeTo","isTextSelectionAcrossCells","fromCellBoundaryNode","toCellBoundaryNode","blockquoteDOM","hrDOM","preDOM","olDOM","ulDOM","liDOM","domAttributes","nodeAttrs","commonAttributes","hasAttrs","exclude","pmAttributes","tagMark","cellAttribute","cellAttributes","colgroupNodes","colgroupSchema","parseStrColgroup","tNodes","tableNodes","cellAttrs","tableGroup","table_row","table_cell","cellContent","table_header","tableAttrs","shouldSkip","shouldSkipColgroup","colgroupEl","horizontal_rule","code_block","hard_break","ordered_list","order","bullet_list","list_item","RopeSequence","leafAppend","leafPrepend","appendInner","Append","sliceInner","getInner","forEachInner","forEachInvertedInner","Leaf","prototypeAccessors","configurable","defineProperties","leftLen","Branch","eventCount","popEvent","preserveItems","remap","remapping","addAfter","Item","addTransform","histOptions","newItems","oldItems","lastItem","DEPTH_OVERFLOW","cutOffEvents","cutPoint","mirrorPos","mirrorOffset","addMaps","rebased","rebasedTransform","rebasedCount","rebasedItems","newUntil","iRebased","newMaps","branch","emptyItemCount","compress","HistoryState","undone","prevRanges","prevTime","rangesFor","mapRanges","histTransaction","history","redo","mustPreserveItems","historyKey","newHist","historyState","cachedPreserveItems","cachedPreserveItemsPlugins","historyPreserveItems","closeHistoryKey","newGroupDelay","hist","historyTr","appended","newGroup","isAdjacentTo","adjacent","undo","InputRule","stringHandler","cutOff","undoInputRule","undoable","isInputRules","toUndo","bold","italic","underline","strikethrough","subscript","superscript","buildKeymap","strong","em","u","br","cmd","buildListKeymap","msoListRegExp","isPartOfListItem","createList","styleType","listStyleType","guessUnorderedListStyle","guessOrderedListStyle","mapListsCandidates","ELEMENT_NODE","listTypes","trimStartText","convertToLi","COMMENT_NODE","TEXT_NODE","convertMsLists","extractListLevels","listsCandidates","rootMargin","rootIndex","lastRootLi","isLastRootLi","rootList","listData","lastMargin","levels","datalist","datalevel","marginLeft","levelType","toList","ownerElement","sanitizeClassAttr","stylesSplit","styleValueSplit","sanitizeStyleAttr","st","supportedStyles","pasteCleanup","stripTags","tagPattern","removeNode","sanitizeNode","reRtfImgHeader","directions","southeast","east","south","north","west","southwest","northwest","northeast","handles","imageResizeKey","sizeType","reSize","reAnyValue","ResizeState","activeHandle","nodePosition","setDragging","handleMouseDown","resizeState","diffX","diffY","lockRatio","lockWidth","lockHeight","offsetLeft","handlesWrapper","handleMouseMove","currAttrs","changedWidth","newImage","handleMouseUp","imageResizing","viewObj","attachResize","win","removeResize","pluginState","prevRect","caretColorKey","TableView","renderColgroup","tBody","setAttributes","resizeHandles","colgroupStr","parseStyle","setNodeStyle","tableResizeKey","tableColumnResizeKey","tableRowResizeKey","otherResizing","activeResize","otherResizeHandle","getTable","domCellAround","cellIndexes","dataCell","tableSpansMap","colsCount","curColSpan","colSp","rowSp","rowSpan","ind","curInd","edgeCell","indexes","parentTable","tableNode","columnResizing","View","handleWidth","updateHandle","mouseleave","cellMinWidth","tableDom","Os","startWidth","curPluginState","updateColumnWidth","_width","tableDomWidth","draggedWidth","dragged","displayColumnWidth","_cellMinWidth","handleDecorations","cellsPositions","cPos","setHandle","commonDir","horizontalDir","verticalDir","tableSize","colsWidth","rowsHeight","parsedStyles","calcStyle","widthChanged","toPercents","curWindow","compStyles","nodeWidth","nodeHeight","tableResizing","_viewObj","prevSelected","nr","TableRowView","rowResizing","rowHeightStr","tableHeight","draggedHeight","startHeight","displayRowHeight","widgetPos","GapCursor","GapBookmark","closedBefore","closedAfter","allowGapCursor","mustMove","$cur","findGapCursorFrom","$found","clickPos","drawGapCursor","reTable","reRow","reCell","addRowBefore","pmAddRowBefore","addRowAfter","pmAddRowAfter","tableCell","colIndex","addCol","addColumnBefore","pmAddColumnBefore","addColumnAfter","pmAddColumnAfter","deleteColumn","pmDeleteColumn","deleteCol","dataItem_r2","_r3","_r12","_r14","getAttributes","createDefaultAttributes","isSchemaNode","schemaNodeName","createSemanticNode","semanticNodes","marks$1","nodes$1","kendo_angular_editor_marks","alignRemove","editorCommands","createLink","insertFile","unlink","foreColor","backColor","alignJustify","alignLeft","alignRight","formatAttr","_b","formatBlockElements","getHTML","insertImage","insertOrderedList","insertUnorderedList","setHTML","setHtml","insertTable","newTable","tableRows","createTable","initialToolBarState","print","viewSource","disabledToolBarState","outerWidth","marginRight","removeEmptyEntries","removeEntries","isNullOrUndefined","safeString","splitter","getUniqueStyleValues","cssStyle","uniqueMarkValues","cssStyleValues","conditionallyExecute","condition","param","EditorLocalizationService","_rtl","SourceDialogComponent","textarea","onCancelAction","onConfirmAction","editor","getSource","textFor","ImageDialogComponent","FormControl","Validators","imageData","FormGroup","srcInputId","altTextInputId","widthInputId","heightInputId","srcInput","getNodeFromSelection","patchValue","normalizeDimension","FileLinkDialogComponent","linkForm","hrefInput","linkData","titleText","addControl","linkMark","getMark","setLinkText","currentState","getSelectionText$1","textForWithPrefix","_c2","_r0","_r1","_r2","i3$1","EditorErrorMessages","ProviderService","EditorToolsService","needsCheck","EditorPasteEvent","cleanedHtml","originalHtml","DropDownToolDirective","hostEl","FormatDropDownListComponent","onValueChange","dropDownList","i1$2","FormatDialogComponent","formatDropDownList","EditorFormatComponent","ToolBarToolComponent","dialogService","providerService","toolsService","formatItems","itemArgs","overflows","openDialog","dialogSettings","dialogContainer","toolbar","canFocus","formatButton","handleKey","_c7","MessagesDirective","commandIcons","MY_TOKEN","EditorCommandBaseDirective","showText","showIcon","toolbarOptions","onStateChange","pointerdown","pointerdownHandler","_toolBarState","i1$3","EditorCommandButton","toolBarState","EditorBoldButtonDirective","EditorItalicButtonDirective","EditorUnderlineButtonDirective","EditorAlignLeftButtonDirective","EditorAlignCenterButtonDirective","EditorAlignRightButtonDirective","EditorAlignJustifyButtonDirective","EditorInsertUnorderedListButtonDirective","EditorInsertOrderedListButtonDirective","EditorIndentButtonDirective","EditorOutdentButtonDirective","EditorCommandDialog","EditorCreateLinkButtonDirective","EditorUnlinkButtonDirective","EditorInsertImageButtonDirective","defaultPasteCleanupSettings","removeAttributes","removeHtmlComments","removeInvalidHTML","removeMsClasses","removeMsStyles","removeCommentsIf","removeInvalidHTMLIf","getPasteCleanupAttributes","EditorComponent","iframe","valueModified","_readonly","inForm","_iframeCss","keepBuiltInCss","afterViewInit","contentAreaLoaded","trOnChange","htmlOnChange","transformPastedHTML","dirtyHtml","dispatchPasteEvent","pasteCleanupSettings","fns","changeValue","contentWindow","nextDoc","onPaste","nativeEvent","_pasteEvent","zip","focusedNode","iframeCss","_schema","_plugins","resizableClass","isIE","trident","detectIE","resizableOptions","defaultToolbarComponent","userToolBarComponent","toolbarElement","defaultToolbar","userToolBarElement","selectionText","normalizeSize","iframeOnLoad","dialogName","editorDialogs","dialogContent","focusChangedProgrammatically","_styleObserver","currentSchema","containerNativeElement","contentNode","iframeDoc","contentDocument","isCssPathSet","isCssContentSet","allStyles","styleEl","linkEl","defaultPlugins","editorView","getToolbarState","dist_handleKeyDown","tableResize","decAttrs","viewMountElement","transformPastedText","containerElement","contentAreaClasslist","shouldEmitFocus","filter$1","normalizeProperties","attributeFilter","pixelWidth","pixelHeight","isMinProp","isMaxProp","isWidthProp","originalContent","cleanContent","ToolBarComponent","_c11","i18n_14","i18n_16","i18n_18","i18n_20","i18n_22","i18n_24","i18n_28","i18n_30","i18n_32","i18n_40","i18n_42","i18n_44","i18n_58","i18n_60","i18n_74","i18n_76","i18n_78","i18n_80","i18n_82","i18n_84","i18n_86","i18n_88","i18n_90","i18n_92","i18n_94","i18n_96","i18n_98","i18n_100","i18n_102","i18n_104","i18n_106","i18n_108","i18n_110","i18n_112","i18n_114","i18n_116","i18n_118","i18n_120","_c122","ColorPickerDialogComponent","colorPicker","handleActiveColorClick","preventOpen","editorCommand","paletteSettings","_c124","ColorPickerComponent","FontFamilyDropDownListComponent","FontFamilyDialogComponent","fontFamilyDropDownList","_c127","PopupTableGridComponent","tableWizardClick","cellRow","cellCol","resetState","openTableWizard","InsertTableDialogComponent","onCellClick","FontSizeDropDownListComponent","FontSizeDialogComponent","fontSizeDropDownList","_c128","EditorFontSizeComponent","sizes","normalizedSizes","fontSizeButton","_c129","EditorFontFamilyComponent","fontName","fontFamilyButton","_c131","EditorColorPickerComponent","onOpen","picker","valueCache","onClose","onActiveViewChange","colorPickerButton","_c133","EditorInsertTableButtonComponent","buttonBlurred","cellClicked","getButton","onTableWizardClick","popupGridTemplate","overflowElement","_c134","_c135","EditorBlockquoteDirective","EditorRedoButtonDirective","EditorUndoButtonDirective","EditorViewSourceButtonDirective","EditorStrikethroughButtonDirective","EditorSubscriptButtonDirective","EditorSuperscriptButtonDirective","EditorInsertFileButtonDirective","EditorForeColorDirective","EditorBackColorDirective","EditorCleanFormattingButtonDirective","EditorAddColumnBeforeButtonDirective","EditorAddColumnAfterButtonDirective","EditorAddRowBeforeButtonDirective","EditorAddRowAfterButtonDirective","EditorDeleteColumnButtonDirective","EditorDeleteRowButtonDirective","EditorDeleteTableButtonDirective","EditorMergeCellsButtonDirective","EditorSplitCellButtonDirective","EditorPrintDirective","editorWindow","EditorSelectAllButtonDirective","EditorModule","ReactiveFormsModule","ColorPickerModule","NumericTextBoxModule","ToolBarModule","TextBoxModule","switchMapTo","innerObservable","resultSelector","defaultCompare","HAS_TYPED_ARRAYS","Uint8Array","BASE64","keyStr","decode","enc1","enc2","enc3","enc4","chr1","chr2","chr3","bytes","BinaryStream","ensure","write","writeString","writeByte","readByte","readShort","writeShort","readLong","writeLong","readLong_","writeLong_","read","times","reader","ret","eof","readFixed","writeFixed","readShort_","writeShort_","readFixed_","writeFixed_","readString","nbytes","saveExcursion","writeBase64","base64","atob","ucs2encode","base64ToUint8Array","atobUint8Array","createUint8Array","sortedKeys","Directory","scalerType","tableCount","searchRange","entrySelector","rangeShift","tables","readTable","Ctor","maxpow2","LN2","directoryLength","headOffset","tableData","adjustment","Table","file","rawData","HeadTable","revision","checkSumAdjustment","magicNumber","flags","unitsPerEm","created","modified","xMin","yMin","xMax","yMax","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","LocaTable","offsetOf","needsLongFormat","HheaTable","ascent","descent","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numOfLongHorMetrics","MaxpTable","numGlyphs","maxPoints","maxContours","maxComponentPoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","glyphIds","HmtxTable","hhea","metrics","advance","lsb","lsbCount","maxp","leftSideBearings","forGlyph","GlyfTable","SimpleGlyph","compound","CompoundGlyph","idOffsets","old2new","glyphFor","loca","numberOfContours","glyph","glyphs","oldIds","NameTable","NameEntry","platformID","platformSpecificID","languageID","nameID","stringOffset","nameRecords","strings","rec","postscriptEntry","postscriptName","psName","strCount","strTable","PostTable","POSTSCRIPT_GLYPHS","numberOfGlyphs","italicAngle","underlinePosition","underlineThickness","isFixedPitch","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","post","CmapTable","CmapEntry","codeMap","language","segCount","endCode","startCode","idDelta","idRangeOffset","glyphId","ngroups","endCharCode","glyphCode","ncid2ogid","ogid2ngid","renderCharmap","codes","startCodes","endCodes","new_gid","charcode","segCountX2","deltas","rangeOffsets","startGlyph","OS2Table","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","familyClass","panose","charRange","vendorID","firstCharIndex","lastCharIndex","winAscent","winDescent","codePageRange","xHeight","capHeight","defaultChar","breakChar","maxContext","subsetTag","Subfont","subset","unicodes","ngid2ogid","firstChar","nextGid","nextSubsetTag","use","ch","ucs2decode","counter","old_gid","cmap","encodeText","glyphsFor","glyf","old_gid_ids","lastChar","hmtx","os2","directory","cidToGidMap","cid","TTFFont","contents","numFonts","widthOfGlyph","makeSubset","_has","sources","TypeError","shrinkBuf","buf","subarray","fnTyped","arraySet","src_offs","dest_offs","flattenChunks","chunks","chunk","Buf8","Buf16","Uint16Array","Buf32","Int32Array","fnUntyped","typedOK","strApplyOK","strApplyUintOK","utf8len","string2buf","m_pos","str_len","buf_len","_buf2binstring","buf2binstring","buf2string","c_len","utf16buf","utf8border","adler32","adler","s1","s2","crcTable","makeTable","crc32","crc","inflate_fast","strm","_in","_out","beg","dmax","wsize","whave","wnext","s_window","hold","bits","lcode","dcode","lmask","dmask","here","op","from_source","next_in","avail_in","next_out","avail_out","lencode","distcode","lenbits","distbits","dolen","msg","dodist","sane","lbase","lext","dbase","dext","inflate_table","lens","lens_index","table_index","opts","incr","here_bits","here_op","here_val","sym","used","huff","base_index","MAXBITS","offs","extra_index","zswap32","InflateState","havedict","wbits","ncode","nlen","ndist","have","lendyn","distdyn","back","was","inflateReset","inflateResetKeep","total_in","total_out","inflateInit2","windowBits","inflateReset2","lenfix","distfix","virgin","fixedtables","updatewindow","inflate","put","last_bits","last_op","last_val","hbuf","inf_leave","TIME","OS","xflags","EXLEN","extra_len","EXTRA","NAME","COMMENT","comment","HCRC","hcrc","DICT","TYPE$1","COPY","LENLENS","CODELENS","LEN","LENEXT","DIST","DISTEXT","MATCH","LENGTH","DONE","SYNC","data_type","inflateSetDictionary","dictionary","dictLength","ZStream","GZheader","Inflate","chunkSize","opt","ended","status","inflateGetHeader","_mode","next_out_utf8","utf8str","allowBufError","binstring2buf","onData","inflateEnd","zero","static_ltree","static_dtree","_dist_code","_length_code","base_length","base_dist","static_l_desc","static_d_desc","static_bl_desc","extra_lbits","extra_dbits","extra_blbits","bl_order","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","pending_buf","send_bits","bi_valid","bi_buf","send_code","tree","bi_reverse","res","gen_codes","bl_count","next_code","MAX_BITS","init_block","LITERALS","dyn_ltree","dyn_dtree","bl_tree","END_BLOCK","opt_len","static_len","last_lit","bi_windup","smaller","_n2","_m2","pqdownheap","heap","heap_len","compress_block","ltree","dtree","lc","lx","d_buf","l_buf","build_tree","stree","heap_max","gen_bitlen","xbits","scan_tree","curlen","prevlen","nextlen","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","_tr_init","tr_static_init","D_CODES","MAX_MATCH","LENGTH_CODES","L_CODES","l_desc","d_desc","bl_desc","_tr_stored_block","stored_len","copy_block","_tr_align","STATIC_TREES","bi_flush","_tr_flush_block","opt_lenb","static_lenb","max_blindex","detect_data_type","black_mask","build_bl_tree","BL_CODES","strategy","send_all_trees","lcodes","dcodes","blcodes","_tr_tally","lit_bufsize","MAX_MATCH$1","MIN_LOOKAHEAD","errorCode","zero$1","flush_pending","pending_out","flush_block_only","block_start","strstart","put_byte","putShortMSB","read_buf","longest_match","cur_match","chain_length","max_chain_length","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","ins_h","hash_shift","hash_mask","deflate_stored","max_block_size","pending_buf_size","max_start","deflate_fast","hash_head","bflush","match_length","max_lazy_match","MIN_MATCH$1","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","func","configurationTable","DeflateState","gzhead","gzindex","last_flush","w_bits","hash_bits","HEAP_SIZE$1","MAX_BITS$1","deflateReset","deflateResetKeep","lm_init","deflate","old_flush","Z_OK","bstate","deflate_huff","deflate_rle","toString$1","Deflate","memLevel","gzip","deflateInit2","deflateSetHeader","deflateSetDictionary","avail","tmpDict","_dict_set","deflateEnd","deflate$1","deflator","pakoDeflate","NL","RESOURCE_COUNTER","PAPER_SIZE","a0","a3","a4","a5","a6","a7","a8","a9","a10","b0","b3","b4","b5","b6","b7","b8","b9","b10","c0","c3","c4","c5","c6","c7","c8","c9","c10","executive","folio","legal","tabloid","makeOutput","indentLevel","PDFValue","beforeRender","renderArray","isDate","renderDate","PDFDictionary","writeData","withIndent","getPaperOptions","getOption","paperSize","unitsToPoints","FONT_CACHE","Helvetica","Courier","Symbol","ZapfDingbats","IMAGE_CACHE","manyLoader","loadOne","urls","loadFont","cont","loadBinary","req","XMLHttpRequest","responseType","response","VBArray","responseBody","send","loadImages","images","jpegQuality","keepPNG","loadImage","bloburl","blob","xhr","FileReader","createObjectURL","xml","XMLSerializer","serializeToString","readAsText","_onerror","_onload","_trycanvas","imgdata","getImageData","revokeObjectURL","hasAlpha","rgb","rawbytes","PDFRawImage","PDFJpegImage","upscale","readAsArrayBuffer","PDFDocument","objcount","objects","defval","attach","wrapObject","renderValue","renderFull","pages","FONTS","IMAGES","GRAD_COL_FUNCTIONS","GRAD_OPC_FUNCTIONS","GRAD_COL","GRAD_OPC","catalog","PDFCatalog","pageTree","PDFPageTree","nameTree","JavaScript","Names","PDFString","JS","setPages","Producer","Author","Keywords","Creator","CreationDate","addPage","paperOptions","contentWidth","contentHeight","PDFStream","Contents","Parent","MediaBox","page","PDFPage","_content","xrefOffset","zeropad","Root","Info","getFont","PDFStandardFont","PDFFont","getImage","asStream","getOpacityGS","forStroke","_opacityGSCache","gs","Type","CA","_resourceName","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","mm2pt","mm","cm2pt","cm","in2pt","inch","in","utf16be","txt","BOM","encodeUTF16BE","PDFHexString","PDFName","escape","PDFName_cache","Filter","Length","pagesObj","Pages","Kids","Count","pageObj","SOF_CODES","colorSpace","bitsPerComponent","Subtype","Width","Height","BitsPerComponent","ColorSpace","Decode","pdf","SMask","BaseFont","_pdf","_font","_sub","stemV","isSerif","isScript","getTextWidth","fontStream","Length1","descriptor","FontName","FontBBox","Flags","StemV","ItalicAngle","Ascent","Descent","CapHeight","XHeight","FontFile2","charWidths","gid","descendant","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","FirstChar","LastChar","DW","CIDToGIDMap","_makeCidToGidMap","DescendantFonts","unimap","PDFToUnicodeCmap","unimapStream","ToUnicode","makeHash","cacheColorGradientFunction","g1","g2","FunctionType","Domain","Range","C0","C1","cacheOpacityGradientFunction","cacheGradient","isRadial","funcs","makeGradientFunctions","prevColor","curColor","opacities","assemble","Functions","Bounds","Encode","shading","cacheColorGradient","ShadingType","Coords","Extend","cacheOpacityGradient","AIS","FormType","BBox","CS","Resources","ExtGState","Shading","s0","_rcount","_textMode","_fontResources","_gsResources","_xResources","_patResources","_shResources","_opacity","_matrix","_annotations","_fontSize","_contextStack","ProcSet","Font","XObject","Pattern","Annots","isIdentityMatrix","mmul","d1","e1","f1","d2","e2","f2","sx","sy","beginText","endText","_requireTextMode","_requireFont","setFont","setTextLeading","setTextRenderingMode","requestedWidth","showTextNL","addLink","uri","ll","_toPage","ur","Border","URI","setStrokeColor","setFillOpacity","setStrokeOpacity","setFillColor","oname","sname","setDashPattern","dashPhase","setLineWidth","setMitterLimit","mitterLimit","_context","bezier","x3","y3","bezier1","bezier2","ellipse","_X","_Y","nop","clipStroke","closeStroke","fillStroke","unquote","parseFontDef","fontdef","variant","lineHeight","getFontURL","FONT_MAPPINGS","serif","monospace","zapfdingbats","fontAlias","defineFont","thing","KENDO_PSEUDO_ELEMENT","nodeInfo","microsoft","TextRect","_pdfRect","setCSS","cloneNodes","$el","$clone","dive","canvases","orig","kendo","jQuery","drawDOM","PDF","getFontFaces","styleSheets","doStylesheet","ss","cssRules","addRules","findFonts","splitProperty","styleSheet","family","addRule","getXY","doOne","_clipbox","_stackingContext","avoidLinks","_avoidLinks","renderElement","cacheImages","forceBreak","forcePageBreak","hasPaperSize","pageWidth","pageHeight","hasMargin","multiPage","_ignoreMargin","handlePageBreaks","makeTemplate","_destructive","adjust","doPageBreak","splitElement","makePage","pageNum","totalPages","keepTogether","tableLayout","bottomPadding","bottomBorder","saveAdjust","isFirst","breakAtElement","fall","fallsOnMargin","splitText","firstInParent","grid","gridHead","repeatHeaders","setStartBefore","setEndBefore","extractContents","preventBulletOnListItem","boxSizing","pageClassName","nextnode","findEOP","endOffset","beforePageBreak","whenImagesAreActuallyLoaded","canceled","parseBackgroundImage","tok_linear_gradient","tok_percent","tok_length","tok_keyword","tok_angle","tok_whitespace","tok_popen","tok_pclose","tok_comma","tok_url","tok_content","cache1","cache2","skip_ws","read_stop","utils_parseColor","toRGB","read_linear_gradient","to1","to2","parseAngle","read_url","cacheKey","in_paren","in_string","looking_at","getFontHeight","measureText","incCounter","inc","resetCounter","doCounters","updateCounters","counterReset","counterIncrement","alphaNumeral","pushNodeInfo","decoration","createsStackingContext","popNodeInfo","updateClipbox","pseudoElt","defa","pleaseSetPropertyValue","important","getBorder","saveStyle","getBorderRadius","sanitizeRadius","getContentBox","innerBox","wt","wr","wb","wl","radiansToDegrees","setClipping","addArcToPath","adjustBorderRadiusForBox","rTL","rTR","rBR","rBL","tl_x","tl_y","tr_x","tr_y","br_x","br_y","bl_x","bl_y","bl","elementRoundBox","bt","bb","pt","pr","pb","pl","roundBox","rTL0","rTR0","rBR0","rBL0","formatCounter","arabicToRoman","evalPseudoElementContent","displayCounter","getAllCounters","getCounter","getCssText","_renderWithPseudoElements","_renderElement","fake","pseudo","kind","psel","saveClass","textOverflow","saveTextOverflow","backgroundImage","backgroundRepeat","backgroundPosition","backgroundOrigin","backgroundSize","currentStyle","innerbox","adjustBoxes","tableBorderLeft","tableBorderTop","tableBox","firstCellBox","drawOneBox","_pdfLink","drawBullet","listStylePosition","_drawBullet","elementIndex","disc","isFormField","clipit","maybeRenderWidget","widgetInstance","exportDOMVisual","renderContents","drawEdge","Wtop","Wleft","Wright","rl","rr","drawRoundCorner","ri","anticlockwise","drawOneBackground","drawBackgroundImage","gradientRenderer","pxlen","scaledAngle","implicit","img_width","img_height","renderBG","aspect_ratio","orgBox","rewX","rewY","repeatX","isLast","drawBackground","shouldDrawLeft","shouldDrawRight","inv","renderImage","zIndexSort","sb","za","zb","pa","renderFormField","renderCheckbox","getSelectedOption","selectedOptions","serializeSVG","floats","positioned","renderText","floating","mergeSort","emptyClipbox","cb","columnCount","textTransform","estimateLineLength","prevLineBottom","lineThrough","overline","hasDecoration","doChunk","decorate","ypos","actuallyGetRangeBoundingRect","rectangles","Infinity","origStart","findEOL","eol","cc","drawText","getTransform","groupInStackingContext","_dom_zIndex","TEXT_RENDERING_MODE","fillAndStroke","invisible","fillAndClip","strokeAndClip","fillStrokeClip","DASH_PATTERNS","dashDot","longDash","longDashDot","longDashDotDot","LINE_CAP","butt","LINE_JOIN","miter","bevel","imgDPI","doIt","producer","author","keywords","creator","autoPrint","drawPage","optimize","clipbox","newShape","shouldDraw","optArray","withClipping","saveclipbox","savematrix","inClipbox","addMargin","drawElement","landscape","clearImageCache","_pdfDebug","setStrokeOptions","setFillOptions","Gradient","_drawPath","drawPath","drawMultiPath","drawCircle","drawArc","drawGroup","drawRect","maybeGradient","maybeFillStroke","maybeDrawRect","seg","_position","sz","PDFExportTemplateDirective","FIELDS","PDFExportMarginComponent","PDFExportComponent","fileName","drawMargin","marginComponent","saveAs","export","exportElement","pdfOptions","dataUri","saveDataUri","saveOptions","drawOptions","cleanup","pageTemplate","pageTemplateDirective","embeddedView","templateWrap","rootNodes","imageResolution","forceProxy","proxyData","proxyTarget","proxyURL","exportPDF","PDFExportModule","UNDEFINED","defaultGroupHeaderTemplate","createArray","defaultItemId","ExcelExporter","_trimColumns","allColumns","_leafColumns","_prepareColumn","_visibleColumns","hasGroups","hierarchy","hasGroupHeaderColumn","groupHeaderColumnTemplate","collapsible","workbook","sheets","_columns","_hierarchyRows","_rows","freezePane","_freezePane","_filter","groupHeaderTemplate","groupFooterTemplate","footerTemplate","_createPaddingCells","paddingCellOptions","_dataRow","_groupHeaderCells","_dataRows","_footer","dataCells","cellIdx","_cell","groupHeaderCellOptions","itemLevel","hasFooter","_hasFooterTemplate","previousItemId","previousLevel","_hierarchyFooterRows","parentId","_hierarchyFooter","_prependHeaderRows","currentLevel","fieldAggregates","footerCellOptions","templateData","groupFooterCellOptions","_isColumnVisible","exportable","excel","visibleInExport","visibleInExportOnly","_headerRow","headers","firstCell","headerPaddingCellOptions","headerRows","_prepareHeaderRows","parentCell","parentRow","childRow","totalColSpan","headerCellOptions","_headerDepth","colSplit","locked","rowSplit","cellOptions","autoWidth","external","nodebuffer","nodestream","arraybuffer","ArrayBuffer","uint8array","Blob","_keyStr","identity","stringToArrayLike","stringifyByChunk","fromCharCodeSupportsTypedArrays","arrayLikeToString","getTypeOf","canUseApply","stringifyByChar","resultStr","applyFromCharCode","arrayLikeToArrayLike","arrayFrom","arrayTo","byteLength","transformTo","outputType","checkSupport","MAX_VALUE_16BITS","pretty","prepareContent","inputData","isBinary","isOptimizedBinaryString","isBase64","dataType","resultIndex","totalLength","string2binary","GenericWorker","streamInfo","generatedError","extraStreamInfo","isPaused","isFinished","isLocked","_listeners","cleanUp","listener","registerPrevious","mergeStreamInfo","processChunk","pause","withError","withStreamInfo","me","_utf8len","utf8encode","utf8decode","Utf8DecodeWorker","previousData","nextBoundary","usableData","Utf8EncodeWorker","ConvertWorker","destType","transformZipOutput","mimeType","newBlob","remainingBytes","accumulate","helper","updateCallback","dataArray","chunkType","_internalType","resultType","_outputType","_mimeType","StreamHelper","worker","internalType","_worker","updateCb","evt","binary","createFolders","compression","compressionOptions","unixPermissions","dosPermissions","DataWorker","dataP","dataIsReady","_tickScheduled","_tickAndRepeat","DataLengthProbe","crc32wrapper","crc32str","Crc32Probe","CompressedObject","compressedSize","uncompressedSize","compressedContent","getContentWorker","uncompressWorker","data_length","getCompressedWorker","uncompressedWorker","compressWorker","ZipObject","_dataBinary","internalStream","askUnicodeString","_decompressWorker","isUnicodeString","async","onUpdate","_compressWorker","magic","createWorkerFrom","arrayType","Uint32Array","FlateWorker","_pako","_pakoAction","_pakoOptions","_createPako","params","DEFLATE","compressions","STORE","LOCAL_FILE_HEADER","CENTRAL_FILE_HEADER","CENTRAL_DIRECTORY_END","ZIP64_CENTRAL_DIRECTORY_END","decToHex","hex","generateZipParts","streamedContent","streamingEnded","encodeFileName","dosTime","dosDate","useCustomEncoding","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","dataInfo","bitflag","extFileAttr","versionMadeBy","isDir","generateUnixExternalFileAttr","generateDosExternalFileAttr","fileRecord","dirRecord","generateDataDescriptors","ZipFileWorker","streamFiles","bytesWritten","zipComment","zipPlatform","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","currentFilePercent","remainingFiles","openedSource","closedSource","localDirLength","centralDirLength","dirEnd","generateCentralDirectoryEnd","prepareNextSource","generateWorker","zipFileWorker","relativePath","fileCompression","zipCompression","compressionName","getCompression","DataReader","checkOffset","setIndex","byteAt","readInt","readData","lastIndexOfSignature","sig","readAndCheckSignature","readDate","dostime","UTC","ArrayReader","sig0","sig1","sig2","sig3","StringReader","Uint8ArrayReader","readerFor","ZipEntry","loadOptions","isEncrypted","bitFlag","useUTF8","readLocalPart","localExtraFieldsLength","fileNameLength","compressionMethod","findCompression","decompressed","readCentralPart","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","localHeaderOffset","readExtraFields","parseZIP64ExtraField","fileComment","processAttributes","madeBy","fileNameStr","extraReader","extraFieldId","extraFieldLength","extraFieldValue","handleUTF8","decodeParamType","fileCommentStr","upath","findExtraFieldUnicodePath","fileNameByteArray","decodeFileName","ucomment","findExtraFieldUnicodeComment","commentByteArray","upathField","ucommentField","ZipEntries","files","checkSignature","expectedSignature","signature","isSignature","askedIndex","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","decodeContent","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","extraDataSize","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","readCentralDir","zip64","readEndOfCentral","endOfCentralDirOffset","expectedEndOfCentralDirOffset","extraBytes","prepareReader","checkEntryCRC32","zipEntry","checkCRC32","optimizedBinaryString","zipEntries","results","fileAdd","forceTrailingSlash","parentFolder","folderAdd","zipObjectContent","lastSlash","createFolders$1","isRegExp","JSZip","newObj","filename","regexp","folder","newFolder","kids","generate","generateInternalStream","generateAsync","loadAsync","dateToJulianDays","BASE_DATE","dateToSerial","packTime","ms","serial","packDate","MIME_TYPE","DATA_URL_PREFIX","DATA_URL_OPTIONS","BLOB_OPTIONS","ARRAYBUFFER_OPTIONS","toDataURI","parseJSON","ESC","foreach","XMLHEAD","RELS","WORKSHEET","frozenColumns","frozenRows","autoFilter","showGridLines","hyperlinks","validations","defaultCellStyleId","legacyDrawing","lastRow","lastCol","skipCustomHeight","columnWidth","toWidth","ci","toHeight","px","formula","writeFormula","spreadsheetFilters","sqref","showErrorMessage","allowBlank","showDropDown","errorTitle","formula1","formula2","rId","DRAWINGS_XML","drawings","colOffset","imageId","DRAWINGS_RELS_XML","rels","numChar","$ref","filterRowIndex","maximumDigitWidth","Worksheet","sharedStrings","borders","_strings","_styles","_borders","_validations","_comments","_drawings","_hyperlinks","relsToXML","comments","sheetIndex","WORKSHEET_RELS","toXML","mergedCells","rowData","rowsByIndex","indexRows","_source","sortByIndex","fillCells","_readCells","defaultCellStyle","_lookupStyle","_getLastRow","_getLastCol","commentsXML","COMMENTS_XML","drawingsXML","drw","parseRef","topLeftCell","pixelsToExcel","LEGACY_DRAWING","_lookupString","uniqueCount","_lookupBorder","cellData","EMPTY_CELL","borderLeft","borderRight","borderTop","borderBottom","defStyle","borderId","displayValue","stripFunnyChars","cellName","validation","_addValidation","MAP_EXCEL_TYPE","MAP_EXCEL_OPERATOR","comparerType","allowNulls","showButton","messageTemplate","titleTemplate","countData","greaterThanOrEqualTo","lessThanOrEqualTo","number","defaultFormats","General","t0","convertColor","$0","$1","Workbook","_images","_imgId","_sheets","imageFilename","toZIP","createZip","docProps","lastModifiedBy","CORE","sheetCount","sheet","APP","xl","WORKBOOK_RELS","sheetIds","filterNames","userNames","localSheetId","quoteSheet","WORKBOOK","sheetName","localName","worksheets","drawingsRels","sheetRels","commentFiles","drawingFiles","sheetXML","relsXML","hasFont","fontInPt","fontInPx","convertFontSize","fills","fi","borderTemplate","fontId","fillId","numFmtId","STYLES","SHARED_STRINGS","CONTENT_TYPES","toBlob","borderSideTemplate","borderStyle","pushUnique","getSpan","getrow","getcol","upperStr","insertCell","topLeftRef","spanCell","insertCellAt","appendCell","SPREADSHEET_CUSTOM_FILTER","logic","criteria","customOperator","customValue","SPREADSHEET_DYNAMIC_FILTER","dynamicFilterType","SPREADSHEET_TOP_FILTER","SPREADSHEET_VALUE_FILTER","blanks","generators","SPREADSHEET_FILTERS","dynamic","gt","gte","lt","lte","doesnotmatch","quarter1","quarter2","quarter3","quarter4","january","february","march","april","may","june","july","august","september","october","november","december","IntlError","formatMessage","flattenValues","formattedMessage","errors","NoLocale","NoCurrency","NoSupplementalCurrency","NoCurrencyRegion","NoCurrencyDisplay","NoGMTInfo","NoWeekData","NoFirstDay","NoValidCurrency","NoDateFieldNames","cldr","en","_unicodeVersion","_cldrVersion","territory","numbers","decimal","percentSign","plusSign","minusSign","exponential","superscriptingExponent","perMille","infinity","nan","timeSeparator","approximatelySign","scientific","currency","currencies","BGN","displayName","EUR","USD","localeCurrency","accounting","gmtFormat","gmtZeroFormat","dateTimeFormats","long","short","availableFormats","Bh","Bhm","Bhms","EBhm","EBhms","Ed","Ehm","EHm","Ehms","EHms","Gy","GyMd","GyMMM","GyMMMd","GyMMMEd","hm","Hm","hms","Hms","hmsv","Hmsv","hmv","Hmv","Md","MEd","MMM","MMMd","MMMEd","MMMMd","yM","yMd","yMEd","yMMM","yMMMd","yMMMEd","yMMMM","yQQQ","yQQQQ","timeFormats","abbreviated","wide","quarters","midnight","noon","morning1","afternoon1","evening1","night1","eras","dateFields","era","quarter","weekOfMonth","dayOfYear","weekday","weekdayOfMonth","dayperiod","supplemental","likelySubtags","currencyData","region","US","weekData","weekendStart","weekendEnd","getLocaleInfo","localeInfo","suffixes","fullName","localeFullName","availableLocaleInfo","localeTerritory","territoryFromName","likelyName","DECIMAL","CURRENCY","ACCOUNTING","PERCENT","SCIENTIFIC","standAlone","formatType","lowerNameType","formatNames","cloneLower","lowerArray","lowerObject","parseRangeDate","SYMBOL","GLOBAL_CURRENCIES","getCurrencyInfo","throwIfNoValid","currencyDisplayInfo","territoryCurrencyCode","regionCurrencies","regionCurrency","latestValidUntil","latestValidUntilRange","latestStillValid","latestStillValidDate","_tender","validFrom","validTo","stillValidDate","DAYS_OF_WEEK","isNegativeZero","formatCurrencySymbol","currencyDisplay","currencyInfo","groupInteger","decimalIndex","groupSizes","integerEnd","integer","integerLength","newGroupSize","isCurrencyStyle","padString","decimals","trailingZeroRegex","fractionOptions","minimumFractionDigits","maximumFractionDigits","isCurrency","currencyFractions","currencyFractionOptions","fractions","_digits","literalRegExp","trailingZerosRegExp","trailingPointRegExp","commaRegExp","roundNumber","formatOptions","zeroIndex","sharpIndex","hasZero","hasSharp","fraction","trailingZeros","trimTrailingZeros","lastZero","trimRegex","negativeZero","placeholderIndex","index1","index2","applyCustomFormat","replacePlaceHolders","lastZeroIndex","hasNegativeFormat","hasGroup","replaceStyleSymbols","replaceLiterals","literals","customNumberFormat","setValueSpecificFormat","zeroFormat","isConstantFormat","constant","setFormatLiterals","quoteChar","literal","setStyleOptions","setGroupOptions","setPlaceholderIndices","standardFormatRegExp","standardFormatOptions","formatAndPrecision","formatNumber","standardNumberFormat","toExponential","minimumIntegerDigits","useGrouping","currencyUnitPattern","applyPattern","LENGHT_DELTA","PENALTIES","VALUE_FORMAT_LENGTH","TIME_SPECIFIERS_REGEX","DATE_OPTIONS_MAP","specifier","getSpecifier","getHourSpecifier","hour12","STAND_ALONE_SPECIFIERS","specifiersRegex","resolvedFormats","getSpecifierRegex","skeletonSpecifiers","findBestMatch","specifiers","specifiersLength","bestMatches","maxScore","score","REMOVAL_PENALTY","bestMatch","matchSpecifier","skeletonFormat","timeStartIndex","dateSkeleton","timeSkeleton","cacheFormat","datePattern","datetime","skeletonFromOptions","spcifier","dateNameType","formatLength","fun","dateFormatRegExp","formatDayOfWeekIndex","firstDayIndex","dayIndex","formatMonth","formatQuarter","formatTimeZone","shortHours","optionalMinutes","localizedName","zZeroOffset","hoursMinutes","formatDayOfWeek","formatters","timeZoneOffsetRegExp","numberRegExp","outOfRange","lookAhead","getNumber","valueIdx","getIndexByName","nameLength","subValue","matchLength","matchIdx","parseTimeZoneOffset","noSeparator","zLiteral","calendarGmtFormats","hoursMatch","minutesMatch","hoursOffset","minutesOffset","parseMonth","parseDayOfWeek","parsers","periodFormats","pmHour","shortFormat","invalid","updateContext","updateGroupHeaderContext","updateGroupFooterContext","updateFooterContext","destroyColumns","ExporterColumn","workbookOptions","sourceColumns","exporterColumns","addColumns","exporterColumn","toExporterColumns","ColumnBase","ExcelExportComponent","QueryList","saveFile","exportData","currentData","getExportData","isWorkbookOptions","dataURL","GroupHeaderTemplateDirective","GroupHeaderColumnTemplateDirective","GroupFooterTemplateDirective","ColumnComponent","ColumnGroupComponent","ExcelExportModule","_r17","column_r2","column_r9","_r38","ctx_r36","_r43","ctx_r41","_r52","ctx_r51","_r28","EMPTY_REGEX","isUniversal","extractFormat","or","conditions","and","iterator","getIterator$1","getOwnPropertyNames","entries","msCancelRequestAnimationFrame","GridSpacerComponent","sizedClass","flexBasisStyle","DomEventsService","cellMousedown","cellMouseup","focusIn","focusOut","windowBlur","LocalDataChangesService","GridFocusableElement","focusCell","isNavigable","NavigationCursor","activeRow","activeCol","virtualCol","virtualRow","findRow","dataRowIndex","isActiveRange","prevColIndex","prevRowIndex","cellRange","assume","announce","activateVirtualCell","rowRange","offsetRow","moveLeft","offsetCol","moveRight","lastCellIndex","metadata","leafColumnsToRender","hasDetailTemplate","groupItem","nextColIndex","nextRowIndex","virtualColumns","isVirtual","maxLogicalRowIndex","nextPos","ItemMap","setItem","getItem","firstRow","registerCell","logicalRowIndex","logicalColIndex","modelCell","uid","detailExpandCell","focusGroup","unregisterCell","registerRow","modelRow","updateRow","unregisterRow","rowCell","NODE_NAME_PREDICATES","matchesClasses","matchesNodeName","hasPosition","hasTabIndex","isFocusableWithTabKey","ariaHidden","findElement","matchSelf","findFocusableChild","findLastFocusableChild","findLastElement","PagerContextService","currentPage","changePageSize","ScrollRequestService","requests","getGroupRowArgs","parentGroup","GroupsService","rowState","groupArgs","userCallback","isInExpandedGroup","expanded","toggleRow","expandChildren","isChildIndex","DetailCollapseEvent","DetailExpandEvent","DetailsService","collapseRow","expandRow","eventArg","FOCUS_ROOT_ACTIVE","FocusRoot","registerGroup","unregisterGroup","CellCloseEvent","isNewRow","EditService","editedIndices","keepEditCell","closingCell","changedSource","editRow","onChanged","newItemGroup","editCell","editTemplate","preventCellClose","closeCell","isEditing","isEditingCell","hasNewItem","newDataItem","isNotEqual","formGroup","cancelCell","shouldCloseCell","keepCellTimeout","findByIndex","columnContext","isEdited","hasEdited","isEditedColumn","beginEdit","beginAdd","endEdit","isNew","isInputTag","navigableRegex","isNavigableInput","DefaultFocusableElement","findFocusable","CELL_CONTEXT","_enabled","registerElement","unregisterElement","isInSameGrid","gridElement","matchHeaderCell","matchDataCell","matchFooterCell","matchCell","targetCell","gridCell","isNavigationKey","isArrowKey","isInput","NavigationViewport","containsRow","intersects","pagerContextService","scrollRequestService","groupsService","detailsService","focusRoot","focusableParent","cellKeydown","activeRowIndex","alive","pagerIsNavigable","tableIsNavigable","pagerEnabled","tableEnabled","activeCell","activeDataRow","navigableOptions","setActiveSections","onStableSubscriber","isStable","onCursorChanges","navigateTo","onFocusOut","onWindowBlur","leaveCell","onKeydown","onTabout","deactivateElements","pendingRowIndex","virtualCell","registerCellOnCurrentRow","needsViewport","viewport","isCellFocusable","isCellFocused","oldMode","focusInCell","contains$2","focusInActiveRowContent","activateRow","alreadyActive","tryFocus","activateElements","enterCell","setViewport","behind","setColumnViewport","columnViewport","focusCellByElement","focusNextCell","focusAdjacentCell","focusPrevCell","autoFocusCell","lockedLeafColumns","fwd","success","moveCursorFwd","moveCursorBwd","colIdx","onCursorKeydown","onCellKeydown","hasPager","viewportSize","lastRowIndex","isPrintableCharacter","onContentKeydown","isTextInput","localDataChangesService","lastSelectionStartIndex","selectAllChecked","enableMarquee","checkboxOnly","selectableSettings","dragAndMultiple","getIterator","_selectAllState","rowArgs","rowSelected","addAllTo","selectedRows","deselectedRows","toggleByIndex","itemToToggle","deselect","removedItem","updateAll","selectRange","selectAllState","removeSubscriptions","targetArgs","mouseDownEventArgs","cellClickSubscription","mousedownSubscription","dataChangedSubscription","accessor","CellSelectionService","mouseUpEvent","dragSelectDeselect","lastSelectionItem","columnKey","lastSelectionItemRowIndex","lastSelectionItemColIndex","selectedCellArgs","cellSelected","leafIndex","isCellSelected","startRowIndex","startColIndex","endRowIndex","endColIndex","selectedCells","deselectedCells","selectedItem","cellsToRemove","contender","selectionStartRow","selectionStartCol","selectionEndRow","selectionEndCol","isInRowRange","isInColRange","isInSelectionRect","GridMarqueeDirective","cellSelection","selectionStarted","webkitUserSelection","userSelection","moveMarquee","pressArgs","pressTarget","dragEndSubscription","endSelection","initMarquee","marqueeElement","marqueeQuadrant","getMarqueeQuadrant","createElement$1","pointerX","pointerY","leftHalf","rightHalf","topHalf","bottomHalf","ZoneAwareEventEmitter","isAsync","generatorOrNext","schedulerFn","errorFn","completeFn","EditTemplateDirective","ColumnMenuTemplateDirective","IdService","gridId","cellId","selectionCheckboxId","selectAllCheckboxId","isSpanColumn","isCheckboxColumn","idService","orderIndex","isColumnGroup","reorderable","minResizableWidth","_locked","sticky","lockable","stickable","columnMenu","includeInChooser","headerTemplates","columnMenuTemplates","isColumnContainer","_leafIndex","totalColumnLevels","headerTemplateRef","footerTemplateRef","columnMenuTemplateRef","displayTitle","FilterCellTemplateDirective","FilterMenuTemplateDirective","isColumnComponent","sortable","groupable","groupHeaderTemplateRef","groupHeaderColumnTemplateRef","groupFooterTemplateRef","editTemplateRef","filterCellTemplateRef","filterCellTemplate","filterMenuTemplateRef","filterMenuTemplate","isSpanColumnComponent","SpanColumnComponent","childColumns","_editable","childrenArray","expandColumns","expandColumnsWithSpan","columnsToRender","sumProp","sumColumnWidths","columnsSpan","validField","leafColumns","someLeafColumn","sortColumns","orderBy","isInSpanColumn$1","isColumnGroupComponent","DetailTemplateDirective","_condition","showIf","canCreateElement","cachedPixelRatio","cachedScrollbarWidth","cachedRtlScrollLeft","BrowserSupportService","rtlScrollLeft","isGroupItem","flattenGroups","footers","dataIndex","parentGroupIndex","skipHeader","isVirtualGroupItem","GroupIterator","ItemIterator","ArrayIterator","vg","Iterator","resultMap","iter","_innerIterator","outputFooters","currentGroupIndex","_iterator","nextGroupItem","footerItem","innerIterator","nextDataItem","DataResultIterator","groupFooters","isGridDataResult","DataCollection","PairSet","keyXField","keyYField","keysX","totalKeysCount","keyX","keyY","pairs","pair","keysY","ContextService","rowSelectionState","cellSelectionState","isCellSelectionMode","lastSelectionState","getItemKey","getSelectionItem","selectionChangeSubscription","selectionKey","itemIdentifiers","notifyChange","stateToArray","ColumnsContainer","lockedColumns","nonLockedColumns","nonLockedLeafColumns","totalLevels","lockedColumnsToRender","nonLockedColumnsToRender","hasGroupFooter","unlockedWidth","currentLevels","containerLeafColumns","containerColumns","toRenderContainer","leaf","lists","forEachColumn","forEachLevel","filterHierarchy","ColumnList","filterSort","rootColumns","GroupInfoService","_columnList","registerColumnsContainer","formatForGroup","columnForGroup","isGroupable","groupTitle","ChangeNotificationService","NoRecordsTemplateDirective","syncRowsHeight","table1","table2","arr1","arr2","offsetHeight2","getHeights","setHeight$1","MenuTabbingService","isColumnMenu","FilterService","menuTabbingService","PagerTemplateDirective","PDFService","savePDF","drawPDF","exportClick","dataChanged","PDFExportEvent","SuspendService","browserMatchMedia","ResponsiveService","xs","sm","md","lg","bootstrapToMedia","ExcelService","saveToExcel","ToolbarTemplateDirective","headerSubscription","bodySubscription","registerEmitter","sourceType","unregister","obs","distinctUntilChanged","comparator","keySelector","previousKey","resizeSubscription","resizes","resizeArgs","ColumnResizingService","trackColumns","resizeColumns","deltaPercent","resizeTable","resizedColumn","resizedColumns","registerTable","tableMetadata","measureColumns","autoFitBatch","autoFitStart","onComplete","observables","zip$1","hasFilterRow","PopupCloseEvent","SinglePopupService","pointerEventsSub","attachClose","attachMouseListeners","detachClose","removeClick","skipElement","contains$1","canClosePopup","getDocument","getWindow","isTargetBefore","targetRect","DragAndDropService","lastTarget","mouseEvent","targetFor","updateClass","updateLock","DragHintService","santizer","safeTitle","sanitize","SecurityContext","removeLock","toggleLock","DropCueService","ColumnReorderService","reorder","ColumnReorderEvent","NavigationMetadata","dataRows","NO_STICKY","ColumnInfoService","visibilityChange","lockedChange","stickyChange","columnRangeChange","columnsContainer","hiddenColumns","leafNamedColumns","unlockedRootCount","stickyColumnsStyles","stickyColumns","changeVisibility","changeLocked","changeStuck","SortService","ColumnVisibilityChangeEvent","ColumnLockedChangeEvent","defaultTrackBy","ColumnStickyChangeEvent","CellLoadingTemplateDirective","LoadingTemplateDirective","ToolbarComponent","toolbarTemplateRef","toolbarTemplate","normalize$1","buttonCount","previousNext","responsive","normalizeSettings","FocusGroup","focusableChildren","toggleState","PagerElementComponent","pagerContext","onChanges","PagerPrevButtonsComponent","PagerNumericButtonsComponent","numbersWrapClass","reminder","pageLabel","pageText","onSelectChange","valueAsNumber","PagerInputDirective","numericInput","PagerInputComponent","incomingValue","hasPages","NumericTextBoxComponent","PagerNextButtonsComponent","PagerInfoComponent","maxItems","currentPageText","PagerDropDownListDirective","i1$4","PagerPageSizesComponent","_pageSizes","normalizedItems","showInitialPageSize","pageSizeChange","PagerComponent","pagerWrapClass","gridPagerClass","_templateContext","resizeHandler","clearResponsiveClasses","pagerAriaLabel","pagerLabel","localizationMsg","focusTrapTabIndex","onFocusIn","onEscape","onEnter","focusFirstElement","navigateToPreviousPage","shouldTriggerPageChange","navigateToNextPage","navigateToFirstPage","navigateToLastPage","updateCellContext","onInnerFocusIn","focusLastElement","deps","DropTargetDirective","GroupIndicatorComponent","directionChange","groupIndicatorClass","toggleDirection","removeDescriptor","hasClass","isDeleteButton","isSortIcon","skipButtons","elementUnderCursor","DraggableColumnDirective","cue","updateTouchAction","preventOnDblClick$1","performDrag","upEvent","cursorElement","hideThenShow","withoutField","alreadyGrouped","indicatorRules","GroupPanelComponent","groupInfoService","dropTargets","groupTitles","groupHeaderClass","emptyText","attachTargets","currentTitles","targetSubscription","canDrop","groupService","isNotGroupable","columnRules","enterStream","leaveStream","dropStream","ColGroupComponent","allowUnsort","showIndexes","initialDirection","multiSortKey","hasFilter","hasSort","hasLock","hasColumnChooser","columnChooser","operatorTexts","filterEqOperator","filterNotEqOperator","filterGteOperator","filterGtOperator","filterLteOperator","filterLtOperator","filterIsNullOperator","filterIsNotNullOperator","filterIsEmptyOperator","filterIsNotEmptyOperator","filterContainsOperator","filterNotContainsOperator","filterStartsWithOperator","filterEndsWithOperator","filterAfterOrEqualOperator","filterAfterOperator","filterBeforeOrEqualOperator","filterBeforeOperator","FilterOperatorBase","refreshText","setFilter","defaultOperator","filters","rootFilter","insertDefaultFilter","logicOperators","isCompositeFilterDescriptor","trimFilterByField","filtersByField","removeFilter","localizeOperators","BaseFilterCellComponent","filterService","operatorList","_operators","defaultOperators","operationListSubscription","filterByField","currentFilter","updateFilter","applyFilter","contentQueries","areDifferent","cloneFilter","copyObject","cloneFilters","diffFilters","FilterHostDirective","initComponent","stringOperators$1","StringFilterComponent","currentOperator","localizationChange","valueAccessors","filterDelay","changeRequests","unsubscribeStart","unsubscribeEnd","addAriaAttributes","subscribeChanges","isChanged$1","unsubscribeChanges","changeRequestsSubscription","ariaValue","columnLabel","kendoInput","focusableElement","EMPTY_VALUE_OPERATORS","isEmptyValueOperator","FilterInputWrapperComponent","_operator","emptyValueOperator","filterInputDisabled","applyNoValueFilter","_defaultOperator","onClear","FilterMenuDropDownListDirective","wrapperElement","filterMenuDropDownLabel","FilterMenuInputWrapperComponent","isFirstDropDown","firstOperatorDropDown","operatorChange","_currentFilter","onShiftTab","columnName","StringFilterMenuInputComponent","i4$2","StringFilterMenuComponent","firstFilter","secondFilter","logicChange","numericOperators","NumericFilterComponent","columnFormat","NumericFilterMenuInputComponent","NumericFilterMenuComponent","dateOperators","DateFilterComponent","DateFilterMenuInputComponent","i4$3","DateFilterMenuComponent","BooleanFilterComponent","BooleanFilterRadioButtonDirective","radioButtonEl","BooleanFilterMenuComponent","idPrefix","radioButtons","radioId","radioValue","FilterMenuHostDirective","boolean","filterMenuComponentFactory","validFilters","isNoValueOperator","parentLogicOfDefault","FilterMenuContainerComponent","parentService","childService","actionsClass","childFilter","_childFilter","resetButton","filterButton","submit","trimFilters","onTab","clearText","_c18","_c19","FilterMenuComponent","hasFilters","filterLabel","_c20","ColumnMenuService","closeMenu","ColumnMenuItemBase","ColumnMenuItemContentTemplateDirective","ColumnMenuItemComponent","contentState","updateContentState","ColumnMenuLockComponent","columnInfoService","toggleColumn","toggleHierarchy","allChanged","ColumnMenuStickComponent","ColumnMenuPositionComponent","_isLast","getLastFocusableItem","isLastItem","onCollapse","onExpand","menuItems","ColumnListComponent","columnChange","autoSync","allowHideAll","unlockedCount","updateColumnState","hasFiltered","hasVisibleLocked","hasUnlockedFiltered","updateDisabled","applyButton","cancelChanges","forEachCheckBox","applyChanges","getElementsByClassName","hasLocked","checkbox","checkedUnlocked","filteredColumns","ColumnMenuChooserComponent","onApply","ColumnMenuFilterComponent","ColumnMenuItemDirective","_isFirst","columnMenuItems","menuItemComponent","lastColumnMenuItem","getLastColumnMenuItem","firstItemKeydownSub","lastFocusableElement","lastItemKeydownSub","isExpandableItem","ColumnMenuContainerComponent","ColumnMenuSortComponent","sortService","sortedAsc","sortedDesc","toggleSort","ColumnMenuComponent","standalone","expandedFilter","expandedColumns","expandedPosition","hasStick","stick","setColumnPosition","getExpandedState","columnMenuTitle","menuItemSettings","FilterCellOperatorsComponent","showOperators","clearClick","clearKeydown","dropdownKeydown","dropdown","_c26","EMPTY_FILTER_OPERATORS","FilterCellWrapperComponent","overrideBaseClasses","StringFilterCellComponent","NumericFilterCellComponent","BooleanFilterCellComponent","DateFilterCellComponent","FilterCellHostDirective","filterComponentFactory","FilterCellComponent","isFilterable","id$1","LogicalCellDirective","logicalSlaveCell","nextId$1","ariaColIndex","navigationChange","onNavigationChange","registerNoChanges","rowIndexChange","registerChanges","updateElement","wasActive","microtask","headerLabelText","FilterRowComponent","filterRowClass","addStickyStyles","filterStyle","LogicalRowDirective","logicalSlaveRow","logicalSlaveCellsCount","nextId","hostRole","ariaRowIndex","logicalCellsCount","logicalSlaveRowChange","removeView","SelectAllCheckboxDirective","selectAllChange","stateSet","destroyClick","enabledAndMultiple","shouldEmitSelectAll","stateToBool","headerWidth","allLeafColumns","isInSpanColumn","ColumnHandleDirective","leftStyle","rightStyle","allLeafs","currentLeafs","columnInfo","isParentSpan","isLastInSpan","isParentSpanColumn","headerIndex","columnsForLevel","implicitWidth","initState","shouldUpdate","initColumnWidth","preventOnDblClick","whole","toPercentage","resizeStartWidth","sizeToFit","oldWidth","fromPercentage","tableDelta","updateWidth","mergeObjects","inSameParent","isRootLevel","lastColumn","modifierKeys","reorderService","lockedColumnsCount","totalColumnsCount","sortedFields","headerClass","scrollable","sortableLabel","columnMenuSettings","unlockedColumnsCount","sortColumn","getColumnComponent","onSortClick","matchModifier","toggledColumn","onHeaderKeydown","showFilterMenu","filterMenu","filterMenus","fm","showColumnMenu","columnMenus","showSortNumbering","sortOrder","sortIcon","sortDescriptor","sortState","isSortable","sortStatus","sortChange","selectAllCheckboxLabel","isFirstOnRow","isTailing","detailTemplate","logicalColumnIndex","hasFilterMenu","showFilterRow","columnMenuTemplate","shouldActivate","canReorder","trackByIndex","stickyStyles","columnLevels","targetLocked","draggableLocked","trackMove","calculateBefore","changeContainer","normalizeTarget","firstSpan","levelColumns","ScrollBottomAction","firstItemOffset","nextTake","NON_DATA_CELL_CLASSES","CommandColumnComponent","SelectionCheckboxDirective","destroyKeyDown","setCheckedState","FieldAccessorPipe","i1$5","ɵpipe","pure","CellComponent","_editTemplateContext","commandCellClass","isCommand","_rowIndex","isColumnEditable","editContext","isFieldEditable","showLoading","editTemplateContext","isBoundColumn","selectionCheckboxLabel","_changes","updateTemplateContext","GroupHeaderComponent","skipGroupDecoration","hasDetails","groupItemClass","prefixGroupCell","toggleGroup","groupSpan","groupCount","detailOffset","logicalColSpan","ariaRole","groupButtonTitle","messageKey","TableBodyComponent","changeNotification","cellSelectionService","noRecordsText","showGroupFooters","rowClass","cellKeydownSubscription","cellKeydownHandler","trackByWrapper","trackByColumns","isAriaSelected","isRowSelected","viewItem","detailButtonStyles","detailButtonTitle","isGroup","isDataItem","isFooter","isFooterItemInExpandedGroup","isDataItemInExpandedGroup","isParentGroupExpanded","isOdd","groupHeaderColumns","groupHeaderSlaveCellsCount","rowSticky","applyStickyRowsStyling","absoluteRowIndex","addRowOffset","filterRowOffset","addRowLogicalIndex","mouseupSubscription","contextmenuSubscription","touchstartSubscription","touchendSubscription","touchSubscription","originalNoRecordText","clickTimeout","isEditingRow","allColumnsSpan","footerColumns","showGroupHeader","addStickyColumnStyles","cellClickArgs","emitCellClick","isEditedRow","columnCellIndex","stickyRows","nodesToArray","accumulatedHeight","stickyRowsOffsets","columnsToResize","resizableColumns","TableDirective","firstResize","bufferCount","bufferSize","startBufferEvery","buffers","toEmit","arrRemove","autoFitSubscription","autoFitObservable","originalWidth","measureColumn","headerRow","ResizableContainerDirective","lockedWidth","_lockedWidth","kendoGridResizableContainer","elementAt","rowAt","EMPTY_OBJECT","maybeNativeElement","suspendService","supportService","columnResizingService","pdfService","contentScroll","scrollBottom","columnsStartIdx","resizeSensors","containerScrollTop","detailExpand","showFooter","exporting","viewportColumns","groupCellsWidth","nonLockedWidth","handleRowSync","handleRowNavigationLocked","updateViewportColumns","handleInitialScrollToSkip","rebind","skipScroll","viewportWidthChange","resetNavigationViewport","attachContainerScroll","initResizeService","hasLockedContainer","lockedContainer","lockedTable","cleanupScroller","createScroller","lockedScroll","lockedScrollTop","lockedMousewheel","preventLockedScroll","scrollDelta","lockedKeydown","onContainerScroll","handleColumnScroll","rowViewport","startRow","endRow","endColumn","scrollerSubscription","syncContainerHeight","sensor","scrollToVirtualRow","normalizeScrollLeft","cellAt","elementScrollLeft","lastItemOffset","lastItemOverflows","viewportStart","viewportEnd","lastItemDetailOverflows","setHeight","calculateViewportColumns","currentColumns","viewportColumnsWidth","offsetColumn","columnsEndIdx","updateColumnViewport","columnUpdateFrame","lockedCount","normalizedScrollLeft","rtlScrollPosition","_c46","_c47","_c48","FooterComponent","footerClass","LoadingComponent","loadingText","GridMessages","validateColumnsField","isValidFieldName","isInEditedCell","GridComponent","responsiveService","excelService","columnReorderService","pageable","autoSize","hideHeader","groupChange","dataStateChange","groupExpand","groupCollapse","detailCollapse","edit","cellClose","pdfExport","excelExport","columnResize","columnReorder","columnVisibilityChange","columnLockedChange","columnStickyChange","selectionDirective","columnList","hasGroupFooters","shouldGenerateColumns","_sort","_group","_skip","cachedWindowWidth","_rowSelected","_cellSelected","_navigable","_rowClass","localizationSubscription","columnVisibilityChangeSubscription","columnLockedChangeSubscription","columnStickyChangeSubscription","groupExpandCollapseSubscription","expandEmitter","collapseEmitter","handleExpandCollapseGroupsService","detailsServiceSubscription","handleExpandCollapseDetailsService","filterSubscription","sortSubscription","attachStateChangesEmitter","attachEditHandlers","attachDomEventHandlers","pdfSubscription","emitPDFExportEvent","excelSubscription","saveAsExcel","columnsContainerChange","handleColumnResize","columnReorderSubscription","columnRangeChangeSubscription","onColumnRangeChange","showTopToolbar","showBottomToolbar","showTopPager","showBottomPager","showGroupPanel","groupableEmptyText","marqueeSelection","navigatable","_rowSticky","lockedClasses","virtualClasses","noScrollbarClass","_customDetailTemplate","detailTemplateChildren","cellLoadingTemplate","_cellLoadingTemplate","cellLoadingTemplateChildren","loadingTemplate","_loadingTemplate","loadingTemplateChildren","noRecordsTemplate","_customNoRecordsTemplate","noRecordsTemplateChildren","customNoRecordsTemplate","pagerTemplate","_customPagerTemplate","pagerTemplateChildren","customPagerTemplate","_customToolbarTemplate","toolbarTemplateChildren","customToolbarTemplate","headerPadding","ariaRowCount","ariaColCount","isScrollable","visibleColumns","headerColumns","headerLeafColumns","leafViewportColumns","toggleDetailRowLegacy","expandGroup","toggleGroupRowLegacy","collapseGroup","resetGroupsState","expandGroupChildren","onDataChange","autoGenerateColumns","defaultSelection","initSelectionService","updateNavigationMetadata","syncHeaderHeight","columnMenuOptions","attachScrollSync","shouldResetSelection","navigationMetadata","applyAutoSize","columnsChangeSubscription","stateChangeSubscription","editServiceSubscription","columnsContainerChangeSubscription","detachElementEventHandlers","footerChangeSubscription","columnResizingSubscription","focusElementSubscription","skipFocus","focusEditElement","closeRow","createControl","columnInstance","saveAsPDF","resolveFn","rejectFn","autoFitColumn","autoFitColumns","notifyPageChange","notifyScrollBottom","containerSelector","setEditFocus","assertNavigable","reorderColumn","destIndex","allColumnsForLevel","isDetailExpanded","isGroupExpanded","updateColumnIndices","sourceColumnIndex","nextSourceIndex","toSkip","updateIndicesForLevel","colsForParentLevel","colsForLevel","cellSelectionMode","activeService","inactiveService","emitCRUDEvent","ariaRoot","resizeCheck","orientationSubscription","documentClickSubscription","keydownSubscription","focusInSubscription","focusOutSubscription","innerWidth","hasChanges","lockedHeader","notifyResize","lastFromGroup","hasCallback","selectableChanges","_c53","_c54","_c55","_c56","i18n_59","i18n_61","i18n_63","i18n_65","i18n_67","i18n_69","i18n_71","i18n_73","i18n_75","i18n_103","i18n_105","i18n_107","i18n_109","i18n_111","i18n_113","i18n_115","i18n_117","i18n_119","i18n_121","i18n_123","i18n_125","i18n_127","i18n_129","i18n_131","i18n_133","i18n_135","i18n_137","i18n_139","i18n_141","i18n_143","i18n_145","i18n_147","i18n_149","i18n_151","i18n_153","i18n_155","i18n_157","i18n_159","i18n_161","i18n_163","i18n_165","i18n_167","i18n_169","i18n_171","i18n_173","i18n_175","i18n_177","i18n_179","i18n_181","i18n_183","i18n_185","i18n_187","i18n_189","i18n_191","i18n_193","DataBindingDirective","applyState","updateGridData","notifyDataChange","SelectionDirective","ExpandDetailsDirective","expandedDetailKeysChange","expandedDetailKeys","initiallyExpanded","expandedState","expandDetailsKey","_expandBy","expandDetailBy","lastExpandedState","keyGetter","mapParentGroup","parentGroupKeys","DEFAULT_KEY_GETTER","groupRowArgs","ExpandGroupDirective","expandedGroupKeysChange","groupsInitiallyExpanded","expandGroupBy","_expandGroupBy","expandedGroupKeys","_expandedGroupKeys","expandedGroups","getItemIndex","stringOperators","AutoCompleteFilterCellComponent","_valueField","ContainsFilterOperatorComponent","DoesNotContainFilterOperatorComponent","EndsWithFilterOperatorComponent","EqualFilterOperatorComponent","IsEmptyFilterOperatorComponent","IsNotEmptyFilterOperatorComponent","IsNotNullFilterOperatorComponent","IsNullFilterOperatorComponent","NotEqualFilterOperatorComponent","StartsWithFilterOperatorComponent","GreaterFilterOperatorComponent","GreaterOrEqualToFilterOperatorComponent","LessFilterOperatorComponent","LessOrEqualToFilterOperatorComponent","AfterFilterOperatorComponent","AfterEqFilterOperatorComponent","BeforeEqFilterOperatorComponent","BeforeFilterOperatorComponent","FILTER_OPERATORS","importedModules$4","SharedFilterModule","RowFilterModule","exports","importedModules$3","LabelModule","PagerModule","DragAndDropModule","GroupModule","FilterMenuModule","ColumnChooserComponent","closeClick","ColumnMenuModule","importedModules$2","HeaderModule","CheckboxColumnComponent","EditCommandDirective","commandClass","CancelCommandDirective","SaveCommandDirective","RemoveCommandDirective","AddCommandDirective","importedModules$1","BodyModule","importedModules","FooterModule","LocalEditService","hasLocalData","assignValues","EditingDirectiveBase","defaultEditService","createDefaultService","userEditService","addHandler","removeHandler","cancelHandler","saveHandler","createModel","saveModel","closeEditor","shouldRemove","removeConfirmation","LocalRowEditService","RowEditingDirectiveBase","editHandler","TemplateEditingDirective","originalValues","createNewItem","markAllAsTouched","markAsTouched","ReactiveEditingDirective","createFormGroup","InCellEditingDirective","cellClickHandler","cellCloseHandler","groupDescriptorsPresent","descriptors","processGroups","findGroup","includeFooters","hideFooter","groupItems","itemCount","GroupBindingDirective","kendoGridGroupBinding","groupsPresent","removeParentDescriptors","filterBy","dataResult","skippedHeaders","GridModule","PDFMarginComponent","PDFTemplateDirective","HEADER_CLASS","FOOTER_CLASS","matchesList","matchesTable","GridQuery","headerWrap","footerWrap","FIRST_CLASS","INPUTS","appendNodes","wrapTable","createTableElement","sourceCount","rowsCount","sourceIdx","colGroups","bodies","colGroup","firstCellIndex","setFirstCellClass","PDFComponent","saveSubscription","drawSubscription","createPDF","createExportGroup","originalColumns","initProgress","renderAllPages","allPages","changeColumns","originalHeight","originalOverflow","applyScroll","overlayQuery","overlayContent","lockedContent","overlayLockedContent","createExportElement","removeContainer","_take","PDFCommandDirective","pdfClass","PDFModule","ExcelExportEvent","fetchComponentData","toExcelColumns","excelColumn","toExcelColumn","componentColumns","ExcelComponent","dataSubscription","fetchData","ColumnBase$1","ExcelCommandDirective","excelClass","ExcelModule","sizeClasses","xsmall","xlarge","IconBaseDirective","horizontalFlip","flip","verticalFlip","IconComponent","_name","SVGIconComponent","domSanitizer","_icon","safeContent","bypassSecurityTrustHtml","verifyIconProperty","IconModule","SVGIconModule","IconsModule","SIZE_CLASSES$1","BadgeComponent","cutoutBorder","badgeClasses","badgeAlign","cutoutBorderClass","setBadgeClasses","positionClass","shapeClass","fillClass","BadgeContainerComponent","BadgeModule","SEGMENT_COUNT","pulsing","TYPE_CLASSES","LoaderComponent","loader","setLoaderClasses","segmentCount","LoaderModule","validAnimations","validShapes","ANIMATION_CLASSES","pulse","wave","SHAPE_CLASSES","rectangle","SkeletonComponent","_animation","_shape","SkeletonModule","IndicatorsModule","areSame","fitIntoBounds","limitPrecision","fractionLength","maxFractionLength","toFixedPrecision","maxPrecision","divide","dividend","correctionValue","calculateFixedTrackSize","smallStep","fixedTickWidth","calculateTicksCount","adjustedRange","adjustedRatio","calculateValueFromTick","calculateHandlePosition","trackWidth","decreaseValueToStep","largeStep","stepRemainder","increaseValueToStep","isStartHandle","dragHandle","limited","trimValue","trimValueRange","isSameRange","eventValue","scaleElement","trackOffset","offsetValue","stepFractionLength","increment","decrement","incrementLarge","decrementLarge","validateValue","SliderModelBase","tickSizes","getTickSizes","resizeTrack","altOrientation","resizeTicks","ticksContainer","adjustPadding","resizeWrapper","fixedTrackWidth","wrapperParentEl","distStep","totalTickSize","SliderModel","positionHandle","handlePosition","positionSelection","invokeElementMethod","LabelTemplateDirective","SliderBase","tickPlacement","sliderClass","ifEnabled","verticalClass","sizeComponent","keyBinding","resetStyles","SliderTick","SliderTicksComponent","tickValueProps","endTickClasses","SliderMessages","LocalizedSliderMessagesDirective","PRESSED$1","SliderComponent","showButtons","onWrapClick","getProps","draghandle","ngChange","ngTouched","decreaseValue","increaseValue","setValueChangeInterval","increaseButton","decreaseButton","tickElements","incrementMessage","incrementTitle","decrementMessage","decrementTitle","dragHandleMessage","dragHandleTitle","handleDragPress","onHandleDrag","onHandleRelease","selectionEl","sliderSelection","dragHandleEl","isDragged","startWith","tabbing","cursorInsideWrapper","RangeSliderModel","startHandlePosition","endHandlePosition","currentSelectionPosition","RangeSliderMessages","LocalizedRangeSliderMessagesDirective","PRESSED","RangeSliderComponent","startHandleId","endHandleId","handleZIndex","trackValue","newRangeValue","draghandleStart","draghandleEnd","startHandleIsActive","trimmedValue","valueText","draggedHandle","lastCoords","lastHandlePosition","moveStartHandle","moveEndHandle","moveBothHandles","activeStartHandle","incorrectValueState","dragHandleStartEl","dragHandleEndEl","LocalizedSwitchMessagesDirective","FOCUSED$4","SwitchComponent","hostClickSubscription","_checked","_trackRounded","_thumbRounded","setHostClasses","thumbRounded","newThumbRounded","handleThumbClasses","trackRounded","newTrackRounded","handleTrackClasses","ieClass","ariaReadonly","onLabelMessage","onLabel","offLabelMessage","offLabel","isEnabled","attachHostClickHandler","thumb","i18n_25","TextBoxDirective","autoFillStart","autoFillEnd","listeners","animationName","TextAreaDirective","elementClasses","autofillClass","elementValue","setElementProperty","inputSubscription","initialHeight","EXPONENT_REGEX","decimalPart","ArrowDirection","NumericTextBoxMessages","LocalizedNumericTextBoxMessagesDirective","PARSABLE_OPTIONS","PARSABLE_DEFAULTS","FOCUSED$3","changeValueOnScroll","selectOnFocus","isPasted","ngValidatorChange","increasePress","arrowPress","decreasePress","releaseArrow","spinTimeout","pressedKey","replaceNumpadDotValue","formatInputValue","restrictDecimals","limitInputValue","hasTrailingZeros","setInputValue","previousSelection","handleDragEnter","shouldSelectAll","selectCaret","handleWheel","getDeltaFromMouseWheel","disableClass","createMinValidator","createMaxValidator","numericRegex","restrictModelValue","unbindHandler","restrictedValue","notifyValueChange","decimalSeparator","numberSymbols","hasDecimals","isRightClickIE","isRightClickOther","isRightClick","spin","numberPattern","enteredValue","limitedValue","selectToEnd","lengthChange","hasMax","hasMin","padLimit","replaceNext","correctedValue","paddedValue","tryPadValue","limitLength","zeroPadded","zeroPaddedNext","stringValue","exponentMatch","caretPosition","getCaretPosition","partialValue","significantCharsInFormattedValue","formattedString","significantCharacters","extractSignificantNumericChars","adjustedSignificantChars","adjustSignificantChars","numberOfLeadingZeroes","separatorIndex","matchedLeadingZeroes","lengthOfMatch","lengthOfLeadingZeroesMatch","significantChars","leadingZeroes","_c28","i18n_31","NumericTextBoxCustomMessagesComponent","ResultType","Literal","Result","chain","fold","vs","Stream","inputCursor","controlCursor","char","eat_input","eat_control","Parser","isLiteral","rawMask","prompt","promptPlaceholder","rawLiteral","includeLiterals","always","greedy","MaskingService","maskTokens","unmaskTokens","rawTokens","validationTokens","tokenize","validationValue","maskedValue","unmasked","rawValue","maskRaw","masked","maskInput","splitPoint","maskRemoved","maskInserted","maskInRange","pasted","beforeChange","afterChange","unchanged","adjustPosition","caretChar","maskTokenCreator","_token","unmaskTokenCreator","unliteral","unmask","rawTokenCreator","validationTokenCreator","FOCUSED$2","MaskedTextBoxComponent","maskOnFocus","maskValidation","focusClick","defaultRules","emptyMask","updateInput","setFocusSelection","onTouched","updateService","_rules","hostDisabledClass","handleDragDrop","pasteHandler","inputHandler","updateValueWithEvents","extractChanges","patternError","isFromOnChanges","present","_c36","SlidersCommonModule","SliderCustomMessagesComponent","SliderModule","RangeSliderCustomMessagesComponent","RangeSliderModule","SwitchCustomMessagesComponent","SwitchModule","MaskedTextBoxModule","TextBoxSuffixTemplateDirective","TextBoxPrefixTemplateDirective","TextBoxMessages","LocalizedTextBoxMessagesDirective","FOCUSED$1","TextBoxComponent","showSuccessIcon","showErrorIcon","inputFocus","inputBlur","handleInputFocus","clearButtonClicked","handleInputBlur","isBrowserSafari","isSafari","isJapanese","caretStart","caretEnd","checkClearButton","isFocusedElement","showClearButton","showErrorsInitial","showSuccessInitial","successIconClasses","successIcon","errorIconClasses","errorIcon","clearButtonClasses","clearButtonIcon","hasErrors","isSuccessful","TextBoxCustomMessagesComponent","InputSeparatorComponent","TextFieldsBase","resizeClasses","both","FOCUSED","TextAreaComponent","flow","flowCol","flowRow","handleFlow","_c41","TextAreaSuffixComponent","TextAreaModule","PALETTEPRESETS","basic","office","apex","austin","clarity","slipstream","metro","hardcover","trek","verve","monochrome","accessible","ColorPickerCancelEvent","ColorPickerCloseEvent","ColorPickerOpenEvent","ActiveColorClickEvent","openPrevented","isOpenPrevented","opacityEnabled","nameFormat","namedColors","parseColor$1","parsedColor","getHexValue","getRGBA","toBytes","getColorFromHSV","hsva","hue","saturation","getColorFromHue","getRGBFromRGBA","foregroundColor","getLuminance","getContrastFromTwoRGBAs","luminance1","luminance2","getContrast","pointA","pointB","lengthX","lengthY","svgPath","ColorPickerLocalizationService","DEFAULT_ACCESSIBLE_PRESET$1","FlatColorPickerLocalizationService","colorPickerLocalization","FlatColorPickerService","getPaletteSettings","defaultPreset","settingsPalette","palette","presetColumns","paletteTileLayout","FlatColorPickerHeaderComponent","viewChange","valuePaneClick","clearButtonClick","onViewButtonClick","viewButtons","getViewButtonIcon","ColorGradientLocalizationService","flatColorPickerLocalization","ColorContrastSvgComponent","oldA","oldH","setPaths","bezierCommandCalc","controlPointCalc","cpsX","cpsY","cpeX","cpeY","bezierCommand","lineCalc","getPaths","findValue","contrast","currentContrast","stepCount","reversed","ColorInputComponent","colorInputClass","rgba","rgbaInputValid","formatButtonTitle","handleRgbaValueChange","red","green","blue","getColorFromRGBA","handleHexValueChange","handleRgbaInputBlur","handleHexInputBlur","toggleFormatView","formatView","toggleFormatButton","_c49","_c50","ContrastValidationComponent","passMessage","failMessage","contrastText","ContrastComponent","formatedRatio","contrastRatio","contrastRatioText","satisfiesAACondition","satisfiesAAACondition","ColorPickerMessages","LocalizedColorPickerMessagesDirective","serial$3","ColorGradientComponent","hueSliderTouched","alphaSliderTouched","updateValues","notifyNgChanged","notifyNgTouched","readonlyAttribute","gradientId","hostTabindex","contrastTool","_contrastTool","alphaSliderValue","gradientRect","gradientWrapper","contrastToolVisible","updateUI","removeListener","gradientDragHandle","changePosition","onKeyboardAction","dragHandleElement","keyboardMoveX","keyboardMoveY","newY","newX","moveDragHandle","handleHueSliderChange","setBackgroundColor","setAlphaSliderBackground","handleAlphaSliderChange","handleInputsValueChange","colorGradientHandleTitle","colorGradientHandleAriaLabel","hueSliderTitle","opacitySliderTitle","clearButtonTitle","positionX","positionY","gradientRectWidth","gradientRectHeight","setDragHandleElementPosition","setHostElementAriaLabel","alphaSlider","sliderTrack","hsvRectangle","toHSV","getHSV","focusOutListener","containsFocus","keydownListener","keyupListener","dragHandleFocusInListener","dragHandleFocusOutListener","_c57","_c58","ColorPaletteLocalizationService","ColorPaletteService","colorRows","setColorMatrix","getCellCoordsFor","getColorAt","cellCoords","horizontalStep","verticalStep","minArrayIndex","serial$2","ColorPaletteComponent","uniqueId","paletteId","minColumnsCount","_palette","tileLayout","setRows","selectCell","handleCellNavigation","handleHostBlur","handleCellFocusOnBlur","handleCellSelection","focusedCell","selectedCell","focusInComponent","activeCellId","selectedColor","FlatColorPickerActionButtonsComponent","actionButtonClick","onActionButtonClick","_c81","FocusOnDomReadyDirective","focusOnNextTick","FlatColorPickerComponent","preview","_gradientSettings","_paletteSettings","gradientSettings","setActiveView","setSizingVariables","headerHasContent","onViewChange","onClearButtonClick","resetInnerComponentValue","changeCurrentValue","setFlatColorPickerValue","onAction","ariaLabelValue","paletteTileSize","_c83","_c84","_c85","_c86","DOM_FOCUS_EVENTS","activeColorClick","domFocusListener","iconStyles","handleHostId","handleDomEvents","handleCancelEvent","toggleWithEvents","handleWrapperClick","closest$1","activeColor","handleWrapperFocus","handleWrapperBlur","handlePopupBlur","popupBlurInvalid","handleWrapperKeyDown","handlePopupKeyDown","currentElement","firstFocusableElement","nextElement","focusInFlatColorPickerElement","flatColorPicker","viewButtonsCollection","clearButtonElement","lastButton","hexInput","opacityInput","blueInput","closestPopup","closestWrapper","existingId","_c117","_c118","_c119","_c120","ColorPickerCustomMessagesComponent","CheckBoxDirective","kendoClass","RadioButtonDirective","RadioButtonModule","serial$1","ErrorComponent","roleAttribute","startClass","endClass","idAttribute","HintComponent","FormFieldComponent","showHints","showErrors","errorClass","isRadioControl","disabledControl","disabledElement","disabledKendoInput","formControls","validateFormControl","hasHints","showHintsInitial","setDescription","updateDescription","controlElementRefs","isControlGroup","valueAccessor","RadioControlValueAccessor","findControlElements","errorChildren","hintChildren","ariaIds","generateDescriptionIds","errorAttribute","untouched","pristine","_c154","FormFieldModule","_number","NUMBER_PLACEHOLDER","POINT","DEFAULT_LOCALE","LATIN_NUMBER_FORMATS","patternRegExp","cldrCurrencyRegExp","getPatterns","loadCurrencyUnitPatterns","currencyFormats","loadNumbersInfo","standard","predefinedDatePatterns","YEAR_REGEX","SHORT_DATE","datePatterns","getCalendarNames","isObj","loadCalendarNames","localeCalendar","getEraNames","eraNameMap","eraAbbr","eraNames","eraNarrow","eraFormatName","loadCalendarDateFields","fieldInfo","getPredefinedFormat","pathIdx","loadCalendarPatterns","cldrCalendar","loadCalendarInfo","gregorian","loadLocale","lengthComparer","exponentRegExp","nonBreakingSpaceRegExp","cleanNegativePattern","cleanCurrencyNumber","displays","currencyDisplays","cleanNumber","HOUR","ZONE","WEEKDAY","QUARTER","DATE_FIELD_MAP","convertTimeZone","fromLocalOffset","offsetDate","toLocalOffset","dateRegExp","offsetRegExp","leadingSpacesRegex","trailingSpacesRegex","standardDateFormats","FORMATS_SEQUENCE","checkLiteral","addFormatSpaces","parseExact","hasTime","parseMicrosoftDateFormat","tzoffset","parseMicrosoftDateOffset","NAME_TYPES","minLength","LITERAL","addLiteral","lastPart","isHour12","DOCS_URL","errorSolutions","errorSolution","intlMethod","fieldNameInfo","parseValue","parseFormats","isPercent","cleanLiterals","negativeCurrency","currencyNumber","negativeSignIndex","isNegative","LOCALE_REGEX","cldrServiceFactory","CldrIntlService","format$1","DatePipe","isNumeric","NumberPipe","require","ADP","AED","AFA","AFN","ALK","ALL","AMD","ANG","AOA","AOK","AON","AOR","ARA","ARL","ARM","ARP","ARS","ATS","AUD","AWG","AZM","AZN","BAD","BAM","BAN","BBD","BDT","BEC","BEF","BEL","BGL","BGM","BGO","BHD","BIF","BMD","BND","BOB","BOL","BOP","BOV","BRB","BRC","BRE","BRL","BRN","BRR","BRZ","BSD","BTN","BUK","BWP","BYB","BYN","BYR","BZD","CAD","CDF","CHE","CHF","CHW","CLE","CLF","CLP","CNH","CNX","CNY","COP","COU","CRC","CSD","CSK","CUC","CUP","CVE","CYP","CZK","DDM","DEM","DJF","DKK","DOP","DZD","ECS","ECV","EEK","EGP","ERN","ESA","ESB","ESP","ETB","FIM","FJD","FKP","FRF","GBP","GEK","GEL","GHC","GHS","GIP","GMD","GNF","GNS","GQE","GRD","GTQ","GWE","GWP","GYD","HKD","HNL","HRD","HRK","HTG","HUF","IDR","IEP","ILP","ILR","ILS","INR","IQD","IRR","ISJ","ISK","ITL","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRH","KRO","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LTL","LTT","LUC","LUF","LUL","LVL","LVR","LYD","MAD","MAF","MCF","MDC","MDL","MGA","MGF","MKD","MKN","MLF","MMK","MNT","MOP","MRO","MRU","MTL","MTP","MUR","MVP","MVR","MWK","MXN","MXP","MXV","MYR","MZE","MZM","MZN","NAD","NGN","NIC","NIO","NLG","NOK","NPR","NZD","OMR","PAB","PEI","PEN","PES","PGK","PHP","PKR","PLN","PLZ","PTE","PYG","QAR","RHD","ROL","RON","RSD","RUB","RUR","RWF","SAR","SBD","SCR","SDD","SDG","SDP","SEK","SGD","SHP","SIT","SKK","SLL","SOS","SRD","SRG","SSP","STD","STN","SUR","SVC","SYP","SZL","THB","TJR","TJS","TMM","TMT","TND","TPE","TRL","TRY","TTD","TWD","TZS","UAH","UAK","UGS","UGX","USN","USS","UYI","UYP","UYU","UYW","UZS","VEB","VEF","VES","VND","VNN","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XEU","XFO","XFU","XOF","XPD","XPF","XPT","XRE","XSU","XTS","XUA","XXX","YDD","YER","YUD","YUM","YUN","YUR","ZAL","ZAR","ZMK","ZMW","ZRN","ZRZ","ZWD","ZWL","ZWR","MMdd","yMM","ru","MessageService","LabelDirective","labelClass","getFocusableComponent","fileSelect","labelFor","for","HTMLElement","inputElementHasAttr","setAriaLabelledby","clickListener","labelTarget","getRootElement","FloatingLabelInputAdapter","formControl","isObservableOrEventEmitter","FloatingLabelComponent","positionChange","labelId","autoFillStarted","labelPosition","invalidClass","validateSetup","addHandlers","setLabelFor","componentId","controlId","handleAutofill","setFocus","FloatingLabelModule","LabelComponent","wrappedNativeInput","labelDirective","adjustValueToRange","calculatePercentage","onePercent","truncateNumber","numberParts","calculateRatio","extractValueFromChanges","ProgressBarBase","reverseClass","indeterminateClass","dirAttribute","ariaMinAttribute","ariaMaxAttribute","ariaValueAttribute","isCompleted","statusWidth","_progressRatio","statusHeight","statusWrapperWidth","statusWrapperHeight","validateRange","ProgressBarComponent","showLabel","isPositionStart","isPositionCenter","isPositionEnd","formattedLabelValue","defaultFormattedValue","isAnimationInProgress","isAnimationChanged","hasAnimation","stopCurrentAnimation","cancelCurrentAnimation","runAnimation","startAnimation","progressStatusElement","progressStatusWrapperElement","getAnimationOptions","deltaSize","wrapperSize","renderValueChange","resetProgress","stopAnimation","previousRatio","previousStatusWidth","previousStatusHeight","newWrapperSize","ChunkProgressBarComponent","chunkCount","_orientationStyles","chunkSizePercentage","completedChunks","reverseChunks","orientationStyles","MODULES","ProgressBarModule","_r36","PanelBarExpandMode","Single","Full","Multiple","Default","PanelBarContentDirective","PanelBarItemTitleDirective","SHAPE_TO_ROUNDED","parsePanelBarItems","isHorizontalArrowKey","isVerticalArrowKey","targetAttr","hasItemIndex","closestItem","nextPanelbarId","PanelBarService","parentSource","keepContentSource","childSource","parent$","children$","keepContent$","pbId","onKeepContent","PanelBarItemComponent","eventService","hasChildItems","hasContent","titleAttribute","kItemClass","wrapperFocused","_expanded","onWrapperFocusChange","activeState","toggleExpandedChildAnimations","kStateDefaultClass","kStateDisabledClass","kStateExpandedClass","ariaSelected","childClass","titleTemplates","contentWrapper","addLevelClass","contentItems","validateConfiguration","childrenItems","viewChildItems","onItemAction","serialize","subTreeViewItems","subTree","toggleAnimationState","expandMode","kendo_angular_layout_c0","kendo_angular_layout_c1","AUTO_STYLE","PanelBarItemTemplateDirective","PanelBarCollapseEvent","PanelBarExpandEvent","PanelBarSelectEvent","PanelBarStateChangeEvent","PanelBarComponent","isViewInit","_keepItemContent","updateChildrenHeight","childrenHeight","panelbarHeight","contentOverflow","keyBindings","computedKeys","keepItemContent","hostHeight","invertKeys","selectFocusedItem","focusPreviousItem","collapseItem","focusNextItem","expandItem","focusLastItem","allItems","viewItems","contentChildItems","onComponentClick","itemClicked","onComponentKeyDown","modifiedItems","selectPreventedItems","currentItem","selectedState","focusedState","preventedCollapseItem","siblings","isEventPrevented","getVisibleParent","moveFocus","firstChildIndex","flatVisibleItems","listOfItems","flattedItems","SplitterPaneComponent","sizeChange","collapsedChange","forceExpand","isResized","paneOrder","_order","setOrderStyles","staticPaneClass","containsSplitter","isHidden","fixedSize","scrollablePaneClass","computedSize","toggleOverlay","SplitterService","layoutChange","containerSize","tryToggle","notCollapsed","allHaveFixedSize","toggleContentOverlay","dragState","splitbarIndex","initialSize","paneState","splitterSize","splitBarIndex","betweenResizablePanes","nearCollapsedPane","isStatic","nearCollapsiblePane","allPanesWithSize","hasResizedPane","classFromObject","SplitterBarComponent","collapseAny","expandLast","toggleNext","tryToggleNearest","togglePrevious","previousArrowClass","nextPane","isCollapsible","nextArrowClass","prevPane","SplitterComponent","splitterService","enclosingPane","horizontalHostClasses","verticalHostClasses","splitbars","paneChangesSubscription","TabContentDirective","TabTitleDirective","TabStripTabComponent","_tabContent","tabContent","tabTitle","_tabTitleDirective","TabCloseEvent","PreventableEvent$1","mouseScrollEnabled","scrollableSettings","mouseScroll","getActiveTab","tabs","focusedTab","selectedTab","getTabByIndex","_tab","isTablistHorizontal","tabPosition","TabStripService","targetId","isTabElement","shouldHandleKey","onDelete","onTabSelect","selectArgs","tabSelect","focusTabHeader","selectTab","resetTabSelection","scrollToSelectedTab","firstNavigatableIndex","computeNextIndex","activateTab","activeTabIndex","tabStripClosable","closable","isTabClosable","tabClose","tabHeaderContainers","_tabHeader","getTabHeaderByIndex","prevNavigatableIndex","nextNavigatableIndex","lastNavigatableIndex","DIRECTION_CLASSES","ScrollService","scrollButtonActiveStateChange","tablistElement","tablist","tabstripSize","wrapperHeight","tablistOverflowSize","overflowSize","tabsOverflow","scrollButtonsSize","hasScrollButtons","prevScrollButton","hostBoundingClientRect","prevSize","nextRect","nextScrollButton","toggleScrollButtonsState","currentPrevButtonActive","currentNextButtonActive","calculatedPrevButtonActive","calculatedNextButtonActive","getScrollOffset","isFirstTabActive","isLastTabActive","activeTabRect","tablistRect","activeTabStart","activeTabEnd","tablistStart","tablistEnd","tabEndIsInVisibleRange","tabStartIsInVisibleRange","onMouseScroll","calculateListPosition","mouseScrollSpeed","scrollTabs","buttonScrollSpeed","behavior","scrollSpeed","adjustedMaxScroll","restoreScrollPosition","normalizeScrollableSettings","scrollButtons","prevButtonIcon","nextButtonIcon","TabScrollEvent","TabStripScrollableButtonComponent","btnClasses","tabScroll","scrollEvent","emitScrollEvent","prevClass","nextClass","scrollButtonIconClass","defaultPrevIcon","defaultNextIcon","TabComponent","activeClass","tabClosable","closeButtonClasses","closeIcon","tabStripCloseIcon","closeTab","closeArgs","TabStripMessages","LocalizedTabStripMessagesDirective","TabStripComponent","tabstripService","scrollService","keepTabContent","_scrollableSettings","subscriptionsArePresent","activeButtonSettings","_height","toggleScrollButtons","attachWheelHandler","tabsAtTop","tabsAtRight","tabsAtBottom","tabsAtLeft","tabStripScrollable","tabsAtBottomChanged","tabsAlignmentStyles","justify","tabAlignment","tabListWidth","tabListHeight","tabStripHasScrollButtons","itemsWrapperClass","onTabClick","onScrollButtonClick","resetTabFocus","scrollButtonsSetting","scrollButtonsArePresent","shouldShowButtons","wheelEvent","_c15","TabStripCustomMessagesComponent","DrawerTemplateDirective","DrawerItemTemplateDirective","DrawerHeaderTemplateDirective","DrawerFooterTemplateDirective","defaultIsItemExpanded","DrawerService","originalItems","idxCounter","isItemExpanded","resetViewData","rootItems","populateViewData","viewData","loadChildren","selectedIdx","drawer","autoCollapse","minimized","expandAnimation","miniWidth","mini","miniExpandPush","flexBasis","miniExpandOverlay","expandRTLOverlay","expandOverlay","translateDir","expandPush","collapseAnimation","miniCollapsePush","miniCollapseOverlay","collapseRTLOverlay","collapseOverlay","collapsePush","DRAWER_ITEM_INDEX","nestedLink","DrawerListSelectEvent","DrawerItemComponent","DrawerListComponent","drawerService","identifyItem","viewItemIdx","getDrawerItemIndex","DEFAULT_ANIMATION","DrawerComponent","expandedChange","startPositionClass","endPositionClass","overlayTransofrmStyles","flexStyles","drawerWidth","setExpanded","onAnimationEnd","currentExpanded","DrawerContainerComponent","overlayClass","miniClass","pushClass","isExpandedClass","closeDrawer","DrawerContentComponent","StepperStepTemplateDirective","StepperLabelTemplateDirective","StepperIndicatorTemplateDirective","handlersRTL","StepperActivateEvent$1","StepperService","triggerValidation","focusedStepChange","onActivate","currentIdx","currentStepChange","validateSteps","focusedStep","focusPrevStep","focusNextStep","isStepDisabled","isPrevOrNextStep","focusedIdx","STEPPER_STEP_INDEX","StepperStepComponent","isStepValid","shouldCheckValidity","onFocusedStepChange","handleValidityChecks","errorStepClass","successStepClass","stepLink","tabIndexAttr","indicatorIconClasses","validationIconClasses","showIndicatorIcon","showLabelIcon","showLabelText","indicatorText","updateStepValidity","showIndicator","optionalText","transitionDuration","_shouldCheckValidity","StepperListComponent","listKeydown","listClick","maxStepWidth","maxStepDimension","maxStepHeight","stepIdx","getStepIndex","StepperMessages","LocalizedStepperMessagesDirective","StepperComponent","stepperService","displayStyle","linearClass","applyHostStyling","resetHostStyling","stepFramesStyle","stepFramesValue","progressAnimation","stepsListStyling","progressBarStyling","onListKeydown","onListClick","StepperCustomMessagesComponent","AvatarComponent","borderClass","mapShapeToRounded","handleFillModeAndThemeColorClasses","avatarWidth","avatarHeight","verifyProperties","customAvatar","imageSrc","initials","cl","CardComponent","widthStyle","CardHeaderComponent","CardBodyComponent","CardFooterComponent","CardActionsComponent","centerClass","CardSeparatorDirective","CardTitleDirective","CardSubtitleDirective","CardMediaDirective","ExpansionPanelTitleDirective","ExpansionPanelActionEvent","CONTENT_HIDDEN_CLASS","ExpansionPanelComponent","subtitle","removeContentHiddenClass","addContentHiddenClass","expandedClass","focusClass","onHeaderAction","onHeaderClick","emitExpandCollapseEvent","indicatorClasses","collapseIcon","expandIcon","propsChanged","initialProps","newProps","setElementStyles","calculateCellFromPosition","tileLayoutElement","cellSize","tileLayoutRect","totalRows","distanceFromTop","distanceFromLeft","distanceFromRight","distanceToCellWidthRatio","cappedColumnPosition","distanceToCellHeightRatio","cappedRowPosition","RTL_RESIZE_DIRECTIONS","RESIZE_HANDLE_DIMENSIONS","ew","overlapX","ns","overlapY","nwse","nesw","TileLayoutReorderEvent","newCol","oldCol","newRow","oldRow","TileLayoutResizeEvent","newRowSpan","oldRowSpan","newColSpan","oldColSpan","TileLayoutDraggingService","lastDragCursorOffset","colStart","currentColStart","currentRowStart","itemWrapper","draggedItemWrapper","targetOrder","resizing","closestTile","tileLayoutSettings","closestHeader","reordering","focusableTarget","tileRect","targetSize","hintElement","headerEl","startingPoint","currentResizingColSpan","currentResizingRowSpan","reorderItems","resizeItem","initialOrder","initialCol","initialRow","targetCol","targetRow","reorderEvent","initialRowSpan","initialColSpan","targetColSpan","targetRowSpan","isRowItemPresent","targetSpan","resizeEvent","elementsFromPoint","tileOrder","autoFlow","directionX","directionY","horizontalGap","verticalGap","targetStartCol","getTargetCol","targetStartRow","getTargetRow","hintBefore","hintAfter","currentWidth","currentHeight","hintRect","hintWidth","hintHeight","horizontalDragDirection","verticalDragDirection","startCol","resizeHorizontally","leftBoundary","resizedColSpan","expandingCondition","shrinkingCondition","gridColumnEnd","gridRowEnd","calculateHintHeight","resizeVertically","grabHandle","itemRect","startingCell","targetEndCell","TileLayoutItemHeaderComponent","TileLayoutResizeHandleDirective","sizeHandle","setHorizontalPosition","resizeDirection","setBottom","handleHeight","TileLayoutItemComponent","draggingService","itemClass","colEnd","reorderableHeader","toggleCursorClass","isReorderable","autoFlowClasses","TileLayoutComponent","_gap","gapStyle","applyColStyling","applyRowStyling","initializeDraggable","draggingServiceConfig","applyAutoFlow","setItemsOrder","gridTemplateColumnsStyle","gridAutoRowsStyle","classToRemove","classToAdd","TileLayoutItemBodyComponent","AvatarModule","CardModule","DrawerModule","ExpansionPanelModule","PanelBarModule","SplitterModule","StepperModule","TabStripModule","TileLayoutModule","VERTICAL_SUFFIX","stretch","JUSTIFY_PREFIX","ALIGN_PREFIX","StackLayoutComponent","handleAlignClasses","setGap","justifyClass","parsedGap","StackLayoutModule","GridLayoutComponent","handleGridTemplateStyling","normalizeGap","generateGapStyle","validateGridLayoutRowsCols","gridTemplateStyle","gridStyle","styling","generateGridStyle","GridLayoutItemComponent","setItemStyle","gridAreaStyle","GridLayoutModule","LayoutModule","ListBoxSelectionService","allTools","sizeClassMap","toolbarClasses","fieldAccessor","defaultItemDisabled","ItemSelectableDirective","ListBoxComponent","listboxClassName","actionClick","selectedTools","setToolbarClass","tools","tool","listClasses","performAction","actionName","selectItem","listbox","actionClickSub","selectedBoxSub","selectedBox","moveVertically","transferItem","connectedWith","transferAll","topReached","bottomReached","ListBoxModule","_r26","pagerClass_r23","LISTVIEW_ITEM_SELECTOR","isListViewItem","getListItemIndex","getClosestListItemIndex","closestListViewItem","totalItemsCount","navigateToPrevious","navigateToNext","handleFocusIn","setActiveIndex","handleFocusOut","fitIntoRange","previousIndex","lastAvailableIndex","ListViewNavigableItemDirective","updateNavigationState","updateFocusedState","focusedCssClass","LoaderTemplateDirective","isNewItem","editItem","editGroup","DEFAULT_PAGER_SETTINGS","pageSizeValues","ListViewComponent","containerRole","listItemRole","removeNavigationListeners","addNavigationListeners","_pageable","pagerSettings","containerTabindex","totalRenderedItems","listViewItems","closeItem","handlePageChange","scrollToContainerTop","handleContentScroll","contentContainer","itemPosInSet","removeKeydownListener","removeFocusInListener","removeFocusOutListener","listView","updateListViewData","handlePageSizeChange","newPageSize","ListViewModule","PARENT_REGEX","itemIndexComparer","siblingIndex","ItemsService","childId","addList","removeList","containsList","otherSiblings","areSiblings","item1","item2","canPerformAction","MenuStateEvent","ActionsService","requiresZone","hasContentTemplates","closeChildren","closeToRoot","closeOthers","closeItems","closeAll","hasPending","toExecute","executeActions","NO_SPACE_REGEX","focusLeave","updateActive","toggleActive","DEFAULT_ACTIVE","focusFirst","focusLast","focusChild","HoverService","_openOnOver","openOnOver","cancelActions","hoveredIdx","scheduleActions","disableOpenOnOver","scheduleDisableOpenOnOver","closeCurrent","removeScheduled","actionIdx","DEFAULT_ID","closestList","inMenu","itemsService","ItemLinkTemplateDirective","ItemContentTemplateDirective","MenuItemComponent","itemTemplate","linkTemplate","itemLinkTemplate","itemContentTemplate","MenuBase","openOnClick","hoverDelay","ContextMenuService","emitMenuEvent","leaveMenu","POPUP_ALIGN","POPUP_ALIGN_RTL","VERTICAL_COLLISION","HORIZONTAL_COLLISION","POPUP_SETTINGS_RTL","POPUP_SETTINGS","hierarchyIndex","overSubscription","onLeave","nodeItem","leaveSubscription","leavesMenu","navigating","ItemComponent","activeId","hasLink","ownerIndex","MenuComponent","contextKeyDownSubscription","contextKeyDown","ariaOrientation","contextMenuClass","attachCloseClick","closeClickSubscription","LinkDirective","ExpandArrowDirective","arrowDown","arrowRight","arrowLeft","ITEM_FIELDS","BindingDirectiveBase","menu","inputName","mapItems","_match","menuItem","createItem","getChildren","FlatBindingDirective","MenuModule","ContextMenuPopupEvent","ContextMenuTemplateDirective","ContextMenuItemsService","ContextMenuTargetService","targets","ContextMenuTargetContainerDirective","targetService","ContextMenuTargetDirective","CONTEXT_MENU","DEFAULT_ANCHOR_ALIGN","DEFAULT_POPUP_ALIGN","DEFAULT_COLLISION","ContextMenuComponent","showOn","alignToAnchor","popupKeyDownHandler","removePopup","showTarget","bindShowHandler","closeBlurSubscription","unbindShowHandler","closeAndFocus","showSubscription","showContextMenu","targetFilter","contextSelector","findInContainer","directiveTarget","popupAction","currentTargetElement","popupAnimate","defaultContentTemplate","activeTarget","unbindKeyDown","unbindContextmenu","ContextMenuModule","MenusModule","AppBarComponent","stickyClass","staticClass","lightClass","darkClass","inheritClass","AppBarSectionComponent","AppBarSpacerComponent","AppBarModule","BreadCrumbItemTemplateDirective","BREADCRUMB_ITEM_INDEX","BreadCrumbItemComponent","isRootItem","onImageLoad","BreadCrumbSeparatorDirective","defaultClasses","hasDefaultIcon","BreadCrumbListComponent","collapseMode","isRootItemContainer","click$","enterKey$","domEventsSubscription","getCollapsed","itemComponent","toggleFirst","itemComponents","ic","collapseFirst","expandFirst","BreadCrumbComponent","_collapseMode","updateItems$","itemsData$","firstItem$","wrapMode","getDir","attachResizeHandler","autoCollapseCandidates","listComponent","renderedItems","componentWidth","itemsContainerWidth","itemsContainers","nextExpandWidth","shouldResize","resizeSensor","BreadCrumbModule","BottomNavigationItemComponent","horizontalItemClass","verticalItemClass","itemIcon","BottomNavigationItemTemplateDirective","BottomNavigationSelectEvent","BOTTOMNAVIGATION_ITEM_INDEX","BottomNavigationComponent","_fill","_itemFlow","_positionMode","_nativeHostElement","itemFlow","applyClasses","itemIdx","getBottomNavigationItemIndex","BottomNavigationModule","NavigationModule","NotificationComponent","defaultHideAfter","containerClass","notificationClasses","typeClass","hideTimeout","setHideTimeout","warning","typeIconClass","customComponent","emitClose","hideAfter","onclose","generatedAnimation","slideAnimation","fadeAnimation","slideCloseAnimation","fadeCloseAnimation","NotificationContainerComponent","notifications","notification","addNotification","notificationRef","applySettings","customFactory","applyAbsolutePosition","applyPosition","applyContainerWrap","afterHide","templateString","appendToContainer","elementHalfWidth","positionStyles","setContainerPosition","offsetMargin","positionLayout","NOTIFICATION_CONTAINER","NotificationService","notificationContainers","findGroupContainer","currentId","notificationContainer","appRef","attachView","hostView","hostViewElement","groupContainer","applicationRef","ApplicationRef","appRoot","components","NotificationModule","PageSizeChangeEvent","dropdownlist","pageChooserLabel","i3$2","DEFAULT_PAGE_SIZE_VALUES","pagerClass","widgetRole","_pageSizeValues","onPageSizeChange","i18n_7","i18n_9","i18n_23","eitherRect","OVERFLOW_REGEXP","overflowStyle","overflowElementStyle","overflowComputedStyle","FRAME_DURATION","scaleRect","SCALE","DOMService","addOffset","addition","addScroll","boundingOffset","getFontStyles","computedStyles","hasOffsetParent","offsetAtPoint","currentLocation","currentOffset","removeScroll","restrictToView","scrollableParents","parentElements","stackingElementOffset","relativeContextElement","getRelativeContextElement","stackingElementScroll","useRelativePosition","siblingContainer","zIndexStyle","isZoomed","AlignService","_dom","alignElement","elementAlign","relativeRect","absoluteRect","elementRect","scrollPos","elementScrollPosition","stackScale","stackScroll","stackOffset","stackingOffset","removeStackingOffset","PositionService","positionElement","collisions","flipped","isUnsubscribed","ScrollableService","forElement","elemRect","DOWN","animationTypes","AnimationService","animationBuilder","statesFn","playStates","stopPlayer","PopupComponent","_alignService","domService","_positionService","_resizeService","_scrollableService","animationService","_renderer","copyAnchorStyles","anchorViewportLeave","initialCheck","updateFixedClass","reposition","animationSubscriptions","onAnimationStart","setZIndex","copyFontStyles","unsubscribeReposition","repositionSubscription","_currentOffset","setContainerStyle","newOffset","oldLeft","oldTop","isDifferentOffset","alignedOffset","isInViewPort","hasLeaveObservers","rootViewContainer","rootComponents","rootViewContainerNode","getComponentRootNode","popupComponentRef","appendPopup","popupInstance","projectComponentInputs","popupPositionChange","getComponentFactory","button_r6","RefreshService","onRefresh","findFocusableSibling","prevSibling","makePeeker","getIndexOfFocused","prevKeyCode","nextKeyCode","be","seekFocusedIndex","seeker","areEqual","getNextKey","getPrevKey","getValueForLocation","displayMode","renderedTool","renderedTools","isPopupFocused","isOverflowButtonFocused","setRenderedTools","rts","moveFocusToToolBar","focusOverflowButton","moveFocusToPopup","blurOverflowButton","focusNext","nextRT","getFocusableTools","isOverflowButtonVisible","focusPrev","lastFocusableRT","prevRT","resetNavigation","firstTool","overFlowButton","overflowButton","rt","focusableRTs","lastFocusedRT","toolbarDisplay","overflowDisplay","RendererService","findNextFocusableSibling","findPrevFocusableSibling","ToolBarRendererComponent","rendererService","refreshService","rendererClick","refreshSubscription","isDisplayed","ToolbarMessages","LocalizedToolbarMessagesDirective","getInitialPopupSettings","isRtl","_cdr","cancelRenderedToolsSubscription$","toolbarKeydownListener","moreToolsTitle","onRendererClick","showPopup","setPopupContentDimensions","onPopupOpen","onPopupClose","overflowAnchorWidth","childrenWidth","displayAnchor","overflowKeydownListener","overflowRenderedTools","cachedOverflowAnchorWidth","cachedGap","computedGap","visibleTools","overflowTools","hideLastVisibleTool","showFirstHiddenTool","renderedElement","popupContentContainer","ToolBarButtonComponent","overflowOptions","overflowButtonElement","toolbarButtonElement","ToolBarButtonGroupComponent","buttonComponents","buttonElements","getButtonGroup","selectedChangeHandler","nextKey","prevKey","peekAtIndex","isUnmodified","overflowButtonGroup","toolbarButtonGroup","ToolBarButtonListComponent","_c12","ToolBarDropDownButtonComponent","overflowButtons","overflowDropDownButtonButtonList","onButtonListClick","ob","toolbarDropDownButton","_c13","ToolBarSplitButtonComponent","overflowSplitButton","overflowSplitButtonButtonList","onMainButtonClick","toolbarSplitButton","ToolBarSeparatorComponent","ToolbarCustomMessagesComponent","FileState","Failed","Initial","Selected","Uploaded","Uploading","Paused","FileMap","_files","validationErrors","allFiles","httpSubscription","setFilesState","setFilesStateByUid","transformed","filesFlat","filesToUpload","notUploaded","currentFiles","currentFilesValid","firstFileToUpload","getFilesWithState","hasFileWithState","fileStates","CancelEvent","ClearEvent","ErrorEvent","operation","PauseEvent","RemoveEvent","ResumeEvent","SuccessEvent","UploadEvent","UploadProgressEvent","percentComplete","fileGroupMap","audio","video","presentation","programming","discImage","stripPath","slashIndex","getFileExtension","validateInitialFileInfo","getInitialFileInfo","fakeFile","extension","getFileInfo","rawFile","fileSize","getAllFileInfo","rawFiles","allFileInfo","fileHasValidationErrors","filesHaveValidationErrors","assignGuidToFiles","isUnique","IGNORE_TARGET_CLASSES","UPLOAD_CLASSES","ChunkMap","totalChunks","initialChunkInfo","retries","UploadService","http","cancelEvent","clearEvent","completeEvent","errorEvent","pauseEvent","removeEvent","resumeEvent","selectEvent","successEvent","uploadEvent","uploadProgressEvent","changeEvent","autoUpload","concurrent","removeField","removeHeaders","HttpHeaders","removeMethod","removeUrl","saveField","saveHeaders","saveMethod","saveUrl","withCredentials","autoRetryAfter","maxAutoRetries","resumable","chunkMap","fileList","setChunkSettings","addFiles","selectEventArgs","uploadFiles","flatFiles","addInitialFiles","initialFiles","addInitialFileSelectFiles","File","fileInfo","convertFileToFileInfo","resumeFile","fileToResume","_uploadFiles","pauseFile","pausedFile","removeFiles","removedFiles","cloneRequestHeaders","performRemove","cancelFiles","canceledFiles","cancelEventArgs","checkAllComplete","clearFiles","clearEventArgs","retryFiles","filesToRetry","uploadEventArgs","httpSubcription","performUpload","fileNames","formData","populateRemoveFormData","populateRequestOptions","removeRequest","HttpRequest","onSuccess","populateUploadFormData","uploadRequest","HttpEventType","HttpResponse","onProgress","successResponse","onChunkProgress","isChunkUploadComplete","updateChunkInfo","removeChunkInfo","successArgs","errorResponse","maxRetries","chunkInfo","errorArgs","progressArgs","areAllSelectedFilesHandled","shouldUploadNextFile","cloned","reportProgress","clientData","FormData","populateClientFormData","getNextChunk","getChunkMetadata","getChunkInfo","newPosition","chunkMetadata","chunkIndex","contentType","fileUid","uploadService","onActionButtonAction","onActionButtonFocus","onFileAction","onFileFocus","onWrapperFocus","onSelectButtonFocus","actionButtonsVisible","_focusedIndex","computeKeys","handleDown","handleLeft","handleRight","focusSelectButton","lastFileIndex","fileCount","FileTemplateDirective","DropZoneService","addComponent","zoneId","getComponents","FileInfoTemplateDirective","FileListItemDirective","fileClass","uidAttribute","kFileError","kFileInvalid","kFileProgress","kFileSuccess","kStateFocused","FileListItemBase","progressComplete","subscribeUploadProgress","uploadProgressHandler","uploadProgressSubscription","getFileValidationMessage","validationMessage","getTotalFilesSizeMessage","FileListItemActionButtonComponent","actionFocused","retryFocused","pauseResumeFocused","onRetryClick","onRemoveCancelClick","onPauseResumeClick","actionButtonTitle","retryButtonTitle","pauseResumeButtonTitle","isUploading","isFailed","isResumable","isActionButtonVisible","FileListSingleItemComponent","fileStatusText","showProgress","fileGroupClass","fileExtension","getFileGroupCssClass","isUploadSuccessful","isUploadFailed","isNotYetUploaded","FileListMultipleItemsComponent","filesHaveErrors","batchStatusText","FileListComponent","onItemFocus","fileListItems","actionSubscription","itemActionHandler","hasDelete","INVALIDMAXFILESIZE","INVALIDMINFILESIZE","INVALIDFILEEXTENSION","validateFileExtension","allowedExtensions","validateFileSize","minFileSize","maxFileSize","validateFiles","restrictionInfo","extensions","ext","parseAllowedExtensions","DropZoneBase","hideIntervalElement","hoverClass","onElementDragEnterListener","lastDragElement","calculateTimeDiff","onElementDragOverListener","prevEvent","hostBindings","DropZoneInternalDirective","initialClassName","hideIntervalDocument","unsubscribeDocumentDragEnter","onDocumentDragEnter","unsubscribeDocumentDragOver","onDocumentDragOver","lastDragDocument","onDropListener","droppedFiles","restrictions","FileSelectDirective","autocomplete","nameAttribute","multipleAttribute","disabledAttribute","onInputChange","selectedFiles","inputFiles","native","FILESELECT_VALUE_ACCESSOR","FileSelectComponent","dropZoneService","showFileList","hostDefaultClasses","_restrictions","subscribeBlur","subscribeFocus","attachEventHandlers","setDefaultSettings","parsedRestrictions","fileSelectButton","wrapperFocusSubscription","selectButtonFocusSubscription","validateInitialFileSelectFile","removeFileByUid","selectButtonTabIndex","onFileSelectButtonFocus","onFileSelectButtonBlur","documentClick","UploadStatusTotalComponent","statusText","UploadActionButtonsComponent","hostDefaultClass","actionButtonsEndClassName","actionButtonsStretchedClassName","actionButtonsStartClassName","actionButtonsCenterClassName","uploadButton","onUploadButtonClick","_c24","_c25","UPLOAD_VALUE_ACCESSOR","UploadComponent","_ngZone","chunkable","upload","uploadProgress","newChunkable","showActionButtons","areVisible","hasFilesToUpload","uploadingFiles","showTotalStatus","pauseFileByUid","resumeFileByUid","removeFilesByUid","retryUploadByUid","cancelUploadByUid","UploadDropZoneDirective","onElementDragEnter","onElementDragOver","componentInstance","UploadDropZoneComponent","FileSelectModule","UploadModule","UploadsModule","desktopBrowserRxs","mobileBrowserRxs","testRx","rxs","cordova","PhoneGap","appMode","protocol","browserInfo","fieldList","setterCache","nextField","arrays","isNotNullOrEmptyString","ifElse","pairwise","isNotEmpty","isNotEmptyArray","runOrEmpty","formatDescriptors","formatter","sanitizeDateLiterals","removeAfterDot","what","removeAfter","directionFormatter","formatSort","formatGroup","formatAggregates","formatDateValue","transformSkip","transformTake","transformGroup","transformSort","transformAggregates","filterFormatter","toCamelCase","convert","translateAggregate","translateAggregates","translateGroup","hasSubgroups","Member","HasSubgroups","Items","Key","localeCompare","compareDesc","descriptorAsFunc","groupCombinator","groupValue","valueToString","__position","aggregatesCombinator","functions","aggregateName","aggregateAccessor","aggregateFunction","calc","NEGATIVE_INFINITY","POSITIVE_INFINITY","aggregatesFuncs","isTransformerResult","__value","reduced","aggregateBy","transformers","expandAggregates","normalizeOperator","equal","equalto","ge","greater","greaterthan","greaterthanequal","isempty","isequalto","isgreaterthan","isgreaterthanorequalto","islessthan","islessthanorequalto","isnotempty","isnotequalto","isnull","le","less","lessthan","lessthanequal","notequal","notequals","notequalto","notsubstringof","operatorMap","normalizeFilters","normalizeDescriptor","operatorsMap","isnotnull","neq","transformFilter","itemProp","typedGetter","convertValue","transformCompositeFilter","combiner","compileFilter","normalizeGroups","groupBy","aggregateResult","filteredData","leftLength","rightLength","cursor1","cursor2","composeSortDescriptors","skipCount","takeCount","filterDescriptor","sortDescriptors","FilterOperator","Contains","DoesNotContain","DoesNotEndWith","DoesNotStartWith","EndsWith","EqualTo","GreaterThan","GreaterThanOrEqual","IsEmpty","IsNotEmpty","IsNotNull","IsNull","LessThan","LessThanOrEqual","NotEqualTo","StartsWith","resolvedColor","resolveColor","formatRegex","processor","channels","normalizeByte","padDigit","percBrightness","Bytes","RGB","HSV","HSL","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","matchNamedColor","colorNames","BaseColor","toDisplay","hue2rgb","alphaFromHex","matchUserAgent","HasObservers","_suspended","_observerField","OptionsStore","_wrap","composite","_clear","closeOrLess","tolerance","accessors","withAccessors","setCenter","xRotation","getCenter","radian","_arcInterval","subIntervalsCount","subIntervalAngle","transformation","nextAngle","_intervalCurvePoints","cp2","extremeAngles","ellipseExtremeAngles","extremeX","extremeY","currentAngleX","bboxStartAngle","currentAngleY","currentPoint","currentPointX","currentPointY","p1Derivative","_derivativeAt","p2Derivative","angleRad","pointRadius","PRECISION","lineIntersection","s1x","s2x","s1y","s2y","nx","ny","calculateAngle","inAngleRange","largeArc","swipe","arcParameters","normalizeArcParameters","parameters","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","uX","uY","vX","vY","acos","angleCosine","signEndAngle","_pointAt","lineIntersectionsCount","minX","maxX","minY","maxY","det","IDENTITY","scaleCopy","toMatrix","doRound","arg0","arg1","MAX_NUM","MIN_NUM","getCornerRadius","expandCopy","rectOuter","rectInner","rect1","rect2","isOutOfEndPoint","calculateCurveAt","toCubicPolynomial","ComplexNumber","real","cNumber","addConstant","negate","multiplyConstant","nthRoot","nthR","isReal","solveCubicEquation","solveQuadraticEquation","squareRoot","b3a","z1","z2","hasRootsInRange","rootField","roots","Segment","withPoints","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","arrayLimits","yLimits","_curveExtremes","x4","_intersectionsTo","intersectionsCount","curveIntersectionsCount","rayIntersection","intersectsRay","_isOnCurveTo","endSegment","rotatedPoints","_isOnLineTo","_isOnPathTo","isOnPath","Transformation","_optionsChange","optionsAccessor","TBase","defineOptionsAccessors","GradientStop","withOptions","StopsArray","ElementsArray","_createStops","_userSpace","definitionId","removeStop","_radius","_fallbackFill","IDENTITY_MATRIX_HASH","__WEBPACK_DEFAULT_EXPORT__","combinedMatrix","currentTransform","matrixHash","_bboxCache","_matrixHash","strokeWidth","newFill","setAccessor","getAccessor","defineAccessors","capitalized","geometryAccessor","defineGeometryAccessors","pointAccessor","definePointAccessors","toLineParamaters","insertPosition","reflectionPoint","third","quadraticToCubicControlPoints","scaledPoint","isRelative","arcTo","previousCommand","lastControlIn","cubicControlPoints","SEGMENT_REGEX","SPLIT_REGEX","pathInstance","parseParameters","ShapeMap","GeometryCircle","parentTransform","elementTransform","elementMatrix","_clippedBBox","transformedPoint","_hasFill","_hasStroke","_splice","howMany","_clearObserver","_setObserver","_reparent","removeAt","elementsBoundingBox","elementsClippedBoundingBox","newParent","GeometryElementsArray","_addArcSegments","pathWidth","boundingBox","segmentBox","applyTransform","elementBoundingBox","LRUCache","_length","_head","_tail","newer","older","TextMetrics","baselineMarkerSize","defaultMeasureBox","_cache","styleKey","baselineMarker","_baselineMarker","textStr","REPLACE_REGEX","roman","defId","KEY_STR","utfInput","encodeUTF8","hi","encodeUnit","codeUnit","trail","bi","postToProxy","canDownload","saveAsDataURI","msSaveBlob","saveAsBlob","dataURI","fileSaver","download","initMouseEvent","_0x3ffcd8","_0x3f5fc6","_0x3f5f","_0x228463","_0x4fe1c2","_0x4fe1","rlqmyH","tDWcmv","_0x54b76b","_0x446133","_0x31bd4d","_0x1e97d4","_0x3ffa72","_0x18c0a1","_0x34f60f","_0x2f90c2","_0x161b80","_0x286684","_0x34c59d","_0x3b51a6","GoSChA","_0x2bf482","_0x288448","_0x12fbad","_0x1dbcb5","_0x36c009","_0x41f400","_0x3fe82f","_0x184f0c","KendoLicensing","_0x50a0bf","matchProduct","_0x2fe56c","_0x1db63e","_0x48173a","_0x1dd0f6","_0xd163b7","_0x23878c","_0x1d8f83","packageName","docsUrl","expiryDate","_0x20e732","_0x5d53b4","formatError","_0x5996d0","_0x369fe1","_0x3f9e87","_0x9d6621","align_point","es2015_align","anchorHorizontal","anchorVertical","elementHorizontal","elementVertical","horizontalMargin","verticalMargin","es2015_document","cachedWidth","windowViewport","es2015_offset","rectOfHiddenElement","until","docElement","offset_parent","offsetParentElement","parentScrollPosition","position_with_scroll","offsetRect","useRelative","parentStyles","offsetParentScrollPosition","positionScale","viewPortSize","anchorSize","anchorAlignPoint","elementAlignPoint","marginToAdd","alignPoint","isBeforeAnchor","restrict_to_view","elementTop","elementLeft","viewPortHeight","viewPortWidth","isVerticalFit","isHorizontalFit","isVerticalFlip","isHorizontalFlip","flippedVertical","flippedHorizontal","fittedVertical","fittedHorizontal","fitted","sibling_container","siblingElements","elementSource","canUseDOM","currentDocument","exportName","VENDOR_PREFIXES","TEST_ELEMENT","setTimeoutContext","bindFn","invokeArrayArg","each","deprecate","deprecationMessage","inherit","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","splitStr","inStr","findByKey","uniqueArray","prefixed","camelProp","_uniqueId","getWindowForElement","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","pointersLen","changedPointersLen","changedPointers","isFinal","session","computeInputData","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","deltaTime","getAngle","getDistance","computeDeltaXY","offsetDelta","prevDelta","prevInput","offsetDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","getScale","getRotation","maxPointers","computeIntervalInputData","lastInterval","recognize","evEl","evTarget","evWin","MOUSE_INPUT_MAP","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","POINTER_INPUT_MAP","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","removePointer","eventTypeNormalized","storeIndex","SINGLE_TOUCH_INPUT_MAP","touchend","touchcancel","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","started","normalizeSingleTouches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","allTouches","targetTouches","changedTargetTouches","TouchMouseInput","primaryTouch","lastTouches","recordTouches","setLastTouch","lts","isSyntheticEvent","inputEvent","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","getTouchActionProps","touchMap","cssSupports","CSS","supports","TouchAction","compute","getTouchAction","cleanTouchActions","hasPanX","hasPanY","preventDefaults","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","Recognizer","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","attrTest","optionPointers","isRecognized","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","createInputInstance","toggleCssProps","stopped","curRecognizer","existing","triggerDomEvent","gestureEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Swipe","Rotate","define","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_ARY_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","module","moduleExports","freeProcess","nodeUtil","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","nodeIsTypedArray","isTypedArray","arrayAggregator","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","propertyIsEnumerable","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","enumerable","writable","baseAt","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","getSymbolsIn","baseAssignIn","keysIn","copySymbols","getSymbols","initCloneByTag","cloneArrayBuffer","cloneDataView","dataView","byteOffset","cloneTypedArray","cloneRegExp","cloneSymbol","stacked","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","valuesIndex","templateSettings","evaluate","interpolate","variable","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","setCacheAdd","setCacheHas","stackClear","stackDelete","stackGet","stackHas","stackSet","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","getRawTag","isOwn","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","othLength","othIndex","caches","baseInvoke","baseIsArguments","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","isPartial","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","isMasked","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","mergeFunc","safeGet","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseNth","baseOrderBy","iteratees","orders","getIteratee","baseSortBy","compareMultiple","objCriteria","othCriteria","ordersLength","compareAscending","basePickBy","baseSet","basePullAll","basePullAt","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","isUncurried","composeArgsRight","holdersIndex","rightIndex","createAggregator","createAssigner","assigner","guard","isIterateeCall","iterable","createCaseFirst","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","chars","charsLength","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","setWrapToString","createRound","toInteger","createToPairs","setToPairs","baseToPairs","createWrap","mergeData","srcBitmask","newBitmask","isCombo","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrLength","arrStacked","arrValue","otherFunc","isKeyable","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","insertWrapDetails","details","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoizeCapped","quote","subString","differenceBy","differenceWith","findLastIndex","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","unzipWith","xor","xorBy","xorWith","zipWith","interceptor","wrapperAt","countBy","findLast","forEachRight","invokeMap","keyBy","sortBy","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","timeWaiting","debounced","isInvoking","memoized","Cache","overArgs","funcsLength","partial","partialRight","rearg","baseIsArrayBuffer","baseIsDate","isError","isInteger","baseIsMap","baseIsRegExp","baseIsSet","baseIsTypedArray","iteratorToArray","toLength","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invertBy","invoke","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flowRight","methodOf","mixin","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","multiplier","multiplicand","minuend","subtrahend","castArray","compact","cond","conforms","baseConforms","curry","curryRight","dropRight","dropRightWhile","dropWhile","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functionsIn","mapKeys","mapValues","matchesProperty","nthArg","omitBy","once","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","spread","takeRight","takeRightWhile","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","baseInRange","isElement","isEqualWith","isMatchWith","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","strLength","padEnd","padStart","radix","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","esTemplateValue","evaluateValue","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","unescape","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","lazyClone","lazyReverse","lazyValue","isRight","getView","iterLength","iterIndex","wrapperChain","commit","wrapperCommit","wrapperNext","wrapperPlant","wrapperReverse","wrapperValue","wrapperToIterator","moment","defineLocale","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","meridiem","isLower","longDateFormat","LT","LTS","LL","LLL","LLLL","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","MM","yy","dayOfMonthOrdinalParse","ordinal","dow","doy","pluralForm","plurals","pluralize","withoutSuffix","isFuture","weekdaysParseExact","postformat","symbolMap","preparse","numberMap","plural","forms","relativeTimeWithPlural","isFormat","period","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","specialMutationForYears","lastNumber","softMutation","mutationTable","monthsParse","monthsRegex","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","weekdaysParse","longMonthsParse","shortMonthsParse","lll","llll","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","since","abbr","eraYearOrdinalRegex","eraYearOrdinalParse","$2","isUpper","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","translateSeconds","translateSingular","special","relativeTimeWithSingular","relativeSeconds","translator","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","hookCallback","hooks","setHookCallback","hasOwnProp","isObjectEmpty","arrLen","createUTC","strict","createLocalOrUTC","utc","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","_longDateFormat","formatUpper","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","addUnitAlias","shorthand","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","getParseRegexForToken","unescapeFormat","regexEscape","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","MINUTE","SECOND","MILLISECOND","WEEK","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createUTCDate","setUTCFullYear","firstWeekOffset","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","baseConfig","locales","localeFamilies","commonPrefix","minl","normalizeLocale","chooseLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","setUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","curWeek","GG","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","isUTC","prototypeMin","prototypeMax","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","isoWeek","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","isAdding","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","toISOString","keepOffset","inspect","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","isValid$2","parsingFlags","invalidAt","creationData","localeEras","_eras","localeErasParse","eraName","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","monthsFromDays","monthsToDays","daysToMonths","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME_SECONDS","TIME_MS","_subscribe","hasError","thrownError","_throwIfClosed","observerOrNext","isSubscriber","Subscriber","isObserver","isSubscription","SafeSubscriber","errorContext","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","operations","pipeFromArray","toPromise","_bufferSize","_windowTime","_timestampProvider","dateTimestampProvider","_buffer","_infiniteTimeWindow","isStopped","_trimBuffer","_innerSubscribe","_checkFinalizedStatuses","adjustedBufferSize","ObjectUnsubscribedError","createErrorClass","currentObservers","AnonymousSubject","observed","EMPTY_SUBSCRIPTION","COMPLETE_NOTIFICATION","createNotification","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","_next","errorNotification","_error","_complete","_bind","ConsumerObserver","partialObserver","handleUnhandledError","captureError","reportUnhandledError","onStoppedNotification","timeoutProvider","UnsubscriptionError","initialTeardown","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","teardown","_hasParent","_addParent","_removeParent","onUnhandledError","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","popScheduler","popResultSelector","argsArgArrayOrObject","combineLatestInit","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","createObject","mapOneOrManyArgs","executeSchedule","concatAll","mergeAll","observeOn","subscribeOn","scheduleAsyncIterable","asyncIterator","isInteropObservable","scheduleObservable","innerFrom","scheduleArray","isPromise","schedulePromise","isAsyncIterable","isIterable","scheduleIterable","Symbol_iterator","return","isReadableStreamLike","scheduleReadableStreamLike","readableStreamLikeToAsyncGenerator","createInvalidObservableTypeError","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","isEventTarget","isNodeStyleEventEmitter","addListener","toCommonHandlerRegistry","isJQueryStyleEventEmitter","subTarget","fromInteropObservable","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","fromReadableStreamLike","readableStream","asyncIterable","asyncIterable_1","asyncIterable_1_1","e_1","__awaiter","__asyncValues","e_1_1","catch","asyncScheduler","timer","popNumber","throwError","errorOrErrorFactory","errorFactory","dueTime","intervalOrScheduler","intervalDuration","isScheduler","due","isValidDate","argsOrArgArray","completed","sourceIndex","onNext","onFinalize","OperatorSubscriber","shouldUnsubscribe","audit","durationSelector","lastValue","durationSubscriber","isComplete","endDuration","cleanupDuration","handledResult","innerSub","syncUnsub","project","activeTask","lastTime","emitWhenIdle","targetTime","delayWhen","delayDurationSelector","subscriptionDelay","ignoreElements","mapTo","mergeInternals","onBeforeNext","innerSubScheduler","additionalFinalizer","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","scanInternals","seed","hasSeed","emitOnNext","emitBeforeComplete","hasState","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","connection","resetConnection","refCount","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","handleReset","onSubscriber","innerSubscriber","innerIndex","outerIndex","notifier","tapObserver","isUnsub","defaultThrottleConfig","duration$","sendValue","endThrottling","cleanupThrottling","startThrottle","intervalProvider","_id","_scheduler","_execute","_delay","errored","Scheduler","schedulerActionCtor","SchedulerAction","getSymbolIterator","getKeys","isPOJO","createImpl","ctorFunc","isRoot","errorThrown","parentSubscription","scheduleSubscription","__asyncGenerator","getReader","__await","releaseLock","hasLift","liftedSource","callOrApply","adopt","verb","settle","AnimationBuilder","timings","stateChangeExpr","scheduleMicroTask","NoopAnimationPlayer","_onDoneFns","_onStartFns","_onDestroyFns","_originalOnDoneFns","_originalOnStartFns","parentPlayer","totalTime","_onFinish","onStart","onDestroy","hasStarted","_onStart","triggerMicrotask","restart","getPosition","triggerCallback","phaseName","methods","AnimationGroupPlayer","_players","players","doneCount","destroyCount","startCount","_onDestroy","timeAtPosition","longestPlayer","longestSoFar","beforeDestroy","ɵPRE_STYLE","_DOM","getDOM","setRootDomAdapter","adapter","DomAdapter","PlatformLocation","historyGo","relativePosition","useBrowserPlatformLocation","ɵɵinject","BrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_history","getBaseHrefFromDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","newPath","supportsState","replaceState","go","joinWithSlash","slashes","stripTrailingSlash","pathEndIdx","droppedSlashIdx","normalizeQueryParams","createBrowserPlatformLocation","LocationStrategy","PathLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","internal","includeHash","queryParams","externalUrl","HashLocationStrategy","locationStrategy","_subject","_urlChangeListeners","_urlChangeSubscription","_locationStrategy","browserBaseHref","_stripIndexHtml","isCurrentPathEqualTo","_stripBaseHref","_notifyUrlChangeListeners","onUrlChange","fnIndex","onThrow","onReturn","createLocation","CURRENCIES_EN","SLE","NumberFormatStyle","Plural","FormStyle","TranslationWidth","FormatWidth","NumberSymbol","WeekDay","getLocaleDateFormat","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","getLocaleTimeFormat","getLocaleDateTimeFormat","dateTimeFormatData","getLocaleNumberSymbol","CurrencyDecimal","Decimal","CurrencyGroup","getLocaleNumberFormat","Percent","Currency","Scientific","Zero","One","Two","Few","Many","Other","Format","Standalone","Narrow","Abbreviated","Wide","Short","Medium","Long","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","getLocalePluralCase","ɵgetLocalePluralCase","checkFullData","extractTime","getCurrencySymbol","getLocaleCurrencies","symbolNarrow","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","DateType","TranslationType","timezone","parsedNb","isoStringToDate","tzHour","tzMin","dateSetter","timeSetter","setUTCHours","getNamedFormat","dateTimezoneOffset","timezoneToOffset","convertTimezoneToLocal","timezoneOffset","addDateMinutes","dateFormatter","getDateFormatter","DATE_FORMATS","dateStrGetter","Eras","dateGetter","FullYear","weekNumberingYearGetter","Month","Months","weekGetter","Days","DayPeriods","Hours","Minutes","Seconds","FractionalSeconds","timeZoneGetter","Extended","ShortGMT","getLocaleId","shortTime","shortDate","formatDateTime","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","padNumber","negWrap","neg","strNum","getDatePart","formatFractionalSeconds","localeMinus","extended","getDateTranslation","getLocaleMonthNames","formStyle","getLocaleDayNames","currentHours","currentMinutes","getLocaleExtraDayPeriodRules","getLocaleExtraDayPeriods","getLocaleDayPeriods","amPm","getLocaleEraNames","erasData","getThursdayThisWeek","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","firstThurs","getFirstThursdayOfYear","THURSDAY","fallback","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","formatNumberToLocaleString","groupSymbol","decimalSymbol","digitsInfo","formattedText","isZero","parsedNumber","integerLen","zeros","numStr","exponent","MAX_DIGITS","toPercent","fractionLen","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","fractionSize","roundAt","digit","dropTrailingZeros","minLen","carry","lgSize","gSize","negPre","negSuf","posPre","posSuf","formatCurrency","currencyCode","parseNumberFormat","getNumberOfCurrencyDigits","patternParts","positiveParts","trunkLen","NgLocalization","getPluralCategory","cases","ngLocalization","NgLocaleLocalization","registerLocaleData","extraData","ɵregisterLocaleData","parseCookieValue","cookieStr","encodeURIComponent","cookie","eqIndex","cookieName","cookieValue","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","klass","_removeClasses","_applyClasses","ngClass","ɵisListLikeIterable","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","_toggleClass","forEachChangedItem","forEachRemovedItem","ɵstringify","rawClassVal","NgComponentOutlet","_viewContainerRef","ngComponentOutlet","ngComponentOutletNgModule","ngComponentOutletNgModuleFactory","ngModuleFactory","ngComponentOutletInjector","_moduleRef","createNgModule","getParentInjector","ngModuleRef","projectableNodes","ngComponentOutletContent","NgModuleRef","NgForOfContext","ngForOf","NgForOf","_ngForOf","_ngForOfDirty","ngForTrackBy","_trackByFn","ngForTemplate","viewContainer","adjustedPreviousIndex","applyViewChange","ilen","forEachIdentityChange","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","ngIfThen","assertTemplate","ngIfElse","SwitchView","_templateRef","_created","enforceState","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","useDefault","NgSwitchCase","ngSwitchCase","NgSwitchDefault","NgPlural","_localization","_caseViews","ngPlural","_switchValue","addCase","switchView","_clearViews","_activateView","_activeView","NgPluralCase","isANumber","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","RendererStyleFlags2","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","invalidPipeArgumentError","ɵRuntimeError","ngDevMode","_promiseStrategy","PromiseStrategy","createSubscription","updateLatestValue","_subscribableStrategy","SubscribableStrategy","AsyncPipe","_latestValue","_subscription","_obj","_strategy","_ref","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","LowerCasePipe","unicodeWordMatch","TitleCasePipe","UpperCasePipe","DATE_PIPE_DEFAULT_TIMEZONE","defaultTimezone","_INTERPOLATION_REGEXP","I18nPluralPipe","pluralMap","I18nSelectPipe","JsonPipe","KeyValuePipe","keyValues","compareFn","defaultComparator","differChanges","compareFnChanged","forEachItem","makeKeyValuePair","keyValueA","keyValueB","aString","bString","DecimalPipe","isValue","strToNumber","PercentPipe","formatPercent","CurrencyPipe","_defaultCurrencyCode","DEFAULT_CURRENCY_CODE","SlicePipe","PLATFORM_BROWSER_ID","Version","ViewportScroller","ɵɵdefineInjectable","providedIn","BrowserViewportScroller","getScrollPosition","supportsScrolling","scrollToPosition","scrollToAnchor","elSelected","findAnchorFromDocument","documentResult","getElementById","getElementsByName","createTreeWalker","createShadowRoot","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","shadowRoot","scrollToElement","setHistoryScrollRestoration","scrollRestoration","supportScrollRestoration","scrollRestorationDescriptor","getScrollRestorationProperty","getOwnPropertyDescriptor","XhrFactory","assertDevMode","checkName","imgDirectiveDetails","rawSrc","includeRawSrc","getUrl","isAbsoluteUrl","normalizeSrc","INTERNAL_PRECONNECT_CHECK_BLOCKLIST","PRECONNECT_CHECK_BLOCKLIST","PreconnectLinkChecker","preconnectLinks","alreadySeen","blocklist","populateBlocklist","origins","deepForEach","extractHostname","assertPreconnect","rewrittenSrc","imgUrl","queryPreconnectLinks","ɵformatRuntimeError","preconnectUrls","links","noopImageLoader","IMAGE_LOADER","createImageLoader","buildUrlFn","exampleUrls","ensurePreconnect","isValidPath","throwInvalidPathError","normalizePath","throwUnexpectedAbsoluteUrlError","createCloudflareUrl","createCloudinaryUrl","createImagekitUrl","createImgixUrl","searchParams","LCPImageObserver","alreadyWarned","PerformanceObserver","initPerformanceObserver","entryList","getEntries","imgSrc","logMissingPriorityWarning","directiveDetails","buffered","registerImage","unregisterImage","VALID_WIDTH_DESCRIPTOR_SRCSET","NgOptimizedImage","imageLoader","imgElement","Injector","lcpObserver","_renderedSrc","_priority","inputToInteger","inputToBoolean","setHostAttributes","setHostAttribute","getLoadingBehavior","getFetchPriority","getRewrittenSrc","rawSrcset","getRewrittenSrcset","imgConfig","widthSrcSet","srcStr","HttpHandler","HttpBackend","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","getAll","lcName","copyFrom","applyUpdate","toDelete","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","HttpParams","updates","cloneFrom","fromString","fromObject","paramParser","rawParams","codec","eqIdx","appendAll","eKey","HttpContext","isBlob","isFormData","fourth","mightHaveBody","urlWithParams","qIdx","sep","serializeBody","isUrlSearchParams","URLSearchParams","detectContentTypeHeader","setParams","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","HttpResponseBase","defaultStatus","defaultStatusText","HttpHeaderResponse","HttpErrorResponse","addBody","HttpClient","events$","res$","jsonp","callbackParam","patch","HttpInterceptorHandler","NoopInterceptor","foreignDocument","nextRequestId","JsonpCallbackContext","JsonpClientBackend","callbackMap","nextCallback","removeListeners","JsonpInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","setRequestHeader","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","getResponseUrl","responseURL","getResponseHeader","responseText","originalBody","sentHeaders","onDownProgress","progressEvent","lengthComputable","partialText","onUpProgress","readyState","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","lastCookieString","lastToken","parseCount","getToken","cookieString","ɵparseCookieValue","PLATFORM_ID","HttpXsrfInterceptor","tokenService","lcUrl","HttpInterceptingHandler","backend","interceptors","HttpClientXsrfModule","HttpClientModule","HttpClientJsonpModule","jsonpCallbackContext","XhrFactory$1","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","__forward_ref__","forwardRefFn","resolveForwardRef","isForwardRef","RuntimeError","formatRuntimeError","renderStringify","stringifyForError","throwProviderNotFoundError","injectorName","assertEqual","actual","assertDefined","comparison","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","isInjectable","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","_injectImplementation","setInjectImplementation","impl","injectRootLimpMode","injectableDef","Optional","noSideEffects","ChangeDetectionStrategy","ChangeDetectorStatus","ViewEncapsulation$1","Host","Self","SkipSelf","OnPush","CheckOnce","Checked","CheckAlways","Detached","Errored","Destroyed","ViewEncapsulation","Emulated","ShadowDom","_global","globalThis","WorkerGlobalScope","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","componentDefCount","ɵɵdefineComponent","componentDefinition","declaredInputs","providersResolver","vars","consts","hostVars","hostAttrs","outputs","exportAs","onPush","changeDetection","directiveDefs","pipeDefs","dependencies","getStandaloneInjector","setInput","schemas","tView","feature","invertObject","extractDirectiveDef","nonNull","getPipeDef$1","ɵɵsetComponentScope","directives","pipes","getComponentDef","getDirectiveDef","ɵɵdefineNgModule","bootstrap","declarations","transitiveCompileScopes","ɵɵsetNgModuleScope","ngModuleDef","getNgModuleDef","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefinePipe","pipeDef","isStandalone","throwNotFound","isLView","isLContainer","isContentQueryHost","tNode","isComponentHost","isDirectiveHost","isComponentDef","isRootView","getFactoryDef","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","setSimpleChangesStore","SIMPLE_CHANGES_STORE","previousChange","ngInherit","profilerCallback","profiler","hookOrListener","MATH_ML_NAMESPACE","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","getComponentLViewByIndex","slotValue","isCreationMode","viewAttachedToChangeDetector","getConstant","resetPreOrderHookFlags","updateTransplantedViewCount","lContainer","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","getBindingsEnabled","ɵɵenableBindings","ɵɵdisableBindings","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","ɵɵresetView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","getCurrentParentTNode","isParent","setCurrentTNode","isCurrentTNodeParent","setCurrentTNodeAsNotParent","getBindingRoot","bindingRootIndex","bindingStartIndex","getBindingIndex","bindingIndex","setBindingIndex","nextBindingIndex","incrementBindingIndex","setInI18nBlock","isInI18nBlock","inI18n","setBindingRootForHostBindings","currentDirectiveIndex","setCurrentDirectiveIndex","getCurrentDirectiveDef","tData","getCurrentQueryIndex","currentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newView","newLFrame","currentLFrame","childLFrame","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","nextContextImpl","walkUpViews","nestingLevel","currentView","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","ɵɵnamespaceMathML","ɵɵnamespaceHTML","namespaceHTMLInternal","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","isInitHook","hook","directive","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","setUpAttributes","attrVal","isAnimationProp","isNameOnlyAttributeMarker","mergeHostAttrs","dst","srcMarker","mergeHostAttribute","key1","key2","markerInsertPosition","dstValue","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","startView","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentData","declarationViewOffset","lViewCursor","getTNodeFromLView","diPublicInInjector","bloomAdd","bloomHash","notFoundValueOrThrow","lookupTokenUsingModuleInjector","moduleInjector","previousInjectImplementation","getOrCreateInjectable","embeddedInjectorValue","lookupTokenUsingEmbeddedInjector","currentLView","nodeInjectorValue","lookupTokenUsingNodeInjector","embeddedViewInjector","embeddedViewInjectorValue","bloomHashBitOrFactory","tokenId","createNodeInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","dirDef","isFactory","throwCyclicDependencyError","depPath","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","ɵɵgetInheritedFactory","ownConstructor","ownFactory","getFactoryOf","objectPrototype","tViewType","ɵɵinjectAttribute","attrNameToInject","injectAttributeImpl","attrsLength","ANNOTATIONS","PARAMETERS","PROP_METADATA","makeDecorator","parentClass","additionalProcessing","typeFn","metaCtor","makeMetadataCtor","DecoratorFactory","annotationInstance","ngMetadataName","annotationCls","makeParamDecorator","ParamDecoratorFactory","ParamDecorator","annotation","unusedKey","makePropDecorator","PropDecoratorFactory","decoratorInstance","PropDecorator","_desc","Query","ContentChildren","isViewQuery","emitDistinctChangesOnly","ContentChild","ViewChildren","ViewChild","FactoryTarget","R3TemplateDependencyKind","getCompilerFacade","globalNg","ng","ɵcompilerFacade","Directive","Component","Injectable","Pipe","NgModule","addToArray","removeFromArray","newArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","previousEnd","keyValueArrayGet","_arrayIndexOfSorted","ES5_DELEGATE_CTOR","ES2015_INHERITED_CLASS","ES2015_INHERITED_CLASS_WITH_CTOR","ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR","ReflectionCapabilities","reflect","_reflect","Reflect","_zipTypesAndAnnotations","paramTypes","paramAnnotations","_ownParameters","parentCtor","isDelegateCtor","typeStr","tsickleCtorParams","ctorParameters","ctorParam","convertTsickleDecoratorIntoMetadata","decorators","getOwnMetadata","getParentCtor","_ownAnnotations","typeOrFunc","annotations","ownAnnotations","_ownPropMetadata","propMetadata","propDecorators","parentPropMetadata","ownPropMetadata","hasLifecycleHook","lcProperty","decoratorInvocations","decoratorInvocation","ctor","parentProto","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","getInjectImplementation","ɵɵinvalidFactoryDep","skipSelf","injectArgs","getInjectFlag","attachInjectFlag","decorator","catchInjectorError","injectorErrorName","tokenPath","NG_TOKEN_PATH","Inject","getReflect","reflectDependencies","convertDependencies","dep","reflectDependency","componentResourceResolutionQueue","componentDefPendingResolution","componentNeedsResolution","templateUrl","styleUrls","policy$1","policy","checkForDuplicateNgModules","registerNgModuleType","ngModuleType","assertSameOrNotExisting","incoming","setDocument","getPolicy$1","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","trustedHTMLFromString","getPolicy","trustedHTMLFromStringBypass","trustedScriptFromStringBypass","trustedScriptURLFromStringBypass","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","actualType","getSanitizationBypassType","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","getInertBodyHelper","defaultDoc","inertDocumentHelper","InertDocumentHelper","isDOMParserAvailable","DOMParserHelper","getInertBodyElement","inertDocument","inertHtml","inertBodyElement","templateEl","inertBody","stripCustomNsAttrs","elAttrs","SAFE_URL_PATTERN","_sanitizeUrl","sanitizeSrcset","srcset","tagSet","sets","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","OPTIONAL_END_TAG_ELEMENTS","BLOCK_ELEMENTS","INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","HTML_ATTRS","ARIA_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","sanitizeChildren","traverseContent","endElement","checkClobberedElement","elAttr","encodeEntities","DOCUMENT_POSITION_CONTAINED_BY","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","ɵɵsanitizeHtml","sanitizer","getSanitizer","HTML","ɵɵsanitizeStyle","unsafeStyle","STYLE","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","RESOURCE_URL","ɵɵsanitizeScript","unsafeScript","SCRIPT","ɵɵtrustConstantHtml","ɵɵtrustConstantResourceUrl","trustedScriptURLFromString","ɵɵsanitizeUrlOrResourceUrl","getUrlSanitizer","ENVIRONMENT_INITIALIZER","INJECTOR","INJECTOR_DEF_TYPES","NullInjector","importProvidersFrom","ɵproviders","internalImportProvidersFrom","checkForStandaloneCmp","providersOut","dedup","injectorTypesWithProviders","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","provider","defType","injDef","cmpDef","isDuplicate","importTypesWithProviders","imported","defProviders","USE_VALUE$1","isValueProvider","isExistingProvider","isFactoryProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR$1","getNullInjector","EnvironmentInjector","R3Injector","scopes","records","_ngOnDestroyHooks","_onDestroyHooks","forEachSingleProvider","processProvider","makeRecord","injectorDefTypes","assertNotDestroyed","previousInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","nextInjector","resolveInjectorInitializers","initializers","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","getUndecoratedInjectableFactory","paramLength","inheritedInjectableDef","getInheritedInjectableDef","unwrappedProvider","classRef","hasDeps","isImportedNgModuleProviders","ComponentFactory$1","ERROR_COMPONENT","_NullComponentFactoryResolver","noComponentFactoryError","ComponentFactoryResolver$1","createElementRef","NULL","unwrapElementRef","injectElementRef","RendererFactory2","injectRenderer2","nodeAtIndex","Sanitizer","major","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","ERROR_ORIGINAL_ERROR","getOriginalError","ErrorHandler","_console","handleError","originalError","_findOriginalError","COMMENT_DISALLOWED","COMMENT_DELIMITER","escapeCommentText","TRACKED_LVIEWS","uniqueIdCounter","getLViewById","MONKEY_PATCH_KEY_NAME","attachPatchData","registerLView","readPatchedData","readPatchedLView","ɵɵresolveWindow","ɵɵresolveDocument","ɵɵresolveBody","maybeUnwrapFn","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","Important","DashCase","getLViewParent","getFirstLContainer","getNearestLContainer","getNextLContainer","applyToElementOrContainer","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","destroyNode","applyContainer","parentRElement","applyView","updateTextNode","createCommentNode","createComment","createElementNode","insertView","indexInContainer","containerLength","declarationLContainer","trackMovedView","declarationContainer","movedViews","insertedComponentLView","lQueries","detachMovedView","declarationViewIndex","insertionLContainer","detachView","removeIndex","viewToDetach","removedLView","removeViewFromContainer","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","instanceCleanupFn","unregisterLView","getParentRElement","getClosestRElement","isMove","nativeAppendOrInsertBefore","nativeParentNode","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","getInsertInFrontOfRNodeWithNoI18n","_processI18nInsertBefore","setI18nHandling","getInsertInFrontOfRNodeWithI18n","processI18nInsertBefore","childRNode","childTNode","parentRNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","componentHost","slotIdx","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","isHostElement","nativeParent","nativeRemoveChild","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","writeDirectStyle","writeDirectClass","classIndexOf","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isInlineTemplate","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","stringifyCSSSelector","currentChunk","valueOrMarker","attrValue","NO_CHANGE","ɵɵadvance","selectIndexInternal","checkNoChangesMode","angularCoreDiEnv","compileInjectable","ngFactoryDef","getInjectableMetadata","srcMeta","compilerMeta","typeArgumentCount","isUseClassProvider","isUseFactoryProvider","isUseValueProvider","USE_VALUE","isUseExistingProvider","compiler","compileFactory","createInjector","additionalProviders","createInjectorWithoutInjectorInstances","constructResolvingPath","findFirstClosedCycle","injectionError","constructResolvingMessage","errMsg","wrappedError","addKey","injectors","noAnnotationError","parameter","mixingMultiProvidersWithRegularProvidersError","provider1","provider2","ReflectiveKey","_globalKeyRegistry","numberOfKeys","KeyRegistry","_allKeys","ReflectiveDependency","_EMPTY_LIST","ResolvedReflectiveProvider_","resolvedFactories","multiProvider","resolvedFactory","ResolvedReflectiveFactory","resolveReflectiveFactory","factoryFn","resolvedDeps","_dependenciesFor","aliasInstance","fromKey","constructDependencies","_extractToken","resolveReflectiveProvider","resolveReflectiveProviders","resolvedProviderMap","mergeResolvedReflectiveProviders","normalizedProvidersMap","resolvedProvider","_normalizeProviders","invalidProviderError","_createDependency","paramMetadata","ReflectiveInjector","ResolvedReflectiveProviders","fromResolvedProviders","ReflectiveInjector_","_providers","_constructionCounter","keyIds","objs","_getByKey","resolveAndCreateChild","createChildFromResolved","inj","resolveAndInstantiate","instantiateResolved","_instantiateProvider","getProviderAtIndex","outOfBoundsError","_new","_getMaxNumberOfObjects","cyclicDependencyError","_instantiate","_getByReflectiveDependency","instantiationError","originalException","originalStack","INJECTOR_KEY","_getByKeySelf","_getByKeyDefault","_getObjByKeyId","keyId","_throwOrNull","noProviderError","inj_","_mapProviders","ɵɵdirectiveInject","ɵɵinvalidFactory","toTStylingRange","getTStylingRangePrev","tStylingRange","getTStylingRangePrevDuplicate","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","getTStylingRangeNextDuplicate","setTStylingRangeNextDuplicate","refreshContentQueries","queryStartIdx","directiveDefIdx","createLView","tHostNode","rendererFactory","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","allocExpando","numSlotsToAlloc","allocIdx","renderView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","staticViewQueries","renderChildComponents","hostLView","renderComponent","incompleteFirstPass","refreshView","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","movedLView","refreshEmbeddedViews","embeddedLView","embeddedTView","processHostBindingOpCodes","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","refreshChildComponents","refreshComponent","firstUpdatePass","renderComponentOrTemplate","creationModeIsActive","rf","prevSelectedIndex","isUpdatePhase","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","setInputsFromAttrs","invokeDirectivesHostBindings","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","saveResolvedLocalsInData","localRefExtractor","localIndex","getOrCreateTComponentView","createTView","constsOrFactory","initialViewLength","createViewBlueprint","queries","expandoStartIndex","directiveRegistry","pipeRegistry","storeCleanupWithContext","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","generatePropertyAliases","inputAliasMap","propStore","internalName","initializeInputAndOutputAliases","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","elementPropertyInternal","nativeOnly","dataValue","setInputsForProperty","markDirtyIfOnPush","mapPropName","viewIndex","childComponentLView","resolveDirectives","localRefs","hasDirectives","findDirectiveDefMatches","markAsComponentHost","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","cacheMatchingLocalNames","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","componentView","addToViewTree","createRenderer","elementAttributeInternal","setElementAttribute","strValue","initialInputData","inputsToStore","createLContainer","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","markViewDirty","detectChangesInternal","detectChangesInRootView","tickRootContext","rootContext","rootComponent","viewQueryFn","loadComponentRenderer","currentDef","unwrapLView","textBindingInternal","computeStaticStyling","writeToHost","collectNativeNodes","lNode","lViewInAContainer","lViewFirstChildTNode","nodesInSlot","ViewRef$1","_cdRefInjectingView","_appRef","_attachedToViewContainer","viewRefs","detach","reattach","checkNoChanges","attachToViewContainerRef","detachFromAppRef","renderDetachView","attachToAppRef","RootViewRef","ComponentFactoryResolver","componentDef","ComponentFactory","toRefArray","nonMinified","minified","templateName","ChainedInjector","stringifyCSSSelectorList","selectorList","isBoundToModule","rootSelectorOrNode","environmentInjector","realEnvironmentInjector","rootViewInjector","hostRenderer","elementName","hostRNode","locateHostElement","elementOrSelector","preserveContent","selectRootElement","getNamespace","rootFlags","rootTView","rootLView","tElementNode","createRootComponentView","viewRenderer","extractAttrsAndClassesFromSelector","nodesforSlot","createRootComponent","hostFeatures","instantiateRootComponent","rootTNode","LifecycleHooksFeature","ComponentRef","ComponentRef$1","_rootLView","getSuperType","ɵɵInheritDefinitionFeature","superType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","defData","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","COPY_DIRECTIVE_FIELDS","COPY_COMPONENT_FIELDS","ɵɵCopyDefinitionFeature","defAny","_symbolIterator","isListLikeIterable","isJsObject","updateBinding","getBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","bindingUpdated4","exp4","ɵɵattribute","interpolationV","isBindingUpdated","interpolation1","v0","interpolation2","v1","interpolation3","v2","interpolation4","v3","interpolation5","v4","interpolation6","v5","interpolation7","v6","interpolation8","v7","ɵɵattributeInterpolate1","interpolatedValue","ɵɵattributeInterpolate2","ɵɵattributeInterpolate3","ɵɵattributeInterpolate4","ɵɵattributeInterpolate5","ɵɵattributeInterpolate6","ɵɵattributeInterpolate7","ɵɵattributeInterpolate8","ɵɵattributeInterpolateV","interpolated","ɵɵtemplate","attrsIndex","localRefsIndex","adjustedIndex","templateFirstCreatePass","tViewConsts","ɵɵreference","getContextLView","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","ɵɵelementStart","getNamespace$1","elementStartFirstCreatePass","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","decreaseElementDepthCount","elementEnd","hasClassInput","hasStyleInput","ɵɵelement","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","ɵɵelementContainerEnd","ɵɵelementContainer","ɵɵgetCurrentView","isSubscribable","isObservable","ɵɵlistener","listenerFn","eventTargetResolver","listenerInternal","ɵɵsyntheticHostListener","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","findExistingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","minifiedName","executeListenerWithErrorHandling","wrapWithPreventDefault","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","ɵɵnextContext","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","numProjectionSlots","projectionHeads","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","applyProjection","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate2","ɵɵpropertyInterpolate3","ɵɵpropertyInterpolate4","ɵɵpropertyInterpolate5","ɵɵpropertyInterpolate6","ɵɵpropertyInterpolate7","ɵɵpropertyInterpolate8","ɵɵpropertyInterpolateV","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","isClassBinding","tBindings","tmplHead","tmplTail","tStylingKey","isKeyDuplicateOfStatic","staticKeyValueArray","previousNode","setTStylingRangePrev","markDuplicates","markDuplicateOfResidualStyling","residual","isPrevDir","tStylingAtIndex","foundDuplicate","tStylingValueAtCursor","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","getLastParsedKey","getLastParsedValue","parseClassNameNext","consumeClassToken","consumeWhitespace","parseStyleNext","consumeStyleKey","consumeSeparator","consumeStyleValue","ch1","ch2","ch3","lastChIndex","consumeQuotedText","resetParserState","quoteCharCode","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","ɵɵstyleMap","checkStylingMap","styleKeyValueArraySet","styleStringParser","ɵɵclassMap","classStringParser","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldKey","setKey","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","isHostBindings","wrapInStaticStylingKey","stylingKey","hostDirectiveDef","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","findStylingValue","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵtext","textNative","ɵɵtextInterpolate","ɵɵtextInterpolate1","ɵɵtextInterpolate2","ɵɵtextInterpolate3","ɵɵtextInterpolate4","ɵɵtextInterpolate5","ɵɵtextInterpolate6","ɵɵtextInterpolate7","ɵɵtextInterpolate8","ɵɵtextInterpolateV","ɵɵclassMapInterpolate1","ɵɵclassMapInterpolate2","ɵɵclassMapInterpolate3","ɵɵclassMapInterpolate4","ɵɵclassMapInterpolate5","ɵɵclassMapInterpolate6","ɵɵclassMapInterpolate7","ɵɵclassMapInterpolate8","ɵɵclassMapInterpolateV","ɵɵstyleMapInterpolate1","ɵɵstyleMapInterpolate2","ɵɵstyleMapInterpolate3","ɵɵstyleMapInterpolate4","ɵɵstyleMapInterpolate5","ɵɵstyleMapInterpolate6","ɵɵstyleMapInterpolate7","ɵɵstyleMapInterpolate8","ɵɵstyleMapInterpolateV","ɵɵstylePropInterpolate1","valueSuffix","ɵɵstylePropInterpolate2","ɵɵstylePropInterpolate3","ɵɵstylePropInterpolate4","ɵɵstylePropInterpolate5","ɵɵstylePropInterpolate6","ɵɵstylePropInterpolate7","ɵɵstylePropInterpolate8","ɵɵstylePropInterpolateV","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","LOCALE_DATA","LocaleDataIndex","LocaleId","ExtraData","findLocaleData","normalizedLocale","getLocaleData","PluralCase","common","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","DateTimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","Directionality","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","I18nCreateOpCode","APPEND_EAGERLY","LOCALE_ID$1","setLocaleId","tNodeInsertBeforeIndex","i18nParent","anchorRNode","addTNodeAndUpdateInsertBeforeIndex","previousTNodes","newTNode","existingTNode","isI18nText","isNewTNodeCreatedBefore","getInsertBeforeIndex","setInsertBeforeIndex","getTIcu","createTNodePlaceholder","getCurrentICUCaseIndex","tIcu","currentCase","currentCaseLViewIndex","getParentFromIcuCreateOpCode","mergedCode","getRefFromIcuCreateOpCode","changeMask","changeMaskCounter","applyMutableOpCodes","mutableOpCodes","rootRNode","rootIdx","textNodeIndex","parentIdx","insertInFrontOf","refIdx","caseIndex","anchorIdx","elementNodeIndex","commentValue","commentNodeIndex","applyUpdateOpCodes","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","getCaseIndex","icuExpression","bindingValue","resolvedCase","getPluralCase","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","loadIcuContainerVisitor","_stack","_removes","enterIcu","icuContainerIteratorNext","removeOpCode","tIcuIndex","icuContainerIteratorStart","BINDING_REGEXP","ICU_REGEXP","NESTED_ICU","ICU_BLOCK_REGEXP","SUBTEMPLATE_REGEXP","PH_REGEXP","NGSP_UNICODE_REGEXP","i18nStartFirstCreatePass","parentTNodeIndex","subTemplateIndex","createOpCodes","existingTNodeStack","getTranslationForTemplate","isRootTemplateMessage","removeInnerTemplateTranslation","msgParts","replaceNgsp","i18nParseTextIntoPartsAndICU","i18nStartFirstCreatePassProcessTextNode","icuStart","createTNodeAndAddOpCode","isClosing","existingTNodes","isICU","i18nNodeIdx","ensureIcuContainerVisitorLoaded","setTNodeInsertBeforeIndex","hasBinding","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","textValue","toMaskBit","countBindings","opCodes","tagMatched","inTemplate","bindingMask","addUpdateIcuSwitch","mainBinding","setTIcu","valueArr","nestedIcus","icuIndex","parseIcuCase","addUpdateIcuUpdate","parseICUBlock","icuType","prevPos","braceStack","braces","caseName","unsafeCaseHtml","inertRootNode","walkIcuTree","sharedUpdateOpCodes","addCreateNodeAndAppend","lowerAttrName","addCreateAttribute","addRemoveNode","isNestedIcu","addRemoveNestedIcu","appendToParentIdx","createAtIdx","icuCreateOpCode","PP_MULTI_VALUE_PLACEHOLDERS_REGEXP","PP_PLACEHOLDERS_REGEXP","PP_ICU_VARS_REGEXP","PP_ICU_PLACEHOLDERS_REGEXP","PP_ICUS_REGEXP","PP_CLOSE_TEMPLATE_REGEXP","PP_TEMPLATE_ID_REGEXP","ɵɵi18nStart","messageIndex","tI18n","applyCreateOpCodes","isComment","appendNow","ɵɵi18nEnd","ɵɵi18n","ɵɵi18nAttributes","i18nAttributesFirstPass","previousElementIndex","ɵɵi18nExp","setMaskBit","ɵɵi18nApply","applyI18n","ɵɵi18nPostprocess","replacements","i18nPostprocess","templateIdsStack","phs","placeholders","templateId","isCloseTemplateTag","currentTemplateId","_idx","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesProvidersFactoryExist","doesViewProvidersFactoryExist","multiFactory","componentProviders","multiFactoryAdd","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","ɵɵProvidersFeature","viewProviders","processProvidersFn","NgModuleRef$1","NgModuleFactory$1","_bootstrapComponents","destroyCbs","_r3Injector","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","createEnvironmentInjector","debugName","StandaloneService","_injector","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","ɵɵStandaloneFeature","setClassMetadata","clazz","ɵɵpureFunction0","slotOffset","pureFn","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","pureFunction3Internal","ɵɵpureFunction4","pureFunction4Internal","ɵɵpureFunction5","exp5","ɵɵpureFunction6","exp6","ɵɵpureFunction7","exp7","ɵɵpureFunction8","exp8","ɵɵpureFunctionV","exps","pureFunctionVInternal","getPureFunctionReturnValue","returnValueIndex","lastReturnValue","bindingRoot","ɵɵpipe","pipeName","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","isPure","ɵɵpipeBind2","ɵɵpipeBind3","ɵɵpipeBind4","ɵɵpipeBindV","EventEmitter_","__isAsync","nextFn","_wrapInTimeout","symbolIterator","_results","_emitDistinctChangesOnly","_changesDetected","resultsTree","identityAccessor","newResultFlat","arrayEquals","valueA","valueB","notifyOnChanges","setDirty","injectTemplateRef","createTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","declarationViewLQueries","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","indexOrOptions","viewRef","componentFactoryOrType","isComponentFactory","componentFactory","contextInjector","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","addViewToContainer","parentNativeNode","getOrCreateViewRefs","viewRefsArr","detachedView","commentNode","nativeNextSibling","LQuery_","queryList","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","parentLQuery","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","ɵɵqueryRefresh","ɵɵviewQuery","createTQuery","createLQuery","ɵɵcontentQuery","saveContentQueryAndDirectiveIndex","tViewContentQueries","lastSavedDirectiveIndex","ɵɵloadQuery","loadQueryInternal","ɵɵtemplateRefExtractor","angularCoreEnv","jitOptions","isModuleWithProviders","isNgModule","moduleQueue","flushingModuleQueue","isResolvedDeclaration","declaration","compileNgModule","compileNgModuleDefs","allowDuplicateDeclarationsInRoot","expandModuleWithProviders","compileInjector","enqueueModuleForDelayedScoping","setScopeOnDeclaredComponents","transitiveScopes","transitiveScopesFor","patchComponentDefWithScope","ngSelectorScope","compilation","transitiveScopesForNgModule","exported","importedScope","declared","exportedType","exportedScope","compilationDepth","compileComponent","ngComponentDef","maybeQueueResolutionOfComponentResources","addDirectiveFactoryDef","getJitOptions","preserveWhitespaces","defaultEncapsulation","directiveMetadata","typeSourceSpan","createParseSourceSpan","interpolation","usesInheritance","addDirectiveDefToUndecoratedParents","getStandaloneDefFunctions","cachedDirectiveDefs","cachedPipeDefs","rawDep","flushModuleScopingQueueAsMuchAsPossible","hasSelectorScope","compileDirective","ngDirectiveDef","getDirectiveMetadata","sourceMapUrl","facade","extendsDirectlyFromObject","extractQueriesMetadata","isContentQuery","lifecycle","usesOnChanges","extractExportAs","viewQueries","objPrototype","shouldAddAbstractDirective","convertToR3QueryPredicate","splitByComma","convertToR3QueryMetadata","ann","isQueryAnn","queriesMeta","isInputAnnotation","piece","LIFECYCLE_HOOKS","hookName","metadataName","getPipeMetadata","compilePipe","ngPipeDef","bindingPropertyName","Output","HostBinding","hostPropertyName","HostListener","APP_INITIALIZER","ApplicationInitStatus","appInits","donePromise","rej","runInitializers","asyncInitPromises","initResult","observableAsPromise","APP_ID","_appIdRandomProviderFactory","_randomChar","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","ANIMATION_MODULE_TYPE","Console","getGlobalLocale","MissingTranslationStrategy","Warning","Ignore","ModuleWithComponentFactories","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","Zone","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","AsyncStackTaggingZoneSpec","fork","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","getNativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","forkInnerZoneWithAngularBehavior","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","isAngularZone","onInvokeTask","task","applyThis","applyArgs","invokeTask","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","isInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","NoopNgZone","TESTABILITY","TESTABILITY_GETTER","Testability","testabilityGetter","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_testabilityGetter","setTestabilityGetter","addToWindow","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","timeoutId","doneCb","getPendingTasks","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","registerApplication","unregisterApplication","findProviders","using","TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","PLATFORM_DESTROY_LISTENERS","NG_DEV_MODE","NgProbeToken","runPlatformInitializers","inits","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","platformProviders","createPlatform","PlatformRef","createPlatformInjector","assertPlatform","requiredToken","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","getNgZone","getNgZoneOptions","ngZoneInjector","moduleRef","exceptionHandler","_callAndReportToErrorHandler","initStatus","_moduleDoBootstrap","bootstrapModule","compilerOptions","optionsReducer","compileNgModuleFactory","ngDoBootstrap","destroyListeners","ngZoneEventCoalescing","ngZoneRunCoalescing","ngZoneToUse","_exceptionHandler","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","componentOrFactory","cf","selectorOrNode","compRef","_loadComponent","viewCount","warnIfDestroyed","_devMode","_runModeLocked","enableProdMode","ChangeDetectorRef","injectChangeDetectorRef","createViewRef","isPipe","hostComponentView","DefaultIterableDifferFactory","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","toIndex","_prevDup","_nextDup","_DuplicateItemRecordList","atOrAfterIndex","duplicates","recordList","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","defaultIterableDiffersFactory","IterableDiffers","copied","defaultKeyValueDiffersFactory","KeyValueDiffers","kv","keyValDiff","iterableDiff","platformCore","ApplicationModule","coerceToBoolean","BaseControlValueAccessor","_elementRef","BuiltInControlValueAccessor","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_isAndroid","ɵgetDOM","getUserAgent","_handleInput","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","requiredValidator","requiredTrueValidator","emailValidator","minLengthValidator","maxLengthValidator","patternValidator","validators","composeAsync","required","email","minlength","requiredLength","actualLength","maxlength","nullValidator","regexStr","requiredPattern","actualValue","toObservable","mergeErrors","arrayOfErrors","executeValidators","validator","normalizeValidators","isValidatorFn","presentValidators","composeValidators","forkJoin","remainingCompletions","remainingEmissions","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","addValidators","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","statusChanges","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","getError","ControlContainer","formDirective","AbstractControlStatus","_cd","isTouched","isPristine","isInvalid","isPending","isSubmitted","submitted","NgControlStatus","NgControlStatusGroup","VALID","INVALID","PENDING","DISABLED","pickValidators","validatorOrOpts","isOptionsObj","coerceToValidator","pickAsyncValidators","asyncValidators","coerceToAsyncValidator","assertControlPresent","assertAllValuesPresent","_forEachChild","AbstractControl","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","_onDisabledChange","validatorFn","asyncValidatorFn","_updateOn","setValidators","setAsyncValidators","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","onlySelf","markAsUntouched","_updateTouched","markAsDirty","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","updateValueAndValidity","setParent","getRawValue","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","currPath","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_registerOnCollectionChange","_setUpdateStrategy","parentDirty","_setUpControls","registerControl","removeControl","setControl","controlName","_reduceChildren","_syncPendingControls","subtreeUpdated","_reduceValue","UntypedFormGroup","FormRecord","controlPath","setUpControl","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","updateControl","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","setUpFormContainer","isPropertyUpdated","viewModel","syncPendingControls","selectValueAccessor","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","getControl","addFormGroup","removeFormGroup","getFormGroup","updateModel","onSubmit","onReset","resetForm","removeListItem","isFormControlState","formState","_onChange","_applyFormState","nonNullable","initialValueIsDefault","emitViewToModelChange","UntypedFormControl","AbstractFormGroupDirective","_checkParentType","modelGroupProvider","NgModelGroup","formControlBinding$1","NgModel","_changeDetectorRef","_registered","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","_isStandalone","_setUpStandalone","disabledValue","ɵcoerceToBoolean","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RADIO_VALUE_ACCESSOR","RadioControlRegistryModule","RadioControlRegistry","_accessors","_isSameGroup","fireUncheck","controlPair","_control","_fn","formControlName","RANGE_VALUE_ACCESSOR","RangeValueAccessor","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","_ngModelWarningSentOnce","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString$1","_optionMap","_idCounter","_compareWith","compareWith","_getOptionId","_getOptionValue","_registerOption","_extractId$1","NgSelectOption","ngValue","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString","optionSelectedStateSetter","_setSelected","_extractId","ɵNgSelectMultipleOption","toFloat","AbstractValidatorDirective","_validator","normalizeInput","createValidator","MAX_VALIDATOR","MaxValidator","MIN_VALIDATOR","MinValidator","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","EMAIL_VALIDATOR","EmailValidator","MIN_LENGTH_VALIDATOR","MinLengthValidator","MAX_LENGTH_VALIDATOR","MaxLengthValidator","PATTERN_VALIDATOR","PatternValidator","ɵInternalFormsSharedModule","warnOnNgModelWithFormControl","FormArray","_registerControl","isAbstractControlOptions","FormBuilder","useNonNullable","nnfb","reducedControls","_reduceControls","createdControls","_createControl","NonNullableFormBuilder","UntypedFormBuilder","controlsConfig","invalidTimingValue","optimizeGroupPlayer","ɵAnimationGroupPlayer","normalizeKeyframes$1","driver","normalizer","preStyles","postStyles","normalizedKeyframes","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizePropertyName","normalizeStyleValue","animationFailed","listenOnPlayer","copyAnimationEvent","makeAnimationEvent","triggerName","fromState","toState","getOrSetDefaultValue","parseTimelineCommand","separatorPos","_contains","elm1","elm2","_query","_documentElement","getParentElement","isBrowser","_CACHED_BODY","_IS_WEBKIT","validateStyleProperty","getBodyNode","containsVendorPrefix","invokeQuery","NoopAnimationDriver","matchesElement","_selector","computeStyle","previousPlayers","scrubberAccessRequested","AnimationDriver","NOOP","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","_convertTimeValueToMS","resolveTiming","allowNegativeValues","parseTimeExpression","delayMatch","easingVal","containsErrors","negativeStepValue","negativeDelayValue","copyObj","convertToMap","styleMap","copyStyles","backfill","getStyleAttributeString","writeStyleAttribute","styleAttrValue","camelCaseToDashCase","formerStyles","dashCaseToCamelCase","eraseStyles","normalizeAnimationEntry","validateStyleParams","extractStyleParams","invalidStyleParams","PARAM_REGEX","interpolateParams","localVal","invalidParamValue","DASH_CASE_REGEXP","visitDslNode","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","invalidTransitionAlias","invalidExpression","makeLambdaFromStates","isFullAnyStateExpr","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN","SELF_TOKEN_REGEX","buildAnimationAst","warnings","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","invalidTrigger","stateDef","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","invalidState","matchers","normalizeAnimationOptions","furthestTime","innerAst","timingAst","constructTimingAst","makeTimingAst","ast","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","metadataStyles","styleTuple","collectedEasing","styleData","tuple","collectedEntry","updateCollectedStyle","invalidParallelAnimation","firstStart","firstEnd","secondStart","secondEnd","invalidKeyframes","totalKeyframesWithOffsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","hasAmpersand","originalSelector","invalidStagger","currentTransition","unsupportedCSSPropertiesFound","normalizeParams","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","delayNextStep","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","instruction","instructionTimings","appendInstructionToTimeline","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","hasCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","parentContext","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","updatedTimings","SubTimelineBuilder","stretchStartingKeyframe","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_localTimelineStyles","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","allProperties","getFinalKeyframe","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","timeAtKeyframe","decimalPoints","mult","AnimationStyleNormalizer","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","valAndSuffixMatch","invalidCssUnitValue","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","AnimationTransitionFactory","_triggerName","_stateStyles","oneOrMoreTransitionsMatch","matchFns","buildStyles","stateName","styler","nextOptions","skipAstBuild","transitionAnimationParams","currentAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","applyParamDefaults","elm","queriedElementsList","userParams","AnimationStateStyles","defaultParams","combinedParams","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","stateMap","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","registerFailed","_buildPlayer","autoStylesMap","inst","missingOrDestroyedAnimation","createAnimationFailed","_getPlayer","missingPlayer","baseEvent","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","_engine","_triggers","_queue","_elementListeners","_hostClassName","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","triggersWithStates","statesByElement","afterFlush","_getTrigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","k1","k2","reportError","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","deregister","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","drainQueuedTransitions","microtaskId","markedForDestroy","d0","elementContainsData","containsData","TransitionAnimationEngine","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","ancestor","ancestorNs","registerTrigger","_fetchNamespace","stateValue","isElementNode","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","flattenGroupPlayers","finalPlayers","_flattenGroupPlayersRecur","pp","wrappedPlayer","deleteOrUnsetInMap","currentValues","_player","_containsRealPlayer","_queuedCallbacks","callbacks","_queueEvent","cloakElement","valuesMap","elementPropsMap","cloakVals","failedElements","nodeSet","localRootMap","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","triggerBuildFailed","buildTrigger","onInsert","disableAnimations","eventPhase","SpecialCasedStyles","_startStyles","_endStyles","initialStyles","initialStylesByElement","_initialStyles","filterNonAnimatableStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_initialized","currentSnapshot","_duration","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","_convertKeyframesToObject","kfs","frame","fromEntries","WebAnimationsDriver","validateAnimatableStyleProperty","playerOptions","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","normalizeKeyframes","balancePreviousStylesIntoKeyframes","startingKeyframe","missingStyleProps","specialStyles","packageNonAnimatableStyles","startStyles","endStyles","BrowserAnimationBuilder","rootRenderer","_nextAnimationId","typeData","issueAnimationCommand","BrowserAnimationFactory","RendererAnimationPlayer","_command","_listen","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","BaseAnimationRenderer","animationTriggers","AnimationRenderer","_scheduleCountTask","scheduleListenerCallback","newChild","refChild","oldChild","resolveElementFromTarget","parseTriggerCallbackName","dotIndex","countId","InjectableAnimationEngine","ɵAnimationEngine","SHARED_ANIMATION_PROVIDERS","ɵAnimationStyleNormalizer","instantiateDefaultStyleNormalizer","ɵWebAnimationsStyleNormalizer","instantiateRendererFactory","ɵDomRendererFactory2","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","BrowserModule","NoopAnimationsModule","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","ɵsetRootDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","getBaseElementHref","baseElement","urlParsingNode","pathName","resetBaseElement","getCookie","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","appInitializerFactory","transitionId","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","_eventNameToPlugin","_findPluginFor","addGlobalEventListener","getZone","EventManagerPlugin","SharedStylesHost","_stylesSet","additions","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","addHost","hostNode","removeHost","styleNode","NAMESPACE_URIS","xhtml","xlink","xmlns","COMPONENT_REGEX","HOST_ATTR","CONTENT_ATTR","compId","decoratePreventDefault","DomRendererFactory2","eventManager","sharedStylesHost","appId","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","isTemplateNode","namespaceUri","removeAttributeNS","contentAttr","shimContentAttribute","componentShortId","hostAttr","shimHostAttribute","nodeOrShadowRoot","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Menu","Scroll","Win","MODIFIER_KEY_GETTERS","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","fullKeyCode","keycode","modifierGetter","matchEventFullKeyCode","INTERNAL_BROWSER_PLATFORM_PROVIDERS","ɵPLATFORM_BROWSER_ID","initDomAdapter","makeCurrent","_document","ɵsetDocument","platformBrowser","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","ɵglobal","testabilities","didWork","didWork_","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","providersAlreadyPresent","Meta","addTag","forceCreation","_getOrCreateElement","addTags","attrSelector","getTags","updateTag","_parseSelector","_setMetaElementAttributes","removeTagElement","_containsAttributes","_getMetaKeyMap","META_KEYS_MAP","createMeta","httpEquiv","setTitle","newTitle","TransferState","onSerializeCallbacks","onSerialize","toJson","retrieveTransferredState","initialState","unescapeHtml","unescapedText","BrowserTransferStateModule","EVENT_NAMES","pancancel","panleft","panright","panup","pandown","pinch","pinchcancel","pinchin","pinchout","pressup","rotatestart","rotatemove","rotateend","rotatecancel","swipeleft","swiperight","swipeup","swipedown","doubletap","HAMMER_GESTURE_CONFIG","HAMMER_LOADER","HammerGestureConfig","overrides","buildHammer","mc","HammerGesturesPlugin","_loaderPromise","isCustomEvent","cancelRegistration","eventObj","HammerModule","ɵConsole","DomSanitizer","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","bypassSecurityTrustResourceUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","EmptyError","observableFactory","_refCount","refCounter","sharedConnection","_connection","ConnectableObservable","subjectFactory","getSubject","_teardown","higherOrderRefCount","defaultIfEmpty","throwIfEmpty","defaultErrorFactory","hasDefaultValue","takeLast","PRIMARY_OUTLET","RouteTitleKey","ParamsAsMap","convertToParamMap","defaultUrlMatcher","segmentGroup","pathMatch","posParams","consumed","equalArraysOrString","aSorted","bSorted","wrapIntoObservable","ɵisObservable","pathCompareMap","exact","equalSegmentGroups","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","containsSegmentGroup","paramCompareMap","equalParams","containsParams","ignored","containsTree","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","queryParamMap","_queryParamMap","DEFAULT_SERIALIZER","UrlSegmentGroup","serializePaths","UrlSegment","parameterMap","_parameterMap","serializePath","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","serializeSegment","serializeQueryParams","strParams","encodeUriQuery","encodeUriFragment","encodeURI","mapChildrenIntoArray","childOutlet","encodeUriString","encodeUriSegment","decodeQuery","serializeMatrixParams","SEGMENT_RE","matchSegments","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","createRoot","rootCandidate","squashSegmentGroup","newChildren","childCandidate","mergeTrivialChildren","isUrlTree","createUrlTree","urlTree","computeNavigation","toRoot","createTreeUsingPathIndex","lastPathIndex","startingPosition","findStartingPosition","isAbsolute","Position","processChildren","isMatrixParams","createPositionApplyingDoubleDots","numberOfDoubleDots","snapshot","_urlSegment","updateSegmentGroupChildren","updateSegmentGroup","_lastPathIndex","outlets","segmentPath","isCommandWithOutlets","oldRoot","oldSegmentGroup","newSegmentGroup","qp","replaceSegment","newRoot","oldSegment","newSegment","Navigation","cmdWithOutlet","cmdIdx","urlPart","prefixedWith","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","slicedCommands","createNewSegmentGroup","getOutlets","outlet","createNewSegmentChildren","RouterEvent","NavigationStart","navigationTrigger","restoredState","NavigationEnd","urlAfterRedirects","NavigationCancel","reason","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","ResolveStart","ResolveEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","Tree","pathFromRoot","findPath","TreeNode","nodeChildrenAsMap","RouterState","setRouterState","createEmptyState","createEmptyStateSnapshot","activated","ActivatedRouteSnapshot","RouterStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","futureSnapshot","_futureSnapshot","_routerState","paramMap","_paramMap","inheritedParamsDataResolve","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","_resolvedData","urlSegment","correctedLastPathIndex","_correctedLastPathIndex","_resolve","advanceActivatedRoute","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","equalUrlParams","equalSegments","parentsMismatch","createNode","routeReuseStrategy","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","NAVIGATION_CANCELING_ERROR","redirectingNavigationError","urlSerializer","redirect","redirectTo","navigationBehaviorOptions","navigationCancelingError","redirectUrl","cancellationCode","isRedirectingNavigationCancelingError$1","isNavigationCancelingError$1","OutletContext","ChildrenOutletContexts","attachRef","contexts","onChildOutletCreated","childName","getOrCreateContext","onChildOutletDestroyed","onOutletDeactivated","onOutletReAttached","NG_DEV_MODE$7","RouterOutlet","parentContexts","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","activateWith","isActivated","activatedRoute","activatedRouteData","resolverOrInjector","childContexts","OutletInjector","isComponentFactoryResolver","ɵEmptyOutletComponent","getOrCreateRouteInjectorIfNeeded","currentInjector","standardizeConfig","loadComponent","getOutlet","sortByMatchingOutlets","routes","sortedConfig","getClosestRouteInjector","_loadedInjector","ActivateRoutes","futureState","currState","forwardEvent","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","futureChild","childOutletName","deactivateRoutes","deactivateRouteAndItsChildren","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","activateRoutes","cmpFactoryResolver","CanActivate","CanDeactivate","getAllRouteGuards","getChildRouteGuards","getTokenOrFunctionIdentity","tokenOrFunction","ɵisInjectable","futurePath","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","isEmptyError","INITIAL_VALUE","prioritizedGuardValue","checkGuards","targetSnapshot","guards","guardsResult","runCanDeactivateChecks","futureRSS","currRSS","runCanDeactivate","currARS","canDeactivate","canDeactivateObservables","closestInjector","isCanDeactivate","runCanActivateChecks","fireChildActivationStart","fireActivationStart","runCanActivateChild","futureARS","canActivateChildGuardsMapped","getCanActivateChild","canActivateChild","guardsMapped","isCanActivateChild","runCanActivate","canActivate","canActivateObservables","isCanActivate","runCanLoadGuards","canLoad","canLoadObservables","injectionToken","isCanLoad","redirectIfUrlTree","runCanMatchGuards","canMatch","canMatchObservables","isCanMatch","noMatch$1","consumedSegments","remainingSegments","positionalParamSegments","matchWithChecks","slicedSegments","relativeLinkResolution","containsEmptyPathMatchesWithNamedOutlets","emptyPathMatch","createChildrenForEmptyPaths","primarySegment","_sourceSegment","_segmentIndexShift","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","isImmediateMatch","rawSegment","noLeftoversInUrl","NG_DEV_MODE$6","NoMatch$1","AbsoluteRedirect","absoluteRedirect","newTree","ApplyRedirects","configLoader","allowRedirects","splitGroup","rootSegmentGroup","expandSegmentGroup","noMatchError","expandSegment","childOutlets","sortedRoutes","expandedChild","last$1","expandSegmentAgainstRoute","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","lineralizeSegments","newSegments","rawSegmentGroup","_loadedRoutes","cfg","getChildConfig","routerConfig","childInjector","splitSegmentGroup","matchedOnOutlet","cs","shouldLoadResult","canLoadFails","applyRedirectCreateUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","applyRedirects","applyRedirects$1","extractedUrl","NoMatch","recognize$1","rootComponentType","newObservableError","processSegmentGroup","routeState","inheritParamsAndData","routeNode","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","processSegmentAgainstRoute","matchResult","pathIndexShift","getPathIndexShift","_loadedComponent","getSourceSegmentGroup","getResolve","hasEmptyPathConfig","mergedNodes","duplicateEmptyPathNode","resultNode","mergedNode","resolveData","canActivateChecksResolved","runResolve","hasStaticTitle","resolveNode","getDataKeys","getResolver","resolvedData","switchTap","nextResult","TitleStrategy","buildTitle","pageTitle","getResolvedTitleForRoute","DefaultTitleStrategy","updateTitle","RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ROUTER_CONFIGURATION","ROUTES","RouterConfigLoader","componentLoaders","childrenLoaders","onLoadStartListener","loadRunner","onLoadEndListener","loadModuleFactoryOrRoutes","factoryOrRoutes","rawRoutes","requireStandaloneComponents","NG_DEV_MODE$3","UrlHandlingStrategy","DefaultUrlHandlingStrategy","shouldProcessUrl","extract","newUrlPart","wholeUrl","NG_DEV_MODE$2","defaultMalformedUriErrorHandler","exactMatchOptions","subsetMatchOptions","setupRouter","defaultTitleStrategy","titleStrategy","urlHandlingStrategy","router","Router","assignExtraOptionsToRouter","malformedUriErrorHandler","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","navigationId","currentPageId","isNgZoneEnabled","navigated","lastSuccessfulId","afterPreactivation","triggerEvent","resetConfig","currentUrlTree","createEmptyUrlTree","rawUrlTree","browserUrlTree","routerState","targetPageId","currentRawUrl","rawUrl","extras","currentRouterState","targetRouterState","navigations","setupNavigations","processNavigations","browserPageId","ɵrouterPageId","eventsSubject","overallTransitionState","initialUrl","previousNavigation","urlTransition","isBrowserTriggeredNavigation","serializeUrl","finalUrl","skipLocationChange","setBrowserUrl","routesRecognized","navStart","replaceUrl","guardsStart","guardsEnd","restoreHistory","cancelNavigationTransition","resolveStart","dataResolved","resolveEnd","loadComponents","loaders","loadedComponent","createRouterState","cancelationReason","navCancel","mergedTree","scheduleNavigation","navError","ee","resetRootComponentType","setTransition","initialNavigation","setUpLocationChangeListener","navigateByUrl","locationSubscription","stateCopy","parseUrl","getCurrentNavigation","navigationExtras","relativeTo","queryParamsHandling","preserveFragment","removeEmptyProps","validateCommands","matchOptions","priorPromise","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetUrlToCurrentUrlTree","routerPageId","RouterLink","tabIndexAttribute","_preserveFragment","_skipLocationChange","_replaceUrl","setTabIndexIfNotOnNativeEl","newTabIndex","routerLink","RouterLinkWithHref","updateTargetUrlAndHref","RouterLinkActive","linkWithHref","routerLinkActiveOptions","isActiveChange","routerEventsSubscription","linksWithHrefs","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","routerLinkActive","hasActiveLinks","ariaCurrentWhenActive","isActiveMatchOptions","isActiveCheckFn","PreloadingStrategy","PreloadAllModules","preload","NoPreloading","RouterPreloader","preloadingStrategy","setUpPreloading","processRoutes","injectorForCurrentRoute","injectorForChildren","preloadConfig","loadedChildren$","recursiveLoadChildren$","loadComponent$","ROUTER_SCROLLER","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","rootRoute","routerFeature","ɵkind","provideRoutes","getBootstrapListener","bootstrappedComponentRef","bootstrapDone","BOOTSTRAP_DONE","INITIAL_NAVIGATION","ROUTER_PRELOADER","withEnabledBlockingInitialNavigation","locationInitialized","initNavigation","afterNextNavigation","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","routerNgProbeToken","RouterModule","provideForRootGuard","useHash","provideInitialNavigation","ROUTER_INITIALIZER","asyncGeneratorStep"],"sourceRoot":"webpack:///","sources":["./node_modules/@auth0/angular-jwt/fesm2015/auth0-angular-jwt.js","./node_modules/@progress/kendo-angular-buttons/fesm2015/kendo-angular-buttons.js","./node_modules/@progress/kendo-charts/dist/es2015/common/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-array.js","./node_modules/@progress/kendo-charts/dist/es2015/common/add-class.js","./node_modules/@progress/kendo-charts/dist/es2015/common/remove-class.js","./node_modules/@progress/kendo-charts/dist/es2015/common/align-path-to-pixel.js","./node_modules/@progress/kendo-charts/dist/es2015/common/clockwise.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-number.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-string.js","./node_modules/@progress/kendo-charts/dist/es2015/common/convertable-to-number.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-function.js","./node_modules/@progress/kendo-charts/dist/es2015/common/deep-extend.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-object.js","./node_modules/@progress/kendo-charts/dist/es2015/common/style-value.js","./node_modules/@progress/kendo-charts/dist/es2015/common/element-styles.js","./node_modules/@progress/kendo-charts/dist/es2015/common/get-spacing.js","./node_modules/@progress/kendo-charts/dist/es2015/services/template-service.js","./node_modules/@progress/kendo-charts/dist/es2015/common/get-template.js","./node_modules/@progress/kendo-charts/dist/es2015/common/getter.js","./node_modules/@progress/kendo-charts/dist/es2015/common/grep.js","./node_modules/@progress/kendo-charts/dist/es2015/common/has-classes.js","./node_modules/@progress/kendo-charts/dist/es2015/common/hash-map.js","./node_modules/@progress/kendo-charts/dist/es2015/common/in-array.js","./node_modules/@progress/kendo-charts/dist/es2015/common/interpolate-value.js","./node_modules/@progress/kendo-charts/dist/es2015/common/instance-observer.js","./node_modules/@progress/kendo-charts/dist/es2015/common/map.js","./node_modules/@progress/kendo-charts/dist/es2015/common/mousewheel-delta.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/event-coordinates.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/event-element.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/now.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/promise-all.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/bind-events.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-offset.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-styles.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-size.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/unbind-events.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-padding.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-scale.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/log-to-console.js","./node_modules/@progress/kendo-charts/dist/es2015/drawing-utils.js","./node_modules/@progress/kendo-charts/dist/es2015/common/font-loader.js","./node_modules/@progress/kendo-charts/dist/es2015/common/set-default-options.js","./node_modules/@progress/kendo-charts/dist/es2015/common/sparse-array-limits.js","./node_modules/@progress/kendo-charts/dist/es2015/common/find.js","./node_modules/@progress/kendo-charts/dist/es2015/common/element-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/common/auto-text-color.js","./node_modules/@progress/kendo-charts/dist/es2015/common/create-hash-set.js","./node_modules/@progress/kendo-charts/dist/es2015/common/default-error-handler.js","./node_modules/@progress/kendo-charts/dist/es2015/common/keys.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-major-unit.js","./node_modules/@progress/kendo-charts/dist/es2015/core/point.js","./node_modules/@progress/kendo-charts/dist/es2015/core/box.js","./node_modules/@progress/kendo-charts/dist/es2015/core/ring.js","./node_modules/@progress/kendo-charts/dist/es2015/core/shape-builder.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/easing-functions.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/animation-frame.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/animation-factory.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/animation.js","./node_modules/@progress/kendo-charts/dist/es2015/core/chart-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/box-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/shape-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/gradients.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/box-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/core/root-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/float-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/text.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/rect-to-box.js","./node_modules/@progress/kendo-charts/dist/es2015/core/text-box.js","./node_modules/@progress/kendo-charts/dist/es2015/core/title.js","./node_modules/@progress/kendo-charts/dist/es2015/core/axis-label.js","./node_modules/@progress/kendo-charts/dist/es2015/core/note.js","./node_modules/@progress/kendo-charts/dist/es2015/services/intl-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/format-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/chart-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/dom-events-builder.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/create-axis-tick.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/create-axis-grid-line.js","./node_modules/@progress/kendo-charts/dist/es2015/core/axis.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/absolute-date-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/add-ticks.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/to-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/add-duration.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/start-of-week.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/floor-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/ceil-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-comparer.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/to-time.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-equals.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-index.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/duration.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/parse-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/parse-dates.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/first-day.js","./node_modules/@progress/kendo-charts/dist/es2015/core/category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/core/date-category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/floor.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/ceil.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/limit-coordinate.js","./node_modules/@progress/kendo-charts/dist/es2015/core/numeric-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-axis-min.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-axis-max.js","./node_modules/@progress/kendo-charts/dist/es2015/core/date-value-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/logarithmic-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/mixins/grid-lines-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/polar-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/mixins/radar-numeric-axis-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-numeric-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-logarithmic-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/curve-processor.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/find-axis-by-name.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-pane.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/count-numbers.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/aggregates.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/get-field.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/series-binder.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/error-range-calculator.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/error-bar-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/categorical-error-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/eval-options.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/categories-count.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/categorical-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/point-events-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/note-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/step-line-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/step-line-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/spline-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/line-chart-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/clip-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/any-has-z-index.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/clip-animation-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/step-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/spline-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/axis-group-range-tracker.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar-label.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/has-gradient-overlay.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/cluster-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/stack-wrap.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/candlestick-chart/candlestick.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/are-numbers.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/candlestick-chart/candlestick-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/box-plot.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/vertical-box-plot.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/box-plot-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/scatter-error-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/has-value.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/scatter-charts/scatter-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bubble-chart/bubble.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bubble-chart/bubble-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/target.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/bullet.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/bullet-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/base-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/crosshair/crosshair-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/crosshair/crosshair.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/chart-container.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pane.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/append-if-not-null.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/segment-visible.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/bind-segments.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/equals-ignore-case.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/filter-series-by-type.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/get-date-field.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/is-date-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/single-item-or-array.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/create-out-of-range-points.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/plotarea-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/plotarea-events-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/series-aggregator.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/default-aggregates.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-bar-chart/range-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-bar-chart/range-bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-line-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/spline-range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/step-range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/ohlc-chart/ohlc-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/ohlc-chart/ohlc-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/waterfall-chart/waterfall-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/waterfall-chart/waterfall-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/categorical-plotarea.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/observable.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/base-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-attribute.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-all-attributes.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-style.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/node-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-svg.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/gradient-stop-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/linear-gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/radial-gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/clip-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/definition-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/root-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/arc-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/circle-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/group-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/html-encode.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/image-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/multi-path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/rect-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/text-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/node-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/utils/render-path.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/group-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/throttle.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/root-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/quad-root.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/quad-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/shapes-quad-tree.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/surface-cursor.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/arc-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/circle-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/image-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/multi-path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/rect-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/text-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/surface-factory.js","./node_modules/@progress/kendo-drawing/dist/es2015/surface.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/highlight.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/accept-key.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/to-chart-axis-ranges.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/pannable.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/zoom-selection.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/mousewheel-zoom.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/translate-to-point.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align-start.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align-start-reverse.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-item.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/plotarea-factory.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/selection.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/shared-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/bar-chart-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/bubble-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/fade-in-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/pie-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/scatter-charts/scatter-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/xy-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pie-chart/pie-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/pie-chart-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pie-chart/pie-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/pie-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/donut-chart/donut-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/donut-chart/donut-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/donut-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/polar-plotarea-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-scatter-chart/polar-scatter-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-line-chart/polar-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/spline-polar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/polar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/polar-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/polar-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-line-chart/radar-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/spline-radar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/radar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/radar-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-bar-chart/radar-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/radar-cluster-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/radar-stack-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-bar-chart/radar-bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/radar-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/funnel-chart/funnel-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/funnel-chart/funnel-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/funnel-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/heatmap-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/heatmap-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/color-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/heatmap-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/register-charts.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/chart.js","./node_modules/@progress/kendo-charts/dist/es2015/sparkline/shared-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/sparkline/sparkline.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/fade-out-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/navigator-hint.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/navigator.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/stock-chart.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/arc.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/rect.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/v-align.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/stack-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/create-stack-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/stack.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/v-stack.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/wrap-elements.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/wrap.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/v-wrap.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/fit.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/path-parser.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/export-group.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/export-image.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/export-svg.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/pad.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/build-label-element.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/get-range.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/unpad.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/arrow-linear-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/arrow-linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/bar-linear-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/bar-linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/arc-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/range-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/range-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/encoding.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code11.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code39.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code39-extended.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code93.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/postnet.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code128.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/msi.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/ean13.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/ean8.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/main.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code93-extended.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/surface-size.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/barcode.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/barcode-validator.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/free-cell-visitor.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoding-result.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoders/iso-encoder.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoding.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/qr-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/data-mode-instances.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/numeric-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/alpha-numeric-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/byte-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoders/utf8-encoder.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/version-codewords.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/qrcode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/qrcode-validator.js","./node_modules/@progress/kendo-charts/dist/es2015/map/datums.js","./node_modules/@progress/kendo-charts/dist/es2015/map/location.js","./node_modules/@progress/kendo-charts/dist/es2015/map/crs.js","./node_modules/@progress/kendo-charts/dist/es2015/map/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/observable.js","./node_modules/@progress/kendo-charts/dist/es2015/map/attribution.js","./node_modules/@progress/kendo-charts/dist/es2015/map/navigator.js","./node_modules/@progress/kendo-charts/dist/es2015/map/zoom.js","./node_modules/@progress/kendo-charts/dist/es2015/map/extent.js","./node_modules/@progress/kendo-charts/dist/es2015/map/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/map/tooltip/tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/layer.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/tile.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/draggable.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/shape.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/bubble.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/marker.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/fx.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/user-events.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/scroller.js","./node_modules/@progress/kendo-charts/dist/es2015/services/map-service.js","./node_modules/@progress/kendo-charts/dist/es2015/map/map.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/base-theme.js","./node_modules/@progress/kendo-angular-charts/fesm2015/kendo-angular-charts.js","./node_modules/@telerik/kendo-draggable/dist/es2015/main.js","./node_modules/@progress/kendo-angular-common/fesm2015/kendo-angular-common.js","./node_modules/@progress/kendo-date-math/dist/es2015/clone-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/adjust-dst.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-days.js","./node_modules/@progress/kendo-date-math/dist/es2015/create-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/get-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/is-equal.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-day-of-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-months.js","./node_modules/@progress/kendo-date-math/dist/es2015/set-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-years.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-decades.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-centuries.js","./node_modules/@progress/kendo-date-math/dist/es2015/normalize-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-decade-of-century.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-decade-of-century.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-year-of-decade.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-year-of-decade.js","./node_modules/@progress/kendo-date-math/dist/es2015/set-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-month-of-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-centuries.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-decades.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-weeks.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-day-of-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/direction.enum.js","./node_modules/@progress/kendo-date-math/dist/es2015/day-of-week.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-months.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-month-of-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-years.js","./node_modules/@progress/kendo-date-math/dist/es2015/day.enum.js","./node_modules/@progress/kendo-date-math/dist/es2015/prev-day-of-week.js","./node_modules/@progress/kendo-date-math/dist/es2015/week-in-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/constants.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/@progress/kendo-angular-dateinputs/fesm2015/kendo-angular-dateinputs.js","./node_modules/@progress/kendo-angular-dialog/fesm2015/kendo-angular-dialog.js","./node_modules/rxjs/dist/esm/internal/util/not.js","./node_modules/rxjs/dist/esm/internal/operators/skipWhile.js","./node_modules/@progress/kendo-angular-treeview/fesm2015/kendo-angular-treeview.js","./node_modules/@progress/kendo-angular-dropdowns/fesm2015/kendo-angular-dropdowns.js","./node_modules/rxjs/dist/esm/internal/operators/partition.js","./node_modules/orderedmap/dist/index.js","./node_modules/prosemirror-model/dist/index.js","./node_modules/prosemirror-transform/dist/index.js","./node_modules/prosemirror-state/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/constants.js","./node_modules/@progress/kendo-editor-common/dist/es2015/source.js","./node_modules/@progress/kendo-editor-common/dist/es2015/utils.js","./node_modules/@progress/kendo-editor-common/dist/es2015/mark.js","./node_modules/@progress/kendo-editor-common/dist/es2015/inline-style.js","./node_modules/@progress/kendo-editor-common/dist/es2015/link.js","./node_modules/@progress/kendo-editor-common/dist/es2015/blockNode.js","./node_modules/@progress/kendo-editor-common/dist/es2015/align.js","./node_modules/@progress/kendo-editor-common/dist/es2015/cleanFormatting.js","./node_modules/prosemirror-schema-list/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/list-settings.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/indent-rules.js","./node_modules/prosemirror-commands/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/blockquote.js","./node_modules/@progress/kendo-editor-common/dist/es2015/indent.js","./node_modules/@progress/kendo-editor-common/dist/es2015/lists.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/align-rules.js","./node_modules/w3c-keyname/index.js","./node_modules/prosemirror-keymap/dist/index.js","./node_modules/prosemirror-view/dist/index.js","./node_modules/prosemirror-tables/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/schema.js","./node_modules/rope-sequence/dist/index.js","./node_modules/prosemirror-history/dist/index.js","./node_modules/prosemirror-inputrules/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/commands.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/keymap.js","./node_modules/@progress/kendo-editor-common/dist/es2015/listConvert.js","./node_modules/@progress/kendo-editor-common/dist/es2015/paste.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/highlight.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/resize-utils.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/image-resize.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/caret-color.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/table-view.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/utils.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/column-resize.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/table-resize.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/row-resize.js","./node_modules/prosemirror-gapcursor/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/table.js","./node_modules/@progress/kendo-angular-editor/fesm2015/kendo-angular-editor.js","./node_modules/@progress/kendo-editor-common/dist/es2015/text.js","./node_modules/@progress/kendo-editor-common/dist/es2015/image.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/placeholder.js","./node_modules/rxjs/dist/esm/internal/operators/switchMapTo.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/utils.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/ttf.js","./node_modules/@progress/pako-esm/dist/pako-esm2015.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/deflate.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/core.js","./node_modules/@progress/kendo-drawing/dist/es2015/html/core.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/template.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/drawing.js","./node_modules/@progress/kendo-angular-pdf-export/fesm2015/kendo-angular-pdf-export.js","./node_modules/@progress/kendo-ooxml/dist/es2015/services/intl-service.js","./node_modules/@progress/kendo-ooxml/dist/es2015/services/template-service.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/getter.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/map.js","./node_modules/@progress/kendo-ooxml/dist/es2015/excel-exporter.js","./node_modules/@progress/jszip-esm/dist/jszip-esm2015.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/time.js","./node_modules/@progress/kendo-ooxml/dist/es2015/ooxml.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/create-zip.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-string.js","./node_modules/@progress/kendo-intl/dist/es2015/error-details.js","./node_modules/@progress/kendo-intl/dist/es2015/errors.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/info.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/default-data.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/territory.js","./node_modules/@progress/kendo-intl/dist/es2015/common/constants.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/date-format-names.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/parse-range-date.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/currency.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/constants.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/first-day.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/weekend-range.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-negative-zero.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/format-currency-symbol.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/group-integer.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/is-currency-style.js","./node_modules/@progress/kendo-intl/dist/es2015/common/pad.js","./node_modules/@progress/kendo-intl/dist/es2015/common/round.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/standard-number-format.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/utils.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/custom-number-format.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/format-options.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/format-number.js","./node_modules/@progress/kendo-intl/dist/es2015/common/format-string.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/date-pattern.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/date-name-type.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/format-names.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-date.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/constants.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/format-date.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/parse-date.js","./node_modules/@progress/kendo-intl/dist/es2015/format.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-number.js","./node_modules/@progress/kendo-angular-excel-export/fesm2015/kendo-angular-excel-export.js","./node_modules/@progress/kendo-angular-grid/fesm2015/kendo-angular-grid.js","./node_modules/rxjs/dist/esm/internal/operators/bufferCount.js","./node_modules/@progress/kendo-angular-icons/fesm2015/kendo-angular-icons.js","./node_modules/@progress/kendo-angular-indicators/fesm2015/kendo-angular-indicators.js","./node_modules/@progress/kendo-angular-inputs/fesm2015/kendo-angular-inputs.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-string.js","./node_modules/@telerik/kendo-intl/dist/es2015/error-details.js","./node_modules/@telerik/kendo-intl/dist/es2015/errors.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/info.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/default-data.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load-numbers.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load-dates.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/territory.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/load.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/date-format-names.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/parse-range-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/currency.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/first-day.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/weekend-range.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-negative-zero.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-currency-symbol.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/group-integer.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/is-currency-style.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/pad.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/round.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/standard-number-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/utils.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/custom-number-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-options.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/format-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/numbers/parse-number.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/format-string.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/date-pattern.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/date-name-type.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/format-names.js","./node_modules/@telerik/kendo-intl/dist/es2015/common/is-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/constants.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/format-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/time-utils.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/parse-date.js","./node_modules/@telerik/kendo-intl/dist/es2015/dates/split-date-format.js","./node_modules/@telerik/kendo-intl/dist/es2015/format.js","./node_modules/@progress/kendo-angular-intl/fesm2015/kendo-angular-intl.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/date-field-name.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/number-symbols.js","./node_modules/@telerik/kendo-intl/dist/es2015/cldr/set-data.js","./node_modules/@progress/kendo-angular-intl/locales/ru/all.js","./node_modules/@progress/kendo-angular-l10n/fesm2015/kendo-angular-l10n.js","./node_modules/@progress/kendo-angular-label/fesm2015/kendo-angular-label.js","./node_modules/@progress/kendo-angular-progressbar/fesm2015/kendo-angular-progressbar.js","./node_modules/@progress/kendo-angular-layout/fesm2015/kendo-angular-layout.js","./node_modules/@progress/kendo-angular-listbox/fesm2015/kendo-angular-listbox.js","./node_modules/@progress/kendo-angular-listview/fesm2015/kendo-angular-listview.js","./node_modules/@progress/kendo-angular-menu/fesm2015/kendo-angular-menu.js","./node_modules/@progress/kendo-angular-navigation/fesm2015/kendo-angular-navigation.js","./node_modules/@progress/kendo-angular-notification/fesm2015/kendo-angular-notification.js","./node_modules/@progress/kendo-angular-pager/fesm2015/kendo-angular-pager.js","./node_modules/@progress/kendo-angular-popup/fesm2015/kendo-angular-popup.js","./node_modules/@progress/kendo-angular-toolbar/fesm2015/kendo-angular-toolbar.js","./node_modules/@progress/kendo-angular-upload/fesm2015/kendo-angular-upload.js","./node_modules/@progress/kendo-common/dist/es2015/util.js","./node_modules/@progress/kendo-common/dist/es2015/support.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/field-list.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/getter.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/setter.js","./node_modules/@progress/kendo-data-query/dist/es2015/utils.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-descriptor.interface.js","./node_modules/@progress/kendo-data-query/dist/es2015/funcs.js","./node_modules/@progress/kendo-data-query/dist/es2015/accessor.js","./node_modules/@progress/kendo-data-query/dist/es2015/odata.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/mvc/operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filter-serialization.common.js","./node_modules/@progress/kendo-data-query/dist/es2015/mvc/deserialization.js","./node_modules/@progress/kendo-data-query/dist/es2015/sorting/sort-array.operator.js","./node_modules/@progress/kendo-data-query/dist/es2015/transducers.js","./node_modules/@progress/kendo-data-query/dist/es2015/grouping/aggregate.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-no-eval.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-expression.factory.js","./node_modules/@progress/kendo-data-query/dist/es2015/grouping/group.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/sorting/sort.js","./node_modules/@progress/kendo-data-query/dist/es2015/array.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/operators.enum.js","./node_modules/@progress/kendo-draggable/dist/es2015/main.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/class.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/color.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/named-colors.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/parse-color.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/support.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/has-observers.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/options-store.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/close-or-less.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/arc.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersection.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/circle.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/close.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/ellipse-extreme-angles.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersections-count.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/matrix.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/point.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/rect.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/is-out-of-end-point.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/calculate-curve-at.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/to-cubic-polynomial.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/complex-number.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/solve-cubic-equation.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/has-roots-in-range.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/segment.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/curve-intersections-count.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/size.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/to-matrix.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/transformation.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/transform.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-options.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/gradient-stop.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/stops-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/linear-gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/radial-gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/measurable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/paintable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/traversable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-accessors.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-geometry.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-points.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/shape-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/parse-path.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/circle.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/element.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/elements-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/group.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/image.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/geometry-elements-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/path.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/text.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/elements-bounding-box.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/elements-clippend-bounding-box.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/lru-cache.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/measure-text.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/text-metrics.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/util.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/append.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/arabic-to-roman.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/create-promise.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/defined.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/definition-id.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/deg.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/encode-base64.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/encode-utf.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/is-transparent.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/last.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/limit-value.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/merge-sort.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/rad.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/round.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/value-or-default.js","./node_modules/@progress/kendo-file-saver/dist/es2015/save-as.js","./node_modules/@progress/kendo-file-saver/dist/es2015/base64.js","./node_modules/@progress/kendo-licensing/dist/index-esm.js","./node_modules/@progress/kendo-popup-common/dist/es2015/align-point.js","./node_modules/@progress/kendo-popup-common/dist/es2015/align.js","./node_modules/@progress/kendo-popup-common/dist/es2015/add-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/owner-document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window.js","./node_modules/@progress/kendo-popup-common/dist/es2015/document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scrollbar-width.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window-viewport.js","./node_modules/@progress/kendo-popup-common/dist/es2015/bounding-offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parents.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/element-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset-parent.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset-parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position-with-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/remove-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/collision.js","./node_modules/@progress/kendo-popup-common/dist/es2015/restrict-to-view.js","./node_modules/@progress/kendo-popup-common/dist/es2015/siblings.js","./node_modules/@progress/kendo-popup-common/dist/es2015/sibling-container.js","./node_modules/@progress/kendo-popup-common/dist/es2015/utils.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position-element.js","./node_modules/hammerjs/hammer.js","./node_modules/lodash/lodash.js","./node_modules/moment/locale/af.js","./node_modules/moment/locale/ar-dz.js","./node_modules/moment/locale/ar-kw.js","./node_modules/moment/locale/ar-ly.js","./node_modules/moment/locale/ar-ma.js","./node_modules/moment/locale/ar-sa.js","./node_modules/moment/locale/ar-tn.js","./node_modules/moment/locale/ar.js","./node_modules/moment/locale/az.js","./node_modules/moment/locale/be.js","./node_modules/moment/locale/bg.js","./node_modules/moment/locale/bm.js","./node_modules/moment/locale/bn-bd.js","./node_modules/moment/locale/bn.js","./node_modules/moment/locale/bo.js","./node_modules/moment/locale/br.js","./node_modules/moment/locale/bs.js","./node_modules/moment/locale/ca.js","./node_modules/moment/locale/cs.js","./node_modules/moment/locale/cv.js","./node_modules/moment/locale/cy.js","./node_modules/moment/locale/da.js","./node_modules/moment/locale/de-at.js","./node_modules/moment/locale/de-ch.js","./node_modules/moment/locale/de.js","./node_modules/moment/locale/dv.js","./node_modules/moment/locale/el.js","./node_modules/moment/locale/en-au.js","./node_modules/moment/locale/en-ca.js","./node_modules/moment/locale/en-gb.js","./node_modules/moment/locale/en-ie.js","./node_modules/moment/locale/en-il.js","./node_modules/moment/locale/en-in.js","./node_modules/moment/locale/en-nz.js","./node_modules/moment/locale/en-sg.js","./node_modules/moment/locale/eo.js","./node_modules/moment/locale/es-do.js","./node_modules/moment/locale/es-mx.js","./node_modules/moment/locale/es-us.js","./node_modules/moment/locale/es.js","./node_modules/moment/locale/et.js","./node_modules/moment/locale/eu.js","./node_modules/moment/locale/fa.js","./node_modules/moment/locale/fi.js","./node_modules/moment/locale/fil.js","./node_modules/moment/locale/fo.js","./node_modules/moment/locale/fr-ca.js","./node_modules/moment/locale/fr-ch.js","./node_modules/moment/locale/fr.js","./node_modules/moment/locale/fy.js","./node_modules/moment/locale/ga.js","./node_modules/moment/locale/gd.js","./node_modules/moment/locale/gl.js","./node_modules/moment/locale/gom-deva.js","./node_modules/moment/locale/gom-latn.js","./node_modules/moment/locale/gu.js","./node_modules/moment/locale/he.js","./node_modules/moment/locale/hi.js","./node_modules/moment/locale/hr.js","./node_modules/moment/locale/hu.js","./node_modules/moment/locale/hy-am.js","./node_modules/moment/locale/id.js","./node_modules/moment/locale/is.js","./node_modules/moment/locale/it-ch.js","./node_modules/moment/locale/it.js","./node_modules/moment/locale/ja.js","./node_modules/moment/locale/jv.js","./node_modules/moment/locale/ka.js","./node_modules/moment/locale/kk.js","./node_modules/moment/locale/km.js","./node_modules/moment/locale/kn.js","./node_modules/moment/locale/ko.js","./node_modules/moment/locale/ku.js","./node_modules/moment/locale/ky.js","./node_modules/moment/locale/lb.js","./node_modules/moment/locale/lo.js","./node_modules/moment/locale/lt.js","./node_modules/moment/locale/lv.js","./node_modules/moment/locale/me.js","./node_modules/moment/locale/mi.js","./node_modules/moment/locale/mk.js","./node_modules/moment/locale/ml.js","./node_modules/moment/locale/mn.js","./node_modules/moment/locale/mr.js","./node_modules/moment/locale/ms-my.js","./node_modules/moment/locale/ms.js","./node_modules/moment/locale/mt.js","./node_modules/moment/locale/my.js","./node_modules/moment/locale/nb.js","./node_modules/moment/locale/ne.js","./node_modules/moment/locale/nl-be.js","./node_modules/moment/locale/nl.js","./node_modules/moment/locale/nn.js","./node_modules/moment/locale/oc-lnc.js","./node_modules/moment/locale/pa-in.js","./node_modules/moment/locale/pl.js","./node_modules/moment/locale/pt-br.js","./node_modules/moment/locale/pt.js","./node_modules/moment/locale/ro.js","./node_modules/moment/locale/ru.js","./node_modules/moment/locale/sd.js","./node_modules/moment/locale/se.js","./node_modules/moment/locale/si.js","./node_modules/moment/locale/sk.js","./node_modules/moment/locale/sl.js","./node_modules/moment/locale/sq.js","./node_modules/moment/locale/sr-cyrl.js","./node_modules/moment/locale/sr.js","./node_modules/moment/locale/ss.js","./node_modules/moment/locale/sv.js","./node_modules/moment/locale/sw.js","./node_modules/moment/locale/ta.js","./node_modules/moment/locale/te.js","./node_modules/moment/locale/tet.js","./node_modules/moment/locale/tg.js","./node_modules/moment/locale/th.js","./node_modules/moment/locale/tk.js","./node_modules/moment/locale/tl-ph.js","./node_modules/moment/locale/tlh.js","./node_modules/moment/locale/tr.js","./node_modules/moment/locale/tzl.js","./node_modules/moment/locale/tzm-latn.js","./node_modules/moment/locale/tzm.js","./node_modules/moment/locale/ug-cn.js","./node_modules/moment/locale/uk.js","./node_modules/moment/locale/ur.js","./node_modules/moment/locale/uz-latn.js","./node_modules/moment/locale/uz.js","./node_modules/moment/locale/vi.js","./node_modules/moment/locale/x-pseudo.js","./node_modules/moment/locale/yo.js","./node_modules/moment/locale/zh-cn.js","./node_modules/moment/locale/zh-hk.js","./node_modules/moment/locale/zh-mo.js","./node_modules/moment/locale/zh-tw.js","./node_modules/moment/moment.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js","./node_modules/rxjs/dist/esm/internal/observable/zip.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throttle.js","./node_modules/rxjs/dist/esm/internal/operators/throttleTime.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./node_modules/tslib/tslib.es6.js","./node_modules/@angular/animations/fesm2020/animations.mjs","./node_modules/@angular/common/fesm2020/common.mjs","./node_modules/@angular/common/fesm2020/http.mjs","./node_modules/@angular/common/locales/ru.mjs","./node_modules/@angular/core/fesm2020/core.mjs","./node_modules/@angular/forms/fesm2020/forms.mjs","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/@angular/animations/fesm2020/browser.mjs","./node_modules/@angular/platform-browser/fesm2020/animations.mjs","./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/@angular/router/fesm2020/router.mjs","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { mergeMap } from 'rxjs/operators';\nimport { from } from 'rxjs';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\n\nconst JWT_OPTIONS = new InjectionToken('JWT_OPTIONS');\n\n// tslint:disable:no-bitwise\nclass JwtHelperService {\n constructor(config = null) {\n this.tokenGetter = (config && config.tokenGetter) || function () { };\n }\n urlBase64Decode(str) {\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0: {\n break;\n }\n case 2: {\n output += '==';\n break;\n }\n case 3: {\n output += '=';\n break;\n }\n default: {\n throw new Error('Illegal base64url string!');\n }\n }\n return this.b64DecodeUnicode(output);\n }\n // credits for decoder goes to https://github.com/atk\n b64decode(str) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n let output = '';\n str = String(str).replace(/=+$/, '');\n if (str.length % 4 === 1) {\n throw new Error(`'atob' failed: The string to be decoded is not correctly encoded.`);\n }\n for (\n // initialize result and counters\n let bc = 0, bs, buffer, idx = 0; \n // get next character\n (buffer = str.charAt(idx++)); \n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4)\n ? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))\n : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n }\n b64DecodeUnicode(str) {\n return decodeURIComponent(Array.prototype.map\n .call(this.b64decode(str), (c) => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(''));\n }\n decodeToken(token = this.tokenGetter()) {\n if (!token || token === '') {\n return null;\n }\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw new Error(`The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.`);\n }\n const decoded = this.urlBase64Decode(parts[1]);\n if (!decoded) {\n throw new Error('Cannot decode the token.');\n }\n return JSON.parse(decoded);\n }\n getTokenExpirationDate(token = this.tokenGetter()) {\n let decoded;\n decoded = this.decodeToken(token);\n if (!decoded || !decoded.hasOwnProperty('exp')) {\n return null;\n }\n const date = new Date(0);\n date.setUTCSeconds(decoded.exp);\n return date;\n }\n isTokenExpired(token = this.tokenGetter(), offsetSeconds) {\n if (!token || token === '') {\n return true;\n }\n const date = this.getTokenExpirationDate(token);\n offsetSeconds = offsetSeconds || 0;\n if (date === null) {\n return false;\n }\n return !(date.valueOf() > new Date().valueOf() + offsetSeconds * 1000);\n }\n getAuthScheme(authScheme, request) {\n if (typeof authScheme === 'function') {\n return authScheme(request);\n }\n return authScheme;\n }\n}\nJwtHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtHelperService, deps: [{ token: JWT_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable });\nJwtHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtHelperService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtHelperService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [JWT_OPTIONS]\n }] }]; } });\n\nclass JwtInterceptor {\n constructor(config, jwtHelper, document) {\n this.jwtHelper = jwtHelper;\n this.document = document;\n this.standardPorts = ['80', '443'];\n this.tokenGetter = config.tokenGetter;\n this.headerName = config.headerName || 'Authorization';\n this.authScheme =\n config.authScheme || config.authScheme === ''\n ? config.authScheme\n : 'Bearer ';\n this.allowedDomains = config.allowedDomains || [];\n this.disallowedRoutes = config.disallowedRoutes || [];\n this.throwNoTokenError = config.throwNoTokenError || false;\n this.skipWhenExpired = config.skipWhenExpired;\n }\n isAllowedDomain(request) {\n const requestUrl = new URL(request.url, this.document.location.origin);\n // If the host equals the current window origin,\n // the domain is allowed by default\n if (requestUrl.host === this.document.location.host) {\n return true;\n }\n // If not the current domain, check the allowed list\n const hostName = `${requestUrl.hostname}${requestUrl.port && !this.standardPorts.includes(requestUrl.port)\n ? ':' + requestUrl.port\n : ''}`;\n return (this.allowedDomains.findIndex((domain) => typeof domain === 'string'\n ? domain === hostName\n : domain instanceof RegExp\n ? domain.test(hostName)\n : false) > -1);\n }\n isDisallowedRoute(request) {\n const requestedUrl = new URL(request.url, this.document.location.origin);\n return (this.disallowedRoutes.findIndex((route) => {\n if (typeof route === 'string') {\n const parsedRoute = new URL(route, this.document.location.origin);\n return (parsedRoute.hostname === requestedUrl.hostname &&\n parsedRoute.pathname === requestedUrl.pathname);\n }\n if (route instanceof RegExp) {\n return route.test(request.url);\n }\n return false;\n }) > -1);\n }\n handleInterception(token, request, next) {\n const authScheme = this.jwtHelper.getAuthScheme(this.authScheme, request);\n let tokenIsExpired = false;\n if (!token && this.throwNoTokenError) {\n throw new Error('Could not get token from tokenGetter function.');\n }\n if (this.skipWhenExpired) {\n tokenIsExpired = token ? this.jwtHelper.isTokenExpired(token) : true;\n }\n if (token && tokenIsExpired && this.skipWhenExpired) {\n request = request.clone();\n }\n else if (token) {\n request = request.clone({\n setHeaders: {\n [this.headerName]: `${authScheme}${token}`,\n },\n });\n }\n return next.handle(request);\n }\n intercept(request, next) {\n if (!this.isAllowedDomain(request) || this.isDisallowedRoute(request)) {\n return next.handle(request);\n }\n const token = this.tokenGetter(request);\n if (token instanceof Promise) {\n return from(token).pipe(mergeMap((asyncToken) => {\n return this.handleInterception(asyncToken, request, next);\n }));\n }\n else {\n return this.handleInterception(token, request, next);\n }\n }\n}\nJwtInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtInterceptor, deps: [{ token: JWT_OPTIONS }, { token: JwtHelperService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nJwtInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtInterceptor, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [JWT_OPTIONS]\n }] }, { type: JwtHelperService }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\nclass JwtModule {\n constructor(parentModule) {\n if (parentModule) {\n throw new Error(`JwtModule is already loaded. It should only be imported in your application's main module.`);\n }\n }\n static forRoot(options) {\n return {\n ngModule: JwtModule,\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: JwtInterceptor,\n multi: true,\n },\n options.jwtOptionsProvider || {\n provide: JWT_OPTIONS,\n useValue: options.config,\n },\n JwtHelperService,\n ],\n };\n }\n}\nJwtModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule, deps: [{ token: JwtModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });\nJwtModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule });\nJwtModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule, decorators: [{\n type: NgModule\n }], ctorParameters: function () { return [{ type: JwtModule, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }]; } });\n\n/*\n * Public API Surface of angular-jwt\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { JWT_OPTIONS, JwtHelperService, JwtInterceptor, JwtModule };\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Optional, Input, Output, HostBinding, HostListener, isDevMode, Component, ContentChildren, NgModule, InjectionToken, Inject, forwardRef, ElementRef, ViewContainerRef, ContentChild, ViewChild } from '@angular/core';\nimport * as i8 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, Keys, isChanged, hasObservers, guid, EventsModule } from '@progress/kendo-angular-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { Subject, Subscription, fromEvent, merge } from 'rxjs';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { filter, take } from 'rxjs/operators';\nimport * as i4 from '@angular/animations';\nimport { sequence, query, style, stagger, animate } from '@angular/animations';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-buttons',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650440722,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nconst resolvedPromise = Promise.resolve(null);\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst tick = (f) => (resolvedPromise.then(f));\n/**\n * @hidden\n */\nfunction isDocumentNode(container) {\n return container.nodeType === 9;\n}\n/**\n * @hidden\n */\nfunction closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n const matches = Element.prototype.matches ?\n (el, sel) => el.matches(sel)\n : (el, sel) => el.msMatchesSelector(sel);\n let node = element;\n while (node && !isDocumentNode(node)) {\n if (matches(node, selector)) {\n return node;\n }\n node = node.parentNode;\n }\n}\n/**\n * @hidden\n */\nconst replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\\{\\\\s*${name}\\\\s*\\}`, 'g'), value);\n/**\n * @hidden\n */\nconst SIZES = {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n};\nconst ROUNDNESS = {\n small: 'sm',\n medium: 'md',\n large: 'lg',\n full: 'full'\n};\n/**\n * @hidden\n *\n * Returns the styling classes to be added and removed\n */\nconst getStylingClasses = (componentType, stylingOption, previousValue, newValue) => {\n switch (stylingOption) {\n case 'size':\n return {\n toRemove: `k-${componentType}-${SIZES[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${SIZES[newValue]}` : ''\n };\n case 'rounded':\n return {\n toRemove: `k-rounded-${ROUNDNESS[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-rounded-${ROUNDNESS[newValue]}` : ''\n };\n case 'fillMode':\n return {\n toRemove: `k-${componentType}-${previousValue}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${newValue}` : ''\n };\n default:\n break;\n }\n};\n/**\n * @hidden\n *\n * Returns the themeColor classes to be added and removed\n */\nconst getThemeColorClasses = (componentType, prevFillMode, fillMode, previousValue, newValue) => {\n return {\n toRemove: `k-${componentType}-${prevFillMode}-${previousValue}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${fillMode}-${newValue}` : ''\n };\n};\n/**\n * @hidden\n *\n * Returns true if the used browser is Firefox.\n */\nconst isFirefox = (userAgent) => {\n const desktopBrowser = detectDesktopBrowser(userAgent);\n const mobileOS = detectMobileOS(userAgent);\n return (desktopBrowser && desktopBrowser.mozilla) || (mobileOS && mobileOS.browser === 'firefox');\n};\n\n/**\n * @hidden\n */\nclass KendoButtonService {\n constructor() {\n this.buttonClicked = new Subject();\n this.buttonClicked$ = this.buttonClicked.asObservable();\n }\n click(button) {\n this.buttonClicked.next(button);\n }\n}\nKendoButtonService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KendoButtonService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nKendoButtonService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KendoButtonService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KendoButtonService, decorators: [{\n type: Injectable\n }] });\n\nconst SPAN_TAG_NAME = 'SPAN';\nconst DEFAULT_ROUNDED$2 = 'medium';\nconst DEFAULT_SIZE$1 = 'medium';\nconst DEFAULT_THEME_COLOR$1 = 'base';\nconst DEFAULT_FILL_MODE$2 = 'solid';\n/**\n * Represents the Kendo UI Button component for Angular.\n */\nclass ButtonDirective {\n constructor(element, renderer, service, localization, ngZone) {\n this.service = service;\n this.ngZone = ngZone;\n /**\n * Provides visual styling that indicates if the Button is active.\n * By default, `toggleable` is set to `false`.\n */\n this.toggleable = false;\n /**\n * @hidden\n */\n this.role = 'button';\n /**\n * Fires each time the selected state of a toggleable button is changed.\n *\n * The event argument is the new selected state (boolean).\n */\n this.selectedChange = new EventEmitter();\n /**\n * Fires each time the user clicks the button.\n */\n this.click = new EventEmitter();\n this.isDisabled = false;\n this.isIcon = false;\n this.isIconClass = false;\n this._size = DEFAULT_SIZE$1;\n this._rounded = DEFAULT_ROUNDED$2;\n this._fillMode = DEFAULT_FILL_MODE$2;\n this._themeColor = DEFAULT_THEME_COLOR$1;\n this._focused = false;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subs.add(localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n this.element = element.nativeElement;\n this.renderer = renderer;\n }\n /**\n * Backwards-compatible alias\n *\n * @hidden\n */\n get togglable() {\n return this.toggleable;\n }\n /**\n * @hidden\n */\n set togglable(value) {\n this.toggleable = value;\n }\n /**\n * Sets the selected state of the Button.\n */\n get selected() {\n return this._selected || false;\n }\n set selected(value) {\n this._selected = value;\n }\n /**\n * @hidden\n */\n set tabIndex(index) {\n this.element.tabIndex = index;\n }\n get tabIndex() {\n return this.element.tabIndex;\n }\n /**\n * Defines the name for an existing icon in a Kendo UI theme.\n * The icon is rendered inside the Button by a `span.k-icon` element.\n */\n set icon(icon) {\n if (icon) {\n this.iconSetter(icon, () => {\n this.isIcon = true;\n const classes = 'k-button-icon k-icon k-i-' + icon;\n this.addIcon(classes);\n });\n }\n else {\n this.isIcon = false;\n this.updateIconNode();\n }\n }\n /**\n * Defines a CSS class—or multiple classes separated by spaces—\n * which are applied to a `span` element inside the Button. Allows the usage of custom icons.\n */\n set iconClass(iconClassName) {\n if (iconClassName) {\n this.iconSetter(iconClassName, () => {\n this.isIconClass = true;\n const classes = 'k-button-icon ' + iconClassName;\n this.addIcon(classes);\n });\n }\n else {\n this.isIconClass = false;\n this.updateIconNode();\n }\n }\n /**\n * Defines a URL which is used for an `img` element inside the Button.\n * The URL can be relative or absolute. If relative, it is evaluated with relation to the web page URL.\n */\n set imageUrl(imageUrl) {\n if (imageUrl) {\n this.iconSetter(imageUrl, this.addImgIcon.bind(this));\n }\n else {\n this.removeImageNode();\n }\n }\n /**\n * If set to `true`, it disables the Button.\n */\n set disabled(disabled) {\n //Required, because in FF focused buttons are not blurred on disabled\n if (disabled && isDocumentAvailable() && isFirefox(navigator.userAgent)) {\n this.blur();\n }\n this.isDisabled = disabled;\n this.renderer.setProperty(this.element, 'disabled', disabled);\n }\n get disabled() {\n return this.isDisabled;\n }\n /**\n * The size property specifies the padding of the Button\n * ([see example]({% slug appearance_button %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$1;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the Button\n * ([see example]({% slug appearance_button %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$2;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the Button\n * ([see example]({% slug appearance_button %}#toc-fillMode)).\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `clear`\n * * `link`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$2;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug appearance_button %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` (default)\n * * `primary`\n * * `secondary`\n * * `tertiary`\n * * `info`\n * * `success`\n * * `warning`\n * * `error`\n * * `dark`\n * * `light`\n * * `inverse`\n * * `none`\n */\n set themeColor(themeColor) {\n const newThemeColor = themeColor ? themeColor : DEFAULT_THEME_COLOR$1;\n this.handleThemeColor(newThemeColor);\n this._themeColor = newThemeColor;\n }\n get themeColor() {\n return this._themeColor;\n }\n set isFocused(isFocused) {\n this.toggleClass('k-focus', isFocused);\n this._focused = isFocused;\n }\n get isFocused() {\n return this._focused;\n }\n get classButton() {\n return true;\n }\n get isToggleable() {\n return this.toggleable;\n }\n get roleSetter() {\n return this.role;\n }\n get classDisabled() {\n return this.isDisabled;\n }\n get classActive() {\n return this.selected;\n }\n get getDirection() {\n return this.direction;\n }\n /**\n * @hidden\n */\n onFocus() {\n this.isFocused = true;\n }\n /**\n * @hidden\n */\n onBlur() {\n this.isFocused = false;\n }\n /**\n * @hidden\n */\n set primary(value) {\n this.themeColor = value ? 'primary' : 'base';\n }\n /**\n * @hidden\n */\n set look(value) {\n switch (value) {\n case 'default':\n this.fillMode = 'solid';\n break;\n default:\n this.fillMode = value;\n break;\n }\n }\n ngOnInit() {\n const isSpan = this.element.tagName === SPAN_TAG_NAME;\n this.addTextSpan();\n if (!this.element.hasAttribute('role') && this.togglable) {\n this.toggleAriaPressed(this.toggleable);\n }\n if (this.role) {\n this.setAttribute('role', this.role);\n }\n this.ngZone.runOutsideAngular(() => {\n this.subs.add(this.renderer.listen(this.element, 'click', this._onButtonClick.bind(this)));\n this.subs.add(this.renderer.listen(this.element, 'keydown', (event) => {\n const isSpaceOrEnter = event.keyCode === Keys.Space || event.keyCode === Keys.Enter;\n if (isSpan && isSpaceOrEnter) {\n this.click.emit(event);\n this._onButtonClick();\n }\n }));\n });\n }\n ngOnChanges(change) {\n if (isChanged('togglable', change) || isChanged('toggleable', change)) {\n this.toggleAriaPressed(this.toggleable);\n }\n }\n ngAfterViewInit() {\n const stylingOptions = ['size', 'rounded', 'fillMode'];\n stylingOptions.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n ngAfterViewChecked() {\n this.setIconTextClasses();\n }\n ngOnDestroy() {\n this.imageNode = null;\n this.iconNode = null;\n this.iconSpanNode = null;\n this.renderer = null;\n this.subs.unsubscribe();\n clearTimeout(this.deferTimeout);\n }\n /**\n * Focuses the Button component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.element.focus();\n this.isFocused = true;\n }\n }\n /**\n * Blurs the Button component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.element.blur();\n this.isFocused = false;\n }\n }\n /**\n * @hidden\n */\n setAttribute(attribute, value) {\n this.renderer.setAttribute(this.element, attribute, value);\n }\n /**\n * @hidden\n */\n removeAttribute(attribute) {\n this.renderer.removeAttribute(this.element, attribute);\n }\n /**\n * @hidden\n *\n * Internal setter that triggers selectedChange\n */\n setSelected(value) {\n const changed = this.selected !== value;\n this.selected = value;\n this.setAttribute('aria-pressed', this.selected.toString());\n this.toggleClass('k-selected', this.selected);\n if (changed && hasObservers(this.selectedChange)) {\n this.ngZone.run(() => {\n this.selectedChange.emit(value);\n });\n }\n }\n toggleAriaPressed(shouldSet) {\n if (!isDocumentAvailable()) {\n return;\n }\n if (shouldSet) {\n this.setAttribute('aria-pressed', this.selected.toString());\n }\n else {\n this.removeAttribute('aria-pressed');\n }\n }\n hasText() {\n return isDocumentAvailable() && this.element.textContent.trim().length > 0;\n }\n addImgIcon(imageUrl) {\n let renderer = this.renderer;\n if (!this.iconSpanNode) {\n this.iconSpanNode = renderer.createElement('span');\n renderer.setProperty(this.iconSpanNode, 'className', 'k-button-icon k-icon');\n }\n if (this.imageNode) {\n renderer.setProperty(this.imageNode, 'src', imageUrl);\n }\n else if (isDocumentAvailable()) {\n this.imageNode = renderer.createElement('img');\n renderer.setProperty(this.imageNode, 'src', imageUrl);\n renderer.setProperty(this.imageNode, 'className', 'k-image');\n renderer.setAttribute(this.imageNode, 'role', 'presentation');\n }\n this.iconSpanNode.appendChild(this.imageNode);\n this.prependChild(this.iconSpanNode);\n }\n addIcon(classNames) {\n let renderer = this.renderer;\n if (this.iconNode) {\n renderer.setProperty(this.iconNode, 'className', classNames);\n }\n else if (isDocumentAvailable()) {\n this.iconNode = renderer.createElement('span');\n renderer.setProperty(this.iconNode, 'className', classNames);\n renderer.setAttribute(this.iconNode, 'role', 'presentation');\n this.prependChild(this.iconNode);\n }\n }\n addTextSpan() {\n if (isDocumentAvailable() && this.hasText()) {\n const span = this.renderer.createElement('span');\n this.renderer.addClass(span, 'k-button-text');\n const buttonContentNodes = Array.from(this.element.childNodes);\n buttonContentNodes.forEach(node => this.renderer.appendChild(span, node));\n this.renderer.appendChild(this.element, span);\n }\n }\n prependChild(node) {\n this.defer(() => {\n if (this.renderer && node !== this.element.firstChild) {\n this.renderer.insertBefore(this.element, node, this.element.firstChild);\n }\n });\n }\n defer(callback) {\n this.ngZone.runOutsideAngular(() => {\n this.deferTimeout = setTimeout(callback, 0);\n });\n }\n iconSetter(icon, insertIcon) {\n if (icon) {\n insertIcon(icon);\n }\n this.setIconTextClasses();\n }\n removeImageNode() {\n if (this.imageNode && this.renderer.parentNode(this.imageNode)) {\n this.renderer.removeChild(this.element, this.imageNode);\n this.renderer.removeChild(this.element, this.iconSpanNode);\n this.imageNode = null;\n this.iconSpanNode = null;\n }\n }\n removeIconNode() {\n if (this.iconNode && this.renderer.parentNode(this.iconNode)) {\n this.renderer.removeChild(this.element, this.iconNode);\n this.iconNode = null;\n }\n if (this.iconSpanNode) {\n this.renderer.removeChild(this.element, this.iconSpanNode);\n this.iconSpanNode = null;\n }\n }\n updateIconNode() {\n if (!this.isIcon && !this.isIconClass) {\n this.removeIconNode();\n }\n }\n setIconTextClasses() {\n const hasIcon = this.isIcon || this.isIconClass || this.imageNode;\n this.toggleClass('k-icon-button', hasIcon && !this.hasText());\n }\n toggleClass(className, add) {\n if (add) {\n this.renderer.addClass(this.element, className);\n }\n else {\n this.renderer.removeClass(this.element, className);\n }\n }\n _onButtonClick() {\n if (!this.disabled && this.service) {\n this.ngZone.run(() => {\n this.service.click(this);\n });\n }\n if (this.togglable && !this.service) {\n this.setSelected(!this.selected);\n }\n }\n handleClasses(value, input) {\n const elem = this.element;\n const classes = getStylingClasses('button', input, this[input], value);\n if (input === 'fillMode') {\n this.handleThemeColor(this.themeColor, this[input], value);\n }\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleThemeColor(value, prevFillMode, fillMode) {\n const elem = this.element;\n const removeFillMode = prevFillMode ? prevFillMode : this.fillMode;\n const addFillMode = fillMode ? fillMode : this.fillMode;\n const themeColorClass = getThemeColorClasses('button', removeFillMode, addFillMode, this.themeColor, value);\n this.renderer.removeClass(elem, themeColorClass.toRemove);\n if (addFillMode !== 'none' && fillMode !== 'none') {\n if (themeColorClass.toAdd) {\n this.renderer.addClass(elem, themeColorClass.toAdd);\n }\n }\n }\n}\nButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: KendoButtonService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: { toggleable: \"toggleable\", togglable: \"togglable\", selected: \"selected\", tabIndex: \"tabIndex\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", disabled: \"disabled\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\", role: \"role\", primary: \"primary\", look: \"look\" }, outputs: { selectedChange: \"selectedChange\", click: \"click\" }, host: { listeners: { \"focus\": \"onFocus()\", \"blur\": \"onBlur()\" }, properties: { \"class.k-button\": \"this.classButton\", \"class.k-toggle-button\": \"this.isToggleable\", \"attr.role\": \"this.roleSetter\", \"attr.aria-disabled\": \"this.classDisabled\", \"class.k-disabled\": \"this.classDisabled\", \"class.k-selected\": \"this.classActive\", \"attr.dir\": \"this.getDirection\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoButton\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoButton',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoButton], span[kendoButton]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: KendoButtonService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { toggleable: [{\n type: Input\n }], togglable: [{\n type: Input\n }], selected: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], disabled: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], role: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], click: [{\n type: Output\n }], classButton: [{\n type: HostBinding,\n args: ['class.k-button']\n }], isToggleable: [{\n type: HostBinding,\n args: ['class.k-toggle-button']\n }], roleSetter: [{\n type: HostBinding,\n args: ['attr.role']\n }], classDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], classActive: [{\n type: HostBinding,\n args: ['class.k-selected']\n }], getDirection: [{\n type: HostBinding,\n args: ['attr.dir']\n }], onFocus: [{\n type: HostListener,\n args: ['focus']\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }], primary: [{\n type: Input\n }], look: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nconst tabindex = 'tabindex';\n/**\n * Represents the Kendo UI ButtonGroup component for Angular.\n */\nclass ButtonGroupComponent {\n constructor(service, localization, element) {\n this.service = service;\n this.element = element;\n /**\n * By default, the selection mode of the ButtonGroup is set to `multiple`.\n */\n this.selection = 'multiple';\n /**\n * Fires every time keyboard navigation occurs.\n */\n this.navigate = new EventEmitter();\n this._tabIndex = 0;\n this.currentTabIndex = 0;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.subs.add(localization.changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr'));\n }\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabIndex(value) {\n this._tabIndex = value;\n this.currentTabIndex = value;\n }\n get tabIndex() {\n return this._tabIndex;\n }\n get wrapperClass() {\n return true;\n }\n get disabledClass() {\n return this.disabled;\n }\n get stretchedClass() {\n return !!this.width;\n }\n get getRole() {\n return this.isSelectionSingle() ? 'radiogroup' : 'group';\n }\n get dir() {\n return this.direction;\n }\n get ariaDisabled() {\n return this.disabled;\n }\n get wrapperWidth() {\n return this.width;\n }\n get wrapperTabIndex() {\n return this.disabled ? undefined : this.currentTabIndex;\n }\n /**\n * @hidden\n */\n keydown(event) {\n if (!this.disabled) {\n this.navigateFocus(event);\n }\n }\n /**\n * @hidden\n */\n onFocus() {\n this.currentTabIndex = -1;\n const focusedIndex = this.buttons.toArray().findIndex(current => current.element.tabIndex !== -1);\n const index = focusedIndex === -1 ? 0 : focusedIndex;\n this.focus(this.buttons.filter((_current, i) => {\n return i === index;\n }));\n }\n /**\n * @hidden\n */\n focusout(event) {\n if (event.relatedTarget && event.relatedTarget.parentNode !== this.element.nativeElement) {\n this.defocus(this.buttons.toArray());\n this.currentTabIndex = this.tabIndex;\n }\n }\n ngOnInit() {\n this.subs.add(this.service.buttonClicked$.subscribe((button) => {\n let newSelectionValue;\n if (this.isSelectionSingle()) {\n newSelectionValue = true;\n this.deactivate(this.buttons.filter(current => current !== button));\n }\n else {\n this.defocus(this.buttons.toArray());\n newSelectionValue = !button.selected;\n }\n if (button.togglable) {\n button.setSelected(newSelectionValue);\n }\n button.setAttribute(tabindex, '0');\n }));\n }\n ngOnChanges(change) {\n if (isChanged('disabled', change)) {\n this.buttons.forEach((button) => {\n if (isPresent(this.disabled)) {\n button.disabled = this.disabled;\n }\n });\n }\n }\n ngAfterContentInit() {\n this.buttons.forEach((button) => {\n if (button.selected) {\n button.setAttribute(tabindex, '0');\n }\n else {\n button.setAttribute(tabindex, '-1');\n }\n });\n }\n ngAfterViewChecked() {\n if (this.buttons.length) {\n this.buttons.first.renderer.addClass(this.buttons.first.element, 'k-group-start');\n this.buttons.last.renderer.addClass(this.buttons.last.element, 'k-group-end');\n }\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n navigateFocus(event) {\n let focusedIndex = this.buttons.toArray().findIndex(current => current.element.tabIndex !== -1);\n const firstIndex = 0;\n const lastIndex = this.buttons.length - 1;\n const eventArgs = new PreventableEvent();\n if (event.keyCode === Keys.ArrowRight && focusedIndex < lastIndex) {\n this.navigate.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.defocus(this.buttons.toArray());\n this.focus(this.buttons.filter((_current, index) => {\n return index === focusedIndex + 1;\n }));\n }\n }\n if (event.keyCode === Keys.ArrowLeft && focusedIndex > firstIndex) {\n this.navigate.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.defocus(this.buttons.toArray());\n this.focus(this.buttons.filter((_current, index) => {\n return index === focusedIndex - 1;\n }));\n }\n }\n }\n deactivate(buttons) {\n buttons.forEach((button) => {\n button.setSelected(false);\n button.setAttribute(tabindex, '-1');\n });\n }\n activate(buttons) {\n buttons.forEach((button) => {\n button.setSelected(true);\n button.setAttribute(tabindex, '0');\n button.focus();\n });\n }\n defocus(buttons) {\n buttons.forEach((button) => {\n button.setAttribute(tabindex, '-1');\n });\n }\n focus(buttons) {\n buttons.forEach((button) => {\n button.setAttribute(tabindex, '0');\n button.focus();\n });\n }\n verifySettings() {\n if (isDevMode()) {\n if (this.isSelectionSingle() && this.buttons.filter(button => button.selected).length > 1) {\n throw new Error('Having multiple selected buttons with single selection mode is not supported');\n }\n }\n }\n isSelectionSingle() {\n return this.selection === 'single';\n }\n}\nButtonGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupComponent, deps: [{ token: KendoButtonService }, { token: i1.LocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ButtonGroupComponent, selector: \"kendo-buttongroup\", inputs: { disabled: \"disabled\", selection: \"selection\", width: \"width\", tabIndex: \"tabIndex\" }, outputs: { navigate: \"navigate\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"focus\": \"onFocus()\", \"focusout\": \"focusout($event)\" }, properties: { \"class.k-button-group\": \"this.wrapperClass\", \"class.k-disabled\": \"this.disabledClass\", \"class.k-button-group-stretched\": \"this.stretchedClass\", \"attr.role\": \"this.getRole\", \"attr.dir\": \"this.dir\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"style.width\": \"this.wrapperWidth\", \"attr.tabindex\": \"this.wrapperTabIndex\" } }, providers: [\n KendoButtonService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.buttongroup'\n }\n ], queries: [{ propertyName: \"buttons\", predicate: ButtonDirective }], exportAs: [\"kendoButtonGroup\"], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoButtonGroup',\n providers: [\n KendoButtonService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.buttongroup'\n }\n ],\n selector: 'kendo-buttongroup',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: KendoButtonService }, { type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { disabled: [{\n type: Input,\n args: ['disabled']\n }], selection: [{\n type: Input,\n args: ['selection']\n }], width: [{\n type: Input,\n args: ['width']\n }], tabIndex: [{\n type: Input\n }], navigate: [{\n type: Output\n }], buttons: [{\n type: ContentChildren,\n args: [ButtonDirective]\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-button-group']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], stretchedClass: [{\n type: HostBinding,\n args: ['class.k-button-group-stretched']\n }], getRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], wrapperWidth: [{\n type: HostBinding,\n args: ['style.width']\n }], wrapperTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], onFocus: [{\n type: HostListener,\n args: ['focus']\n }], focusout: [{\n type: HostListener,\n args: ['focusout', ['$event']]\n }] } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmodules'] }})\n * definition for the Button directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Button module\n * import { ButtonModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ButtonModule], // import Button module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ButtonModule {\n}\nButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule, declarations: [ButtonDirective], exports: [ButtonDirective] });\nButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ButtonDirective],\n exports: [ButtonDirective]\n }]\n }] });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ButtonGroupComponent`—The ButtonGroupComponent component class.\n */\nclass ButtonGroupModule {\n}\nButtonGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, declarations: [ButtonGroupComponent], imports: [CommonModule, ButtonModule], exports: [ButtonGroupComponent] });\nButtonGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, imports: [[CommonModule, ButtonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonGroupModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ButtonGroupComponent],\n exports: [ButtonGroupComponent],\n imports: [CommonModule, ButtonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass FocusService {\n constructor() {\n this.onFocus = new EventEmitter();\n }\n isFocused(index) {\n return index === this.focused;\n }\n focus(index) {\n if (this.isFocused(index)) {\n return;\n }\n this.focused = index;\n this.onFocus.emit(index);\n }\n resetFocus() {\n this.focused = -1;\n }\n get focused() {\n return this.focusedIndex;\n }\n set focused(index) {\n this.focusedIndex = index;\n this.onFocus.emit(index);\n }\n}\nFocusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass FocusableDirective {\n constructor(focusService, elementRef, renderer) {\n this.focusService = focusService;\n this.renderer = renderer;\n this.subs = new Subscription();\n this.element = elementRef.nativeElement;\n this.subscribeEvents();\n }\n ngOnInit() {\n if (this.index === this.focusService.focused) {\n this.renderer.addClass(this.element, 'k-focus');\n }\n else {\n this.renderer.removeClass(this.element, 'k-focus');\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subs.add(this.focusService.onFocus.subscribe((index) => {\n if (this.index === index) {\n this.renderer.addClass(this.element, 'k-focus');\n this.element.focus();\n }\n else {\n this.renderer.removeClass(this.element, 'k-focus');\n }\n }));\n }\n}\nFocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, deps: [{ token: FocusService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nFocusableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FocusableDirective, selector: \"[kendoButtonFocusable]\", inputs: { index: \"index\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FocusableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoButtonFocusable]'\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { index: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TemplateContextDirective {\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n set templateContext(context) {\n if (this.insertedViewRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));\n this.insertedViewRef = undefined;\n }\n if (context.templateRef) {\n this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\n }\n }\n}\nTemplateContextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateContextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateContextDirective, selector: \"[templateContext]\", inputs: { templateContext: \"templateContext\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[templateContext]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateContext: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ListComponent {\n constructor() {\n this.onItemClick = new EventEmitter();\n this.onItemBlur = new EventEmitter();\n this.sizeClass = '';\n validatePackage(packageMetadata);\n }\n set size(size) {\n if (size) {\n this.sizeClass = `k-menu-group-${SIZES[size]}`;\n }\n else {\n this.sizeClass = '';\n }\n }\n getText(dataItem) {\n if (dataItem) {\n return this.textField ? dataItem[this.textField] : dataItem.text || dataItem;\n }\n return undefined;\n }\n getIconClasses(dataItem) {\n const icon = dataItem.icon ? 'k-icon k-i-' + dataItem.icon : undefined;\n const classes = {};\n classes[icon || dataItem.iconClass] = true;\n return classes;\n }\n onClick(index) {\n this.onItemClick.emit(index);\n }\n onBlur() {\n this.onItemBlur.emit();\n }\n}\nListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListComponent, selector: \"kendo-button-list\", inputs: { data: \"data\", textField: \"textField\", itemTemplate: \"itemTemplate\", size: \"size\" }, outputs: { onItemClick: \"onItemClick\", onItemBlur: \"onItemBlur\" }, ngImport: i0, template: `\n \n `, isInline: true, directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: FocusableDirective, selector: \"[kendoButtonFocusable]\", inputs: [\"index\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-button-list',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { data: [{\n type: Input\n }], textField: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], onItemClick: [{\n type: Output\n }], onItemBlur: [{\n type: Output\n }], size: [{\n type: Input\n }] } });\n\n/**\n * Used for rendering the list item content.\n *\n * To define the item template, nest a `` tag with the `kendoItemTemplate` directive inside the component tag.\n *\n * For the DropDownButton, use the `kendoDropDownButtonItemTemplate` directive.\n * For the SplitButton, use the `kendoSplitButtonItemTemplate` directive.\n *\n * The template context is set to the current component. To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [{\n * text: 'item1',\n * icon: 'refresh',\n * disabled: false,\n * click: (dataItem: any) => {\n * //action\n * }\n * }, {\n * text: 'item2',\n * icon: 'refresh',\n * disabled: false,\n * click: (dataItem: any) => {\n * //action\n * }\n * }]\n * }\n * ```\n *\n * For more examples, refer to the article on the [DropDownList templates]({% slug overview_ddl %}#templates).\n */\nclass ButtonItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nButtonItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nButtonItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ButtonItemTemplateDirective, selector: \"[kendoDropDownButtonItemTemplate],[kendoSplitButtonItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownButtonItemTemplate],[kendoSplitButtonItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nconst EXPORTED_DIRECTIVES = [\n ListComponent,\n FocusableDirective,\n ButtonItemTemplateDirective,\n TemplateContextDirective\n];\n/**\n * @hidden\n */\nclass ListModule {\n}\nListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, declarations: [ListComponent,\n FocusableDirective,\n ButtonItemTemplateDirective,\n TemplateContextDirective], imports: [CommonModule], exports: [ListComponent,\n FocusableDirective,\n ButtonItemTemplateDirective,\n TemplateContextDirective] });\nListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [EXPORTED_DIRECTIVES],\n exports: [EXPORTED_DIRECTIVES],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nvar KeyEvents;\n(function (KeyEvents) {\n KeyEvents[KeyEvents[\"keydown\"] = 0] = \"keydown\";\n KeyEvents[KeyEvents[\"keypress\"] = 1] = \"keypress\";\n KeyEvents[KeyEvents[\"keyup\"] = 2] = \"keyup\";\n})(KeyEvents || (KeyEvents = {}));\n\n/**\n * @hidden\n */\nvar NavigationAction;\n(function (NavigationAction) {\n // eslint-disable-next-line id-denylist\n NavigationAction[NavigationAction[\"Undefined\"] = 0] = \"Undefined\";\n NavigationAction[NavigationAction[\"Open\"] = 1] = \"Open\";\n NavigationAction[NavigationAction[\"Close\"] = 2] = \"Close\";\n NavigationAction[NavigationAction[\"Enter\"] = 3] = \"Enter\";\n NavigationAction[NavigationAction[\"EnterPress\"] = 4] = \"EnterPress\";\n NavigationAction[NavigationAction[\"EnterUp\"] = 5] = \"EnterUp\";\n NavigationAction[NavigationAction[\"Tab\"] = 6] = \"Tab\";\n NavigationAction[NavigationAction[\"Esc\"] = 7] = \"Esc\";\n NavigationAction[NavigationAction[\"Navigate\"] = 8] = \"Navigate\";\n})(NavigationAction || (NavigationAction = {}));\n\n/**\n * @hidden\n */\nconst NAVIGATION_CONFIG = new InjectionToken('navigation.config');\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(config) {\n this.navigate = new EventEmitter();\n this.open = new EventEmitter();\n this.close = new EventEmitter();\n this.enter = new EventEmitter();\n this.enterpress = new EventEmitter();\n this.enterup = new EventEmitter();\n this.tab = new EventEmitter();\n this.esc = new EventEmitter();\n this.useLeftRightArrows = config.useLeftRightArrows;\n }\n process(args) {\n const keyCode = args.keyCode;\n const keyEvent = args.keyEvent;\n let index;\n let action = NavigationAction.Undefined;\n if (keyEvent === KeyEvents.keypress) {\n if (this.isEnter(keyCode)) {\n action = NavigationAction.EnterPress;\n }\n }\n else if (keyEvent === KeyEvents.keyup) {\n if (this.isEnter(keyCode)) {\n action = NavigationAction.EnterUp;\n }\n }\n else {\n if (args.altKey && keyCode === Keys.ArrowDown) {\n action = NavigationAction.Open;\n }\n else if (args.altKey && keyCode === Keys.ArrowUp) {\n action = NavigationAction.Close;\n }\n else if (this.isEnter(keyCode)) {\n action = NavigationAction.Enter;\n }\n else if (keyCode === Keys.Escape) {\n action = NavigationAction.Esc;\n }\n else if (keyCode === Keys.Tab) {\n action = NavigationAction.Tab;\n }\n else if (keyCode === Keys.ArrowUp || (this.useLeftRightArrows && keyCode === Keys.ArrowLeft)) {\n const step = args.flipNavigation ? 1 : -1;\n const start = args.flipNavigation ? args.min : args.max;\n const end = args.flipNavigation ? args.max : args.min;\n index = this.next({\n current: args.current,\n start: start,\n end: end,\n step: step\n });\n action = NavigationAction.Navigate;\n }\n else if (keyCode === Keys.ArrowDown || (this.useLeftRightArrows && keyCode === Keys.ArrowRight)) {\n const step = args.flipNavigation ? -1 : 1;\n const start = args.flipNavigation ? args.max : args.min;\n const end = args.flipNavigation ? args.min : args.max;\n index = this.next({\n current: args.current,\n start: start,\n end: end,\n step: step\n });\n action = NavigationAction.Navigate;\n }\n else if (keyCode === Keys.Home) {\n index = args.min;\n action = NavigationAction.Navigate;\n }\n else if (keyCode === Keys.End) {\n index = args.max;\n action = NavigationAction.Navigate;\n }\n }\n if (action !== NavigationAction.Undefined) {\n this[NavigationAction[action].toLowerCase()].emit(index);\n }\n return action;\n }\n isEnter(keyCode) {\n return keyCode === Keys.Enter || keyCode === Keys.Space;\n }\n next(args) {\n if (!isPresent(args.current)) {\n return args.start;\n }\n else {\n return args.current !== args.end ? args.current + args.step : args.end;\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: NAVIGATION_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [NAVIGATION_CONFIG]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ListButton {\n constructor(focusService, navigationService, wrapperRef, _zone, localization, cdr) {\n this.focusService = focusService;\n this.navigationService = navigationService;\n this.wrapperRef = wrapperRef;\n this._zone = _zone;\n this.cdr = cdr;\n this._open = false;\n this._disabled = false;\n this._active = false;\n this._popupSettings = { animate: true, popupClass: '' };\n this.listId = guid();\n this._isFocused = false;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.focusService = focusService;\n this.navigationService = navigationService;\n this.wrapper = wrapperRef.nativeElement;\n this.subs.add(localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n this.subscribeEvents();\n }\n get popupClasses() {\n const popupClasses = ['k-menu-popup'];\n if (this._popupSettings.popupClass) {\n popupClasses.push(this._popupSettings.popupClass);\n }\n return popupClasses.join(' ');\n }\n get openState() {\n return this._open;\n }\n set openState(open) {\n this._open = open;\n }\n /**\n * @hidden\n */\n togglePopupVisibility() {\n if (this._disabled) {\n return;\n }\n this.openState = !this.openState;\n if (!this.openState) {\n this.focusService.focus(-1);\n }\n }\n /**\n * @hidden\n */\n onItemClick(index) {\n this.emitItemClickHandler(index);\n setTimeout(() => this.focusWrapper(), 1);\n }\n ngOnDestroy() {\n this.openState = false;\n clearTimeout(this.focusFirstTimeout);\n clearTimeout(this.blurTimeout);\n this.subs.unsubscribe();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subscribeListItemFocusEvent();\n this.subscribeComponentBlurredEvent();\n this.subscribeNavigationEvents();\n }\n subscribeListItemFocusEvent() {\n this.subs.add(this.focusService.onFocus.subscribe(() => {\n this._isFocused = true;\n }));\n }\n subscribeComponentBlurredEvent() {\n this._zone.runOutsideAngular(() => {\n this.subs.add(this.navigationService.tab.pipe(filter(() => this._isFocused)).subscribe(this.handleTab.bind(this)));\n this.subs.add(fromEvent(document, 'click')\n .pipe(filter((event) => !this.wrapperContains(event.target)), filter(() => this._isFocused))\n .subscribe(() => this._zone.run(() => this.blurWrapper())));\n });\n }\n subscribeNavigationEvents() {\n this.subs.add(this.navigationService.navigate.subscribe(this.focusService.focus.bind(this.focusService)));\n this.subs.add(this.navigationService.enterup.subscribe(() => {\n this.enterHandler();\n this.focusWrapper();\n }));\n this.subs.add(this.navigationService.open.subscribe(() => {\n if (!this._open) {\n this.togglePopupVisibility();\n this.focusFirstItem();\n }\n else {\n this.focusWrapper();\n }\n }));\n this.subs.add(merge(this.navigationService.close, this.navigationService.esc).subscribe(() => this.focusWrapper()));\n }\n enterHandler() { } // eslint-disable-line\n /**\n * @hidden\n */\n keyDownHandler(event) {\n this.keyHandler(event);\n }\n /**\n * @hidden\n */\n keyPressHandler(event) {\n this.keyHandler(event, KeyEvents.keypress);\n }\n /**\n * @hidden\n */\n keyUpHandler(event) {\n this.keyHandler(event, KeyEvents.keyup);\n }\n /**\n * @hidden\n */\n keyHandler(event, keyEvent) {\n if (this._disabled) {\n return;\n }\n let focused = this.focusService.focused || 0;\n const eventData = event;\n const action = this.navigationService.process({\n altKey: eventData.altKey,\n current: focused,\n keyCode: eventData.keyCode,\n keyEvent: keyEvent,\n max: this._data ? this._data.length - 1 : 0,\n min: 0\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Tab &&\n (action !== NavigationAction.Enter || (action === NavigationAction.Enter && this._open))) {\n if (event.keyCode === Keys.Space && action === NavigationAction.EnterUp) {\n this._open = false;\n }\n else {\n eventData.preventDefault();\n }\n }\n }\n emitItemClickHandler(index) {\n const dataItem = this._data[index];\n if (this._itemClick) {\n this._itemClick.emit(dataItem);\n }\n if (dataItem && dataItem.click && !dataItem.disabled) {\n dataItem.click(dataItem);\n }\n }\n focusFirstItem() {\n if (this._data && isPresent(this._data[0])) {\n this.focusFirstTimeout = setTimeout(() => this.focusService.focus(0), 1);\n }\n }\n focusWrapper() {\n if (this._open) {\n this.togglePopupVisibility();\n this.focusButton();\n }\n }\n wrapperContains(element) {\n return this.wrapper === element || this.wrapper.contains(element);\n }\n blurWrapper(emit = true) {\n if (this._open) {\n this.togglePopupVisibility();\n }\n this._isFocused = false;\n if (emit) {\n this._blur.emit();\n this.cdr.markForCheck();\n }\n }\n focusButton() {\n if (this.button) {\n this.button.nativeElement.focus();\n }\n }\n handleTab() {\n this.focusButton();\n this.blurWrapper(false);\n }\n}\nListButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListButton, deps: [{ token: FocusService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nListButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListButton, selector: \"ng-component\", ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListButton, decorators: [{\n type: Component,\n args: [{\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-splitbutton-messages-base\", inputs: { splitButtonLabel: \"splitButtonLabel\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-splitbutton-messages-base'\n }]\n }], propDecorators: { splitButtonLabel: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedSplitButtonMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedSplitButtonMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSplitButtonMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedSplitButtonMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedSplitButtonMessagesDirective, selector: \"[kendoSplitButtonLocalizedMessages]\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSplitButtonMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedSplitButtonMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedSplitButtonMessagesDirective)\n }\n ],\n selector: '[kendoSplitButtonLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst NAVIGATION_SETTINGS$2 = {\n useLeftRightArrows: true\n};\nconst NAVIGATION_SETTINGS_PROVIDER$2 = {\n provide: NAVIGATION_CONFIG,\n useValue: NAVIGATION_SETTINGS$2\n};\nconst DEFAULT_ROUNDED$1 = 'medium';\nconst DEFAULT_FILL_MODE$1 = 'solid';\n/**\n * Represents the Kendo UI SplitButton component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * Paste\n * `\n * })\n *\n * class AppComponent {\n * public data: Array = [{\n * text: 'Keep Text Only',\n * icon: 'paste-plain-text',\n * click: () => { console.log('Keep Text Only click handler'); }\n * }, {\n * text: 'Paste as HTML',\n * icon: 'paste-as-html'\n * }, {\n * text: 'Paste Markdown',\n * icon: 'paste-markdown'\n * }, {\n * text: 'Set Default Paste'\n * }];\n *\n * public onSplitButtonClick(dataItem: any): void {\n * console.log('Paste');\n * }\n *\n * public onSplitButtonItemClick(dataItem: any): void {\n * if (dataItem) {\n * console.log(dataItem.text);\n * }\n * }\n * }\n * ```\n */\nclass SplitButtonComponent extends ListButton {\n constructor(focusService, navigationService, wrapperRef, zone, popupService, elRef, localization, cdr, renderer) {\n super(focusService, navigationService, wrapperRef, zone, localization, cdr);\n this.popupService = popupService;\n this.elRef = elRef;\n this.localization = localization;\n this.renderer = renderer;\n /**\n * Sets the text of the SplitButton.\n */\n this.text = '';\n /**\n * Defines an icon to be rendered next to the button text\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n this.icon = '';\n /**\n * Defines an icon with a custom CSS class to be rendered next to the button text\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n this.iconClass = '';\n /**\n * Defines the type attribute of the main button\n */\n this.type = 'button';\n /**\n * Defines the location of an image to be displayed next to the button text\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n this.imageUrl = '';\n /**\n * The size property specifies the padding of the SplitButton\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n this.size = 'medium';\n /**\n * The SplitButton allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `none`— Removes the built in theme color.\n */\n this.themeColor = 'base';\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabIndex = 0;\n /**\n * Specifies the name of the [font icon]({% slug icons %}#toc-list-of-font-icons) that will\n * be rendered for the button which opens the popup.\n */\n this.arrowButtonIcon = 'arrow-s';\n /**\n * Fires each time the user clicks the main button.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * Reply\n * \n * `\n * })\n * class AppComponent {\n * public data: Array = ['Reply All', 'Forward', 'Reply & Delete'];\n *\n * public onSplitButtonClick(): void {\n * console.log('SplitButton click');\n * }\n * }\n * ```\n *\n */\n this.buttonClick = new EventEmitter();\n /**\n * Fires each time the user clicks on the drop-down list. The event data contains the data item bound to the clicked list item.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * Reply\n * \n * `\n * })\n * class AppComponent {\n * public data: Array = ['Reply All', 'Forward', 'Reply & Delete'];\n *\n * public onSplitButtonItemClick(dataItem?: string): void {\n * if (dataItem) {\n * console.log(dataItem);\n * }\n * }\n * }\n * ```\n *\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the SplitButton gets focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the SplitButton gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.activeArrow = false;\n this.listId = guid();\n this.buttonText = '';\n this.lockFocus = false;\n this._rounded = DEFAULT_ROUNDED$1;\n this._fillMode = DEFAULT_FILL_MODE$1;\n this.popupSubs = new Subscription();\n this._itemClick = this.itemClick;\n this._blur = this.onBlur;\n }\n /**\n * The rounded property specifies the border radius of the SplitButton\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the SplitButton\n * ([see example]({% slug api_buttons_splitbuttoncomponent %}#toc-fillMode)).\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;\n this._fillMode = fillMode === 'clear' ? 'flat' : newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * When set to `true`, disables a SplitButton item\n * ([see example]({% slug databinding_splitbutton %}#toc-arrays-of-complex-data)).\n */\n set disabled(value) {\n if (this.isOpen) {\n this.toggle(false);\n }\n this._disabled = value;\n }\n get disabled() {\n return this._disabled;\n }\n /**\n * Configures the popup of the SplitButton.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n * - `align: \"left\" | \"center\" | \"right\"`—Specifies the alignment of the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true, popupClass: '' }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Sets the data of the SplitButton.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n if (!this._data) {\n this.data = [];\n }\n return this._data;\n }\n /**\n * @hidden\n */\n set openState(open) {\n if (this.disabled) {\n return;\n }\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n this._toggle(open);\n }\n /**\n * @hidden\n */\n get openState() {\n return this._open;\n }\n /**\n * @hidden\n */\n get active() {\n return this._active;\n }\n /**\n * @hidden\n */\n get componentTabIndex() {\n return this.disabled ? -1 : this.tabIndex;\n }\n set isFocused(value) {\n this._isFocused = value;\n }\n get isFocused() {\n return this._isFocused && !this._disabled;\n }\n get widgetClasses() {\n return true;\n }\n get dir() {\n return this.direction;\n }\n /**\n * @hidden\n */\n get ariaLabel() {\n const localizationMsg = this.localization.get('splitButtonLabel') || '';\n return replaceMessagePlaceholder(localizationMsg, 'buttonText', this.buttonText);\n }\n /**\n * @hidden\n */\n onButtonFocus() {\n if (!this.isFocused) {\n this._isFocused = true;\n this.onFocus.emit();\n }\n }\n /**\n * @hidden\n */\n onArrowButtonClick() {\n this.lockFocus = true;\n this.togglePopupVisibility();\n }\n /**\n * @hidden\n */\n toggleButtonActiveState(enable) {\n this._active = enable;\n }\n /**\n * @hidden\n */\n toggleArrowButtonActiveState(enable) {\n this.activeArrow = enable;\n }\n /**\n * @hidden\n */\n onButtonClick() {\n this.lockFocus = true;\n this.buttonClick.emit();\n }\n /**\n * @hidden\n */\n onButtonBlur() {\n if (!this.isOpen && !this.lockFocus) {\n this.blurWrapper();\n }\n this.lockFocus = false;\n }\n /**\n * @hidden\n */\n keydown(event) {\n this.keyDownHandler(event);\n if (event.keyCode === Keys.Space) {\n this._active = true;\n }\n }\n /**\n * @hidden\n */\n keypress(event) {\n this.keyPressHandler(event);\n }\n /**\n * @hidden\n */\n keyup(event) {\n this._active = false;\n if (event.keyCode !== Keys.Space) {\n this.keyUpHandler(event);\n }\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.updateButtonText();\n this.handleClasses(this.rounded, 'rounded');\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (changes.hasOwnProperty('text')) {\n this.updateButtonText();\n }\n if (isChanged(\"popupSettings\", changes) && isPresent(this.popupRef)) {\n const popup = this.popupRef.popup.instance;\n const newSettings = changes.popupSettings.currentValue;\n popup.popupClass = newSettings.popupClass;\n popup.animate = newSettings.animate;\n popup.popupAlign = this.popupAlign;\n }\n }\n /**\n * @hidden\n */\n togglePopupVisibility() {\n super.togglePopupVisibility();\n if (isDocumentAvailable() && this.lockFocus) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n wrapperContains(element) {\n return (this.wrapper === element || this.wrapper.contains(element) || (this.popupRef && this.popupRef.popupElement.contains(element)));\n }\n /**\n * @hidden\n */\n get anchorAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'bottom' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * @hidden\n */\n get popupAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'top' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * Focuses the SplitButton component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * Blurs the SplitButton component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.blur();\n this.blurWrapper();\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyPopup();\n }\n /**\n * Toggles the visibility of the popup.\n * If the `toggle` method is used to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n if (this.disabled) {\n return;\n }\n tick(() => this._toggle(open === undefined ? !this._open : open));\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.openState;\n }\n enterHandler() {\n if (this.disabled) {\n return;\n }\n if (this.openState) {\n let focused = this.focusService.focused;\n if (isPresent(focused) && focused !== -1) {\n this.emitItemClickHandler(focused);\n }\n }\n else {\n this.buttonClick.emit();\n }\n }\n updateButtonText() {\n if (isDocumentAvailable()) {\n let innerText = this.wrapper.innerText\n .split('\\n')\n .join('')\n .trim();\n //setTimout is needed because of `Expression has changed after it was checked.` error;\n setTimeout(() => (this.buttonText = innerText), 0);\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.containerRef : appendTo;\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n createPopup() {\n this.popupRef = this.popupService.open({\n anchor: this.elRef,\n anchorAlign: this.anchorAlign,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: this.popupAlign,\n popupClass: this.popupClasses\n });\n this.popupSubs.add(this.popupRef.popupAnchorViewportLeave.subscribe(() => (this.openState = false)));\n this.popupSubs.add(this.popupRef.popupOpen.subscribe(this.focusFirstItem.bind(this)));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupSubs.unsubscribe();\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n handleClasses(value, input) {\n const elem = this.wrapperRef.nativeElement;\n const classes = getStylingClasses('button', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nSplitButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonComponent, deps: [{ token: FocusService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i3.PopupService }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nSplitButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SplitButtonComponent, selector: \"kendo-splitbutton\", inputs: { text: \"text\", icon: \"icon\", iconClass: \"iconClass\", type: \"type\", imageUrl: \"imageUrl\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\", disabled: \"disabled\", popupSettings: \"popupSettings\", tabIndex: \"tabIndex\", textField: \"textField\", data: \"data\", buttonClass: \"buttonClass\", arrowButtonClass: \"arrowButtonClass\", arrowButtonIcon: \"arrowButtonIcon\" }, outputs: { buttonClick: \"buttonClick\", itemClick: \"itemClick\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"keypress\": \"keypress($event)\", \"keyup\": \"keyup($event)\" }, properties: { \"class.k-focus\": \"this.isFocused\", \"class.k-split-button\": \"this.widgetClasses\", \"class.k-button-group\": \"this.widgetClasses\", \"attr.dir\": \"this.dir\" } }, providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$2,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.splitbutton'\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: ButtonItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"button\", first: true, predicate: [\"button\"], descendants: true, static: true }, { propertyName: \"arrowButton\", first: true, predicate: [\"arrowButton\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"containerRef\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }], exportAs: [\"kendoSplitButton\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n {{ text }}\n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: ListComponent, selector: \"kendo-button-list\", inputs: [\"data\", \"textField\", \"itemTemplate\", \"size\"], outputs: [\"onItemClick\", \"onItemBlur\"] }], directives: [{ type: LocalizedSplitButtonMessagesDirective, selector: \"[kendoSplitButtonLocalizedMessages]\" }, { type: ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSplitButton',\n providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$2,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.splitbutton'\n }\n ],\n selector: 'kendo-splitbutton',\n template: `\n \n \n \n \n {{ text }}\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.PopupService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { text: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], type: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], disabled: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], textField: [{\n type: Input\n }], data: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], arrowButtonClass: [{\n type: Input\n }], arrowButtonIcon: [{\n type: Input\n }], buttonClick: [{\n type: Output\n }], itemClick: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], itemTemplate: [{\n type: ContentChild,\n args: [ButtonItemTemplateDirective, { static: false }]\n }], button: [{\n type: ViewChild,\n args: ['button', { static: true }]\n }], arrowButton: [{\n type: ViewChild,\n args: ['arrowButton', { static: true, read: ElementRef }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], containerRef: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], isFocused: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-split-button']\n }, {\n type: HostBinding,\n args: ['class.k-button-group']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], keypress: [{\n type: HostListener,\n args: ['keypress', ['$event']]\n }], keyup: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_buttons %}).\n */\nclass SplitButtonCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nSplitButtonCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nSplitButtonCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SplitButtonCustomMessagesComponent, selector: \"kendo-splitbutton-messages\", providers: [{\n provide: Messages,\n useExisting: forwardRef(() => SplitButtonCustomMessagesComponent)\n }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [{\n provide: Messages,\n useExisting: forwardRef(() => SplitButtonCustomMessagesComponent)\n }],\n selector: 'kendo-splitbutton-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `SplitButtonComponent`—The SplitButtonComponent component class.\n */\nclass SplitButtonModule {\n}\nSplitButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSplitButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, declarations: [SplitButtonComponent, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent], imports: [CommonModule, PopupModule, ButtonModule, ListModule], exports: [SplitButtonComponent, ListModule, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent] });\nSplitButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, imports: [[CommonModule, PopupModule, ButtonModule, ListModule], ListModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SplitButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SplitButtonComponent, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent],\n exports: [SplitButtonComponent, ListModule, LocalizedSplitButtonMessagesDirective, SplitButtonCustomMessagesComponent],\n imports: [CommonModule, PopupModule, ButtonModule, ListModule]\n }]\n }] });\n\nconst NAVIGATION_SETTINGS$1 = {\n useLeftRightArrows: true\n};\nconst NAVIGATION_SETTINGS_PROVIDER$1 = {\n provide: NAVIGATION_CONFIG,\n useValue: NAVIGATION_SETTINGS$1\n};\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Represents the Kendo UI DropDownButton component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * User Settings\n * \n * `\n * })\n * class AppComponent {\n * public data: Array = [{\n * text: 'My Profile'\n * }, {\n * text: 'Friend Requests'\n * }, {\n * text: 'Account Settings'\n * }, {\n * text: 'Support'\n * }, {\n * text: 'Log Out'\n * }];\n * }\n * ```\n */\nclass DropDownButtonComponent extends ListButton {\n constructor(focusService, navigationService, wrapperRef, zone, popupService, elRef, localization, cdr) {\n super(focusService, navigationService, wrapperRef, zone, localization, cdr);\n this.popupService = popupService;\n this.elRef = elRef;\n /**\n * Defines the name of an existing icon in a Kendo UI theme.\n */\n this.icon = '';\n /**\n * Defines the list of CSS classes which are used for styling the Button with custom icons.\n */\n this.iconClass = '';\n /**\n * Defines a URL for styling the button with a custom image.\n */\n this.imageUrl = '';\n /**\n * The size property specifies the padding of the DropDownButton\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n this.size = 'medium';\n /**\n * The rounded property specifies the border radius of the DropDownButton\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n this.rounded = 'medium';\n /**\n * The DropDownButton allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `none` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabIndex = 0;\n /**\n * Fires each time the user clicks on a drop-down list item. The event data contains the data item bound to the clicked list item.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires each time the DropDownButton gets focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownButton gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.listId = guid();\n this._fillMode = DEFAULT_FILL_MODE;\n this.popupSubs = new Subscription();\n this._itemClick = this.itemClick;\n this._blur = this.onBlur;\n }\n /**\n * Configures the popup of the DropDownButton.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n * - `align: \"left\" | \"center\" | \"right\"`—Specifies the alignment of the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true, popupClass: '' }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Sets the disabled state of the DropDownButton.\n */\n set disabled(value) {\n if (value && this.openState) {\n this.openState = false;\n }\n this._disabled = value;\n }\n get disabled() {\n return this._disabled;\n }\n /**\n * Sets or gets the data of the DropDownButton.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n return this._data;\n }\n /**\n * The fillMode property specifies the background and border styles of the DropDownButton\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-fillMode)).\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `none`\n */\n set fillMode(fillMode) {\n this._fillMode = fillMode === 'clear' ? 'flat' : fillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n set openState(open) {\n if (this.disabled) {\n return;\n }\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n this._toggle(open);\n }\n /**\n * @hidden\n */\n get openState() {\n return this._open;\n }\n /**\n * @hidden\n */\n get componentTabIndex() {\n return this.disabled ? (-1) : this.tabIndex;\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n get focused() {\n return this._isFocused && !this._disabled;\n }\n get widgetClasses() {\n return true;\n }\n get dir() {\n return this.direction;\n }\n /**\n * @hidden\n */\n get active() {\n return this._active;\n }\n /**\n * @hidden\n */\n keydown(event) {\n this.keyDownHandler(event);\n if (event.keyCode === Keys.Space) {\n this._active = true;\n }\n }\n /**\n * @hidden\n */\n keypress(event) {\n this.keyPressHandler(event);\n }\n /**\n * @hidden\n */\n keyup(event) {\n this.keyUpHandler(event);\n this._active = false;\n }\n /**\n * @hidden\n */\n mousedown(event) {\n if (this._disabled) {\n event.preventDefault();\n }\n this._active = true;\n }\n /**\n * @hidden\n */\n mouseup(event) {\n if (this._disabled) {\n event.preventDefault();\n }\n this._active = false;\n }\n /**\n * @hidden\n */\n openPopup() {\n this.togglePopupVisibility();\n }\n /**\n * @hidden\n */\n onButtonBlur() {\n if (!this.isOpen) {\n this.blurWrapper();\n }\n }\n /**\n * @hidden\n */\n get anchorAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'bottom' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * @hidden\n */\n get popupAlign() {\n let align = { horizontal: this.popupSettings.align || 'left', vertical: 'top' };\n if (this.direction === 'rtl' && !isPresent(this.popupSettings.align)) {\n align.horizontal = 'right';\n }\n return align;\n }\n /**\n * Focuses the DropDownButton component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownButton component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.blur();\n this.blurWrapper();\n }\n }\n ngOnChanges(changes) {\n if (isChanged(\"popupSettings\", changes) && isPresent(this.popupRef)) {\n const popup = this.popupRef.popup.instance;\n const newSettings = changes.popupSettings.currentValue;\n popup.popupClass = newSettings.popupClass;\n popup.animate = newSettings.animate;\n popup.popupAlign = this.popupAlign;\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyPopup();\n }\n /**\n * Toggles the visibility of the popup.\n * If the `toggle` method is used to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n if (this.disabled) {\n return;\n }\n tick(() => (this._toggle((open === undefined) ? !this._open : open)));\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.openState;\n }\n /**\n * @hidden\n */\n handleFocus() {\n if (!this._disabled && !this._isFocused) {\n this._isFocused = true;\n this.onFocus.emit();\n }\n }\n /**\n * @hidden\n */\n wrapperContains(element) {\n return this.wrapper === element\n || this.wrapper.contains(element)\n || (this.popupRef && this.popupRef.popupElement.contains(element));\n }\n subscribeNavigationEvents() {\n this.subs.add(this.navigationService.navigate\n .subscribe(this.onArrowKeyNavigate.bind(this)));\n this.subs.add(this.navigationService.enterup.subscribe(this.onNavigationEnterUp.bind(this)));\n this.subs.add(this.navigationService.open.subscribe(this.onNavigationOpen.bind(this)));\n this.subs.add(merge(this.navigationService.close, this.navigationService.esc).subscribe(this.onNavigationClose.bind(this)));\n }\n onNavigationEnterUp() {\n if (!this._disabled && !this.openState) {\n this._active = false;\n }\n if (this.openState) {\n let focused = this.focusService.focused;\n if (isPresent(focused) && focused !== -1) {\n this.emitItemClickHandler(focused);\n }\n }\n this.togglePopupVisibility();\n if (!this.openState && isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n onNavigationOpen() {\n if (!this._disabled && !this.openState) {\n this.togglePopupVisibility();\n }\n }\n onNavigationClose() {\n if (this.openState) {\n this.togglePopupVisibility();\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n }\n onArrowKeyNavigate(index) {\n this.focusService.focus(index);\n }\n _toggle(open) {\n if (this._open === open) {\n return;\n }\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n createPopup() {\n this.popupRef = this.popupService.open({\n anchor: this.elRef,\n anchorAlign: this.anchorAlign,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: this.popupAlign,\n popupClass: this.popupClasses\n });\n this.popupSubs.add(this.popupRef.popupAnchorViewportLeave.subscribe(() => this.openState = false));\n this.popupSubs.add(this.popupRef.popupOpen.subscribe(this.focusFirstItem.bind(this)));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.popupSubs.unsubscribe();\n }\n }\n}\nDropDownButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonComponent, deps: [{ token: FocusService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i3.PopupService }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDropDownButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownButtonComponent, selector: \"kendo-dropdownbutton\", inputs: { icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", popupSettings: \"popupSettings\", textField: \"textField\", disabled: \"disabled\", data: \"data\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\", buttonClass: \"buttonClass\", tabIndex: \"tabIndex\" }, outputs: { itemClick: \"itemClick\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"keypress\": \"keypress($event)\", \"keyup\": \"keyup($event)\", \"mousedown\": \"mousedown($event)\", \"mouseup\": \"mouseup($event)\" }, properties: { \"class.k-focus\": \"this.focused\", \"class.k-dropdown-button\": \"this.widgetClasses\", \"attr.dir\": \"this.dir\" } }, providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$1,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownbutton'\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: ButtonItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"button\", first: true, predicate: [\"button\"], descendants: true, static: true }, { propertyName: \"buttonList\", first: true, predicate: [\"buttonList\"], descendants: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }], exportAs: [\"kendoDropDownButton\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: ListComponent, selector: \"kendo-button-list\", inputs: [\"data\", \"textField\", \"itemTemplate\", \"size\"], outputs: [\"onItemClick\", \"onItemBlur\"] }], directives: [{ type: ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoDropDownButton',\n providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER$1,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownbutton'\n }\n ],\n selector: 'kendo-dropdownbutton',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.PopupService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], textField: [{\n type: Input\n }], disabled: [{\n type: Input\n }], data: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], focused: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-dropdown-button']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], itemTemplate: [{\n type: ContentChild,\n args: [ButtonItemTemplateDirective, { static: false }]\n }], button: [{\n type: ViewChild,\n args: ['button', { static: true }]\n }], buttonList: [{\n type: ViewChild,\n args: ['buttonList', { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], keypress: [{\n type: HostListener,\n args: ['keypress', ['$event']]\n }], keyup: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }], mousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], mouseup: [{\n type: HostListener,\n args: ['mouseup', ['$event']]\n }] } });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `DropDownButtonComponent`—The DropDownButtonComponent component class.\n */\nclass DropDownButtonModule {\n}\nDropDownButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, declarations: [DropDownButtonComponent], imports: [CommonModule, PopupModule, ListModule, ButtonModule], exports: [DropDownButtonComponent, ListModule] });\nDropDownButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, imports: [[CommonModule, PopupModule, ListModule, ButtonModule], ListModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DropDownButtonComponent],\n exports: [DropDownButtonComponent, ListModule],\n imports: [CommonModule, PopupModule, ListModule, ButtonModule]\n }]\n }] });\n\n/**\n * Displays a Chip that represents an input, attribute or an action.\n */\nclass ChipComponent {\n constructor(element, renderer, ngZone, localizationService) {\n this.element = element;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.localizationService = localizationService;\n /**\n * Specifies the selected state of the Chip.\n * @default false\n */\n this.selected = false;\n /**\n * Specifies if the Chip will be removable or not.\n * If the property is set to `true`, the Chip renders a remove icon.\n * @default false\n */\n this.removable = false;\n /**\n * If set to `true`, the Chip will be disabled.\n * @default false\n */\n this.disabled = false;\n /**\n * Fires each time the user clicks the remove icon of the Chip.\n */\n this.remove = new EventEmitter();\n /**\n * Fires each time the user clicks the content of the Chip.\n */\n this.contentClick = new EventEmitter();\n this.tabIndex = 0;\n this.hostClass = true;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this._themeColor = 'base';\n this.focused = false;\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * The size property specifies the padding of the Chip\n * ([see example]({% slug appearance_chip %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n if (isPresent(size)) {\n this._size = size;\n }\n this.handleClasses(this._size, 'size');\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the Chip\n * ([see example]({% slug appearance_chip %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n if (isPresent(rounded)) {\n this._rounded = rounded;\n }\n this.handleClasses(this._rounded, 'rounded');\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the Chip\n * ([see example]({% slug appearance_chip %}#toc-fillMode)).\n *\n * The possible values are:\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n if (isPresent(fillMode)) {\n this._fillMode = fillMode;\n }\n this.handleClasses(this._fillMode, 'fillMode');\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * The Chip allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug appearance_chip %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` (default)\n * * `info`\n * * `success`\n * * `warning`\n * * `error`\n * * `none`\n */\n set themeColor(themeColor) {\n if (isPresent(themeColor)) {\n this._themeColor = themeColor;\n }\n this.handleThemeColor(this._themeColor);\n }\n get themeColor() {\n return this._themeColor;\n }\n get ariaChecked() {\n return this.selected;\n }\n get hasIconClass() {\n return this.icon || this.iconClass || this.avatarClass ? true : false;\n }\n get disabledClass() {\n return this.disabled;\n }\n get selectedClass() {\n return this.selected;\n }\n get focusedClass() {\n return this.focused;\n }\n ngOnInit() {\n this.subs.add(this.localizationService.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr'));\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n ngAfterViewInit() {\n const chip = this.element.nativeElement;\n const stylingOptions = ['size', 'rounded', 'fillMode'];\n stylingOptions.forEach(input => {\n this.handleClasses(this[input], input);\n });\n this.attachElementEventHandlers(chip);\n }\n /**\n * @hidden\n */\n get kendoIconClass() {\n this.verifyIconSettings([this.iconClass, this.avatarClass]);\n return `k-i-${this.icon}`;\n }\n /**\n * @hidden\n */\n get customIconClass() {\n this.verifyIconSettings([this.icon, this.avatarClass]);\n return `${this.iconClass}`;\n }\n /**\n * @hidden\n */\n get chipAvatarClass() {\n this.verifyIconSettings([this.icon, this.iconClass]);\n return `${this.avatarClass}`;\n }\n /**\n * @hidden\n */\n get removeIconClass() {\n if (this.removeIcon) {\n return `${this.removeIcon}`;\n }\n return `k-i-close-circle`;\n }\n /**\n * Focuses the Chip component.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.element.nativeElement.focus();\n }\n }\n /**\n * Blurs the Chip component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.element.nativeElement.blur();\n }\n }\n /**\n * @hidden\n */\n onRemoveClick(e) {\n if (this.removable) {\n this.remove.emit({ sender: this, originalEvent: e });\n }\n }\n attachElementEventHandlers(chip) {\n this.ngZone.runOutsideAngular(() => {\n this.subs.add(this.renderer.listen(chip, 'focus', () => {\n this.renderer.addClass(chip, 'k-focus');\n }));\n this.subs.add(this.renderer.listen(chip, 'blur', () => {\n this.renderer.removeClass(chip, 'k-focus');\n }));\n this.subs.add(this.renderer.listen(chip, 'click', (e) => {\n const isRemoveClicked = closest(e.target, '.k-chip-remove-action');\n if (!isRemoveClicked) {\n this.ngZone.run(() => {\n this.contentClick.emit({ sender: this, originalEvent: e });\n });\n }\n }));\n });\n }\n /**\n * @hidden\n */\n verifyIconSettings(iconsToCheck) {\n if (isDevMode()) {\n if (iconsToCheck.filter(icon => icon !== null && icon !== undefined).length > 0) {\n this.renderer.removeClass(this.element.nativeElement, 'k-chip-has-icon');\n throw new Error('Invalid configuration: Having multiple icons is not supported. Only a single icon on a chip can be displayed.');\n }\n }\n }\n handleClasses(value, input) {\n const elem = this.element.nativeElement;\n const classes = getStylingClasses('chip', input, this[input], value);\n if (input === 'fillMode') {\n this.handleThemeColor(this.themeColor, this[input], value);\n }\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleThemeColor(value, prevFillMode, fillMode) {\n const elem = this.element.nativeElement;\n const removeFillMode = prevFillMode ? prevFillMode : this.fillMode;\n const addFillMode = fillMode ? fillMode : this.fillMode;\n const themeColorClass = getThemeColorClasses('chip', removeFillMode, addFillMode, this.themeColor, value);\n this.renderer.removeClass(elem, themeColorClass.toRemove);\n if (addFillMode !== 'none' && fillMode !== 'none') {\n if (themeColorClass.toAdd) {\n this.renderer.addClass(elem, themeColorClass.toAdd);\n }\n }\n }\n}\nChipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nChipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ChipComponent, selector: \"kendo-chip\", inputs: { label: \"label\", icon: \"icon\", iconClass: \"iconClass\", avatarClass: \"avatarClass\", selected: \"selected\", removable: \"removable\", removeIcon: \"removeIcon\", disabled: \"disabled\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", themeColor: \"themeColor\" }, outputs: { remove: \"remove\", contentClick: \"contentClick\" }, host: { properties: { \"attr.tabindex\": \"this.tabIndex\", \"attr.aria-checked\": \"this.ariaChecked\", \"class.k-chip\": \"this.hostClass\", \"class.k-chip-has-icon\": \"this.hasIconClass\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"class.k-selected\": \"this.selectedClass\", \"class.k-focus\": \"this.focusedClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chip'\n }\n ], ngImport: i0, template: `\n \n \n\n \n \n\n \n \n \n\n \n \n {{ label }}\n \n \n \n\n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-chip',\n template: `\n \n \n\n \n \n\n \n \n \n\n \n \n {{ label }}\n \n \n \n\n \n \n \n \n \n \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chip'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.LocalizationService }]; }, propDecorators: { label: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], avatarClass: [{\n type: Input\n }], selected: [{\n type: Input\n }], removable: [{\n type: Input\n }], removeIcon: [{\n type: Input\n }], disabled: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], remove: [{\n type: Output\n }], contentClick: [{\n type: Output\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaChecked: [{\n type: HostBinding,\n args: ['attr.aria-checked']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-chip']\n }], hasIconClass: [{\n type: HostBinding,\n args: ['class.k-chip-has-icon']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], selectedClass: [{\n type: HostBinding,\n args: ['class.k-selected']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\nclass ChipListComponent {\n constructor(localizationService, renderer, element) {\n this.localizationService = localizationService;\n this.renderer = renderer;\n this.element = element;\n this.hostClass = true;\n /**\n * Sets the selection mode of the ChipList.\n *\n * The available values are:\n * * `none` (default)\n * * `single`\n * * `multiple`\n */\n this.selection = 'none';\n /**\n * Fires each time when the ChipList selection is changed.\n */\n this.selectedChange = new EventEmitter();\n /**\n * Fires each time the user clicks on the remove icon of the Chip.\n */\n this.remove = new EventEmitter();\n this.role = 'listbox';\n this._size = 'medium';\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * The size property specifies the gap between the Chips in the ChipList\n * ([see example]({% slug appearance_chiplist %}#toc-size)).\n *\n * The possible values are:\n * * `'small'`\n * * `'medium'` (default)\n * * `'large'`\n * * `none`\n */\n set size(size) {\n const sizeValue = size ? size : 'medium';\n this.handleClasses(sizeValue, 'size');\n this._size = sizeValue;\n }\n get size() {\n return this._size;\n }\n get single() {\n return this.selection === 'single';\n }\n get multiple() {\n return this.selection === 'multiple';\n }\n /**\n * @hidden\n */\n onClick($event) {\n const target = $event.target;\n const isRemoveClicked = closest(target, '.k-chip-remove-action');\n const clickedChip = closest(target, '.k-chip');\n const chip = this.chips.find((chip) => clickedChip === chip.element.nativeElement);\n if (isRemoveClicked && clickedChip) {\n const removeEventArgs = { sender: this, originalEvent: $event, removedChip: chip };\n this.remove.emit(removeEventArgs);\n }\n if (this.selection !== 'none' && clickedChip && !isRemoveClicked) {\n this.setSelection(chip);\n }\n }\n ngOnInit() {\n this.dynamicRTLSubscription = this.localizationService.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n }\n ngAfterViewInit() {\n const stylingInputs = ['size'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n ngAfterContentInit() {\n this.chips.forEach((chip) => {\n this.renderer.setAttribute(chip.element.nativeElement, 'role', 'option');\n });\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n selectedChips() {\n return this.chips.reduce((acc, cur, idx) => { return cur.selected ? acc.concat(idx) : acc; }, []);\n }\n /**\n * Updates the selection on click of a Chip. Emits events.\n */\n setSelection(chip) {\n if (this.selection === 'single') {\n this.clearSelection(chip);\n }\n chip.selected = !chip.selected;\n this.selectedChange.emit(this.selectedChips());\n }\n clearSelection(chip) {\n this.chips.forEach((c) => {\n if (chip !== c) {\n c.selected = false;\n }\n });\n }\n handleClasses(value, input) {\n const elem = this.element.nativeElement;\n const classes = getStylingClasses('chip-list', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nChipListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipListComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nChipListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ChipListComponent, selector: \"kendo-chiplist, kendo-chip-list\", inputs: { selection: \"selection\", size: \"size\" }, outputs: { selectedChange: \"selectedChange\", remove: \"remove\" }, host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.k-chip-list\": \"this.hostClass\", \"attr.dir\": \"this.direction\", \"class.k-selection-single\": \"this.single\", \"class.k-selection-multiple\": \"this.multiple\", \"attr.role\": \"this.role\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chiplist'\n }\n ], queries: [{ propertyName: \"chips\", predicate: ChipComponent }], ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-chiplist, kendo-chip-list',\n template: `\n \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chiplist'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-chip-list']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], selection: [{\n type: Input\n }], size: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], remove: [{\n type: Output\n }], chips: [{\n type: ContentChildren,\n args: [ChipComponent]\n }], single: [{\n type: HostBinding,\n args: ['class.k-selection-single']\n }], multiple: [{\n type: HostBinding,\n args: ['class.k-selection-multiple']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\nconst exportedModules$1 = [\n ChipComponent,\n ChipListComponent\n];\nconst declarations$1 = [\n ...exportedModules$1\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Chip and ChipList components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Chip module\n * import { ChipModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ChipModule], // import Chip module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * ```\n */\nclass ChipModule {\n}\nChipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nChipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, declarations: [ChipComponent,\n ChipListComponent], imports: [CommonModule], exports: [ChipComponent,\n ChipListComponent] });\nChipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChipModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules$1],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nfunction getAnchorAlign(fabAlign, rtl) {\n let align = { horizontal: (rtl ? 'right' : 'left'), vertical: 'bottom' };\n if (fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n }\n if (fabAlign.vertical === 'bottom') {\n align.vertical = 'top';\n }\n if (fabAlign.vertical === 'bottom' && fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n align.vertical = 'top';\n }\n return align;\n}\n/**\n * @hidden\n */\nfunction getPopupAlign(fabAlign, rtl) {\n let align = { horizontal: (rtl ? 'right' : 'left'), vertical: 'top' };\n if (fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n }\n if (fabAlign.vertical === 'bottom') {\n align.vertical = 'bottom';\n }\n if (fabAlign.vertical === 'bottom' && fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n align.vertical = 'bottom';\n }\n return align;\n}\n\n/**\n * @hidden\n */\nfunction openAnimation(animationSettings) {\n const isBottom = animationSettings.align.vertical === 'bottom';\n const duration = animationSettings.duration;\n const gap = animationSettings.gap;\n return sequence([\n query(`.k-fab-item`, [\n style({ opacity: 0, transform: `translateY(${isBottom ? '8px' : '-8px'})` }),\n stagger(gap, [animate(`${duration}ms ease-in`, style({ opacity: '*', transform: 'translateY(0)' }))])\n ], { optional: true })\n ]);\n}\n/**\n * @hidden\n */\nfunction closeAnimation(animationSettings) {\n const isBottom = animationSettings.align.vertical === 'bottom';\n const duration = animationSettings.duration;\n const gap = animationSettings.gap;\n return sequence([\n query(`.k-fab-item`, [\n style({ opacity: '*', transform: 'translateY(0)' }),\n stagger(-gap, [animate(`${duration}ms ease-in`, style({ opacity: 0, transform: `translateY(${isBottom ? '8px' : '-8px'})` }))])\n ], { optional: true })\n ]);\n}\n\n/**\n * Represents a template that defines the content of the whole dial item.\n * To define the template, nest an `` tag\n * with the `kendoDialItemTemplate` directive inside the `` tag\n * ([see example]({% slug templates_floatingactionbutton %}#toc-dial-item-template)).\n */\nclass DialItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDialItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDialItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialItemTemplateDirective, selector: \"[kendoDialItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDialItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the FloatingActionButton.\n * To define the template, nest an `` tag\n * with the `kendoFloatingActionButtonTemplate` directive inside the `` tag\n * ([see example]({% slug templates_floatingactionbutton %}#toc-floatingactionbutton-template)).\n */\nclass FloatingActionButtonTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFloatingActionButtonTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFloatingActionButtonTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FloatingActionButtonTemplateDirective, selector: \"[kendoFloatingActionButtonTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFloatingActionButtonTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass DialItemComponent {\n constructor(element, renderer, localisationService) {\n this.element = element;\n this.renderer = renderer;\n this.localisationService = localisationService;\n this.hostClass = true;\n this.role = 'menuitem';\n }\n get disabledClass() {\n return this.item.disabled;\n }\n get title() {\n const label = this.item.label;\n return label ? label : this.itemTitle;\n }\n get indexAttr() {\n return this.index;\n }\n get iconClasses() {\n const classes = [];\n if (this.item.iconClass) {\n classes.push(`${this.item.iconClass}`);\n }\n if (this.item.icon) {\n classes.push(`k-fab-item-icon k-icon k-i-${this.item.icon}`);\n }\n return classes;\n }\n get itemTitle() {\n const icon = this.item.icon;\n const itemTitle = this.item.itemTitle;\n return (icon && itemTitle) ? itemTitle : icon;\n }\n ngAfterViewInit() {\n const element = this.element.nativeElement;\n const rtl = this.localisationService.rtl;\n const hAlign = this.align.horizontal;\n this.renderer.addClass(element, this.getTextDirectionClass(rtl, hAlign));\n }\n getTextDirectionClass(rtl, hAlign) {\n const dir = rtl ? 'rtl' : 'ltr';\n const align = hAlign === 'end' ? 'end' : 'start';\n const directions = {\n rtl: { end: 'k-text-left', start: 'k-text-right' },\n ltr: { start: 'k-text-left', end: 'k-text-right' }\n };\n return directions[dir][align];\n }\n}\nDialItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDialItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialItemComponent, selector: \"[kendoDialItem]\", inputs: { cssClass: \"cssClass\", cssStyle: \"cssStyle\", isFocused: \"isFocused\", index: \"index\", item: \"item\", dialItemTemplate: \"dialItemTemplate\", align: \"align\" }, host: { properties: { \"class.k-fab-item\": \"this.hostClass\", \"attr.role\": \"this.role\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"attr.title\": \"this.title\", \"attr.aria-label\": \"this.title\", \"attr.data-fab-item-index\": \"this.indexAttr\" } }, ngImport: i0, template: `\n \n \n\n \n {{ item.label }}\n \n \n `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialItemComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoDialItem]',\n template: `\n \n \n\n \n {{ item.label }}\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-fab-item']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], title: [{\n type: HostBinding,\n args: ['attr.title']\n }, {\n type: HostBinding,\n args: ['attr.aria-label']\n }], indexAttr: [{\n type: HostBinding,\n args: ['attr.data-fab-item-index']\n }], cssClass: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }], isFocused: [{\n type: Input\n }], index: [{\n type: Input\n }], item: [{\n type: Input\n }], dialItemTemplate: [{\n type: Input\n }], align: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DialListComponent {\n constructor(focusService, cdr) {\n this.focusService = focusService;\n this.cdr = cdr;\n this.hostClass = true;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.focusService.onFocus.subscribe(() => this.cdr.detectChanges()));\n }\n get bottomClass() {\n return this.align.vertical === 'top' || this.align.vertical === 'middle';\n }\n get topClass() {\n return this.align.vertical === 'bottom';\n }\n isFocused(index) {\n return this.focusService.isFocused(index);\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n}\nDialListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialListComponent, deps: [{ token: FocusService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDialListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialListComponent, selector: \"[kendoDialList]\", inputs: { dialItems: \"dialItems\", dialItemTemplate: \"dialItemTemplate\", align: \"align\" }, host: { properties: { \"class.k-fab-items\": \"this.hostClass\", \"class.k-fab-items-bottom\": \"this.bottomClass\", \"class.k-fab-items-top\": \"this.topClass\" } }, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: DialItemComponent, selector: \"[kendoDialItem]\", inputs: [\"cssClass\", \"cssStyle\", \"isFocused\", \"index\", \"item\", \"dialItemTemplate\", \"align\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: FocusableDirective, selector: \"[kendoButtonFocusable]\", inputs: [\"index\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialListComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoDialList]',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: FocusService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-fab-items']\n }], bottomClass: [{\n type: HostBinding,\n args: ['class.k-fab-items-bottom']\n }], topClass: [{\n type: HostBinding,\n args: ['class.k-fab-items-top']\n }], dialItems: [{\n type: Input\n }], dialItemTemplate: [{\n type: Input\n }], align: [{\n type: Input\n }] } });\n\nconst NAVIGATION_SETTINGS = {\n useLeftRightArrows: false\n};\nconst NAVIGATION_SETTINGS_PROVIDER = {\n provide: NAVIGATION_CONFIG,\n useValue: NAVIGATION_SETTINGS\n};\nconst SIZE_CLASSES = {\n small: 'k-fab-sm',\n medium: 'k-fab-md',\n large: 'k-fab-lg'\n};\nconst ROUNDED_CLASSES = {\n small: 'k-rounded-sm',\n medium: 'k-rounded-md',\n large: 'k-rounded-lg',\n full: 'k-rounded-full'\n};\nconst FILLMODE_CLASS = 'k-fab-solid';\nconst DEFAULT_DURATION = 180;\nconst DEFAULT_ITEM_GAP = 90;\nconst DEFAULT_OFFSET = '16px';\nconst DEFAULT_ROUNDED = 'full';\nconst DEFAULT_SIZE = 'medium';\nconst DEFAULT_THEME_COLOR = 'primary';\n/**\n *\n * Represents the [Kendo UI FloatingActionButton component for Angular]({% slug overview_floatingactionbutton %}).\n * Used to specify the primary or the most common action in an application.\n *\n */\nclass FloatingActionButtonComponent {\n constructor(renderer, element, focusService, navigationService, ngZone, popupService, builder, localizationService) {\n this.renderer = renderer;\n this.element = element;\n this.focusService = focusService;\n this.navigationService = navigationService;\n this.ngZone = ngZone;\n this.popupService = popupService;\n this.builder = builder;\n this.localizationService = localizationService;\n /**\n * Specifies the positionMode of the FloatingActionButton\n * ([see example]({% slug positioning_floatingactionbutton %}#toc-positionMode)).\n *\n * * The possible values are:\n * * `absolute`—Positions the FloatingActionButton absolutely to its first positioned parent element.\n * * `fixed` (Default)—Positions the FloatingActionButton relative to the viewport. It always stays in the same place even if the page is scrolled.\n */\n this.positionMode = 'fixed';\n /**\n * Specifies the animation settings of the FloatingActionButton dial items.\n * ([see example]({% slug dialitems_floatingactionbutton %}#toc-animation)).\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true`—Applies the default [`DialItemAnimation`]({% slug api_buttons_dialitemanimation %}) settings.\n * * `false`\n * * `DialItemAnimation`\n * * `duration`—Specifies the animation duration in milliseconds for each dial item. Defaults to `180ms`.\n * * `gap`—Specifies the animation duration gap in milliseconds after each dial item is animated. Defaults to `90ms`.\n */\n this.dialItemAnimation = true;\n /**\n * Specifies the [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the FloatingActionButton.\n */\n this.tabIndex = 0;\n /**\n * Specifies the collection of the dial items that will be rendered in the FloatingActionButton popup.\n */\n this.dialItems = [];\n /**\n * Fires each time the FloatingActionButton gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the FloatingActionButton gets focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time a dial item is clicked.\n */\n this.dialItemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed\n * ([more information and example]({% slug overview_floatingactionbutton %}#toc-events)).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open\n * ([more information and example]({% slug overview_floatingactionbutton %}#toc-events)).\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.id = `k-${guid()}`;\n this._themeColor = DEFAULT_THEME_COLOR;\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._disabled = false;\n this._align = { horizontal: 'end', vertical: 'bottom' };\n this._offset = { x: DEFAULT_OFFSET, y: DEFAULT_OFFSET };\n this.subscriptions = new Subscription();\n this.rtl = false;\n this.animationEnd = new EventEmitter();\n this.initialSetup = true;\n validatePackage(packageMetadata);\n this.subscribeNavigationEvents();\n this.subscriptions.add(this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n }));\n }\n get fixedClass() {\n return this.positionMode === 'fixed';\n }\n get absoluteClass() {\n return this.positionMode === 'absolute';\n }\n /**\n * Specifies the theme color of the FloatingActionButton\n * ([see example]({% slug appearance_floatingactionbutton %}#toc-themeColor)).\n * The theme color will be applied as background color of the component.\n *\n * The possible values are:\n * * `primary` (Default)—Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `none`— Removes the built in theme color.\n */\n set themeColor(themeColor) {\n const newThemeColor = themeColor ? themeColor : DEFAULT_THEME_COLOR;\n this.handleClasses(newThemeColor, 'themeColor');\n this._themeColor = newThemeColor;\n }\n get themeColor() {\n return this._themeColor;\n }\n /**\n * Specifies the size of the FloatingActionButton\n * ([see example]({% slug appearance_floatingactionbutton %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the FloatingActionButton.\n *\n * The possible values are:\n * * `small`\n * * `medium`\n * * `large`\n * * `full` (default)\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Specifies whether the FloatingActionButton is disabled.\n */\n set disabled(disabled) {\n this._disabled = disabled;\n }\n get disabled() {\n return this._disabled;\n }\n /**\n * Specifies the horizontal and vertical alignment of the FloatingActionButton\n * ([see example]({% slug positioning_floatingactionbutton %}#toc-align)).\n *\n * The possible values are:\n * * `{ horizontal: 'start'|'center'|'end', vertical: 'top'|'middle'|'bottom' }`\n *\n * The default value is:\n * * `{ horizontal: 'end', vertical: 'bottom' }`\n *\n */\n set align(align) {\n this._align = Object.assign(this._align, align);\n }\n get align() {\n return this._align;\n }\n /**\n * Specifies the horizontal and vertical offset position of the FloatingActionButton\n * ([see example]({% slug positioning_floatingactionbutton %}#toc-offset)).\n *\n * * The default value is:\n * * `{ x: '16px', y: '16px' }`\n */\n set offset(offset) {\n this._offset = Object.assign(this._offset, offset);\n this.offsetStyles();\n }\n get offset() {\n return this._offset;\n }\n /**\n * @hidden\n */\n get componentTabIndex() {\n return this.disabled ? (-1) : this.tabIndex;\n }\n ngAfterViewInit() {\n ['size', 'rounded', 'themeColor'].forEach(option => this.handleClasses(this[option], option));\n this.renderer.addClass(this.element.nativeElement, this.alignClass());\n this.offsetStyles();\n this.initialSetup = false;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * Indicates whether the FloatingActionButton is currently open.\n */\n get isOpen() { return isPresent(this.popupRef); }\n /**\n * Focuses the FloatingActionButton.\n */\n focus() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n }\n /**\n * Blurs the FloatingActionButton.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.button.nativeElement.blur();\n }\n }\n /**\n * Toggles the visibility of the FloatingActionButton dial items popup.\n *\n * If you use the `toggleDial` method to open or close the dial items,\n * the `open` and `close` events do not fire ([more information and examples]({% slug openstate_floatingactionbutton %}#toc-events)).\n *\n * @param open - The state of dial items popup.\n */\n toggleDial(open) {\n if (this.disabled || !this.hasDialItems) {\n return;\n }\n const shouldOpen = isPresent(open) ? open : !this.isOpen;\n if (this.disabled || shouldOpen === this.isOpen) {\n return;\n }\n if (shouldOpen) {\n setTimeout(() => this.openDial());\n }\n else {\n this.closeDial();\n }\n }\n /**\n * @hidden\n */\n get role() {\n return (this.dialItems && this.dialItems.length) ? 'menubutton' : 'button';\n }\n /**\n * @hidden\n */\n get ariaExpanded() {\n return isPresent(this.isOpen);\n }\n /**\n * @hidden\n */\n get ariaHasPopup() {\n return isPresent(this.isOpen);\n }\n /**\n * @hidden\n */\n get iconClasses() {\n const classes = [];\n if (this.iconClass) {\n classes.push(`${this.iconClass}`);\n }\n if (this.icon) {\n classes.push(`k-fab-icon k-icon k-i-${this.icon}`);\n }\n return classes;\n }\n /**\n * @hidden\n */\n clickHandler() {\n if (this.disabled || !this.hasDialItems) {\n return;\n }\n this.ngZone.run(() => {\n const shouldOpen = !this.isOpen;\n this.toggleDialWithEvents(shouldOpen);\n });\n }\n /**\n * @hidden\n */\n keyDownHandler(event) {\n this.keyHandler(event);\n }\n /**\n * @hidden\n */\n keyHandler(event, keyEvent) {\n if (this.disabled) {\n return;\n }\n const focused = this.focusService.focused || 0;\n const keyCode = event.keyCode;\n const action = this.navigationService.process({\n altKey: event.altKey,\n current: focused,\n keyCode,\n keyEvent: keyEvent,\n max: this.dialItems ? this.dialItems.length - 1 : 0,\n min: 0,\n flipNavigation: this.align.vertical === 'bottom'\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Tab) {\n event.preventDefault();\n }\n }\n /**\n * @hidden\n */\n onItemClick(event) {\n const item = closest(event.target, '.k-fab-item');\n if (!item) {\n return;\n }\n const index = item.getAttribute('data-fab-item-index');\n this.emitItemClick(index);\n }\n /**\n * @hidden\n */\n focusHandler() {\n if (!this.disabled) {\n this.onFocus.emit();\n }\n }\n /**\n * @hidden\n */\n blurHandler() {\n this.onBlur.emit();\n this.toggleDialWithEvents(false);\n }\n handleClasses(inputValue, input) {\n if (isPresent(this.button) && (this[input] !== inputValue || this.initialSetup)) {\n const button = this.button.nativeElement;\n const classesToRemove = {\n themeColor: `${FILLMODE_CLASS}-${this.themeColor}`,\n size: SIZE_CLASSES[this.size],\n rounded: ROUNDED_CLASSES[this.rounded]\n };\n const classesToAdd = {\n themeColor: inputValue !== 'none' ? `${FILLMODE_CLASS}-${inputValue}` : '',\n size: SIZE_CLASSES[inputValue],\n rounded: ROUNDED_CLASSES[inputValue]\n };\n this.renderer.removeClass(button, classesToRemove[input]);\n if (classesToAdd[input]) {\n this.renderer.addClass(button, classesToAdd[input]);\n }\n }\n }\n onEnterPressed() {\n const index = this.focusService.focused;\n this.emitItemClick(index);\n }\n emitItemClick(index) {\n const item = this.dialItems[index];\n if (item && !item.disabled) {\n const clickEventArgs = { item: item, index: index };\n this.dialItemClick.emit(clickEventArgs);\n this.toggleDialWithEvents(false);\n }\n }\n subscribeNavigationEvents() {\n this.subscriptions.add(this.navigationService.navigate.subscribe(this.onArrowKeyNavigate.bind(this)));\n this.subscriptions.add(this.navigationService.enter.subscribe(this.onNavigationEnterPress.bind(this)));\n this.subscriptions.add(merge(this.navigationService.close, this.navigationService.esc).subscribe(this.onNavigationClose.bind(this)));\n }\n onArrowKeyNavigate(index) {\n this.focusService.focus(index);\n }\n onNavigationEnterPress() {\n this.ngZone.run(() => {\n if (this.isOpen) {\n let focusedIndex = this.focusService.focused;\n const focusedItem = this.dialItems[focusedIndex];\n if (focusedItem && focusedItem.disabled) {\n return;\n }\n if (isPresent(focusedIndex) && focusedIndex !== -1) {\n this.onEnterPressed();\n return;\n }\n }\n if (!this.isOpen && isDocumentAvailable()) {\n this.toggleDialWithEvents(true);\n this.button.nativeElement.focus();\n }\n });\n }\n onNavigationClose() {\n if (this.isOpen) {\n this.ngZone.run(() => {\n this.toggleDialWithEvents(false);\n if (isDocumentAvailable()) {\n this.button.nativeElement.focus();\n }\n });\n }\n }\n alignClass() {\n return `k-pos-${this.align.vertical}-${this.align.horizontal}`;\n }\n toggleDialWithEvents(open) {\n if (open === this.isOpen) {\n return;\n }\n const event = new PreventableEvent();\n if (open) {\n this.open.emit(event);\n }\n else {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n if (open) {\n this.openDial();\n }\n else {\n this.closeDial();\n }\n }\n openPopup() {\n if (this.isOpen) {\n return;\n }\n const isIconFab = this.icon && !this.text;\n const rtl = this.rtl;\n const align = this.align;\n this.popupRef = this.popupService.open({\n anchor: this.element.nativeElement,\n animate: false,\n content: this.popupTemplate,\n anchorAlign: getAnchorAlign(align, rtl),\n popupAlign: getPopupAlign(align, rtl),\n popupClass: 'k-fab-popup k-popup-transparent'\n });\n const popupElement = this.popupRef.popupElement;\n this.renderer.setStyle(popupElement, 'box-shadow', 'none');\n if (isIconFab) {\n this.subscriptions.add(this.popupRef.popupOpen.subscribe(() => this.positionPopup()));\n }\n this.ngZone.runOutsideAngular(() => {\n this.popupMouseDownListener = this.renderer.listen(popupElement, 'mousedown', (event) => {\n event.preventDefault();\n });\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.toggleDialWithEvents(false));\n }\n closePopup() {\n if (this.isOpen) {\n if (this.popupMouseDownListener) {\n this.popupMouseDownListener();\n }\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n openDial() {\n this.openPopup();\n this.focusService.focus(0);\n if (this.dialItemAnimation && this.isValidAnimation()) {\n this.playAnimation(true);\n }\n }\n closeDial() {\n if (this.dialItemAnimation && this.isValidAnimation()) {\n this.playAnimation(false);\n this.animationEnd.pipe(take(1)).subscribe(() => this.closePopup());\n }\n else {\n this.closePopup();\n }\n }\n isValidAnimation() {\n const animation = this.dialItemAnimation;\n if (typeof animation !== 'boolean') {\n return animation.duration !== 0;\n }\n return true;\n }\n positionPopup() {\n if (this.dialItemTemplate) {\n return;\n }\n const fab = this.element.nativeElement;\n const fabWidth = fab.getBoundingClientRect().width;\n const popupEl = this.popupRef.popupElement;\n const icon = popupEl.querySelector('.k-fab-item-icon');\n if (!icon) {\n return;\n }\n const iconWidth = icon.getBoundingClientRect().width;\n const left = (fabWidth / 2) - (iconWidth / 2);\n const popupLeft = popupEl.getBoundingClientRect().left;\n const isEndAlign = this.align.horizontal === 'end';\n const leftValue = isEndAlign ? (popupLeft - left) : (left + popupLeft);\n const rtlLeftValue = isEndAlign ? (left + popupLeft) : (popupLeft - left);\n popupEl.style.left = this.rtl ? `${rtlLeftValue}px` : `${leftValue}px`;\n }\n offsetStyles() {\n const hostElement = this.element.nativeElement;\n this.renderer.setStyle(hostElement, this.horizontalPosition, this.horizontalOffset);\n this.renderer.setStyle(hostElement, this.verticalPosition, this.verticalOffset);\n }\n get hasDialItems() {\n return isPresent(this.dialItems) && this.dialItems.length !== 0;\n }\n /**\n * Gets the CSS prop name of the selected vertical position (`top`/`bottom`);\n */\n get verticalPosition() {\n return {\n top: 'top',\n middle: 'top',\n bottom: 'bottom'\n }[this.align.vertical];\n }\n /**\n * Gets the offset according to the selected vertical position.\n */\n get verticalOffset() {\n if (this.align.vertical === 'middle') {\n return this.offset.y === DEFAULT_OFFSET ? '50%' : `calc(50% + ${this.offset.y})`;\n }\n return this.offset.y;\n }\n /**\n * Gets the CSS prop name of the selected horizontal position (`left`/`right`);\n */\n get horizontalPosition() {\n const { horizontal } = this.align;\n return {\n end: this.rtl ? 'left' : 'right',\n center: 'left',\n start: this.rtl ? 'right' : 'left'\n }[horizontal];\n }\n /**\n * Gets the offset according to the selected horizontal position.\n */\n get horizontalOffset() {\n if (this.align.horizontal === 'center') {\n return this.offset.x === DEFAULT_OFFSET ? '50%' : `calc(50% + ${this.offset.x})`;\n }\n return this.offset.x;\n }\n playerFor(element, animation) {\n const factory = this.builder.build(animation);\n return factory.create(element);\n }\n playAnimation(open) {\n const durationSettings = this.durationSettings();\n const animationSettings = {\n duration: durationSettings.duration,\n gap: durationSettings.gap,\n align: this.align\n };\n const animation = open ? openAnimation(animationSettings) : closeAnimation(animationSettings);\n let player = this.playerFor(this.popupRef.popupElement, animation);\n player.play();\n player.onDone(() => {\n if (player) {\n this.animationEnd.emit();\n player.destroy();\n player = null;\n }\n });\n }\n durationSettings() {\n return {\n duration: this.animationDuration(),\n gap: this.animationGap()\n };\n }\n animationGap() {\n const animation = this.dialItemAnimation;\n if (typeof animation !== 'boolean' && isPresent(animation.gap)) {\n return animation.gap;\n }\n return DEFAULT_ITEM_GAP;\n }\n animationDuration() {\n const animation = this.dialItemAnimation;\n if (typeof animation !== 'boolean' && isPresent(animation.duration)) {\n return animation.duration;\n }\n return DEFAULT_DURATION;\n }\n}\nFloatingActionButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: FocusService }, { token: NavigationService }, { token: i0.NgZone }, { token: i3.PopupService }, { token: i4.AnimationBuilder }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFloatingActionButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FloatingActionButtonComponent, selector: \"kendo-floatingactionbutton\", inputs: { themeColor: \"themeColor\", size: \"size\", rounded: \"rounded\", disabled: \"disabled\", align: \"align\", offset: \"offset\", positionMode: \"positionMode\", icon: \"icon\", iconClass: \"iconClass\", buttonClass: \"buttonClass\", dialClass: \"dialClass\", text: \"text\", dialItemAnimation: \"dialItemAnimation\", tabIndex: \"tabIndex\", dialItems: \"dialItems\" }, outputs: { onBlur: \"blur\", onFocus: \"focus\", dialItemClick: \"dialItemClick\", open: \"open\", close: \"close\" }, host: { properties: { \"class.k-pos-fixed\": \"this.fixedClass\", \"class.k-pos-absolute\": \"this.absoluteClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatingactionbutton'\n }\n ], queries: [{ propertyName: \"dialItemTemplate\", first: true, predicate: DialItemTemplateDirective, descendants: true }, { propertyName: \"fabTemplate\", first: true, predicate: FloatingActionButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"button\", first: true, predicate: [\"button\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }], ngImport: i0, template: `\n \n \n \n\n \n \n {{ text }}\n \n \n\n \n \n \n \n `, isInline: true, components: [{ type: DialListComponent, selector: \"[kendoDialList]\", inputs: [\"dialItems\", \"dialItemTemplate\", \"align\"] }], directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-floatingactionbutton',\n providers: [\n FocusService,\n NavigationService,\n NAVIGATION_SETTINGS_PROVIDER,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatingactionbutton'\n }\n ],\n template: `\n \n \n \n\n \n \n {{ text }}\n \n \n\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: FocusService }, { type: NavigationService }, { type: i0.NgZone }, { type: i3.PopupService }, { type: i4.AnimationBuilder }, { type: i1.LocalizationService }]; }, propDecorators: { fixedClass: [{\n type: HostBinding,\n args: ['class.k-pos-fixed']\n }], absoluteClass: [{\n type: HostBinding,\n args: ['class.k-pos-absolute']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], button: [{\n type: ViewChild,\n args: ['button', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], dialItemTemplate: [{\n type: ContentChild,\n args: [DialItemTemplateDirective, { static: false }]\n }], fabTemplate: [{\n type: ContentChild,\n args: [FloatingActionButtonTemplateDirective, { static: false }]\n }], themeColor: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], disabled: [{\n type: Input\n }], align: [{\n type: Input\n }], offset: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], dialClass: [{\n type: Input\n }], text: [{\n type: Input\n }], dialItemAnimation: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], dialItems: [{\n type: Input\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], dialItemClick: [{\n type: Output,\n args: ['dialItemClick']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }] } });\n\nconst exportedModules = [\n FloatingActionButtonComponent,\n DialItemTemplateDirective,\n FloatingActionButtonTemplateDirective\n];\nconst declarations = [\n ...exportedModules,\n DialListComponent,\n DialItemComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the FloatingActionButton component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the FloatingActionButton module\n * import { FloatingActionButtonModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, FloatingActionButtonModule], // import FloatingActionButton module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * ```\n */\nclass FloatingActionButtonModule {\n}\nFloatingActionButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFloatingActionButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, declarations: [FloatingActionButtonComponent,\n DialItemTemplateDirective,\n FloatingActionButtonTemplateDirective, DialListComponent,\n DialItemComponent], imports: [CommonModule, PopupModule, ListModule, EventsModule], exports: [FloatingActionButtonComponent,\n DialItemTemplateDirective,\n FloatingActionButtonTemplateDirective] });\nFloatingActionButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, imports: [[CommonModule, PopupModule, ListModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FloatingActionButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedModules],\n imports: [CommonModule, PopupModule, ListModule, EventsModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmodules'] }})\n * definition for the Buttons components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Buttons module\n * import { ButtonsModule } from '@progress/kendo-angular-buttons';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ButtonsModule], // import Buttons module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ButtonsModule {\n}\nButtonsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, exports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule] });\nButtonsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, imports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ButtonsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [ButtonGroupModule, ButtonModule, SplitButtonModule, DropDownButtonModule, ChipModule, FloatingActionButtonModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ButtonDirective as Button, ButtonDirective, ButtonGroupComponent as ButtonGroup, ButtonGroupComponent, ButtonGroupModule, ButtonItemTemplateDirective, ButtonModule, ButtonsModule, ChipComponent, ChipListComponent, ChipModule, DialItemTemplateDirective, DropDownButtonComponent as DropDownButton, DropDownButtonComponent, DropDownButtonModule, FloatingActionButtonComponent, FloatingActionButtonModule, FloatingActionButtonTemplateDirective, FocusableDirective, ListComponent, ListModule, LocalizedSplitButtonMessagesDirective, PreventableEvent, SplitButtonComponent as SplitButton, SplitButtonComponent, SplitButtonCustomMessagesComponent, SplitButtonModule, TemplateContextDirective };\n\n","export const ARC = \"arc\";\nexport const AXIS_LABEL_CLICK = \"axisLabelClick\";\nexport const BLACK = \"#000\";\nexport const BOTTOM = \"bottom\";\nexport const CENTER = \"center\";\nexport const CIRCLE = \"circle\";\nexport const COORD_PRECISION = 3;\nexport const CROSS = \"cross\";\nexport const DATE = \"date\";\nexport const DEFAULT_FONT = \"12px sans-serif\";\nexport const DEFAULT_HEIGHT = 400;\nexport const DEFAULT_PRECISION = 10;\nexport const DEFAULT_WIDTH = 600;\nexport const END = \"end\";\nexport const FORMAT_REGEX = /\\{\\d+:?/;\nexport const HEIGHT = \"height\";\nexport const HIGHLIGHT_ZINDEX = 100;\nexport const INSIDE = \"inside\";\nexport const LEFT = \"left\";\nexport const MAX_VALUE = Number.MAX_VALUE;\nexport const MIN_VALUE = -Number.MAX_VALUE;\nexport const NONE = \"none\";\nexport const NOTE_CLICK = \"noteClick\";\nexport const NOTE_HOVER = \"noteHover\";\nexport const NOTE_LEAVE = \"noteLeave\";\nexport const OBJECT = \"object\";\nexport const OUTSIDE = \"outside\";\nexport const RIGHT = \"right\";\nexport const ROUNDED_RECT = \"roundedRect\";\nexport const START = \"start\";\nexport const STRING = \"string\";\nexport const TOP = \"top\";\nexport const TRIANGLE = \"triangle\";\nexport const VALUE = \"value\";\nexport const WHITE = \"#fff\";\nexport const WIDTH = \"width\";\nexport const X = \"x\";\nexport const Y = \"y\";\nexport const DEFAULT_SERIES_OPACITY = 1;\n","export default function isArray(value) {\n return Array.isArray(value);\n}","import isArray from './is-array';\n\nexport default function addClass(element, classes) {\n const classArray = isArray(classes) ? classes : [ classes ];\n\n for (let idx = 0; idx < classArray.length; idx++) {\n const className = classArray[idx];\n if (element.className.indexOf(className) === -1) {\n element.className += \" \" + className;\n }\n }\n}","const SPACE_REGEX = /\\s+/g;\n\nexport default function removeClass(element, className) {\n if (element && element.className) {\n element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n }\n}","import { drawing } from '@progress/kendo-drawing';\n\nexport default function alignPathToPixel(path) {\n let offset = 0.5;\n if (path.options.stroke && drawing.util.defined(path.options.stroke.width)) {\n if (path.options.stroke.width % 2 === 0) {\n offset = 0;\n }\n }\n\n for (let i = 0; i < path.segments.length; i++) {\n path.segments[i].anchor().round(0).translate(offset, offset);\n }\n\n return path;\n}","export default function clockwise(angle1, angle2) {\n // True if angle2 is clockwise of angle1\n // assuming angles grow in clock-wise direction\n // (as in the pie and radar charts)\n return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n}","export default function isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n}","import { STRING } from './constants';\n\nexport default function isString(value) {\n return typeof value === STRING;\n}","import isNumber from './is-number';\nimport isString from './is-string';\n\nexport default function convertableToNumber(value) {\n return isNumber(value) || (isString(value) && isFinite(value));\n}","export default function isFunction(fn) {\n return typeof fn === \"function\";\n}","import isFunction from './is-function';\n\nconst OBJECT = \"object\";\nconst UNDEFINED = \"undefined\";\n\nfunction deepExtendOne(destination, source) {\n\n for (let property in source) {\n let propValue = source[property];\n let propType = typeof propValue;\n\n let propInit;\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit && propInit !== Array) {\n\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n let destProp = destination[property];\n if (typeof (destProp) === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n\n return destination;\n}\n\nexport default function deepExtend(destination) {\n const length = arguments.length;\n\n for (let i = 1; i < length; i++) {\n deepExtendOne(destination, arguments[i]);\n }\n\n return destination;\n}","export default function isObject(value) {\n return typeof value === \"object\";\n}","import isNumber from './is-number';\n\nexport default function styleValue(value) {\n if (isNumber(value)) {\n return value + \"px\";\n }\n return value;\n}","import isObject from './is-object';\nimport isArray from './is-array';\nimport isString from './is-string';\nimport styleValue from './style-value';\n\nconst SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\nfunction isSizeField(field) {\n return SIZE_STYLES_REGEX.test(field);\n}\n\nexport default function elementStyles(element, styles) {\n const stylesArray = isString(styles) ? [ styles ] : styles;\n\n if (isArray(stylesArray)) {\n const result = {};\n const style = window.getComputedStyle(element);\n\n for (let idx = 0; idx < stylesArray.length; idx++) {\n let field = stylesArray[idx];\n result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n }\n\n return result;\n } else if (isObject(styles)) {\n for (let field in styles) {\n element.style[field] = styleValue(styles[field]);\n }\n }\n}","import { TOP, BOTTOM, LEFT, RIGHT } from './constants';\n\nexport default function getSpacing(value, defaultSpacing = 0) {\n const spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n if (typeof(value) === \"number\") {\n spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n } else {\n spacing[TOP] = value[TOP] || defaultSpacing;\n spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n spacing[LEFT] = value[LEFT] || defaultSpacing;\n }\n\n return spacing;\n}","let current = {\n compile: function(template) {\n return template;\n }\n};\n\nclass TemplateService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static compile(template) {\n return current.compile(template);\n }\n}\n\nexport default TemplateService;\n","import TemplateService from '../services/template-service';\nimport isFunction from './is-function';\n\nexport default function getTemplate(options = {}) {\n let template;\n if (options.template) {\n options.template = template = TemplateService.compile(options.template);\n } else if (isFunction(options.content)) {\n template = options.content;\n }\n\n return template;\n}\n","import { drawing } from '@progress/kendo-drawing';\n\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nconst getterCache = {};\n\ngetterCache['undefined'] = function(obj) {\n return obj;\n};\n\nexport default function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n const fields = [];\n field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n fields.push(drawing.util.defined(index) ? index : (indexAccessor || field));\n });\n\n getterCache[field] = function(obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n\n return result;\n };\n\n return getterCache[field];\n}","export default function grep(array, callback) {\n const length = array.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n if (callback(array[idx])) {\n result .push(array[idx]);\n }\n }\n\n return result;\n}","export default function hasClasses(element, classNames) {\n if (element.className) {\n const names = classNames.split(\" \");\n for (let idx = 0; idx < names.length; idx++) {\n if (element.className.indexOf(names[idx]) !== -1) {\n return true;\n }\n }\n }\n}","\nexport default class HashMap {\n constructor() {\n this._map = {};\n }\n\n get(name) {\n return this._map[this._key(name)];\n }\n\n set(name, value) {\n this._map[this._key(name)] = value;\n }\n\n _key(name) {\n return name instanceof Date ? name.getTime() : name;\n }\n}","export default function inArray(value, array) {\n if (array) {\n return array.indexOf(value) !== -1;\n }\n}","import { drawing } from '@progress/kendo-drawing';\nimport { COORD_PRECISION } from './constants';\n\nexport default function interpolateValue(start, end, progress) {\n return drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n}","import deepExtend from './deep-extend';\n\nconst TRIGGER = 'trigger';\n\nclass InstanceObserver {\n constructor(observer, handlers) {\n this.observer = observer;\n this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n }\n\n trigger(name, args) {\n const { observer, handlerMap } = this;\n let isDefaultPrevented;\n if (handlerMap[name]) {\n isDefaultPrevented = this.callObserver(handlerMap[name], args);\n } else if (observer[TRIGGER]) {\n isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n }\n\n return isDefaultPrevented;\n }\n\n callObserver(fnName, ...args) {\n return this.observer[fnName].apply(this.observer, args);\n }\n\n requiresHandlers(names) {\n if (this.observer.requiresHandlers) {\n return this.observer.requiresHandlers(names);\n }\n\n for (let idx = 0; idx < names.length; idx++) {\n if (this.handlerMap[names[idx]]) {\n return true;\n }\n }\n }\n}\n\nexport default InstanceObserver;","import { drawing } from '@progress/kendo-drawing';\n\nexport default function map(array, callback) {\n const length = array.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n let value = callback(array[idx]);\n if (drawing.util.defined(value)) {\n result.push(value);\n }\n }\n return result;\n}","import { support } from '@progress/kendo-drawing';\n\nconst browser = support.browser || {};\n\nexport default function mousewheelDelta(e) {\n let delta = 0;\n\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n\n if (browser.webkit) {\n // Webkit browsers scale the delta by twice the device resolution.\n // Possibly related to https://bugs.webkit.org/show_bug.cgi?id=196339\n //\n // Low device resolutions (e.g. zoom-out to 30%) also behave strangely.\n delta = delta / (2 * Math.max(window.devicePixelRatio, 0.625));\n }\n } else if (e.detail) {\n delta = e.detail / 3;\n }\n\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\n return delta;\n}\n","import defined from './defined';\n\nexport default function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n}","export default function eventElement(e = {}) {\n return e.touch ? e.touch.initialTouch : e.target;\n}","const now = Date.now || function() {\n return new Date().getTime();\n};\n\nexport default now;\n","export default function promiseAll(promises) {\n return Promise.all(promises);\n}","export default function bindEvents(element, events) {\n for (let eventName in events) {\n const eventNames = eventName.trim().split(\" \");\n for (let idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n}","export default function elementOffset(element) {\n const box = element.getBoundingClientRect();\n\n const documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n}","export default function elementStyles(element, styles) {\n const result = {};\n const style = window.getComputedStyle(element) || {};\n const stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (let idx = 0; idx < stylesArray.length; idx++) {\n let field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n}","import elementStyles from './element-styles';\nimport defined from './defined';\n\nfunction getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n}\n\nexport default function elementSize(element, size) {\n if (size) {\n const { width, height } = size;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n const size = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size.width, 10),\n height: parseInt(size.height, 10)\n };\n }\n}","export default function unbindEvents(element, events = {}) {\n for (let name in events) {\n const eventNames = name.trim().split(\" \");\n for (let idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n}","import { default as elementStyles } from './element-styles';\n\nexport default function elementPadding(element) {\n const { paddingLeft, paddingTop } = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n}\n","import Matrix from '../geometry/matrix';\n\nconst matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n const match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n const members = match[1].split(',').map(x => parseFloat(x));\n return new Matrix(...members);\n}\n\nfunction transformMatrix(element) {\n const transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n let matrix = transformMatrix(element);\n let parent = element.parentElement;\n while (parent) {\n const parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","/* eslint-disable no-console */\n\nexport default function logToConsole(message) {\n const console = window.console;\n\n if (typeof(console) != \"undefined\" && console.log) {\n console.log(message);\n }\n}","import {\n drawing,\n Class,\n logToConsole\n} from '@progress/kendo-drawing';\n\nconst {\n append,\n bindEvents,\n defined,\n deg,\n elementOffset,\n elementSize,\n eventCoordinates,\n eventElement,\n hashKey,\n last,\n limitValue,\n objectKey,\n rad,\n round,\n unbindEvents,\n valueOrDefault\n} = drawing.util;\n\nexport {\n append,\n bindEvents,\n Class,\n defined,\n deg,\n elementOffset,\n elementSize,\n eventCoordinates,\n eventElement,\n hashKey,\n last,\n limitValue,\n logToConsole,\n objectKey,\n rad,\n round,\n unbindEvents,\n valueOrDefault\n};\n","import { logToConsole } from '../drawing-utils';\n\nclass FontLoader {\n static fetchFonts(options, fonts, state = { depth: 0 }) {\n const MAX_DEPTH = 5;\n\n if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n return;\n }\n\n Object.keys(options).forEach(function(key) {\n const value = options[key];\n if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n return;\n }\n\n if (key === \"font\") {\n fonts.push(value);\n } else if (typeof value === \"object\") {\n state.depth++;\n FontLoader.fetchFonts(value, fonts, state);\n state.depth--;\n }\n });\n }\n\n static loadFonts(fonts, callback) {\n let promises = [];\n\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function(font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n // Silence font-loading errors\n logToConsole(e);\n }\n\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n }\n\n static preloadFonts(options, callback) {\n const fonts = [];\n FontLoader.fetchFonts(options, fonts);\n\n FontLoader.loadFonts(fonts, callback);\n }\n}\n\nexport default FontLoader;","import deepExtend from './deep-extend';\n\nexport default function setDefaultOptions(type, options) {\n const proto = type.prototype;\n if (proto.options) {\n proto.options = deepExtend({}, proto.options, options);\n } else {\n proto.options = options;\n }\n}","import { MIN_VALUE, MAX_VALUE } from './constants';\n\nexport default function sparseArrayLimits(arr) {\n let min = MAX_VALUE;\n let max = MIN_VALUE;\n\n for (let idx = 0, length = arr.length; idx < length; idx++) {\n const value = arr[idx];\n if (value !== null && isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n return {\n min: min === MAX_VALUE ? undefined : min,\n max: max === MIN_VALUE ? undefined : max\n };\n}","export default function find(array, predicate) {\n for (let i = 0; i < array.length; i++) {\n const item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n}\n","import { geometry } from '@progress/kendo-drawing';\n\nconst Matrix = geometry.Matrix;\nconst matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n const match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n const members = match[1].split(',').map(x => parseFloat(x));\n return new Matrix(...members);\n}\n\nfunction transformMatrix(element) {\n const transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n let matrix = transformMatrix(element);\n let parent = element.parentElement;\n while (parent) {\n const parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import { Color } from '@progress/kendo-drawing';\nimport { WHITE, BLACK } from './constants';\n\nfunction autoTextColor(color) {\n const isDark = new Color(color).isDark();\n if (isDark) {\n return WHITE;\n }\n\n return BLACK;\n}\n\nexport default autoTextColor;\n","const DELETED = {};\n\nclass LegacySet {\n constructor(values) {\n this._index = {};\n this._values = values ? values.slice(0) : [];\n\n for (let i = 0; i < this._values.length; i++) {\n this._index[this._values[i]] = i;\n }\n }\n\n values() {\n return this._values.filter(item => item !== DELETED);\n }\n\n has(value) {\n return this._index[value] !== undefined;\n }\n\n add(value) {\n if (!this.has(value)) {\n this._index[value] = this._values.length;\n this._values.push(value);\n }\n }\n\n delete(value) {\n const index = this._index[value];\n if (index !== undefined) {\n this._values[index] = DELETED;\n delete this._index[value];\n }\n }\n\n clear() {\n this._index = {};\n this._values = [];\n }\n\n get size() {\n return this._values.length;\n }\n}\n\nclass SetWrapper {\n constructor(values) {\n this._set = new Set(values);\n }\n\n values() {\n return Array.from(this._set);\n }\n\n has(value) {\n return this._set.has(value);\n }\n\n add(value) {\n this._set.add(value);\n }\n\n delete(value) {\n this._set.delete(value);\n }\n\n clear() {\n this._set.clear();\n }\n\n get size() {\n return this._set.size;\n }\n}\n\n// TODO: Drop LegacySet when removing support for IE10\nlet supportsSet = () => {\n let supported = false;\n\n if (typeof Set === 'function') {\n const set = new Set([1]);\n supported = set.has(1);\n }\n\n return supported;\n};\n\nexport default function createHashSet(values) {\n if (supportsSet()) {\n return new SetWrapper(values);\n }\n\n return new LegacySet(values);\n}\n","export default function defaultErrorHandler(error) {\n throw error;\n}\n","let keys = {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n};\n\nexport default keys;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function autoMajorUnit(min, max) {\n let diff = round(max - min, DEFAULT_PRECISION - 1);\n\n if (diff === 0) {\n if (max === 0) {\n return 0.1;\n }\n\n diff = Math.abs(max);\n }\n\n const scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n const relativeValue = round((diff / scale), DEFAULT_PRECISION);\n let scaleMultiplier = 1;\n\n if (relativeValue < 1.904762) {\n scaleMultiplier = 0.2;\n } else if (relativeValue < 4.761904) {\n scaleMultiplier = 0.5;\n } else if (relativeValue < 9.523809) {\n scaleMultiplier = 1;\n } else {\n scaleMultiplier = 2;\n }\n\n return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n}","import { COORD_PRECISION } from '../common/constants';\nimport { Class, rad, round } from '../common';\n\nclass Point extends Class {\n constructor(x, y) {\n super();\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n clone() {\n return new Point(this.x, this.y);\n }\n\n equals(point) {\n return point && this.x === point.x && this.y === point.y;\n }\n\n rotate(center, degrees) {\n const theta = rad(degrees);\n const cosT = Math.cos(theta);\n const sinT = Math.sin(theta);\n const { x: cx, y: cy } = center;\n const { x, y } = this;\n\n this.x = round(\n cx + (x - cx) * cosT + (y - cy) * sinT,\n COORD_PRECISION\n );\n\n this.y = round(\n cy + (y - cy) * cosT - (x - cx) * sinT,\n COORD_PRECISION\n );\n\n return this;\n }\n\n multiply(a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n }\n\n distanceTo(point) {\n const dx = this.x - point.x;\n const dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n static onCircle(center, angle, radius) {\n const radians = rad(angle);\n\n return new Point(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n }\n}\n\n\nexport default Point;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Point from './point';\n\nimport { X, Y, TOP, BOTTOM, LEFT, RIGHT, CENTER, WIDTH, HEIGHT } from '../common/constants';\nimport { Class, defined, getSpacing, inArray, isArray, rad } from '../common';\n\nclass Box extends Class {\n constructor(x1, y1, x2, y2) {\n super();\n\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n }\n\n equals(box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n }\n\n width() {\n return this.x2 - this.x1;\n }\n\n height() {\n return this.y2 - this.y1;\n }\n\n translate(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n\n return this;\n }\n\n move(x, y) {\n const height = this.height();\n const width = this.width();\n\n if (defined(x)) {\n this.x1 = x;\n this.x2 = this.x1 + width;\n }\n\n if (defined(y)) {\n this.y1 = y;\n this.y2 = this.y1 + height;\n }\n\n return this;\n }\n\n wrap(targetBox) {\n this.x1 = Math.min(this.x1, targetBox.x1);\n this.y1 = Math.min(this.y1, targetBox.y1);\n this.x2 = Math.max(this.x2, targetBox.x2);\n this.y2 = Math.max(this.y2, targetBox.y2);\n\n return this;\n }\n\n wrapPoint(point) {\n const arrayPoint = isArray(point);\n const x = arrayPoint ? point[0] : point.x;\n const y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box(x, y, x, y));\n\n return this;\n }\n\n snapTo(targetBox, axis) {\n\n if (axis === X || !axis) {\n this.x1 = targetBox.x1;\n this.x2 = targetBox.x2;\n }\n\n if (axis === Y || !axis) {\n this.y1 = targetBox.y1;\n this.y2 = targetBox.y2;\n }\n\n return this;\n }\n\n alignTo(targetBox, anchor) {\n const height = this.height();\n const width = this.width();\n const axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n const offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n const targetCenter = targetBox.center();\n const center = this.center();\n\n this.x1 += targetCenter.x - center.x;\n this.y1 += targetCenter.y - center.y;\n } else if (anchor === TOP || anchor === LEFT) {\n this[axis + 1] = targetBox[axis + 1] - offset;\n } else {\n this[axis + 1] = targetBox[axis + 2];\n }\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n }\n\n shrink(dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n }\n\n expand(dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n }\n\n pad(padding) {\n const spacing = getSpacing(padding);\n\n this.x1 -= spacing.left;\n this.x2 += spacing.right;\n this.y1 -= spacing.top;\n this.y2 += spacing.bottom;\n\n return this;\n }\n\n unpad(padding) {\n const spacing = getSpacing(padding);\n\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n\n return this.pad(spacing);\n }\n\n clone() {\n return new Box(this.x1, this.y1, this.x2, this.y2);\n }\n\n center() {\n return new Point(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n }\n\n containsPoint(point) {\n\n return point.x >= this.x1 && point.x <= this.x2 &&\n point.y >= this.y1 && point.y <= this.y2;\n }\n\n points() {\n return [\n new Point(this.x1, this.y1),\n new Point(this.x2, this.y1),\n new Point(this.x2, this.y2),\n new Point(this.x1, this.y2)\n ];\n }\n\n getHash() {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n }\n\n overlaps(box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n }\n\n rotate(rotation) {\n let width = this.width();\n let height = this.height();\n const { x: cx, y: cy } = this.center();\n\n const r1 = rotatePoint(0, 0, cx, cy, rotation);\n const r2 = rotatePoint(width, 0, cx, cy, rotation);\n const r3 = rotatePoint(width, height, cx, cy, rotation);\n const r4 = rotatePoint(0, height, cx, cy, rotation);\n\n width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n }\n\n toRect() {\n return new geom.Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n }\n\n hasSize() {\n return this.width() !== 0 && this.height() !== 0;\n }\n\n align(targetBox, axis, alignment) {\n const c1 = axis + 1;\n const c2 = axis + 2;\n const sizeFunc = axis === X ? WIDTH : HEIGHT;\n const size = this[sizeFunc]();\n\n if (inArray(alignment, [ LEFT, TOP ])) {\n this[c1] = targetBox[c1];\n this[c2] = this[c1] + size;\n } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n this[c2] = targetBox[c2];\n this[c1] = this[c2] - size;\n } else if (alignment === CENTER) {\n this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n this[c2] = this[c1] + size;\n }\n }\n}\n\nfunction rotatePoint(x, y, cx, cy, angle) {\n const theta = rad(angle);\n\n return new Point(\n cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n );\n}\n\nexport default Box;\n","import Box from './box';\nimport Point from './point';\nimport { COORD_PRECISION, MAX_VALUE, MIN_VALUE } from '../common/constants';\nimport { Class, clockwise, rad, round } from '../common';\n\nclass Ring extends Class {\n\n constructor(center, innerRadius, radius, startAngle, angle) {\n super();\n\n this.center = center;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.startAngle = startAngle;\n this.angle = angle;\n }\n\n clone() {\n return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n }\n\n middle() {\n return this.startAngle + this.angle / 2;\n }\n\n setRadius(newRadius, innerRadius) {\n if (innerRadius) {\n this.innerRadius = newRadius;\n } else {\n this.radius = newRadius;\n }\n\n return this;\n }\n\n // TODO: Remove and replace with Point.onCircle\n point(angle, innerRadius) {\n const radianAngle = rad(angle);\n const ax = Math.cos(radianAngle);\n const ay = Math.sin(radianAngle);\n const radius = innerRadius ? this.innerRadius : this.radius;\n const x = round(this.center.x - (ax * radius), COORD_PRECISION);\n const y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n return new Point(x, y);\n }\n\n adjacentBox(distance, width, height) {\n const sector = this.clone().expand(distance);\n const midAndle = sector.middle();\n const midPoint = sector.point(midAndle);\n const hw = width / 2;\n const hh = height / 2;\n const sa = Math.sin(rad(midAndle));\n const ca = Math.cos(rad(midAndle));\n let x = midPoint.x - hw;\n let y = midPoint.y - hh;\n\n if (Math.abs(sa) < 0.9) {\n x += hw * -ca / Math.abs(ca);\n }\n\n if (Math.abs(ca) < 0.9) {\n y += hh * -sa / Math.abs(sa);\n }\n\n return new Box(x, y, x + width, y + height);\n }\n\n containsPoint(p) {\n const center = this.center;\n const innerRadius = this.innerRadius;\n const radius = this.radius;\n const startAngle = this.startAngle;\n const endAngle = this.startAngle + this.angle;\n const dx = p.x - center.x;\n const dy = p.y - center.y;\n const vector = new Point(dx, dy);\n const startPoint = this.point(startAngle);\n const startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n const endPoint = this.point(endAngle);\n const endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n const dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n !clockwise(endVector, vector) &&\n dist >= innerRadius * innerRadius && dist <= radius * radius;\n }\n\n getBBox() {\n const box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n const startAngle = round(this.startAngle % 360);\n const endAngle = round((startAngle + this.angle) % 360);\n const innerRadius = this.innerRadius;\n const allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n const startAngleIndex = allAngles.indexOf(startAngle);\n const endAngleIndex = allAngles.indexOf(endAngle);\n let angles;\n\n if (startAngle === endAngle) {\n angles = allAngles;\n } else {\n if (startAngleIndex < endAngleIndex) {\n angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n } else {\n angles = [].concat(\n allAngles.slice(0, endAngleIndex + 1),\n allAngles.slice(startAngleIndex, allAngles.length)\n );\n }\n }\n\n for (let i = 0; i < angles.length; i++) {\n let point = this.point(angles[i]);\n box.wrapPoint(point);\n box.wrapPoint(point, innerRadius);\n }\n\n if (!innerRadius) {\n box.wrapPoint(this.center);\n }\n\n return box;\n }\n\n expand(value) {\n this.radius += value;\n return this;\n }\n}\n\nfunction numericComparer(a, b) {\n return a - b;\n}\n\nexport default Ring;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\nimport { Class } from '../common';\n\nconst DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\nclass ShapeBuilder extends Class {\n createRing(sector, options) {\n const startAngle = sector.startAngle + 180;\n let endAngle = sector.angle + startAngle;\n\n //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n if (sector.angle > 0 && startAngle === endAngle) {\n endAngle += DIRECTION_ANGLE;\n }\n\n const center = new geom.Point(sector.center.x, sector.center.y);\n const radius = Math.max(sector.radius, 0);\n const innerRadius = Math.max(sector.innerRadius, 0);\n const arc = new geom.Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radius,\n radiusY: radius\n });\n const path = draw.Path.fromArc(arc, options).close();\n\n if (innerRadius) {\n arc.radiusX = arc.radiusY = innerRadius;\n const innerEnd = arc.pointAt(endAngle);\n path.lineTo(innerEnd.x, innerEnd.y);\n path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n } else {\n path.lineTo(center.x, center.y);\n }\n\n return path;\n }\n}\n\nShapeBuilder.current = new ShapeBuilder();\n\nexport default ShapeBuilder;","export function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n}\n\nexport function linear(position) {\n return position;\n}\n\nexport function easeOutElastic(position, time, start, diff) {\n let s = 1.70158,\n p = 0,\n a = diff;\n\n if (position === 0) {\n return start;\n }\n\n if (position === 1) {\n return start + diff;\n }\n\n if (!p) {\n p = 0.5;\n }\n\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n\n return a * Math.pow(2, -10 * position) *\n Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n}\n","let animationFrameProxy = (callback) => {\n const wnd = typeof window !== \"undefined\" ? window : {};\n const animationFrame = wnd.requestAnimationFrame ||\n wnd.webkitRequestAnimationFrame ||\n wnd.mozRequestAnimationFrame ||\n wnd.oRequestAnimationFrame ||\n wnd.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n animationFrameProxy = callback => animationFrame.call(wnd, callback);\n animationFrameProxy(callback);\n};\n\nexport default animationFrameProxy;\n","import { Class } from '../common';\n\nlet instance;\n\nclass AnimationFactory extends Class {\n static get current() {\n if (!instance) {\n instance = new AnimationFactory();\n }\n\n return instance;\n }\n\n constructor() {\n super();\n\n this._items = [];\n }\n\n register(name, type) {\n this._items.push({\n name: name,\n type: type\n });\n }\n\n create(element, options) {\n const items = this._items;\n let match;\n\n if (options && options.type) {\n const type = options.type.toLowerCase();\n for (let i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n }\n}\n\nexport default AnimationFactory;\n","import * as easingFunctions from './easing-functions';\nimport { limitValue, now } from '../util';\nimport { animationFrame, Class } from '../common';\nimport AnimationFactory from './animation-factory';\n\nclass Animation extends Class {\n static create(type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n }\n\n get options() {\n return this._options || {\n duration: 500,\n easing: \"swing\"\n };\n }\n\n set options(value) {\n this._options = value;\n }\n\n constructor(element, options) {\n super();\n\n this.options = Object.assign({}, this.options, options);\n this.element = element;\n }\n\n setup() {}\n step() {}\n\n play() {\n const options = this.options;\n const { duration, delay = 0 } = options;\n const easing = easingFunctions[options.easing];\n const start = now() + delay;\n const finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(() => {\n const loop = () => {\n if (this._stopped) {\n return;\n }\n\n const wallTime = now();\n\n const time = limitValue(wallTime - start, 0, duration);\n const position = time / duration;\n const easingPosition = easing(position, time, 0, 1, duration);\n\n this.step(easingPosition);\n\n if (wallTime < finish) {\n animationFrame(loop);\n } else {\n this.abort();\n }\n };\n\n loop();\n }, delay);\n }\n }\n\n abort() {\n this._stopped = true;\n }\n\n destroy() {\n this.abort();\n }\n}\n\nexport default Animation;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { WHITE } from '../common/constants';\nimport { Class, deepExtend, defined, valueOrDefault } from '../common';\n\nclass ChartElement extends Class {\n constructor(options) {\n super();\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n }\n\n initUserOptions(options) {\n return options;\n }\n\n reflow(targetBox) {\n const children = this.children;\n let box;\n\n for (let i = 0; i < children.length; i++) {\n let currentChild = children[i];\n currentChild.reflow(targetBox);\n\n box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n }\n\n this.box = box || targetBox;\n }\n\n destroy() {\n const children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (let i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n }\n\n getRoot() {\n const parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n }\n\n getSender() {\n const service = this.getService();\n if (service) {\n return service.sender;\n }\n }\n\n getService() {\n let element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n }\n\n translateChildren(dx, dy) {\n const children = this.children;\n const childrenCount = children.length;\n\n for (let i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n }\n\n append() {\n for (let i = 0; i < arguments.length; i++) {\n let item = arguments[i];\n this.children.push(item);\n item.parent = this;\n }\n }\n\n renderVisual() {\n if (this.options.visible === false) {\n return;\n }\n\n this.createVisual();\n\n this.addVisual();\n\n this.renderChildren();\n\n this.createAnimation();\n this.renderComplete();\n }\n\n addVisual() {\n if (this.visual) {\n this.visual.chartElement = this;\n\n if (this.parent) {\n this.parent.appendVisual(this.visual);\n }\n }\n }\n\n renderChildren() {\n const children = this.children;\n const length = children.length;\n for (let i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n }\n\n createVisual() {\n this.visual = new draw.Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n }\n\n createAnimation() {\n if (this.visual && this.options.animation) {\n this.animation = draw.Animation.create(\n this.visual, this.options.animation\n );\n }\n }\n\n appendVisual(childVisual) {\n if (!childVisual.chartElement) {\n childVisual.chartElement = this;\n }\n\n if (childVisual.options.noclip) {\n this.clipRoot().visual.append(childVisual);\n } else if (defined(childVisual.options.zIndex)) {\n this.stackRoot().stackVisual(childVisual);\n } else if (this.isStackRoot) {\n this.stackVisual(childVisual);\n } else if (this.visual) {\n this.visual.append(childVisual);\n } else {\n // Allow chart elements without visuals to\n // pass through child visuals\n this.parent.appendVisual(childVisual);\n }\n }\n\n clipRoot() {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n }\n\n stackRoot() {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n }\n\n stackVisual(childVisual) {\n const zIndex = childVisual.options.zIndex || 0;\n const visuals = this.visual.children;\n const length = visuals.length;\n let pos;\n\n for (pos = 0; pos < length; pos++) {\n let sibling = visuals[pos];\n let here = valueOrDefault(sibling.options.zIndex, 0);\n if (here > zIndex) {\n break;\n }\n }\n\n this.visual.insert(pos, childVisual);\n }\n\n traverse(callback) {\n const children = this.children;\n const length = children.length;\n\n for (let i = 0; i < length; i++) {\n let child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n }\n\n closest(match) {\n let element = this;\n let matched = false;\n\n while (element && !matched) {\n matched = match(element);\n\n if (!matched) {\n element = element.parent;\n }\n }\n\n if (matched) {\n return element;\n }\n }\n\n renderComplete() {}\n\n hasHighlight() {\n const options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false));\n }\n\n toggleHighlight(show, opacity) {\n const options = (this.options || {}).highlight || {};\n const customVisual = options.visual;\n let highlight = this._highlight;\n\n if (!highlight) {\n const highlightOptions = {\n fill: {\n color: WHITE,\n opacity: opacity || 0.2\n },\n stroke: {\n color: WHITE,\n width: 1,\n opacity: opacity || 0.2\n }\n };\n\n if (customVisual) {\n highlight = this._highlight = customVisual(\n Object.assign(this.highlightVisualArgs(), {\n createVisual: () => this.createHighlight(highlightOptions),\n sender: this.getSender(),\n series: this.series,\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n runningTotal: this.runningTotal,\n total: this.total\n }\n ));\n\n if (!highlight) {\n return;\n }\n } else {\n highlight = this._highlight = this.createHighlight(highlightOptions);\n }\n\n if (!defined(highlight.options.zIndex)) {\n highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n }\n\n this.appendVisual(highlight);\n }\n\n highlight.visible(show);\n }\n\n createGradientOverlay(element, options, gradientOptions) {\n const overlay = new draw.Path(Object.assign({\n stroke: {\n color: \"none\"\n },\n fill: this.createGradient(gradientOptions),\n closed: element.options.closed\n }, options));\n\n overlay.segments.elements(element.segments.elements());\n\n return overlay;\n }\n\n createGradient(options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n }\n\n supportsPointInactiveOpacity() {\n return true;\n }\n}\n\nChartElement.prototype.options = { };\n\nexport default ChartElement;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { BLACK, LEFT, TOP, X, Y } from '../common/constants';\nimport { getSpacing, setDefaultOptions, valueOrDefault } from '../common';\n\nclass BoxElement extends ChartElement {\n constructor(options) {\n super(options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n }\n\n reflow(targetBox) {\n const options = this.options;\n const { width, height, shrinkToFit } = options;\n const hasSetSize = width && height;\n const margin = options.margin;\n const padding = options.padding;\n const borderWidth = options.border.width;\n let box;\n\n const reflowPaddingBox = () => {\n this.align(targetBox, X, options.align);\n this.align(targetBox, Y, options.vAlign);\n this.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n let contentBox = targetBox.clone();\n if (hasSetSize) {\n contentBox.x2 = contentBox.x1 + width;\n contentBox.y2 = contentBox.y1 + height;\n }\n\n if (shrinkToFit) {\n contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n }\n\n super.reflow(contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box(0, 0, width, height);\n } else {\n box = this.box;\n }\n\n if (shrinkToFit && hasSetSize) {\n reflowPaddingBox();\n contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n } else {\n contentBox = this.contentBox = box.clone();\n box.pad(padding).pad(borderWidth).pad(margin);\n reflowPaddingBox();\n }\n\n this.translateChildren(\n box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n );\n\n const children = this.children;\n for (let i = 0; i < children.length; i++) {\n let item = children[i];\n item.reflow(item.box);\n }\n }\n\n align(targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n }\n\n hasBox() {\n const options = this.options;\n return options.border.width || options.background;\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(draw.Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n }\n\n visualStyle() {\n const options = this.options;\n const border = options.border || {};\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n }\n}\n\nsetDefaultOptions(BoxElement, {\n align: LEFT,\n vAlign: TOP,\n margin: {},\n padding: {},\n border: {\n color: BLACK,\n width: 0\n },\n background: \"\",\n shrinkToFit: false,\n width: 0,\n height: 0,\n visible: true\n});\n\nexport default BoxElement;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport { round, setDefaultOptions } from '../common';\nimport { CENTER, CIRCLE, COORD_PRECISION, CROSS, ROUNDED_RECT, TRIANGLE } from '../common/constants';\nimport { valueOrDefault } from '../drawing-utils';\nimport BoxElement from './box-element';\n\nclass ShapeElement extends BoxElement {\n\n constructor(options, pointData) {\n super(options);\n\n this.pointData = pointData;\n }\n\n getElement() {\n const { options, paddingBox: box } = this;\n const { type, rotation } = options;\n const center = box.center();\n const halfWidth = box.width() / 2;\n const halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n const style = this.visualStyle();\n let element;\n\n if (type === CIRCLE) {\n element = new draw.Circle(\n new geom.Circle([\n round(box.x1 + halfWidth, COORD_PRECISION),\n round(box.y1 + halfHeight, COORD_PRECISION)\n ], Math.min(halfWidth, halfHeight)),\n style\n );\n } else if (type === TRIANGLE) {\n element = draw.Path.fromPoints([\n [ box.x1 + halfWidth, box.y1 ],\n [ box.x1, box.y2 ],\n [ box.x2, box.y2 ]\n ], style).close();\n } else if (type === CROSS) {\n element = new draw.MultiPath(style);\n\n element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n } else {\n const rect = box.toRect();\n if (type === ROUNDED_RECT) {\n const borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = draw.Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(geom.transform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n }\n\n createElement() {\n const customVisual = this.options.visual;\n const pointData = this.pointData || {};\n let visual;\n\n if (customVisual) {\n visual = customVisual({\n value: pointData.value,\n dataItem: pointData.dataItem,\n sender: this.getSender(),\n series: pointData.series,\n category: pointData.category,\n rect: this.paddingBox.toRect(),\n options: this.visualOptions(),\n createVisual: () => this.getElement()\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n }\n\n visualOptions() {\n const options = this.options;\n return {\n background: options.background,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n type: options.type,\n size: options.width,\n visible: options.visible\n };\n }\n\n createVisual() {\n this.visual = this.createElement();\n }\n}\n\nsetDefaultOptions(ShapeElement, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n});\n\nexport default ShapeElement;\n","import { WHITE } from '../common/constants';\n\nconst LINEAR = \"linear\";\nconst RADIAL = \"radial\";\n\nconst GRADIENTS = {\n glass: {\n type: LINEAR,\n rotation: 0,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.25,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 1,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.55\n }, {\n offset: 0.65,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0.25\n } ]\n },\n roundedBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0.33,\n color: WHITE,\n opacity: 0.06\n }, {\n offset: 0.83,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0\n } ]\n },\n roundedGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.5,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.15,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.17,\n color: WHITE,\n opacity: 0.35\n }, {\n offset: 0.85,\n color: WHITE,\n opacity: 0.05\n }, {\n offset: 0.87,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n bubbleShadow: {\n type: RADIAL,\n center: [ 0.5, 0.5 ],\n radius: 0.5\n }\n};\n\nexport default GRADIENTS;","import Box from '../box';\nimport { grep } from '../../common';\n\nexport default function boxDiff(r, s) {\n if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n return s;\n }\n\n const a = Math.min(r.x1, s.x1);\n const b = Math.max(r.x1, s.x1);\n const c = Math.min(r.x2, s.x2);\n const d = Math.max(r.x2, s.x2);\n const e = Math.min(r.y1, s.y1);\n const f = Math.max(r.y1, s.y1);\n const g = Math.min(r.y2, s.y2);\n const h = Math.max(r.y2, s.y2);\n const boxes = [];\n\n // X = intersection, 0-7 = possible difference areas\n // h +-+-+-+\n // . |5|6|7|\n // g +-+-+-+\n // . |3|X|4|\n // f +-+-+-+\n // . |0|1|2|\n // e +-+-+-+\n // . a b c d\n\n // we'll always have rectangles 1, 3, 4 and 6\n boxes[0] = new Box(b, e, c, f);\n boxes[1] = new Box(a, f, b, g);\n boxes[2] = new Box(c, f, d, g);\n boxes[3] = new Box(b, g, c, h);\n\n // decide which corners\n if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n boxes[4] = new Box(a, e, b, f);\n boxes[5] = new Box(c, g, d, h);\n } else { // corners 2 and 5\n boxes[4] = new Box(c, e, d, f);\n boxes[5] = new Box(a, g, b, h);\n }\n\n return grep(boxes, function(box) {\n return box.height() > 0 && box.width() > 0;\n })[0];\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport GRADIENTS from './gradients';\nimport Box from './box';\n\nimport boxDiff from './utils/box-diff';\n\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT, WHITE, BLACK } from '../common/constants';\nimport { getSpacing, objectKey, setDefaultOptions } from '../common';\n\nclass RootElement extends ChartElement {\n constructor(options) {\n super(options);\n\n const rootOptions = this.options;\n rootOptions.width = parseInt(rootOptions.width, 10);\n rootOptions.height = parseInt(rootOptions.height, 10);\n\n this.gradients = {};\n }\n\n reflow() {\n const { options, children } = this;\n let currentBox = new Box(0, 0, options.width, options.height);\n\n this.box = currentBox.unpad(options.margin);\n\n for (let i = 0; i < children.length; i++) {\n children[i].reflow(currentBox);\n currentBox = boxDiff(currentBox, children[i].box) || new Box();\n }\n }\n\n createVisual() {\n this.visual = new draw.Group();\n this.createBackground();\n }\n\n createBackground() {\n const options = this.options;\n const border = options.border || {};\n const box = this.box.clone().pad(options.margin).unpad(border.width);\n\n const background = draw.Path.fromRect(box.toRect(), {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n zIndex: -10\n });\n\n this.visual.append(background);\n }\n\n getRoot() {\n return this;\n }\n\n createGradient(options) {\n const gradients = this.gradients;\n const hashCode = objectKey(options);\n const gradient = GRADIENTS[options.gradient];\n let drawingGradient;\n\n if (gradients[hashCode]) {\n drawingGradient = gradients[hashCode];\n } else {\n const gradientOptions = Object.assign({}, gradient, options);\n if (gradient.type === \"linear\") {\n drawingGradient = new draw.LinearGradient(gradientOptions);\n } else {\n if (options.innerRadius) {\n gradientOptions.stops = innerRadialStops(gradientOptions);\n }\n drawingGradient = new draw.RadialGradient(gradientOptions);\n drawingGradient.supportVML = gradient.supportVML !== false;\n }\n gradients[hashCode] = drawingGradient;\n }\n\n return drawingGradient;\n }\n\n cleanGradients() {\n const gradients = this.gradients;\n for (let hashCode in gradients) {\n gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n }\n }\n\n size() {\n const options = this.options;\n return new Box(0, 0, options.width, options.height);\n }\n}\n\nsetDefaultOptions(RootElement, {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n background: WHITE,\n border: {\n color: BLACK,\n width: 0\n },\n margin: getSpacing(5),\n zIndex: -2\n});\n\nfunction innerRadialStops(options) {\n const stops = options.stops;\n const usedSpace = ((options.innerRadius / options.radius) * 100);\n const length = stops.length;\n const currentStops = [];\n\n for (let i = 0; i < length; i++) {\n let currentStop = Object.assign({}, stops[i]);\n currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n currentStops.push(currentStop);\n }\n\n return currentStops;\n}\n\nexport default RootElement;","import ChartElement from './chart-element';\nimport Box from './box';\n\nimport { X, Y, WIDTH, HEIGHT, RIGHT, BOTTOM, CENTER } from '../common/constants';\nimport { round, setDefaultOptions } from '../common';\n\nclass FloatElement extends ChartElement {\n constructor(options) {\n super(options);\n this._initDirection();\n }\n\n _initDirection() {\n const options = this.options;\n if (options.vertical) {\n this.groupAxis = X;\n this.elementAxis = Y;\n this.groupSizeField = WIDTH;\n this.elementSizeField = HEIGHT;\n this.groupSpacing = options.spacing;\n this.elementSpacing = options.vSpacing;\n } else {\n this.groupAxis = Y;\n this.elementAxis = X;\n this.groupSizeField = HEIGHT;\n this.elementSizeField = WIDTH;\n this.groupSpacing = options.vSpacing;\n this.elementSpacing = options.spacing;\n }\n }\n\n reflow(targetBox) {\n this.box = targetBox.clone();\n this.reflowChildren();\n }\n\n reflowChildren() {\n const { box, elementAxis, groupAxis, elementSizeField, groupSizeField } = this;\n const { groups, groupsSize, maxGroupElementsSize } = this.groupOptions();\n const groupsCount = groups.length;\n const groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n if (groupsCount) {\n let groupStart = groupsStart;\n\n for (let groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n let group = groups[groupIdx];\n let groupElements = group.groupElements;\n let elementStart = box[elementAxis + 1];\n let groupElementsCount = groupElements.length;\n\n for (let idx = 0; idx < groupElementsCount; idx++) {\n let element = groupElements[idx];\n let elementSize = this.elementSize(element);\n let groupElementStart = groupStart + this.alignStart(elementSize[groupSizeField], group.groupSize);\n\n let elementBox = new Box();\n elementBox[groupAxis + 1] = groupElementStart;\n elementBox[groupAxis + 2] = groupElementStart + elementSize[groupSizeField];\n elementBox[elementAxis + 1] = elementStart;\n elementBox[elementAxis + 2] = elementStart + elementSize[elementSizeField];\n\n element.reflow(elementBox);\n\n elementStart += elementSize[elementSizeField] + this.elementSpacing;\n }\n groupStart += group.groupSize + this.groupSpacing;\n }\n box[groupAxis + 1] = groupsStart;\n box[groupAxis + 2] = groupsStart + groupsSize;\n box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n }\n }\n\n alignStart(size, maxSize) {\n let start = 0;\n const align = this.options.align;\n if (align === RIGHT || align === BOTTOM) {\n start = maxSize - size;\n } else if (align === CENTER) {\n start = (maxSize - size) / 2;\n }\n return start;\n }\n\n groupOptions() {\n const { box, children, elementSizeField, groupSizeField, elementSpacing, groupSpacing } = this;\n const maxSize = round(box[elementSizeField]());\n const childrenCount = children.length;\n const groups = [];\n\n let groupSize = 0;\n let groupElementsSize = 0;\n let groupsSize = 0;\n let maxGroupElementsSize = 0;\n let groupElements = [];\n\n for (let idx = 0; idx < childrenCount; idx++) {\n let element = children[idx];\n if (!element.box) {\n element.reflow(box);\n }\n\n let elementSize = this.elementSize(element);\n if (this.options.wrap && round(groupElementsSize + elementSpacing + elementSize[elementSizeField]) > maxSize) {\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSpacing + groupSize;\n groupSize = 0;\n groupElementsSize = 0;\n groupElements = [];\n }\n groupSize = Math.max(groupSize, elementSize[groupSizeField]);\n if (groupElementsSize > 0) {\n groupElementsSize += elementSpacing;\n }\n groupElementsSize += elementSize[elementSizeField];\n groupElements.push(element);\n }\n\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSize;\n\n return {\n groups: groups,\n groupsSize: groupsSize,\n maxGroupElementsSize: maxGroupElementsSize\n };\n }\n\n elementSize(element) {\n return {\n width: element.box.width(),\n height: element.box.height()\n };\n }\n\n createVisual() {}\n}\n\nsetDefaultOptions(FloatElement, {\n vertical: true,\n wrap: true,\n vSpacing: 0,\n spacing: 0\n});\n\nexport default FloatElement;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { DEFAULT_FONT, BLACK } from '../common/constants';\nimport { setDefaultOptions } from '../common';\n\nconst DrawingText = draw.Text;\n\nclass Text extends ChartElement {\n\n constructor(content, options) {\n super(options);\n\n this.content = content;\n\n // Calculate size\n this.reflow(new Box());\n }\n\n reflow(targetBox) {\n const options = this.options;\n const size = options.size = draw.util.measureText(this.content, { font: options.font });\n\n this.baseline = size.baseline;\n\n this.box = new Box(targetBox.x1, targetBox.y1,\n targetBox.x1 + size.width, targetBox.y1 + size.height);\n }\n\n createVisual() {\n const { font, color, opacity, cursor } = this.options;\n\n this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n font: font,\n fill: { color: color, opacity: opacity },\n cursor: cursor\n });\n }\n}\n\nsetDefaultOptions(Text, {\n font: DEFAULT_FONT,\n color: BLACK\n});\n\nexport default Text;\n","import Box from '../box';\n\nexport default function rectToBox(rect) {\n const origin = rect.origin;\n const bottomRight = rect.bottomRight();\n\n return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport FloatElement from './float-element';\nimport Text from './text';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { getSpacing, deepExtend, defined } from '../common';\nimport { X, Y } from '../common/constants';\n\nconst ROWS_SPLIT_REGEX = /\\n/m;\n\nclass TextBox extends BoxElement {\n\n constructor(content, options, data) {\n super(options);\n this.content = content;\n this.data = data;\n\n this._initContainer();\n if (this.options._autoReflow !== false) {\n this.reflow(new Box());\n }\n }\n\n _initContainer() {\n const options = this.options;\n const rows = String(this.content).split(ROWS_SPLIT_REGEX);\n const floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n const textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n this.container = floatElement;\n this.append(floatElement);\n\n for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n let text = new Text(rows[rowIdx].trim(), textOptions);\n floatElement.append(text);\n }\n }\n\n reflow(targetBox) {\n const options = this.options;\n const visualFn = options.visual;\n this.container.options.align = options.align;\n\n if (visualFn && !this._boxReflow) {\n let visualBox = targetBox;\n if (!visualBox.hasSize()) {\n this._boxReflow = true;\n this.reflow(visualBox);\n this._boxReflow = false;\n visualBox = this.box;\n }\n const visual = this.visual = visualFn(this.visualContext(visualBox));\n\n if (visual) {\n visualBox = rectToBox(visual.clippedBBox() || new geom.Rect());\n\n visual.options.zIndex = options.zIndex;\n }\n\n this.box = this.contentBox = this.paddingBox = visualBox;\n } else {\n super.reflow(targetBox);\n\n if (options.rotation) {\n const margin = getSpacing(options.margin);\n let box = this.box.unpad(margin);\n\n this.targetBox = targetBox;\n this.normalBox = box.clone();\n\n box = this.rotate();\n box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n this.rotatedBox = box.clone();\n\n box.pad(margin);\n }\n }\n }\n\n createVisual() {\n const options = this.options;\n\n this.visual = new draw.Group({\n transform: this.rotationTransform(),\n zIndex: options.zIndex,\n noclip: options.noclip\n });\n\n if (this.hasBox()) {\n const box = draw.Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n this.visual.append(box);\n }\n }\n\n renderVisual() {\n if (!this.options.visible) {\n return;\n }\n\n if (this.options.visual) {\n const visual = this.visual;\n if (visual && !defined(visual.options.noclip)) {\n visual.options.noclip = this.options.noclip;\n }\n this.addVisual();\n this.createAnimation();\n } else {\n super.renderVisual();\n }\n }\n\n visualContext(targetBox) {\n const context = {\n text: this.content,\n rect: targetBox.toRect(),\n sender: this.getSender(),\n options: this.options,\n createVisual: () => {\n this._boxReflow = true;\n this.reflow(targetBox);\n this._boxReflow = false;\n return this.getDefaultVisual();\n }\n };\n if (this.data) {\n Object.assign(context, this.data);\n }\n\n return context;\n }\n\n getDefaultVisual() {\n this.createVisual();\n this.renderChildren();\n const visual = this.visual;\n delete this.visual;\n return visual;\n }\n\n rotate() {\n const options = this.options;\n this.box.rotate(options.rotation);\n this.align(this.targetBox, X, options.align);\n this.align(this.targetBox, Y, options.vAlign);\n return this.box;\n }\n\n rotationTransform() {\n const rotation = this.options.rotation;\n if (!rotation) {\n return null;\n }\n\n const { x: cx, y: cy } = this.normalBox.center();\n const boxCenter = this.rotatedBox.center();\n\n return geom.transform()\n .translate(boxCenter.x - cx, boxCenter.y - cy)\n .rotate(rotation, [ cx, cy ]);\n }\n}\n\nexport default TextBox;","import ChartElement from './chart-element';\nimport TextBox from './text-box';\n\nimport { X, BLACK, TOP, CENTER } from '../common/constants';\nimport { getSpacing, setDefaultOptions } from '../common';\n\nclass Title extends ChartElement {\n constructor(options) {\n super(options);\n\n this.append(\n new TextBox(this.options.text, Object.assign({}, this.options, {\n vAlign: this.options.position\n }))\n );\n }\n\n reflow(targetBox) {\n super.reflow(targetBox);\n this.box.snapTo(targetBox, X);\n }\n\n static buildTitle(options, parent, defaultOptions) {\n let titleOptions = options;\n\n if (typeof options === \"string\") {\n titleOptions = { text: options };\n }\n\n titleOptions = Object.assign({ visible: true }, defaultOptions, titleOptions);\n\n let title;\n if (titleOptions && titleOptions.visible && titleOptions.text) {\n title = new Title(titleOptions);\n parent.append(title);\n }\n\n return title;\n }\n}\n\nsetDefaultOptions(Title, {\n color: BLACK,\n position: TOP,\n align: CENTER,\n margin: getSpacing(5),\n padding: getSpacing(5)\n});\n\nexport default Title;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport TextBox from './text-box';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { AXIS_LABEL_CLICK, CENTER, TOP, BOTTOM, LEFT, DEFAULT_PRECISION, X, Y } from '../common/constants';\n\nimport { eventElement, round, setDefaultOptions } from '../common';\n\nclass AxisLabel extends TextBox {\n constructor(value, text, index, dataItem, options) {\n super(text, options);\n\n this.text = text;\n this.value = value;\n this.index = index;\n this.dataItem = dataItem;\n this.reflow(new Box());\n }\n\n visualContext(targetBox) {\n const context = super.visualContext(targetBox);\n\n context.value = this.value;\n context.dataItem = this.dataItem;\n context.format = this.options.format;\n context.culture = this.options.culture;\n\n return context;\n }\n\n click(widget, e) {\n\n widget.trigger(AXIS_LABEL_CLICK, {\n element: eventElement(e),\n value: this.value,\n text: this.text,\n index: this.index,\n dataItem: this.dataItem,\n axis: this.parent.options\n });\n }\n\n rotate() {\n if (this.options.alignRotation !== CENTER) {\n const box = this.normalBox.toRect();\n const transform = this.rotationTransform();\n\n this.box = rectToBox(box.bbox(transform.matrix()));\n } else {\n super.rotate();\n }\n\n return this.box;\n }\n\n rotationTransform() {\n const options = this.options;\n const rotation = options.rotation;\n if (!rotation) {\n return null;\n }\n\n if (options.alignRotation === CENTER) {\n return super.rotationTransform();\n }\n\n const rotationMatrix = geom.transform().rotate(rotation).matrix();\n const box = this.normalBox.toRect();\n const rect = this.targetBox.toRect();\n\n const rotationOrigin = options.rotationOrigin || TOP;\n const alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n const distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n const axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n const topLeft = box.topLeft().transformCopy(rotationMatrix);\n const topRight = box.topRight().transformCopy(rotationMatrix);\n const bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n const bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n const rotatedBox = geom.Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n const translate = {\n [distanceAxis]: rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis]\n };\n\n const distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n const distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n let alignStart, alignEnd;\n\n if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n alignStart = topLeft;\n alignEnd = topRight;\n } else if (distanceRight < distanceLeft) {\n alignStart = topRight;\n alignEnd = bottomRight;\n } else {\n alignStart = topLeft;\n alignEnd = bottomLeft;\n }\n\n const alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n return geom.transform()\n .translate(translate.x, translate.y)\n .rotate(rotation);\n }\n}\n\nsetDefaultOptions(AxisLabel, {\n _autoReflow: false\n});\n\nexport default AxisLabel;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport TextBox from './text-box';\nimport ShapeElement from './shape-element';\nimport Box from './box';\n\nimport { CIRCLE, TOP, BOTTOM, LEFT, RIGHT, CENTER, INSIDE, OUTSIDE, NOTE_CLICK, NOTE_HOVER, NOTE_LEAVE } from '../common/constants';\nimport { alignPathToPixel, defined, deepExtend, eventElement, getTemplate, inArray, setDefaultOptions } from '../common';\n\nconst DEFAULT_ICON_SIZE = 7;\nconst DEFAULT_LABEL_COLOR = \"#fff\";\n\nclass Note extends BoxElement {\n constructor(fields, options, chartService) {\n super(options);\n\n this.fields = fields;\n this.chartService = chartService;\n\n this.render();\n }\n\n hide() {\n this.options.visible = false;\n }\n\n show() {\n this.options.visible = true;\n }\n\n render() {\n const options = this.options;\n\n if (options.visible) {\n const { label, icon } = options;\n const box = new Box();\n const childAlias = () => this;\n let size = icon.size;\n let text = this.fields.text;\n let width, height;\n\n if (defined(label) && label.visible) {\n const noteTemplate = getTemplate(label);\n if (noteTemplate) {\n text = noteTemplate(this.fields);\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n }\n\n this.label = new TextBox(text, deepExtend({}, label));\n this.label.aliasFor = childAlias;\n\n if (label.position === INSIDE && !defined(size)) {\n if (icon.type === CIRCLE) {\n size = Math.max(this.label.box.width(), this.label.box.height());\n } else {\n width = this.label.box.width();\n height = this.label.box.height();\n }\n box.wrap(this.label.box);\n }\n }\n\n icon.width = width || size || DEFAULT_ICON_SIZE;\n icon.height = height || size || DEFAULT_ICON_SIZE;\n\n const marker = new ShapeElement(deepExtend({}, icon));\n marker.aliasFor = childAlias;\n\n this.marker = marker;\n this.append(marker);\n\n if (this.label) {\n this.append(this.label);\n }\n\n marker.reflow(new Box());\n this.wrapperBox = box.wrap(marker.box);\n }\n }\n\n reflow(targetBox) {\n const { options, label, marker, wrapperBox } = this;\n const center = targetBox.center();\n const length = options.line.length;\n const position = options.position;\n\n // TODO: Review\n if (options.visible) {\n let lineStart, box, contentBox;\n\n if (inArray(position, [ LEFT, RIGHT ])) {\n if (position === LEFT) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x1, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x2, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x2, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x1, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n } else {\n if (position === BOTTOM) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y2 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y1 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y1 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y2 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n }\n\n if (marker) {\n marker.reflow(contentBox);\n }\n\n if (label) {\n label.reflow(contentBox);\n if (marker) {\n if (options.label.position === OUTSIDE) {\n label.box.alignTo(marker.box, position);\n }\n label.reflow(label.box);\n }\n }\n\n this.contentBox = contentBox;\n this.targetBox = targetBox;\n this.box = box || contentBox;\n }\n }\n\n createVisual() {\n super.createVisual();\n this.visual.options.noclip = this.options.noclip;\n\n if (this.options.visible) {\n this.createLine();\n }\n }\n\n renderVisual() {\n const options = this.options;\n const customVisual = options.visual;\n if (options.visible && customVisual) {\n this.visual = customVisual(Object.assign(this.fields, {\n sender: this.getSender(),\n rect: this.targetBox.toRect(),\n options: {\n background: options.background,\n border: options.background,\n icon: options.icon,\n label: options.label,\n line: options.line,\n position: options.position,\n visible: options.visible\n },\n createVisual: () => {\n this.createVisual();\n this.renderChildren();\n const defaultVisual = this.visual;\n delete this.visual;\n return defaultVisual;\n }\n }));\n this.addVisual();\n } else {\n super.renderVisual();\n }\n }\n\n createLine() {\n const options = this.options.line;\n\n if (this.linePoints) {\n const path = draw.Path.fromPoints(this.linePoints, {\n stroke: {\n color: options.color,\n width: options.width,\n dashType: options.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n }\n\n click(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_CLICK, args)) {\n e.preventDefault();\n }\n }\n\n over(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_HOVER, args)) {\n e.preventDefault();\n }\n }\n\n out(widget, e) {\n const args = this.eventArgs(e);\n\n widget.trigger(NOTE_LEAVE, args);\n }\n\n eventArgs(e) {\n const options = this.options;\n\n return Object.assign(this.fields, {\n element: eventElement(e),\n text: defined(options.label) ? options.label.text : \"\",\n visual: this.visual\n });\n }\n}\n\nsetDefaultOptions(Note, {\n icon: {\n visible: true,\n type: CIRCLE\n },\n label: {\n position: INSIDE,\n visible: true,\n align: CENTER,\n vAlign: CENTER\n },\n line: {\n visible: true\n },\n visible: true,\n position: TOP,\n zIndex: 2\n});\n\nexport default Note;","const defaultImplementation = {\n format: (format, value) => value,\n\n toString: (value) => value,\n\n parseDate: (value) => new Date(value),\n\n firstDay: () => 0\n};\n\nlet current = defaultImplementation;\n\nclass IntlService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static get implementation() {\n return current;\n }\n}\n\nexport default IntlService;\n","import IntlService from './intl-service';\nimport { FORMAT_REGEX } from '../common/constants';\nimport { isString } from '../common';\n\nconst FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nclass FormatService {\n constructor(intlService) {\n this._intlService = intlService;\n }\n\n get intl() {\n return this._intlService || IntlService.implementation;\n }\n\n set intl(value) {\n this._intlService = value;\n }\n\n auto(formatString, ...values) {\n const intl = this.intl;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n return intl.format(formatString, ...values);\n }\n\n return intl.toString(values[0], formatString);\n }\n\n localeAuto(formatString, values, locale) {\n const intl = this.intl;\n let result;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n let value = values[parseInt(index, 10)];\n\n return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n });\n } else {\n result = intl.toString(values[0], formatString, locale);\n }\n\n return result;\n }\n}\n\nexport default FormatService;","import IntlService from './intl-service';\nimport FormatService from './format-service';\n\nclass ChartService {\n constructor(chart, context = {}) {\n this._intlService = context.intlService;\n this.sender = context.sender || chart;\n this.format = new FormatService(context.intlService);\n this.chart = chart;\n this.rtl = Boolean(context.rtl);\n }\n\n get intl() {\n return this._intlService || IntlService.implementation;\n }\n\n set intl(value) {\n this._intlService = value;\n this.format.intl = value;\n }\n\n notify(name, args) {\n if (this.chart) {\n this.chart.trigger(name, args);\n }\n }\n\n isPannable(axis) {\n const pannable = ((this.chart || {}).options || {}).pannable;\n return pannable && pannable.lock !== axis;\n }\n}\n\nexport default ChartService;","let current;\n\nclass DomEventsBuilder {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static create(element, events) {\n if (current) {\n return current.create(element, events);\n }\n }\n}\n\nexport default DomEventsBuilder;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisTick(options, tickOptions) {\n const { tickX, tickY, position } = options;\n\n const tick = new draw.Path({\n stroke: {\n width: tickOptions.width,\n color: tickOptions.color\n }\n });\n\n if (options.vertical) {\n tick.moveTo(tickX, position)\n .lineTo(tickX + tickOptions.size, position);\n } else {\n tick.moveTo(position, tickY)\n .lineTo(position, tickY + tickOptions.size);\n }\n\n alignPathToPixel(tick);\n\n return tick;\n}\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisGridLine(options, gridLine) {\n const { lineStart, lineEnd, position } = options;\n\n const line = new draw.Path({\n stroke: {\n width: gridLine.width,\n color: gridLine.color,\n dashType: gridLine.dashType\n }\n });\n\n if (options.vertical) {\n line.moveTo(lineStart, position)\n .lineTo(lineEnd, position);\n } else {\n line.moveTo(position, lineStart)\n .lineTo(position, lineEnd);\n }\n\n alignPathToPixel(line);\n\n return line;\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport TextBox from './text-box';\nimport AxisLabel from './axis-label';\nimport Note from './note';\nimport Box from './box';\nimport { ChartService } from '../services';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\n\nimport { NONE, BLACK, CENTER, TOP, BOTTOM, LEFT, RIGHT, OUTSIDE, X, Y, WIDTH, HEIGHT } from '../common/constants';\nimport { alignPathToPixel, deepExtend, getTemplate, grep, defined, isObject, inArray, limitValue, round, setDefaultOptions } from '../common';\n\nclass Axis extends ChartElement {\n constructor(options, chartService = new ChartService()) {\n super(options);\n\n this.chartService = chartService;\n\n if (!this.options.visible) {\n this.options = deepExtend({}, this.options, {\n labels: {\n visible: false\n },\n line: {\n visible: false\n },\n margin: 0,\n majorTickSize: 0,\n minorTickSize: 0\n });\n }\n\n this.options.minorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.minorTickType !== NONE\n }, this.options.minorTicks, {\n size: this.options.minorTickSize,\n align: this.options.minorTickType\n });\n\n this.options.majorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.majorTickType !== NONE\n }, this.options.majorTicks, {\n size: this.options.majorTickSize,\n align: this.options.majorTickType\n });\n\n this.initFields();\n\n if (!this.options._deferLabels) {\n this.createLabels();\n }\n\n this.createTitle();\n this.createNotes();\n }\n\n initFields() {\n }\n\n // abstract labelsCount(): Number\n // abstract createAxisLabel(index, options): AxisLabel\n\n labelsRange() {\n return {\n min: this.options.labels.skip,\n max: this.labelsCount()\n };\n }\n\n normalizeLabelRotation(labelOptions) {\n const rotation = labelOptions.rotation;\n\n if (isObject(rotation)) {\n labelOptions.alignRotation = rotation.align;\n labelOptions.rotation = rotation.angle;\n }\n }\n\n createLabels() {\n const options = this.options;\n const align = options.vertical ? RIGHT : CENTER;\n const labelOptions = deepExtend({ }, options.labels, {\n align: align,\n zIndex: options.zIndex\n });\n const step = Math.max(1, labelOptions.step);\n\n this.clearLabels();\n\n if (labelOptions.visible) {\n this.normalizeLabelRotation(labelOptions);\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateLabels = true;\n }\n\n const range = this.labelsRange();\n for (let idx = range.min; idx < range.max; idx += step) {\n const labelContext = { index: idx, count: range.max };\n let label = this.createAxisLabel(idx, labelOptions, labelContext);\n if (label) {\n this.append(label);\n this.labels.push(label);\n }\n }\n }\n }\n\n clearLabels() {\n this.children = grep(this.children, child => !(child instanceof AxisLabel));\n this.labels = [];\n }\n\n clearTitle() {\n if (this.title) {\n this.children = grep(this.children, child => child !== this.title);\n this.title = undefined;\n }\n }\n\n clear() {\n this.clearLabels();\n this.clearTitle();\n }\n\n lineBox() {\n const { options, box } = this;\n const vertical = options.vertical;\n const mirror = options.labels.mirror;\n const axisX = mirror ? box.x1 : box.x2;\n const axisY = mirror ? box.y2 : box.y1;\n const lineWidth = options.line.width || 0;\n\n return vertical ?\n new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n }\n\n createTitle() {\n const options = this.options;\n const titleOptions = deepExtend({\n rotation: options.vertical ? -90 : 0,\n text: \"\",\n zIndex: 1,\n visualSize: true\n }, options.title);\n\n if (titleOptions.visible && titleOptions.text) {\n const title = new TextBox(titleOptions.text, titleOptions);\n this.append(title);\n this.title = title;\n }\n }\n\n createNotes() {\n const options = this.options;\n const notes = options.notes;\n const items = notes.data || [];\n\n this.notes = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = deepExtend({}, notes, items[i]);\n item.value = this.parseNoteValue(item.value);\n\n const note = new Note({\n value: item.value,\n text: item.label.text,\n dataItem: item\n }, item, this.chartService);\n\n if (note.options.visible) {\n if (defined(note.options.position)) {\n if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n } else {\n if (options.vertical) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n }\n this.append(note);\n this.notes.push(note);\n }\n }\n }\n\n parseNoteValue(value) {\n return value;\n }\n\n renderVisual() {\n super.renderVisual();\n\n this.createPlotBands();\n }\n\n createVisual() {\n super.createVisual();\n\n this.createBackground();\n this.createLine();\n }\n\n gridLinesVisual() {\n let gridLines = this._gridLines;\n if (!gridLines) {\n gridLines = this._gridLines = new draw.Group({\n zIndex: -2\n });\n this.appendVisual(this._gridLines);\n }\n\n return gridLines;\n }\n\n createTicks(lineGroup) {\n const options = this.options;\n const lineBox = this.lineBox();\n const mirror = options.labels.mirror;\n const majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n const tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: options.vertical\n };\n\n function render(tickPositions, tickOptions, skipUnit) {\n const count = tickPositions.length;\n const step = Math.max(1, tickOptions.step);\n\n if (tickOptions.visible) {\n for (let i = tickOptions.skip; i < count; i += step) {\n if (defined(skipUnit) && (i % skipUnit === 0)) {\n continue;\n }\n\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n\n render(this.getMajorTickPositions(), options.majorTicks);\n render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n }\n\n createLine() {\n const options = this.options;\n const line = options.line;\n const lineBox = this.lineBox();\n\n if (line.width > 0 && line.visible) {\n const path = new draw.Path({\n stroke: {\n width: line.width,\n color: line.color,\n dashType: line.dashType\n }\n\n /* TODO\n zIndex: line.zIndex,\n */\n });\n\n path.moveTo(lineBox.x1, lineBox.y1)\n .lineTo(lineBox.x2, lineBox.y2);\n\n if (options._alignLines) {\n alignPathToPixel(path);\n }\n\n const group = this._lineGroup = new draw.Group();\n group.append(path);\n\n this.visual.append(group);\n this.createTicks(group);\n }\n }\n\n getActualTickSize() {\n const options = this.options;\n let tickSize = 0;\n\n if (options.majorTicks.visible && options.minorTicks.visible) {\n tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n } else if (options.majorTicks.visible) {\n tickSize = options.majorTicks.size;\n } else if (options.minorTicks.visible) {\n tickSize = options.minorTicks.size;\n }\n\n return tickSize;\n }\n\n createBackground() {\n const { options, box } = this;\n const background = options.background;\n\n if (background) {\n this._backgroundPath = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: background\n },\n stroke: null\n });\n\n this.visual.append(this._backgroundPath);\n }\n }\n\n createPlotBands() {\n const options = this.options;\n const plotBands = options.plotBands || [];\n const vertical = options.vertical;\n const plotArea = this.plotArea;\n\n if (plotBands.length === 0) {\n return;\n }\n\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n const altAxis = grep(this.pane.axes, axis => axis.options.vertical !== this.options.vertical)[0];\n\n for (let idx = 0; idx < plotBands.length; idx++) {\n let item = plotBands[idx];\n let slotX, slotY;\n let labelOptions = item.label;\n let label;\n\n if (vertical) {\n slotX = (altAxis || plotArea.axisX).lineBox();\n slotY = this.getSlot(item.from, item.to, true);\n } else {\n slotX = this.getSlot(item.from, item.to, true);\n slotY = (altAxis || plotArea.axisY).lineBox();\n }\n\n if (labelOptions) {\n labelOptions.vAlign = labelOptions.position || LEFT;\n label = this.createPlotBandLabel(\n labelOptions,\n item,\n new Box(\n slotX.x1,\n slotY.y1,\n slotX.x2,\n slotY.y2\n )\n\n );\n }\n\n if (slotX.width() !== 0 && slotY.height() !== 0) {\n const bandRect = new geom.Rect(\n [ slotX.x1, slotY.y1 ],\n [ slotX.width(), slotY.height() ]\n );\n\n const path = draw.Path.fromRect(bandRect, {\n fill: {\n color: item.color,\n opacity: item.opacity\n },\n stroke: null\n });\n\n group.append(path);\n if (label) {\n group.append(label);\n }\n }\n }\n\n this.appendVisual(group);\n }\n\n createPlotBandLabel(label, item, box) {\n\n if (label.visible === false) {\n return null;\n }\n\n let text = label.text;\n let textbox;\n\n if (defined(label) && label.visible) {\n const labelTemplate = getTemplate(label);\n if (labelTemplate) {\n text = labelTemplate({ text: text, item: item });\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = this.options.labels.color;\n }\n }\n\n textbox = new TextBox(text, label);\n textbox.reflow(box);\n textbox.renderVisual();\n\n return textbox.visual;\n }\n\n createGridLines(altAxis) {\n const options = this.options;\n const { minorGridLines, majorGridLines, minorUnit, vertical } = options;\n const axisLineVisible = altAxis.options.line.visible;\n const majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n const lineBox = altAxis.lineBox();\n const linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n const lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n const majorTicks = [];\n\n const container = this.gridLinesVisual();\n\n function render(tickPositions, gridLine, skipUnit) {\n const count = tickPositions.length;\n const step = Math.max(1, gridLine.step);\n\n if (gridLine.visible) {\n for (let i = gridLine.skip; i < count; i += step) {\n let pos = round(tickPositions[i]);\n if (!inArray(pos, majorTicks)) {\n if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n lineOptions.position = pos;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(pos);\n }\n }\n }\n }\n }\n\n render(this.getMajorTickPositions(), majorGridLines);\n render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n return container.children;\n }\n\n reflow(box) {\n const { options, labels, title } = this;\n const vertical = options.vertical;\n const count = labels.length;\n const sizeFn = vertical ? WIDTH : HEIGHT;\n const titleSize = title ? title.box[sizeFn]() : 0;\n const space = this.getActualTickSize() + options.margin + titleSize;\n const rootBox = (this.getRoot() || {}).box || box;\n const boxSize = rootBox[sizeFn]();\n let maxLabelSize = 0;\n\n for (let i = 0; i < count; i++) {\n let labelSize = labels[i].box[sizeFn]();\n if (labelSize + space <= boxSize) {\n maxLabelSize = Math.max(maxLabelSize, labelSize);\n }\n }\n\n if (vertical) {\n this.box = new Box(\n box.x1, box.y1,\n box.x1 + maxLabelSize + space, box.y2\n );\n } else {\n this.box = new Box(\n box.x1, box.y1,\n box.x2, box.y1 + maxLabelSize + space\n );\n }\n\n this.arrangeTitle();\n this.arrangeLabels();\n this.arrangeNotes();\n }\n\n getLabelsTickPositions() {\n return this.getMajorTickPositions();\n }\n\n labelTickIndex(label) {\n return label.index;\n }\n\n arrangeLabels() {\n const { options, labels } = this;\n const labelsBetweenTicks = this.labelsBetweenTicks();\n const vertical = options.vertical;\n const mirror = options.labels.mirror;\n const tickPositions = this.getLabelsTickPositions();\n\n for (let idx = 0; idx < labels.length; idx++) {\n const label = labels[idx];\n const tickIx = this.labelTickIndex(label);\n const labelSize = vertical ? label.box.height() : label.box.width();\n const firstTickPosition = tickPositions[tickIx];\n const nextTickPosition = tickPositions[tickIx + 1];\n let positionStart, positionEnd;\n\n if (vertical) {\n if (labelsBetweenTicks) {\n const middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n positionStart = middle - (labelSize / 2);\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n }\n\n positionEnd = positionStart;\n } else {\n if (labelsBetweenTicks) {\n positionStart = firstTickPosition;\n positionEnd = nextTickPosition;\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n positionEnd = positionStart + labelSize;\n }\n }\n\n this.positionLabel(label, mirror, positionStart, positionEnd);\n }\n }\n\n positionLabel(label, mirror, positionStart, positionEnd = positionStart) {\n const options = this.options;\n const vertical = options.vertical;\n const lineBox = this.lineBox();\n const labelOffset = this.getActualTickSize() + options.margin;\n let labelBox;\n\n if (vertical) {\n let labelX = lineBox.x2;\n\n if (mirror) {\n labelX += labelOffset;\n label.options.rotationOrigin = LEFT;\n } else {\n labelX -= labelOffset + label.box.width();\n label.options.rotationOrigin = RIGHT;\n }\n\n labelBox = label.box.move(labelX, positionStart);\n } else {\n let labelY = lineBox.y1;\n\n if (mirror) {\n labelY -= labelOffset + label.box.height();\n label.options.rotationOrigin = BOTTOM;\n } else {\n labelY += labelOffset;\n label.options.rotationOrigin = TOP;\n }\n\n labelBox = new Box(\n positionStart, labelY,\n positionEnd, labelY + label.box.height()\n );\n }\n\n label.reflow(labelBox);\n }\n\n autoRotateLabelAngle(labelBox, slotWidth) {\n if (labelBox.width() < slotWidth) {\n return 0;\n }\n\n if (labelBox.height() > slotWidth) {\n return -90;\n }\n\n return -45;\n }\n\n autoRotateLabels() {\n if (!this.options.autoRotateLabels || this.options.vertical) {\n return false;\n }\n\n const tickPositions = this.getMajorTickPositions();\n const labels = this.labels;\n const limit = Math.min(labels.length, tickPositions.length - 1);\n let angle = 0;\n\n for (let idx = 0; idx < limit; idx++) {\n const width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n const labelBox = labels[idx].box;\n const labelAngle = this.autoRotateLabelAngle(labelBox, width);\n\n if (labelAngle !== 0) {\n angle = labelAngle;\n }\n\n if (angle === -90) {\n break;\n }\n }\n\n if (angle !== 0) {\n for (let idx = 0; idx < labels.length; idx++) {\n labels[idx].options.rotation = angle;\n labels[idx].reflow(new Box());\n }\n\n return true;\n }\n }\n\n arrangeTitle() {\n const { options, title } = this;\n const mirror = options.labels.mirror;\n const vertical = options.vertical;\n\n if (title) {\n if (vertical) {\n title.options.align = mirror ? RIGHT : LEFT;\n title.options.vAlign = title.options.position;\n } else {\n title.options.align = title.options.position;\n title.options.vAlign = mirror ? TOP : BOTTOM;\n }\n\n title.reflow(this.box);\n }\n }\n\n arrangeNotes() {\n for (let idx = 0; idx < this.notes.length; idx++) {\n const item = this.notes[idx];\n const value = item.options.value;\n let slot;\n\n if (defined(value)) {\n if (this.shouldRenderNote(value)) {\n item.show();\n } else {\n item.hide();\n }\n\n slot = this.noteSlot(value);\n } else {\n item.hide();\n }\n\n item.reflow(slot || this.lineBox());\n }\n }\n\n noteSlot(value) {\n return this.getSlot(value);\n }\n\n alignTo(secondAxis) {\n const lineBox = secondAxis.lineBox();\n const vertical = this.options.vertical;\n const pos = vertical ? Y : X;\n\n this.box.snapTo(lineBox, pos);\n if (vertical) {\n this.box.shrink(0, this.lineBox().height() - lineBox.height());\n } else {\n this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n }\n this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n }\n\n axisLabelText(value, options, context) {\n let text;\n const tmpl = getTemplate(options);\n const defaultText = () => {\n if (!options.format) {\n return value;\n }\n\n return this.chartService.format.localeAuto(\n options.format, [ value ], options.culture\n );\n };\n\n if (tmpl) {\n const templateContext = Object.assign({}, context, {\n get text() { return defaultText(); },\n value,\n format: options.format,\n culture: options.culture\n });\n\n text = tmpl(templateContext);\n } else {\n text = defaultText();\n }\n\n return text;\n }\n\n slot(from , to, limit) {\n const slot = this.getSlot(from, to, limit);\n if (slot) {\n return slot.toRect();\n }\n }\n\n contentBox() {\n const box = this.box.clone();\n const labels = this.labels;\n if (labels.length) {\n const axis = this.options.vertical ? Y : X;\n if (this.chartService.isPannable(axis)) {\n const offset = this.maxLabelOffset();\n box[axis + 1] -= offset.start;\n box[axis + 2] += offset.end;\n } else {\n if (labels[0].options.visible) {\n box.wrap(labels[0].box);\n }\n const lastLabel = labels[labels.length - 1];\n if (lastLabel.options.visible) {\n box.wrap(lastLabel.box);\n }\n }\n }\n\n return box;\n }\n\n maxLabelOffset() {\n const { vertical, reverse } = this.options;\n const labelsBetweenTicks = this.labelsBetweenTicks();\n const tickPositions = this.getLabelsTickPositions();\n const offsetField = vertical ? Y : X;\n const labels = this.labels;\n const startPosition = reverse ? 1 : 0;\n const endPosition = reverse ? 0 : 1;\n let maxStartOffset = 0;\n let maxEndOffset = 0;\n\n for (let idx = 0; idx < labels.length; idx++) {\n const label = labels[idx];\n const tickIx = this.labelTickIndex(label);\n let startTick, endTick;\n\n if (labelsBetweenTicks) {\n startTick = tickPositions[tickIx + startPosition];\n endTick = tickPositions[tickIx + endPosition];\n } else {\n startTick = endTick = tickPositions[tickIx];\n }\n\n maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n }\n\n return {\n start: maxStartOffset,\n end: maxEndOffset\n };\n }\n\n limitRange(from, to, min, max, offset) {\n const options = this.options;\n\n if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n return null;\n }\n\n if ((to < min && offset > 0) || (max < from && offset < 0)) {\n return {\n min: from,\n max: to\n };\n }\n\n const rangeSize = to - from;\n let minValue = from;\n let maxValue = to;\n\n if (from < min && offset < 0) {\n minValue = limitValue(from, min, max);\n maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n } else if (to > max && offset > 0) {\n maxValue = limitValue(to, min, max);\n minValue = limitValue(to - rangeSize, min, max - rangeSize);\n }\n\n return {\n min: minValue,\n max: maxValue\n };\n }\n\n valueRange() {\n return {\n min: this.seriesMin,\n max: this.seriesMax\n };\n }\n\n lineDir() {\n /*\n * Axis line direction:\n * * Vertical: up.\n * * Horizontal: right.\n */\n\n const { vertical, reverse } = this.options;\n return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n }\n\n lineInfo() {\n const { vertical } = this.options;\n const lineBox = this.lineBox();\n const lineSize = vertical ? lineBox.height() : lineBox.width();\n const axis = vertical ? Y : X;\n const axisDir = this.lineDir();\n const startEdge = axisDir === 1 ? 1 : 2;\n const axisOrigin = axis + startEdge.toString();\n const lineStart = lineBox[axisOrigin];\n\n return {\n axis,\n axisOrigin,\n axisDir,\n lineBox,\n lineSize,\n lineStart\n };\n }\n\n pointOffset(point) {\n const { axis, axisDir, axisOrigin, lineBox, lineSize } = this.lineInfo();\n const relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n const offset = relative / lineSize;\n\n return offset;\n }\n\n // Computes the axis range change (delta) for a given scale factor.\n // The delta is subtracted from the axis range:\n // * delta > 0 reduces the axis range (zoom-in)\n // * delta < 0 expands the axis range (zoom-out)\n scaleToDelta(rawScale, range) {\n // Scale >= 1 would result in axis range of 0.\n // Scale <= -1 would reverse the scale direction.\n const MAX_SCALE = 0.999;\n const scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n let delta;\n if (scale > 0) {\n delta = range * Math.min(1, scale);\n } else {\n delta = range - (range / (1 + scale));\n }\n\n return delta;\n }\n\n labelsBetweenTicks() {\n return !this.options.justified;\n }\n\n //add legacy fields to the options that are no longer generated by default\n prepareUserOptions() {\n }\n}\n\nsetDefaultOptions(Axis, {\n labels: {\n visible: true,\n rotation: 0,\n mirror: false,\n step: 1,\n skip: 0\n },\n line: {\n width: 1,\n color: BLACK,\n visible: true\n },\n title: {\n visible: true,\n position: CENTER\n },\n majorTicks: {\n align: OUTSIDE,\n size: 4,\n skip: 0,\n step: 1\n },\n minorTicks: {\n align: OUTSIDE,\n size: 3,\n skip: 0,\n step: 1\n },\n axisCrossingValue: 0,\n majorTickType: OUTSIDE,\n minorTickType: NONE,\n majorGridLines: {\n skip: 0,\n step: 1\n },\n minorGridLines: {\n visible: false,\n width: 1,\n color: BLACK,\n skip: 0,\n step: 1\n },\n // TODO: Move to line or labels options\n margin: 5,\n visible: true,\n reverse: false,\n justified: true,\n notes: {\n label: {\n text: \"\"\n }\n },\n\n _alignLines: true,\n _deferLabels: false\n});\n\nexport default Axis;\n","export const MILLISECONDS = \"milliseconds\";\nexport const SECONDS = \"seconds\";\nexport const MINUTES = \"minutes\";\nexport const HOURS = \"hours\";\nexport const DAYS = \"days\";\nexport const WEEKS = \"weeks\";\nexport const MONTHS = \"months\";\nexport const YEARS = \"years\";\n\nexport const TIME_PER_MILLISECOND = 1;\nexport const TIME_PER_SECOND = 1000;\nexport const TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\nexport const TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\nexport const TIME_PER_DAY = 24 * TIME_PER_HOUR;\nexport const TIME_PER_WEEK = 7 * TIME_PER_DAY;\nexport const TIME_PER_MONTH = 31 * TIME_PER_DAY;\nexport const TIME_PER_YEAR = 365 * TIME_PER_DAY;\nexport const TIME_PER_UNIT = {\n \"years\": TIME_PER_YEAR,\n \"months\": TIME_PER_MONTH,\n \"weeks\": TIME_PER_WEEK,\n \"days\": TIME_PER_DAY,\n \"hours\": TIME_PER_HOUR,\n \"minutes\": TIME_PER_MINUTE,\n \"seconds\": TIME_PER_SECOND,\n \"milliseconds\": TIME_PER_MILLISECOND\n};\n\n","import { TIME_PER_MINUTE } from './constants';\n\nexport default function absoluteDateDiff(a, b) {\n const diff = a.getTime() - b;\n const offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n return diff - (offsetDiff * TIME_PER_MINUTE);\n}","export default function addTicks(date, ticks) {\n return new Date(date.getTime() + ticks);\n}","export default function toDate(value) {\n let result;\n\n if (value instanceof Date) {\n result = value;\n } else if (value) {\n result = new Date(value);\n }\n\n return result;\n}","import { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_SECOND, TIME_PER_MINUTE, TIME_PER_HOUR } from './constants';\nimport addTicks from './add-ticks';\nimport toDate from './to-date';\nimport startOfWeek from './start-of-week';\n\nfunction adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n}\n\nfunction addHours(date, hours) {\n const roundedDate = new Date(date);\n\n roundedDate.setMinutes(0, 0, 0);\n\n const tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n}\n\nexport default function addDuration(dateValue, value, unit, weekStartDay) {\n let result = dateValue;\n\n if (dateValue) {\n let date = toDate(dateValue);\n const hours = date.getHours();\n\n if (unit === YEARS) {\n result = new Date(date.getFullYear() + value, 0, 1);\n adjustDST(result, 0);\n } else if (unit === MONTHS) {\n result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n adjustDST(result, hours);\n } else if (unit === WEEKS) {\n result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n adjustDST(result, hours);\n } else if (unit === DAYS) {\n result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n adjustDST(result, hours);\n } else if (unit === HOURS) {\n result = addHours(date, value);\n } else if (unit === MINUTES) {\n result = addTicks(date, value * TIME_PER_MINUTE);\n\n if (result.getSeconds() > 0) {\n result.setSeconds(0);\n }\n } else if (unit === SECONDS) {\n result = addTicks(date, value * TIME_PER_SECOND);\n } else if (unit === MILLISECONDS) {\n result = addTicks(date, value);\n }\n\n if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n result.setMilliseconds(0);\n }\n }\n\n return result;\n}","import { TIME_PER_DAY } from './constants';\nimport addTicks from './add-ticks';\n\nexport default function startOfWeek(date, weekStartDay = 0) {\n let daysToSubtract = 0;\n let day = date.getDay();\n\n if (!isNaN(day)) {\n while (day !== weekStartDay) {\n if (day === 0) {\n day = 6;\n } else {\n day--;\n }\n\n daysToSubtract++;\n }\n }\n\n return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n}","import addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function floorDate(date, unit, weekStartDay) {\n return addDuration(toDate(date), 0, unit, weekStartDay);\n}","import floorDate from './floor-date';\nimport addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function ceilDate(dateValue, unit, weekStartDay) {\n const date = toDate(dateValue);\n\n if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n return date;\n }\n\n return addDuration(date, 1, unit, weekStartDay);\n}","export default function dateComparer(a, b) {\n if (a && b) {\n return a.getTime() - b.getTime();\n }\n\n return -1;\n}","export default function dateDiff(a, b) {\n return a.getTime() - b;\n}","import { isArray } from '../common';\nimport toDate from './to-date';\n\nexport default function toTime(value) {\n if (isArray(value)) {\n let result = [];\n for (let idx = 0; idx < value.length; idx++) {\n result.push(toTime(value[idx]));\n }\n\n return result;\n } else if (value) {\n return toDate(value).getTime();\n }\n}","import toTime from './to-time';\n\nexport default function dateEquals(a, b) {\n if (a && b) {\n return toTime(a) === toTime(b);\n }\n\n return a === b;\n}","import { DAYS, WEEKS, MONTHS, YEARS, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\nimport absoluteDateDiff from './absolute-date-diff';\nimport toDate from './to-date';\n\nfunction timeIndex(date, start, baseUnit) {\n return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n}\n\nexport default function dateIndex(value, start, baseUnit, baseUnitStep) {\n const date = toDate(value);\n const startDate = toDate(start);\n let index;\n\n if (baseUnit === MONTHS) {\n index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n } else if (baseUnit === YEARS) {\n index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n index = timeIndex(date, startDate, baseUnit);\n } else {\n index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n return index / baseUnitStep;\n}\n\n","import { DAYS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\n\nexport default function duration(a, b, unit) {\n let diff;\n\n if (unit === YEARS) {\n diff = b.getFullYear() - a.getFullYear();\n } else if (unit === MONTHS) {\n diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n } else if (unit === DAYS) {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n } else {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n }\n\n return diff;\n}","import { isString } from '../common';\nimport toDate from './to-date';\n\nexport default function parseDate(intlService, date) {\n let result;\n if (isString(date)) {\n result = intlService.parseDate(date) || toDate(date);\n } else {\n result = toDate(date);\n }\n return result;\n}\n","import parseDate from './parse-date';\n\nimport { isArray } from '../common';\n\nexport default function parseDates(intlService, dates) {\n if (isArray(dates)) {\n const result = [];\n for (let idx = 0; idx < dates.length; idx++) {\n result.push(parseDate(intlService, dates[idx]));\n }\n\n return result;\n }\n\n return parseDate(intlService, dates);\n}","import { isNumber } from '../common';\n\nexport default function firstDay(options, intlService) {\n if (isNumber(options.weekStartDay)) {\n return options.weekStartDay;\n }\n\n if (intlService && intlService.firstDay) {\n return intlService.firstDay();\n }\n\n return 0;\n}\n","import Axis from './axis';\nimport AxisLabel from './axis-label';\n\nimport { BLACK, COORD_PRECISION, DEFAULT_PRECISION, X, Y } from '../common/constants';\nimport { defined, isNumber, last, limitValue, round, setDefaultOptions, valueOrDefault, HashMap } from '../common';\nimport { dateEquals } from '../date-utils';\n\nconst MIN_CATEGORY_POINTS_RANGE = 0.01;\nconst MIN_CATEGORY_RANGE = 0.1;\n\nfunction indexOf(value, arr) {\n if (value instanceof Date) {\n const length = arr.length;\n for (let idx = 0; idx < length; idx++) {\n if (dateEquals(arr[idx], value)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return arr.indexOf(value);\n}\n\nclass CategoryAxis extends Axis {\n initFields() {\n this._ticks = {};\n }\n\n categoriesHash() {\n return \"\";\n }\n\n clone() {\n const copy = new CategoryAxis(Object.assign({}, this.options, {\n categories: this.options.srcCategories\n }), this.chartService);\n copy.createLabels();\n\n return copy;\n }\n\n initUserOptions(options) {\n const categories = options.categories || [];\n const definedMin = defined(options.min);\n const definedMax = defined(options.max);\n options.srcCategories = options.categories = categories;\n\n if ((definedMin || definedMax) && categories.length) {\n const min = definedMin ? Math.floor(options.min) : 0;\n let max;\n\n if (definedMax) {\n max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n } else {\n max = categories.length;\n }\n\n options.categories = options.categories.slice(min, max);\n }\n\n return options;\n }\n\n rangeIndices() {\n const options = this.options;\n const length = options.categories.length || 1;\n const min = isNumber(options.min) ? options.min % 1 : 0;\n let max;\n\n if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n max = length - (1 - options.max % 1);\n } else {\n max = length - (options.justified ? 1 : 0);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n totalRangeIndices(limit) {\n const options = this.options;\n let min = isNumber(options.min) ? options.min : 0;\n let max;\n\n if (isNumber(options.max)) {\n max = options.max;\n } else if (isNumber(options.min)) {\n max = min + options.categories.length;\n } else {\n max = this.totalRange().max || 1;\n }\n\n if (limit) {\n const totalRange = this.totalRange();\n min = limitValue(min, 0, totalRange.max);\n max = limitValue(max, 0, totalRange.max);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n range() {\n const options = this.options;\n const min = isNumber(options.min) ? options.min : 0;\n const max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n return {\n min: min,\n max: max\n };\n }\n\n roundedRange() {\n return this.range();\n }\n\n totalRange() {\n const options = this.options;\n return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n }\n\n scaleOptions() {\n const { min, max } = this.rangeIndices();\n const lineBox = this.lineBox();\n const size = this.options.vertical ? lineBox.height() : lineBox.width();\n const scale = size / ((max - min) || 1);\n\n return {\n scale: scale * (this.options.reverse ? -1 : 1),\n box: lineBox,\n min: min,\n max: max\n };\n }\n\n arrangeLabels() {\n super.arrangeLabels();\n this.hideOutOfRangeLabels();\n }\n\n hideOutOfRangeLabels() {\n const { box, labels } = this;\n\n if (labels.length > 0) {\n const valueAxis = this.options.vertical ? Y : X;\n const start = box[valueAxis + 1];\n const end = box[valueAxis + 2];\n const firstLabel = labels[0];\n const lastLabel = last(labels);\n\n if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n firstLabel.options.visible = false;\n }\n if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n lastLabel.options.visible = false;\n }\n }\n }\n\n getMajorTickPositions() {\n return this.getTicks().majorTicks;\n }\n\n getMinorTickPositions() {\n return this.getTicks().minorTicks;\n }\n\n getLabelsTickPositions() {\n return this.getTicks().labelTicks;\n }\n\n tickIndices(stepSize) {\n const { min, max } = this.rangeIndices();\n const limit = Math.ceil(max);\n let current = Math.floor(min);\n const indices = [];\n\n while (current <= limit) {\n indices.push(current);\n current += stepSize;\n }\n\n return indices;\n }\n\n getTickPositions(stepSize) {\n const { vertical, reverse } = this.options;\n const { scale, box, min } = this.scaleOptions();\n const pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n const indices = this.tickIndices(stepSize);\n const positions = [];\n\n for (let idx = 0; idx < indices.length; idx++) {\n positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n }\n\n return positions;\n }\n\n getTicks() {\n const options = this.options;\n const cache = this._ticks;\n const range = this.rangeIndices();\n const lineBox = this.lineBox();\n const hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n if (cache._hash !== hash) {\n const hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n cache._hash = hash;\n cache.labelTicks = this.getTickPositions(1);\n cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n }\n\n return cache;\n }\n\n filterOutOfRangePositions(positions, lineBox) {\n if (!positions.length) {\n return positions;\n }\n\n const axis = this.options.vertical ? Y : X;\n const inRange = (position) => lineBox[axis + 1] <= position && position <= lineBox[axis + 2];\n\n const end = positions.length - 1;\n let startIndex = 0;\n while (!inRange(positions[startIndex]) && startIndex <= end) {\n startIndex++;\n }\n\n let endIndex = end;\n\n while (!inRange(positions[endIndex]) && endIndex >= 0) {\n endIndex--;\n }\n\n return positions.slice(startIndex, endIndex + 1);\n }\n\n lineInfo() {\n const { vertical, reverse } = this.options;\n const lineBox = this.lineBox();\n const lineSize = vertical ? lineBox.height() : lineBox.width();\n const axis = vertical ? Y : X;\n const axisDir = reverse ? -1 : 1;\n const startEdge = axisDir === 1 ? 1 : 2;\n const axisOrigin = axis + startEdge.toString();\n const lineStart = lineBox[axisOrigin];\n\n return {\n axis,\n axisOrigin,\n axisDir,\n lineBox,\n lineSize,\n lineStart\n };\n }\n\n lineDir() {\n /*\n * Category axis line direction:\n * * Vertical: down.\n * * Horizontal: right.\n */\n\n const { reverse } = this.options;\n return reverse ? -1 : 1;\n }\n\n // TODO: Rename to slotBox, valueSlot, slotByIndex?\n getSlot(from, to, limit) {\n const options = this.options;\n const { reverse, justified } = options;\n const { scale, box, min } = this.scaleOptions();\n const { axis: valueAxis, lineStart } = this.lineInfo();\n\n const slotBox = box.clone();\n const singleSlot = !defined(to);\n\n const start = valueOrDefault(from, 0);\n let end = valueOrDefault(to, start);\n end = Math.max(end - 1, start);\n\n // Fixes transient bug caused by iOS 6.0 JIT\n // (one can never be too sure)\n end = Math.max(start, end);\n\n let p1 = lineStart + (start - min) * scale;\n let p2 = lineStart + (end + 1 - min) * scale;\n\n if (singleSlot && justified) {\n p2 = p1;\n }\n\n if (limit) {\n p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n }\n\n slotBox[valueAxis + 1] = reverse ? p2 : p1;\n slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n return slotBox;\n }\n\n limitSlot(slot) {\n const vertical = this.options.vertical;\n const valueAxis = vertical ? Y : X;\n const lineBox = this.lineBox();\n const limittedSlot = slot.clone();\n\n limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n return limittedSlot;\n }\n\n slot(from, to, limit) {\n const min = Math.floor(this.options.min || 0);\n let start = from;\n let end = to;\n\n if (typeof start === \"string\") {\n start = this.categoryIndex(start);\n } else if (isNumber(start)) {\n start -= min;\n }\n\n if (typeof end === \"string\") {\n end = this.categoryIndex(end);\n } else if (isNumber(end)) {\n end -= min;\n }\n\n return super.slot(start, end, limit);\n }\n\n pointCategoryIndex(point) {\n const { reverse, justified, vertical } = this.options;\n const valueAxis = vertical ? Y : X;\n const { scale, box, min, max } = this.scaleOptions();\n const startValue = reverse ? max : min;\n const lineStart = box[valueAxis + 1];\n const lineEnd = box[valueAxis + 2];\n const pos = point[valueAxis];\n\n if (pos < lineStart || pos > lineEnd) {\n return null;\n }\n\n let value = startValue + (pos - lineStart) / scale;\n const diff = value % 1;\n\n if (justified) {\n value = Math.round(value);\n } else if (diff === 0 && value > 0) {\n value--;\n }\n\n return Math.floor(value);\n }\n\n getCategory(point) {\n const index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.options.categories[index];\n }\n\n categoryIndex(value) {\n return this.totalIndex(value) - Math.floor(this.options.min || 0);\n }\n\n categoryAt(index, total) {\n const options = this.options;\n\n return (total ? options.srcCategories : options.categories)[index];\n }\n\n categoriesCount() {\n return (this.options.categories || []).length;\n }\n\n translateRange(delta) {\n const options = this.options;\n const lineBox = this.lineBox();\n const size = options.vertical ? lineBox.height() : lineBox.width();\n const range = options.categories.length;\n const scale = size / range;\n const offset = round(delta / scale, DEFAULT_PRECISION);\n\n return {\n min: offset,\n max: range + offset\n };\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const rangeIndices = this.totalRangeIndices();\n const range = rangeIndices.max - rangeIndices.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = rangeIndices.min + minDelta;\n let max = rangeIndices.max - maxDelta;\n\n if (max - min < MIN_CATEGORY_RANGE) {\n max = min + MIN_CATEGORY_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const { min: totalMin, max: totalMax } = this.totalRange();\n const range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n }\n\n labelsCount() {\n const labelsRange = this.labelsRange();\n\n return labelsRange.max - labelsRange.min;\n }\n\n labelsRange() {\n const options = this.options;\n const { justified, labels: labelOptions } = options;\n let { min, max } = this.totalRangeIndices(true);\n const start = Math.floor(min);\n\n if (!justified) {\n min = Math.floor(min);\n max = Math.ceil(max);\n } else {\n min = Math.ceil(min);\n max = Math.floor(max);\n }\n\n let skip;\n\n if (min > labelOptions.skip) {\n skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n } else {\n skip = labelOptions.skip;\n }\n\n return {\n min: skip - start,\n max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n };\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const dataItem = options.dataItems ? options.dataItems[index] : null;\n const category = valueOrDefault(options.categories[index], \"\");\n\n labelContext.dataItem = dataItem;\n const text = this.axisLabelText(category, labelOptions, labelContext);\n\n return new AxisLabel(category, text, index, dataItem, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.totalRangeIndices();\n\n return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n }\n\n noteSlot(value) {\n const options = this.options;\n const index = value - Math.floor(options.min || 0);\n return this.getSlot(index);\n }\n\n arrangeNotes() {\n super.arrangeNotes();\n this.hideOutOfRangeNotes();\n }\n\n hideOutOfRangeNotes() {\n const { notes, box } = this;\n if (notes && notes.length) {\n const valueAxis = this.options.vertical ? Y : X;\n const start = box[valueAxis + 1];\n const end = box[valueAxis + 2];\n\n for (let idx = 0; idx < notes.length; idx++) {\n const note = notes[idx];\n if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n note.hide();\n }\n }\n }\n }\n\n pan(delta) {\n const range = this.totalRangeIndices(true);\n const { scale } = this.scaleOptions();\n const offset = round(delta / scale, DEFAULT_PRECISION);\n const totalRange = this.totalRange();\n const min = range.min + offset;\n const max = range.max + offset;\n\n return this.limitRange(min, max, 0, totalRange.max, offset);\n }\n\n pointsRange(start, end) {\n const { reverse, vertical } = this.options;\n const valueAxis = vertical ? Y : X;\n const range = this.totalRangeIndices(true);\n const { scale, box } = this.scaleOptions();\n const lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n const diffStart = start[valueAxis] - lineStart;\n const diffEnd = end[valueAxis] - lineStart;\n\n const min = range.min + diffStart / scale;\n const max = range.min + diffEnd / scale;\n const rangeMin = Math.min(min, max);\n const rangeMax = Math.max(min, max);\n\n if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n return {\n min: rangeMin,\n max: rangeMax\n };\n }\n }\n\n valueRange() {\n return this.range();\n }\n\n totalIndex(value) {\n const options = this.options;\n const index = this._categoriesMap ?\n this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n return index;\n }\n\n currentRangeIndices() {\n const options = this.options;\n let min = 0;\n\n if (isNumber(options.min)) {\n min = Math.floor(options.min);\n }\n\n let max;\n if (isNumber(options.max)) {\n max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n } else {\n max = this.totalCount() - 1;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n mapCategories() {\n if (!this._categoriesMap) {\n const map = this._categoriesMap = new HashMap();\n const srcCategories = this.options.srcCategories;\n for (let idx = 0; idx < srcCategories.length; idx++) {\n map.set(srcCategories[idx], idx);\n }\n }\n }\n\n totalCount() {\n return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n }\n}\n\nsetDefaultOptions(CategoryAxis, {\n type: \"category\",\n vertical: false,\n majorGridLines: {\n visible: false,\n width: 1,\n color: BLACK\n },\n labels: {\n zIndex: 1\n },\n justified: false,\n _deferLabels: true\n});\n\nexport default CategoryAxis;\n","const COORDINATE_LIMIT = 300000;\n\nconst DateLabelFormats = {\n milliseconds: \"HH:mm:ss.fff\",\n seconds: \"HH:mm:ss\",\n minutes: \"HH:mm\",\n hours: \"HH:mm\",\n days: \"M/d\",\n weeks: \"M/d\",\n months: \"MMM 'yy\",\n years: \"yyyy\"\n};\n\nconst ZERO_THRESHOLD = 0.2;\n\nexport {\n COORDINATE_LIMIT, DateLabelFormats, ZERO_THRESHOLD\n};","import CategoryAxis from './category-axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { CENTER, DATE, DEFAULT_PRECISION, MAX_VALUE, OBJECT, X, Y } from '../common/constants';\nimport { deepExtend, defined, inArray, last, limitValue, round, setDefaultOptions, sparseArrayLimits } from '../common';\n\nimport { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_MINUTE, TIME_PER_HOUR, TIME_PER_DAY, TIME_PER_WEEK,\n TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\nimport { dateComparer, toDate, addTicks, addDuration, dateDiff, absoluteDateDiff,\n dateIndex, dateEquals, toTime, parseDate, parseDates, firstDay } from '../date-utils';\n\nimport { DateLabelFormats } from './constants';\n\nconst AUTO = \"auto\";\nconst BASE_UNITS = [\n MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n];\nconst FIT = \"fit\";\n\n\nfunction categoryRange(categories) {\n let range = categories._range;\n if (!range) {\n range = categories._range = sparseArrayLimits(categories);\n range.min = toDate(range.min);\n range.max = toDate(range.max);\n }\n\n return range;\n}\n\nclass EmptyDateRange {\n constructor(options) {\n this.options = options;\n }\n\n displayIndices() {\n return {\n min: 0,\n max: 1\n };\n }\n\n displayRange() {\n return {};\n }\n\n total() {\n return {};\n }\n\n valueRange() {\n return {};\n }\n\n valueIndex() {\n return -1;\n }\n\n values() {\n return [];\n }\n\n totalIndex() {\n return -1;\n }\n\n valuesCount() {\n return 0;\n }\n\n totalCount() {\n return 0;\n }\n\n dateAt() {\n return null;\n }\n}\n\nclass DateRange {\n constructor(start, end, options) {\n this.options = options;\n options.baseUnitStep = options.baseUnitStep || 1;\n\n const { roundToBaseUnit, justified } = options;\n\n this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n const lowerEnd = this.roundToTotalStep(end);\n const expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n const min = options.min || start;\n this.valueStart = this.roundToTotalStep(min);\n this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n const max = options.max;\n if (!max) {\n this.valueEnd = lowerEnd;\n this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n } else {\n const next = !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0;\n this.valueEnd = this.roundToTotalStep(max, false, next);\n this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n }\n\n if (this.valueEnd < this.valueStart) {\n this.valueEnd = this.valueStart;\n }\n if (this.displayEnd <= this.displayStart) {\n this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n }\n }\n\n displayRange() {\n return {\n min: this.displayStart,\n max: this.displayEnd\n };\n }\n\n displayIndices() {\n if (!this._indices) {\n const options = this.options;\n\n const { baseUnit, baseUnitStep } = options;\n\n const minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n const maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n this._indices = { min: minIdx, max: maxIdx };\n }\n\n return this._indices;\n }\n\n total() {\n return {\n min: this.start,\n max: this.end\n };\n }\n\n totalCount() {\n const last = this.totalIndex(this.end);\n\n return last + (this.options.justified ? 1 : 0);\n }\n\n valueRange() {\n return {\n min: this.valueStart,\n max: this.valueEnd\n };\n }\n\n valueIndex(value) {\n const options = this.options;\n return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n }\n\n totalIndex(value) {\n const options = this.options;\n return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n }\n\n dateIndex(value) {\n const options = this.options;\n return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n }\n\n valuesCount() {\n const maxIdx = this.valueIndex(this.valueEnd);\n\n return maxIdx + 1;\n }\n\n values() {\n let values = this._values;\n if (!values) {\n const options = this.options;\n const range = this.valueRange();\n this._values = values = [];\n\n for (let date = range.min; date <= range.max;) {\n values.push(date);\n date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n }\n }\n\n return values;\n }\n\n dateAt(index, total) {\n const options = this.options;\n\n return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n }\n\n roundToTotalStep(value, upper, next) {\n const { baseUnit, baseUnitStep, weekStartDay } = this.options;\n const start = this.start;\n\n const step = dateIndex(value, start, baseUnit, baseUnitStep);\n let roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n if (next) {\n roundedStep += next;\n }\n\n return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n }\n\n}\n\nfunction autoBaseUnit(options, startUnit, startStep) {\n const categoryLimits = categoryRange(options.categories);\n const span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n const { autoBaseUnitSteps, maxDateGroups } = options;\n const autoUnit = options.baseUnit === FIT;\n let autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n let baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n let units = span / TIME_PER_UNIT[baseUnit];\n let totalUnits = units;\n let unitSteps, step, nextStep;\n\n while (!step || units >= maxDateGroups) {\n unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n do {\n nextStep = unitSteps.shift();\n } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n if (nextStep) {\n step = nextStep;\n units = totalUnits / step;\n } else if (baseUnit === last(BASE_UNITS)) {\n step = Math.ceil(totalUnits / maxDateGroups);\n break;\n } else if (autoUnit) {\n baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n totalUnits = span / TIME_PER_UNIT[baseUnit];\n unitSteps = null;\n } else {\n if (units > maxDateGroups) {\n step = Math.ceil(totalUnits / maxDateGroups);\n }\n break;\n }\n }\n\n options.baseUnitStep = step;\n options.baseUnit = baseUnit;\n}\n\nfunction defaultBaseUnit(options) {\n const categories = options.categories;\n const count = defined(categories) ? categories.length : 0;\n let minDiff = MAX_VALUE;\n let lastCategory, unit;\n\n for (let categoryIx = 0; categoryIx < count; categoryIx++) {\n const category = categories[categoryIx];\n\n if (category && lastCategory) {\n const diff = absoluteDateDiff(category, lastCategory);\n if (diff > 0) {\n minDiff = Math.min(minDiff, diff);\n\n if (minDiff >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n unit = MONTHS;\n } else if (minDiff >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (minDiff >= TIME_PER_DAY) {\n unit = DAYS;\n } else if (minDiff >= TIME_PER_HOUR) {\n unit = HOURS;\n } else if (minDiff >= TIME_PER_MINUTE) {\n unit = MINUTES;\n } else {\n unit = SECONDS;\n }\n }\n }\n\n lastCategory = category;\n }\n\n options.baseUnit = unit || DAYS;\n}\n\nfunction initUnit(options) {\n const baseUnit = (options.baseUnit || \"\").toLowerCase();\n const useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n if (useDefault) {\n defaultBaseUnit(options);\n }\n\n if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n autoBaseUnit(options);\n }\n\n return options;\n}\n\nclass DateCategoryAxis extends CategoryAxis {\n\n clone() {\n const copy = new DateCategoryAxis(Object.assign({}, this.options), this.chartService);\n copy.createLabels();\n\n return copy;\n }\n\n categoriesHash() {\n const start = this.dataRange.total().min;\n return this.options.baseUnit + this.options.baseUnitStep + start;\n }\n\n initUserOptions(options) {\n return options;\n }\n\n initFields() {\n super.initFields();\n\n const chartService = this.chartService;\n const intlService = chartService.intl;\n let options = this.options;\n\n let categories = options.categories || [];\n if (!categories._parsed) {\n categories = parseDates(intlService, categories);\n categories._parsed = true;\n }\n\n options = deepExtend({\n roundToBaseUnit: true\n }, options, {\n categories: categories,\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n weekStartDay: firstDay(options, intlService)\n });\n\n if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n options.roundToBaseUnit = false;\n }\n\n options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n this.options = options;\n options.srcCategories = categories;\n\n if (categories.length > 0) {\n const range = categoryRange(categories);\n const maxDivisions = options.maxDivisions;\n\n this.dataRange = new DateRange(range.min, range.max, initUnit(options));\n\n if (maxDivisions) {\n const dataRange = this.dataRange.displayRange();\n\n const divisionOptions = Object.assign({}, options, {\n justified: true,\n roundToBaseUnit: false,\n baseUnit: 'fit',\n min: dataRange.min,\n max: dataRange.max,\n maxDateGroups: maxDivisions\n });\n\n const dataRangeOptions = this.dataRange.options;\n\n autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n } else {\n this.divisionRange = this.dataRange;\n }\n\n } else {\n options.baseUnit = options.baseUnit || DAYS;\n this.dataRange = this.divisionRange = new EmptyDateRange(options);\n }\n\n this.rangeLabels = [];\n }\n\n tickIndices(stepSize) {\n const { dataRange, divisionRange } = this;\n const valuesCount = divisionRange.valuesCount();\n\n if (!this.options.maxDivisions || !valuesCount) {\n return super.tickIndices(stepSize);\n }\n\n const indices = [];\n let values = divisionRange.values();\n let offset = 0;\n\n if (!this.options.justified) {\n values = values.concat(divisionRange.dateAt(valuesCount));\n offset = 0.5;//align ticks to the center of not justified categories\n }\n\n for (let idx = 0; idx < values.length; idx++) {\n indices.push(dataRange.dateIndex(values[idx]) + offset);\n if (stepSize !== 1 && idx >= 1) {\n const last = indices.length - 1;\n indices.splice(idx, 0, indices[last - 1] + (indices[last] - indices[last - 1]) * stepSize);\n }\n }\n\n return indices;\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n const categories = this.options.categories || [];\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n }\n\n parseNoteValue(value) {\n return parseDate(this.chartService.intl, value);\n }\n\n noteSlot(value) {\n return this.getSlot(value);\n }\n\n translateRange(delta) {\n const options = this.options;\n const { baseUnit, weekStartDay, vertical } = options;\n const lineBox = this.lineBox();\n const size = vertical ? lineBox.height() : lineBox.width();\n let range = this.range();\n const scale = size / (range.max - range.min);\n const offset = round(delta / scale, DEFAULT_PRECISION);\n\n if (range.min && range.max) {\n const from = addTicks(options.min || range.min, offset);\n const to = addTicks(options.max || range.max, offset);\n\n range = {\n min: addDuration(from, 0, baseUnit, weekStartDay),\n max: addDuration(to, 0, baseUnit, weekStartDay)\n };\n }\n\n return range;\n }\n\n labelsRange() {\n return {\n min: this.options.labels.skip,\n max: this.divisionRange.valuesCount()\n };\n }\n\n pan(delta) {\n if (this.isEmpty()) {\n return null;\n }\n\n const options = this.options;\n const lineBox = this.lineBox();\n const size = options.vertical ? lineBox.height() : lineBox.width();\n const { min, max } = this.dataRange.displayRange();\n const totalLimits = this.dataRange.total();\n const scale = size / (max - min);\n const offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n const from = addTicks(min, offset);\n const to = addTicks(max, offset);\n\n const panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n if (panRange) {\n panRange.min = toDate(panRange.min);\n panRange.max = toDate(panRange.max);\n panRange.baseUnit = options.baseUnit;\n panRange.baseUnitStep = options.baseUnitStep || 1;\n panRange.userSetBaseUnit = options.userSetBaseUnit;\n panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n return panRange;\n }\n }\n\n pointsRange(start, end) {\n if (this.isEmpty()) {\n return null;\n }\n\n const pointsRange = super.pointsRange(start, end);\n const datesRange = this.dataRange.displayRange();\n const indicesRange = this.dataRange.displayIndices();\n const scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n const options = this.options;\n\n const min = addTicks(datesRange.min, pointsRange.min * scale);\n const max = addTicks(datesRange.min, pointsRange.max * scale);\n\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n\n scaleRange(scale, cursor) {\n if (this.isEmpty()) {\n return {};\n }\n\n const options = this.options;\n const fit = options.userSetBaseUnit === FIT;\n const totalLimits = this.dataRange.total();\n const { min: rangeMin, max: rangeMax } = this.dataRange.displayRange();\n\n const position = Math.abs(this.pointOffset(cursor));\n const range = rangeMax - rangeMin;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = Math.round(position * delta);\n const maxDelta = Math.round((1 - position) * delta);\n\n let { baseUnit } = this.dataRange.options;\n let min = new Date(rangeMin.getTime() + minDelta);\n let max = new Date(rangeMax.getTime() - maxDelta);\n\n if (fit) {\n const { autoBaseUnitSteps, maxDateGroups } = options;\n\n const maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n const rangeDiff = dateDiff(rangeMax, rangeMin);\n const diff = dateDiff(max, min);\n let baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n let autoBaseUnitStep, ticks;\n\n if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n baseUnit = BASE_UNITS[baseUnitIndex - 1];\n autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n min = addTicks(rangeMin, ticks);\n max = addTicks(rangeMax, -ticks);\n\n } else if (diff > maxDiff && baseUnit !== YEARS) {\n let stepIndex = 0;\n\n do {\n baseUnitIndex++;\n baseUnit = BASE_UNITS[baseUnitIndex];\n stepIndex = 0;\n ticks = 2 * TIME_PER_UNIT[baseUnit];\n do {\n autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n stepIndex++;\n } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n if (ticks > 0) {\n min = addTicks(rangeMin, -ticks);\n max = addTicks(rangeMax, ticks);\n min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n }\n }\n }\n\n if (min && max && dateDiff(max, min) > 0) {\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n }\n\n zoomRange(scale, cursor) {\n const totalLimits = this.dataRange.total();\n const range = this.scaleRange(scale, cursor);\n\n if (range) {\n if (range.min < totalLimits.min) {\n range.min = totalLimits.min;\n }\n if (range.max > totalLimits.max) {\n range.max = totalLimits.max;\n }\n }\n\n return range;\n }\n\n range() {\n return this.dataRange.displayRange();\n }\n\n createLabels() {\n super.createLabels();\n this.createRangeLabels();\n }\n\n clearLabels() {\n super.clearLabels();\n this.rangeLabels = [];\n }\n\n arrangeLabels() {\n this.arrangeRangeLabels();\n super.arrangeLabels();\n }\n\n arrangeRangeLabels() {\n const { options, rangeLabels } = this;\n if (rangeLabels.length === 0) {\n return;\n }\n\n const lineBox = this.lineBox();\n const vertical = options.vertical;\n const mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n const firstLabel = rangeLabels[0];\n if (firstLabel) {\n const position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n this.positionLabel(firstLabel, mirror, position);\n }\n\n const lastLabel = rangeLabels[1];\n if (lastLabel) {\n const position = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n this.positionLabel(lastLabel, mirror, position);\n }\n }\n\n autoRotateLabels() {\n super.autoRotateLabels();\n this.autoRotateRangeLabels();\n }\n\n hideOutOfRangeLabels() {\n super.hideOutOfRangeLabels();\n this.hideOverlappingLabels();\n }\n\n hideOverlappingLabels() {\n const { rangeLabels, labels } = this;\n if (rangeLabels.length === 0) {\n return;\n }\n\n function clip(rangeLabel, label) {\n if (!label.options.visible || label.box.overlaps(rangeLabel.box)) {\n label.options.visible = false;\n return true;\n }\n\n return false;\n }\n\n const firstRangeLabel = rangeLabels[0];\n if (firstRangeLabel && firstRangeLabel.options.visible) {\n for (let i = 0; i < labels.length; i++) {\n const overlaps = clip(firstRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n\n const lastRangeLabel = rangeLabels[1];\n if (lastRangeLabel && lastRangeLabel.options.visible) {\n for (let i = labels.length - 1; i > 0; --i) {\n const overlaps = clip(lastRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n }\n\n contentBox() {\n const box = super.contentBox();\n const rangeLabels = this.rangeLabels;\n\n for (let i = 0; i < rangeLabels.length; i++) {\n const label = rangeLabels[i];\n if (label.options.visible) {\n box.wrap(label.box);\n }\n }\n\n return box;\n }\n\n createAxisLabel(index, labelOptions, labelContext = {}) {\n const options = this.options;\n const dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n const date = this.divisionRange.dateAt(index);\n const unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n labelOptions.format = labelOptions.format || unitFormat;\n labelContext.dataItem = dataItem;\n\n const text = this.axisLabelText(date, labelOptions, labelContext);\n if (text) {\n return new AxisLabel(date, text, index, dataItem, labelOptions);\n }\n }\n\n createRangeLabels() {\n const { displayStart, displayEnd } = this.divisionRange;\n const options = this.options;\n const labelOptions = Object.assign({}, options.labels, options.rangeLabels, {\n align: CENTER,\n zIndex: options.zIndex\n });\n\n if (labelOptions.visible !== true) {\n return;\n }\n\n this.normalizeLabelRotation(labelOptions);\n labelOptions.alignRotation = CENTER;\n\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateRangeLabels = true;\n }\n\n const unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n const createLabel = (index, date, text) => {\n if (text) {\n const label = new AxisLabel(date, text, index, null, labelOptions);\n this.append(label);\n this.rangeLabels.push(label);\n }\n };\n\n const startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n createLabel(0, displayStart, startText);\n\n const endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n createLabel(1, displayEnd, endText);\n }\n\n autoRotateRangeLabels() {\n const labels = this.rangeLabels;\n if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n return;\n }\n\n const rotateLabel = (label, tickPositions, index) => {\n const width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n const angle = this.autoRotateLabelAngle(label.box, width);\n if (angle !== 0) {\n label.options.rotation = angle;\n label.reflow(new Box());\n }\n };\n\n const tickPositions = this.getMajorTickPositions();\n rotateLabel(labels[0], tickPositions, 0);\n rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n }\n\n categoryIndex(value) {\n return this.dataRange.valueIndex(value);\n }\n\n slot(from, to, limit) {\n const dateRange = this.dataRange;\n let start = from;\n let end = to;\n\n if (start instanceof Date) {\n start = dateRange.dateIndex(start);\n }\n\n if (end instanceof Date) {\n end = dateRange.dateIndex(end);\n }\n\n const slot = this.getSlot(start, end, limit);\n if (slot) {\n return slot.toRect();\n }\n }\n\n getSlot(a, b, limit) {\n let start = a;\n let end = b;\n\n if (typeof start === OBJECT) {\n start = this.categoryIndex(start);\n }\n\n if (typeof end === OBJECT) {\n end = this.categoryIndex(end);\n }\n\n return super.getSlot(start, end, limit);\n }\n\n valueRange() {\n const options = this.options;\n const range = categoryRange(options.srcCategories);\n\n return {\n min: toDate(range.min),\n max: toDate(range.max)\n };\n }\n\n categoryAt(index, total) {\n return this.dataRange.dateAt(index, total);\n }\n\n categoriesCount() {\n return this.dataRange.valuesCount();\n }\n\n rangeIndices() {\n return this.dataRange.displayIndices();\n }\n\n labelsBetweenTicks() {\n return !this.divisionRange.options.justified;\n }\n\n prepareUserOptions() {\n if (this.isEmpty()) {\n return;\n }\n\n this.options.categories = this.dataRange.values();\n }\n\n getCategory(point) {\n const index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.dataRange.dateAt(index);\n }\n\n totalIndex(value) {\n return this.dataRange.totalIndex(value);\n }\n\n currentRangeIndices() {\n const range = this.dataRange.valueRange();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n }\n\n totalRange() {\n return this.dataRange.total();\n }\n\n totalCount() {\n return this.dataRange.totalCount();\n }\n\n isEmpty() {\n return !this.options.srcCategories.length;\n }\n\n roundedRange() {\n if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n return this.range();\n }\n\n const options = this.options;\n const datesRange = categoryRange(options.srcCategories);\n\n const dateRange = new DateRange(datesRange.min, datesRange.max, Object.assign({}, options, {\n justified: false,\n roundToBaseUnit: true,\n justifyEnd: options.justified\n }));\n\n return dateRange.displayRange();\n }\n}\n\nsetDefaultOptions(DateCategoryAxis, {\n type: DATE,\n labels: {\n dateFormats: DateLabelFormats\n },\n rangeLabels: {\n visible: false\n },\n autoBaseUnitSteps: {\n milliseconds: [ 1, 10, 100 ],\n seconds: [ 1, 2, 5, 15, 30 ],\n minutes: [ 1, 2, 5, 15, 30 ],\n hours: [ 1, 2, 3 ],\n days: [ 1, 2, 3 ],\n weeks: [ 1, 2 ],\n months: [ 1, 2, 3, 6 ],\n years: [ 1, 2, 3, 5, 10, 25, 50 ]\n },\n maxDateGroups: 10\n});\n\nexport default DateCategoryAxis;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function floor(value, step) {\n return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function ceil(value, step) {\n return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n}","import { COORDINATE_LIMIT } from '../constants';\n\nexport default function limitCoordinate(value) {\n return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n}","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { BLACK, DEFAULT_PRECISION, COORD_PRECISION } from '../common/constants';\nimport { deepExtend, defined, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport autoAxisMin from './utils/auto-axis-min';\nimport autoAxisMax from './utils/auto-axis-max';\nimport floor from './utils/floor';\nimport ceil from './utils/ceil';\nimport limitCoordinate from './utils/limit-coordinate';\n\nconst MIN_VALUE_RANGE = Math.pow(10, -DEFAULT_PRECISION + 1);\n\nclass NumericAxis extends Axis {\n\n constructor(seriesMin, seriesMax, options, chartService) {\n super(Object.assign({}, options, {\n seriesMin: seriesMin,\n seriesMax: seriesMax\n }), chartService);\n }\n\n initUserOptions(options) {\n const autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n this.totalOptions = totalAxisOptions(autoOptions, options);\n\n return axisOptions(autoOptions, options);\n }\n\n initFields() {\n this.totalMin = this.totalOptions.min;\n this.totalMax = this.totalOptions.max;\n this.totalMajorUnit = this.totalOptions.majorUnit;\n this.seriesMin = this.options.seriesMin;\n this.seriesMax = this.options.seriesMax;\n }\n\n clone() {\n return new NumericAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n }\n\n startValue() {\n return 0;\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n getDivisions(stepValue) {\n if (stepValue === 0) {\n return 1;\n }\n\n const options = this.options;\n const range = options.max - options.min;\n\n return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n }\n\n getTickPositions(unit, skipUnit) {\n const options = this.options;\n const { axisDir, axisOrigin, lineBox, lineSize } = this.lineInfo();\n const range = options.max - options.min;\n const scale = lineSize / range;\n const step = unit * scale;\n const divisions = this.getDivisions(unit);\n const positions = [];\n let pos = lineBox[axisOrigin];\n let skipStep = 0;\n\n if (skipUnit) {\n skipStep = skipUnit / unit;\n }\n\n for (let idx = 0; idx < divisions; idx++) {\n if (idx % skipStep !== 0) {\n positions.push(round(pos, COORD_PRECISION));\n }\n\n pos = pos + step * axisDir;\n }\n\n return positions;\n }\n\n getMajorTickPositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n getMinorTickPositions() {\n return this.getTickPositions(this.options.minorUnit);\n }\n\n getSlot(a, b, limit = false) {\n const options = this.options;\n const { axis, axisDir, lineBox, lineSize, lineStart } = this.lineInfo();\n const step = axisDir * (lineSize / (options.max - options.min));\n\n let start = valueOrDefault(a, b || 0);\n let end = valueOrDefault(b, a || 0);\n\n if (limit) {\n start = limitValue(start, options.min, options.max);\n end = limitValue(end, options.min, options.max);\n }\n\n const p1 = Math.min(start, end) - options.min;\n const p2 = Math.max(start, end) - options.min;\n\n const slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n }\n\n getValue(point) {\n const options = this.options;\n const max = Number(options.max);\n const min = Number(options.min);\n const offset = this.pointOffset(point);\n const valueOffset = offset * (max - min);\n\n if (offset < 0 || offset > 1) {\n return null;\n }\n\n const value = min + valueOffset;\n return round(value, DEFAULT_PRECISION);\n }\n\n translateRange(delta) {\n const options = this.options;\n const { vertical, reverse, max, min } = options;\n const { lineSize } = this.lineInfo();\n const range = max - min;\n const scale = lineSize / range;\n let offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: min + offset,\n max: max + offset,\n offset: offset\n };\n }\n\n labelsCount() {\n return this.getDivisions(this.options.majorUnit);\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n const text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n return range.min <= value && value <= range.max;\n }\n\n pan(delta) {\n const range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n if (this.isValidRange(min, max)) {\n return {\n min: min,\n max: max\n };\n }\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const range = this.options.max - this.options.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n let max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const { totalMin, totalMax } = this;\n const range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax),\n narrowRange: false\n };\n }\n\n isValidRange(min, max) {\n return max - min > MIN_VALUE_RANGE;\n }\n}\n\nfunction autoAxisOptions(seriesMin, seriesMax, options) {\n const narrowRange = options.narrowRange;\n\n let autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n let autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n const majorUnit = autoMajorUnit(autoMin, autoMax);\n const autoOptions = {\n majorUnit: majorUnit\n };\n\n if (options.roundToMajorUnit !== false) {\n if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n autoMin -= majorUnit;\n }\n\n if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n autoMax += majorUnit;\n }\n }\n\n autoOptions.min = floor(autoMin, majorUnit);\n autoOptions.max = ceil(autoMax, majorUnit);\n\n return autoOptions;\n}\n\nfunction totalAxisOptions(autoOptions, options) {\n return {\n min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n majorUnit: autoOptions.majorUnit\n };\n}\n\nfunction clearNullValues(options, fields) {\n for (let idx = 0; idx < fields.length; idx++) {\n const field = fields[idx];\n if (options[field] === null) {\n options[field] = undefined;\n }\n }\n}\n\nfunction axisOptions(autoOptions, userOptions) {\n let options = userOptions;\n let userSetMin, userSetMax;\n\n if (userOptions) {\n clearNullValues(userOptions, [ 'min', 'max' ]);\n\n userSetMin = defined(userOptions.min);\n userSetMax = defined(userOptions.max);\n\n const userSetLimits = userSetMin || userSetMax;\n\n if (userSetLimits) {\n if (userOptions.min === userOptions.max) {\n if (userOptions.min > 0) {\n userOptions.min = 0;\n } else {\n userOptions.max = 1;\n }\n }\n }\n\n if (userOptions.majorUnit) {\n autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n } else if (userSetLimits) {\n options = deepExtend(autoOptions, userOptions);\n\n // Determine an auto major unit after min/max have been set\n autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n }\n }\n\n autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n const result = deepExtend(autoOptions, options);\n if (result.min >= result.max) {\n if (userSetMin && !userSetMax) {\n result.max = result.min + result.majorUnit;\n } else if (!userSetMin && userSetMax) {\n result.min = result.max - result.majorUnit;\n }\n }\n\n return result;\n}\n\nfunction remainderClose(value, divisor, ratio) {\n const remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n const threshold = divisor * (1 - ratio);\n\n return remainder === 0 || remainder > threshold;\n}\n\nsetDefaultOptions(NumericAxis, {\n type: \"numeric\",\n min: 0,\n max: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n format: \"#.####################\"\n },\n zIndex: 1\n});\n\nexport default NumericAxis;\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMin(min, max, narrow) {\n if (!min && !max) {\n return 0;\n }\n\n let axisMin;\n\n if (min >= 0 && max >= 0) {\n const minValue = min === max ? 0 : min;\n\n let diff = (max - minValue) / max;\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n } else {\n axisMin = min;\n }\n\n return axisMin;\n}\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMax(min, max, narrow) {\n if (!min && !max) {\n return 1;\n }\n\n let axisMax;\n\n if (min <= 0 && max <= 0) {\n const maxValue = min === max ? 0 : max;\n\n let diff = Math.abs((maxValue - min) / maxValue);\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n } else {\n axisMax = max;\n }\n\n return axisMax;\n}","import Axis from './axis';\nimport NumericAxis from './numeric-axis';\nimport AxisLabel from './axis-label';\nimport { DateLabelFormats } from './constants';\n\nimport { BLACK, DATE, COORD_PRECISION, DEFAULT_PRECISION } from '../common/constants';\nimport { setDefaultOptions, deepExtend, limitValue, round } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport ceil from './utils/ceil';\n\nimport { toDate, toTime, floorDate, ceilDate, duration, addDuration, addTicks, dateDiff, absoluteDateDiff, dateComparer, parseDate, parseDates, firstDay } from '../date-utils';\nimport { HOURS, DAYS, WEEKS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_WEEK, TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\n\nconst MIN_VALUE_RANGE = 1000;\n\nclass DateValueAxis extends Axis {\n constructor(seriesMin, seriesMax, axisOptions, chartService) {\n const min = toDate(seriesMin);\n const max = toDate(seriesMax);\n\n const intlService = chartService.intl;\n let options = axisOptions || {};\n options = deepExtend(options || {}, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue),\n weekStartDay: firstDay(options, intlService)\n });\n options = applyDefaults(min, max, options);\n\n super(options, chartService);\n\n this.intlService = intlService;\n this.seriesMin = min;\n this.seriesMax = max;\n\n const weekStartDay = options.weekStartDay || 0;\n this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n }\n\n clone() {\n return new DateValueAxis(this.seriesMin, this.seriesMax, Object.assign({}, this.options), this.chartService);\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n getDivisions(stepValue) {\n const options = this.options;\n\n return Math.floor(\n duration(options.min, options.max, options.baseUnit) / stepValue + 1\n );\n }\n\n getTickPositions(step) {\n const options = this.options;\n const { axisDir: dir, lineSize, lineStart: start } = this.lineInfo();\n const divisions = this.getDivisions(step);\n const timeRange = dateDiff(options.max, options.min);\n const scale = lineSize / timeRange;\n const weekStartDay = options.weekStartDay || 0;\n\n const positions = [ start ];\n for (let i = 1; i < divisions; i++) {\n const date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n const pos = start + dateDiff(date, options.min) * scale * dir;\n\n positions.push(round(pos, COORD_PRECISION));\n }\n\n return positions;\n }\n\n getMajorTickPositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n getMinorTickPositions() {\n return this.getTickPositions(this.options.minorUnit);\n }\n\n getSlot(a, b, limit) {\n return NumericAxis.prototype.getSlot.call(\n this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n );\n }\n\n getValue(point) {\n const value = NumericAxis.prototype.getValue.call(this, point);\n\n return value !== null ? toDate(value) : null;\n }\n\n labelsCount() {\n return this.getDivisions(this.options.majorUnit);\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const offset = index * options.majorUnit;\n const weekStartDay = options.weekStartDay || 0;\n let date = options.min;\n\n if (offset > 0) {\n date = addDuration(date, offset, options.baseUnit, weekStartDay);\n }\n\n const unitFormat = labelOptions.dateFormats[options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n const text = this.axisLabelText(date, labelOptions, labelContext);\n return new AxisLabel(date, text, index, null, labelOptions);\n }\n\n translateRange(delta) {\n const options = this.options;\n const lineBox = this.lineBox();\n const { vertical, reverse } = options;\n const size = vertical ? lineBox.height() : lineBox.width();\n const range = this.range();\n const scale = size / dateDiff(range.max, range.min);\n\n let offset = round(delta / scale, DEFAULT_PRECISION);\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n let from = addTicks(options.min, offset);\n let to = addTicks(options.max, offset);\n\n return {\n min: from,\n max: to,\n offset: offset\n };\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n }\n\n pan(delta) {\n const range = this.translateRange(delta, true);\n const limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n if (limittedRange) {\n return {\n min: toDate(limittedRange.min),\n max: toDate(limittedRange.max)\n };\n }\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n return {\n min: toDate(min),\n max: toDate(max)\n };\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const range = this.options.max - this.options.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = toDate(toTime(this.options.min) + minDelta);\n let max = toDate(toTime(this.options.max) - maxDelta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = toDate(toTime(min) + MIN_VALUE_RANGE);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const range = this.scaleRange(scale, cursor);\n const min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n const max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n return {\n min,\n max\n };\n }\n}\n\nfunction timeUnits(delta) {\n let unit = HOURS;\n\n if (delta >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (delta >= TIME_PER_MONTH) {\n unit = MONTHS;\n } else if (delta >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (delta >= TIME_PER_DAY) {\n unit = DAYS;\n }\n\n return unit;\n}\n\nfunction applyDefaults(seriesMin, seriesMax, options) {\n const min = options.min || seriesMin;\n const max = options.max || seriesMax;\n const baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n const baseUnitTime = TIME_PER_UNIT[baseUnit];\n const weekStartDay = options.weekStartDay || 0;\n const autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n const autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n const userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n const majorUnit = userMajorUnit || ceil(\n autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n baseUnitTime\n ) / baseUnitTime;\n const actualUnits = duration(autoMin, autoMax, baseUnit);\n const totalUnits = ceil(actualUnits, majorUnit);\n const unitsToAdd = totalUnits - actualUnits;\n const head = Math.floor(unitsToAdd / 2);\n const tail = unitsToAdd - head;\n\n if (!options.baseUnit) {\n delete options.baseUnit;\n }\n\n options.baseUnit = options.baseUnit || baseUnit;\n options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n options.minorUnit = options.minorUnit || majorUnit / 5;\n options.majorUnit = majorUnit;\n\n return options;\n}\n\nsetDefaultOptions(DateValueAxis, {\n type: DATE,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n dateFormats: DateLabelFormats\n }\n});\n\nexport default DateValueAxis;\n","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\nimport limitCoordinate from './utils/limit-coordinate';\n\nimport { DEFAULT_PRECISION, BLACK } from '../common/constants';\nimport { deepExtend, defined, inArray, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nconst DEFAULT_MAJOR_UNIT = 10;\nconst MIN_VALUE_RANGE = 1e-6;\n\nclass LogarithmicAxis extends Axis {\n constructor(seriesMin, seriesMax, options, chartService) {\n\n const axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n const base = axisOptions.majorUnit;\n const autoMax = autoAxisMax(seriesMax, base);\n const autoMin = autoAxisMin(seriesMin, seriesMax, axisOptions);\n const range = initRange(autoMin, autoMax, axisOptions, options);\n\n axisOptions.max = range.max;\n axisOptions.min = range.min;\n axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n super(axisOptions, chartService);\n\n this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n this.seriesMin = seriesMin;\n this.seriesMax = seriesMax;\n\n this.createLabels();\n }\n\n clone() {\n return new LogarithmicAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n }\n\n startValue() {\n return this.options.min;\n }\n\n getSlot(a, b, limit) {\n const { options, logMin, logMax } = this;\n const { majorUnit: base, min, max } = options;\n const { axis, axisDir, lineBox, lineSize, lineStart } = this.lineInfo();\n const step = axisDir * (lineSize / (logMax - logMin));\n let start = valueOrDefault(a, b || 1);\n let end = valueOrDefault(b, a || 1);\n\n if (start <= 0 || end <= 0) {\n return null;\n }\n\n if (limit) {\n start = limitValue(start, min, max);\n end = limitValue(end, min, max);\n }\n\n start = log(start, base);\n end = log(end, base);\n\n const p1 = Math.min(start, end) - logMin;\n const p2 = Math.max(start, end) - logMin;\n\n const slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n }\n\n getValue(point) {\n const { options, logMin, logMax } = this;\n const { majorUnit: base } = options;\n const { axis, axisDir, lineStart, lineSize } = this.lineInfo();\n const step = ((logMax - logMin) / lineSize);\n const offset = axisDir * (point[axis] - lineStart);\n const valueOffset = offset * step;\n\n if (offset < 0 || offset > lineSize) {\n return null;\n }\n\n const value = logMin + valueOffset;\n\n return round(Math.pow(base, value), DEFAULT_PRECISION);\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n translateRange(delta) {\n const { options, logMin, logMax } = this;\n const { reverse, vertical, majorUnit: base } = options;\n const lineBox = this.lineBox();\n const size = vertical ? lineBox.height() : lineBox.width();\n const scale = size / (logMax - logMin);\n let offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: Math.pow(base, logMin + offset),\n max: Math.pow(base, logMax + offset),\n offset: offset\n };\n }\n\n labelsCount() {\n const floorMax = Math.floor(this.logMax);\n const count = Math.floor(floorMax - this.logMin) + 1;\n\n return count;\n }\n\n getMajorTickPositions() {\n const ticks = [];\n\n this.traverseMajorTicksPositions((position) => {\n ticks.push(position);\n }, { step: 1, skip: 0 });\n\n return ticks;\n }\n\n createTicks(lineGroup) {\n const options = this.options;\n const { majorTicks, minorTicks, vertical } = options;\n const mirror = options.labels.mirror;\n const lineBox = this.lineBox();\n const ticks = [];\n const tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: vertical\n };\n\n function render(tickPosition, tickOptions) {\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPosition;\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n\n if (majorTicks.visible) {\n this.traverseMajorTicksPositions(render, majorTicks);\n }\n\n if (minorTicks.visible) {\n this.traverseMinorTicksPositions(render, minorTicks);\n }\n\n return ticks;\n }\n\n createGridLines(altAxis) {\n const options = this.options;\n const { minorGridLines, majorGridLines, vertical } = options;\n const lineBox = altAxis.lineBox();\n const lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n const majorTicks = [];\n\n const container = this.gridLinesVisual();\n function render(tickPosition, gridLine) {\n if (!inArray(tickPosition, majorTicks)) {\n lineOptions.position = tickPosition;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(tickPosition);\n }\n }\n\n if (majorGridLines.visible) {\n this.traverseMajorTicksPositions(render, majorGridLines);\n }\n\n if (minorGridLines.visible) {\n this.traverseMinorTicksPositions(render, minorGridLines);\n }\n\n return container.children;\n }\n\n traverseMajorTicksPositions(callback, tickOptions) {\n const { lineStart, step } = this.lineInfo();\n const { logMin, logMax } = this;\n\n for (let power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n let position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n\n traverseMinorTicksPositions(callback, tickOptions) {\n const { min, max, minorUnit, majorUnit: base } = this.options;\n const { lineStart, step } = this.lineInfo();\n const { logMin, logMax } = this;\n const start = Math.floor(logMin);\n\n for (let power = start; power < logMax; power++) {\n const minorOptions = this._minorIntervalOptions(power);\n for (let idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n const value = minorOptions.value + idx * minorOptions.minorStep;\n if (value > max) {\n break;\n }\n if (value >= min) {\n const position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n }\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const power = Math.ceil(this.logMin + index);\n const value = Math.pow(this.options.majorUnit, power);\n const text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n return range.min <= value && value <= range.max;\n }\n\n pan(delta) {\n const range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n return {\n min: min,\n max: max\n };\n }\n\n scaleRange(scale, cursor) {\n const { majorUnit: base } = this.options;\n const logMin = log(this.options.min, base);\n const logMax = log(this.options.max, base);\n const position = Math.abs(this.pointOffset(cursor));\n const range = logMax - logMin;\n const delta = this.scaleToDelta(scale, range);\n const min = Math.pow(base, logMin + position * delta);\n let max = Math.pow(base, logMax - (1 - position) * delta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const range = this.scaleRange(scale, cursor);\n const { totalMin, totalMax } = this;\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n }\n\n _minorIntervalOptions(power) {\n const { minorUnit, majorUnit: base } = this.options;\n const value = Math.pow(base, power);\n const nextValue = Math.pow(base, power + 1);\n const difference = nextValue - value;\n const minorStep = difference / minorUnit;\n\n return {\n value: value,\n minorStep: minorStep\n };\n }\n\n lineInfo() {\n const info = super.lineInfo();\n info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n return info;\n }\n}\n\nfunction initRange(autoMin, autoMax, axisOptions, options) {\n let { min, max } = axisOptions;\n\n if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.max)) {\n max = autoMax;\n } else if (options.max <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.min)) {\n min = autoMin;\n } else if (options.min <= 0) {\n throwNegativeValuesError();\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction autoAxisMin(min, max, options) {\n const base = options.majorUnit;\n let autoMin = min;\n if (min <= 0) {\n autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n } else if (!options.narrowRange) {\n autoMin = Math.pow(base, Math.floor(log(min, base)));\n }\n return autoMin;\n}\n\nfunction autoAxisMax(max, base) {\n const logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n let autoMax;\n if (max <= 0) {\n autoMax = base;\n } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n autoMax = Math.pow(base, log(max, base) + 0.2);\n } else {\n autoMax = Math.pow(base, Math.ceil(log(max, base)));\n }\n\n return autoMax;\n}\n\nfunction throwNegativeValuesError() {\n throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n}\n\nfunction log(x, base) {\n return Math.log(x) / Math.log(base);\n}\n\nsetDefaultOptions(LogarithmicAxis, {\n type: \"log\",\n majorUnit: DEFAULT_MAJOR_UNIT,\n minorUnit: 1,\n axisCrossingValue: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n zIndex: 1,\n _deferLabels: true\n});\n\nexport default LogarithmicAxis;\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport { append, map } from '../../common';\n\nconst GridLinesMixin = {\n createGridLines: function(altAxis) {\n const options = this.options;\n const radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n let gridLines = [];\n let skipMajor = false;\n let majorAngles, minorAngles;\n\n if (options.majorGridLines.visible) {\n majorAngles = this.majorGridLineAngles(altAxis);\n skipMajor = true;\n\n gridLines = this.renderMajorGridLines(\n majorAngles, radius, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n append(gridLines, this.renderMinorGridLines(\n minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n ));\n }\n\n return gridLines;\n },\n\n renderMajorGridLines: function(angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n\n renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n const radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n\n renderGridLines: function(angles, radius, options, radiusCallback) {\n const style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n\n const center = this.box.center();\n const circle = new geom.Circle([ center.x, center.y ], radius);\n const container = this.gridLinesVisual();\n\n for (let i = 0; i < angles.length; i++) {\n const line = new draw.Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n\n line.moveTo(circle.center)\n .lineTo(circle.pointAt(angles[i] + 180));\n\n container.append(line);\n }\n\n return container.children;\n },\n\n gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n const divs = this.intervals(size, skip, step, skipAngles);\n const options = altAxis.options;\n const altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n return map(divs, (d) => {\n const alpha = this.intervalAngle(d);\n\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n};\n\nexport default GridLinesMixin;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport CategoryAxis from './category-axis';\nimport ShapeBuilder from './shape-builder';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { COORD_PRECISION, ARC } from '../common/constants';\nimport { deepExtend, getSpacing, inArray, limitValue, map, rad, round, setDefaultOptions } from '../common';\n\nclass RadarCategoryAxis extends CategoryAxis {\n range() {\n return { min: 0, max: this.options.categories.length };\n }\n\n reflow(box) {\n this.box = box;\n this.reflowLabels();\n }\n\n lineBox() {\n return this.box;\n }\n\n reflowLabels() {\n const { labels, options: { labels: labelOptions } } = this;\n const skip = labelOptions.skip || 0;\n const step = labelOptions.step || 1;\n const measureBox = new Box();\n\n for (let i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n const labelBox = labels[i].box;\n\n labels[i].reflow(this.getSlot(skip + i * step).adjacentBox(\n 0, labelBox.width(), labelBox.height()\n ));\n }\n }\n\n intervals(size, skipOption, stepOption, skipAngles = false) {\n const options = this.options;\n const categories = options.categories.length;\n const divCount = categories / size || 1;\n const divAngle = 360 / divCount;\n const skip = skipOption || 0;\n const step = stepOption || 1;\n const divs = [];\n let angle = 0;\n\n for (let i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n\n angle = round(angle, COORD_PRECISION) % 360;\n\n if (!(skipAngles && inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n\n return divs;\n }\n\n majorIntervals() {\n return this.intervals(1);\n }\n\n minorIntervals() {\n return this.intervals(0.5);\n }\n\n intervalAngle(interval) {\n return (360 + interval + this.options.startAngle) % 360;\n }\n\n majorAngles() {\n return map(this.majorIntervals(), (interval) => this.intervalAngle(interval));\n }\n\n createLine() {\n return [];\n }\n\n majorGridLineAngles(altAxis) {\n const majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n }\n\n minorGridLineAngles(altAxis, skipMajor) {\n const { minorGridLines, majorGridLines } = this.options;\n const majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n }\n\n radiusCallback(radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n const minorAngle = rad(360 / (this.options.categories.length * 2));\n const minorRadius = Math.cos(minorAngle) * radius;\n const majorAngles = this.majorAngles();\n\n const radiusCallback = function(angle) {\n if (!skipMajor && inArray(angle, majorAngles)) {\n return radius;\n }\n\n return minorRadius;\n };\n return radiusCallback;\n }\n }\n\n createPlotBands() {\n const plotBands = this.options.plotBands || [];\n\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (let i = 0; i < plotBands.length; i++) {\n const band = plotBands[i];\n const slot = this.plotBandSlot(band);\n const singleSlot = this.getSlot(band.from);\n\n const head = band.from - Math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n\n const tail = Math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n\n const ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n });\n group.append(ring);\n }\n\n this.appendVisual(group);\n }\n\n plotBandSlot(band) {\n return this.getSlot(band.from, band.to - 1);\n }\n\n getSlot(from, to) {\n const options = this.options;\n const justified = options.justified;\n const box = this.box;\n const divs = this.majorAngles();\n const totalDivs = divs.length;\n const slotAngle = 360 / totalDivs;\n let fromValue = from;\n\n if (options.reverse && !justified) {\n fromValue = (fromValue + 1) % totalDivs;\n }\n\n fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n let slotStart = divs[fromValue];\n\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n\n const toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n const slots = toValue - fromValue + 1;\n const angle = slotAngle * slots;\n\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n }\n\n slot(from, to) {\n const slot = this.getSlot(from, to);\n const startAngle = slot.startAngle + 180;\n const endAngle = startAngle + slot.angle;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n }\n\n pointCategoryIndex(point) {\n const length = this.options.categories.length;\n let index = null;\n\n for (let i = 0; i < length; i++) {\n const slot = this.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n\n return index;\n }\n}\n\nsetDefaultOptions(RadarCategoryAxis, {\n startAngle: 90,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n visible: true\n },\n justified: true\n});\ndeepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\nexport default RadarCategoryAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport RadarCategoryAxis from './radar-category-axis';\nimport NumericAxis from './numeric-axis';\nimport Axis from './axis';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { BLACK } from '../common/constants';\nimport { deepExtend, deg, getSpacing, inArray, limitValue, setDefaultOptions } from '../common';\n\nclass PolarAxis extends Axis {\n constructor(options, chartService) {\n super(options, chartService);\n\n const instanceOptions = this.options;\n\n instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n }\n\n getDivisions(stepValue) {\n return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n }\n\n reflow(box) {\n this.box = box;\n this.reflowLabels();\n }\n\n reflowLabels() {\n const { options, labels, options: { labels: labelOptions } } = this;\n const skip = labelOptions.skip || 0;\n const step = labelOptions.step || 1;\n\n const measureBox = new Box();\n const divs = this.intervals(options.majorUnit, skip, step);\n\n for (let i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n const labelBox = labels[i].box;\n\n labels[i].reflow(this.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n }\n\n lineBox() {\n return this.box;\n }\n\n intervals(size, skipOption, stepOption, skipAngles = false) {\n const min = this.options.min;\n const divisions = this.getDivisions(size);\n const divs = [];\n const skip = skipOption || 0;\n const step = stepOption || 1;\n\n for (let i = skip; i < divisions; i += step) {\n const current = (360 + min + i * size) % 360;\n if (!(skipAngles && inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n\n return divs;\n }\n\n majorIntervals() {\n return this.intervals(this.options.majorUnit);\n }\n\n minorIntervals() {\n return this.intervals(this.options.minorUnit);\n }\n\n intervalAngle(i) {\n return (540 - i - this.options.startAngle) % 360;\n }\n\n createLine() {\n return [];\n }\n\n majorGridLineAngles(altAxis) {\n const majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n }\n\n minorGridLineAngles(altAxis, skipMajor) {\n const options = this.options;\n const { minorGridLines, majorGridLines } = options;\n const majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n }\n\n plotBandSlot(band) {\n return this.getSlot(band.from, band.to);\n }\n\n getSlot(a, b) {\n const { options, box } = this;\n const startAngle = options.startAngle;\n let start = limitValue(a, options.min, options.max);\n let end = limitValue(b || start, start, options.max);\n\n if (options.reverse) {\n start *= -1;\n end *= -1;\n }\n\n start = (540 - start - startAngle) % 360;\n end = (540 - end - startAngle) % 360;\n\n if (end < start) {\n const tmp = start;\n start = end;\n end = tmp;\n }\n\n return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n }\n\n slot(from, to = from) {\n const options = this.options;\n const start = 360 - options.startAngle;\n const slot = this.getSlot(from, to);\n const min = Math.min(from, to);\n const max = Math.max(from, to);\n let startAngle, endAngle;\n\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n }\n\n getValue(point) {\n const options = this.options;\n const center = this.box.center();\n const dx = point.x - center.x;\n const dy = point.y - center.y;\n let theta = Math.round(deg(Math.atan2(dy, dx)));\n let start = options.startAngle;\n\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n\n return (theta + start + 360) % 360;\n }\n\n valueRange() {\n return {\n min: 0,\n max: Math.PI * 2\n };\n }\n}\n\nsetDefaultOptions(PolarAxis, {\n type: \"polar\",\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: {\n color: \"#aaa\"\n }\n});\n\ndeepExtend(PolarAxis.prototype, GridLinesMixin, {\n createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n majorAngles: RadarCategoryAxis.prototype.majorAngles,\n range: NumericAxis.prototype.range,\n labelsCount: NumericAxis.prototype.labelsCount,\n createAxisLabel: NumericAxis.prototype.createAxisLabel\n});\n\nexport default PolarAxis;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport ShapeBuilder from '../shape-builder';\nimport Ring from '../ring';\nimport Point from '../point';\n\nimport { ARC } from '../../common/constants';\nimport { append, deg, rad } from '../../common';\n\nconst RadarNumericAxisMixin = {\n options: {\n majorGridLines: {\n visible: true\n }\n },\n\n createPlotBands: function() {\n const { majorGridLines: { type }, plotBands = [] } = this.options;\n const altAxis = this.plotArea.polarAxis;\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (let i = 0; i < plotBands.length; i++) {\n const band = plotBands[i];\n const bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n };\n\n const slot = this.getSlot(band.from, band.to, true);\n const ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n let shape;\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = draw.Path.fromPoints(this.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n\n group.append(shape);\n }\n\n this.appendVisual(group);\n },\n\n plotBandPoints: function(ring, angles) {\n const innerPoints = [];\n const outerPoints = [];\n const center = [ ring.center.x, ring.center.y ];\n const innerCircle = new geom.Circle(center, ring.innerRadius);\n const outerCircle = new geom.Circle(center, ring.radius);\n\n for (let i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n }\n\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n\n return outerPoints.concat(innerPoints);\n },\n\n createGridLines: function(altAxis) {\n const options = this.options;\n const majorTicks = this.radarMajorGridLinePositions();\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n let gridLines = [];\n\n if (options.majorGridLines.visible) {\n gridLines = this.renderGridLines(\n center, majorTicks, majorAngles, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n const minorTicks = this.radarMinorGridLinePositions();\n append(gridLines, this.renderGridLines(\n center, minorTicks, majorAngles, options.minorGridLines\n ));\n }\n\n return gridLines;\n },\n\n renderGridLines: function(center, ticks, angles, options) {\n const style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n const { skip = 0, step = 0 } = options;\n const container = this.gridLinesVisual();\n\n for (let tickIx = skip; tickIx < ticks.length; tickIx += step) {\n const tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n const circle = new geom.Circle([ center.x, center.y ], tickRadius);\n if (options.type === ARC) {\n container.append(new draw.Circle(circle, style));\n } else {\n const line = new draw.Path(style);\n for (let angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx] + 180));\n }\n\n line.close();\n container.append(line);\n }\n }\n }\n\n return container.children;\n },\n\n getValue: function(point) {\n const lineBox = this.lineBox();\n const altAxis = this.plotArea.polarAxis;\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n const radius = point.distanceTo(center);\n let distance = radius;\n\n if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n const dx = point.x - center.x;\n const dy = point.y - center.y;\n const theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n majorAngles.sort(function(a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n\n // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n // Angles are derived from triangle (center, point, gridline X)\n const midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n const alpha = angularDistance(theta, majorAngles[0]);\n const gamma = 90 - midAngle;\n const beta = 180 - alpha - gamma;\n\n distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n }\n\n return this.axisType().prototype.getValue.call(\n this, new Point(lineBox.x1, lineBox.y2 - distance)\n );\n }\n};\n\nfunction angularDistance(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nexport default RadarNumericAxisMixin;","import NumericAxis from './numeric-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nclass RadarNumericAxis extends NumericAxis {\n radarMajorGridLinePositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n radarMinorGridLinePositions() {\n const options = this.options;\n let minorSkipStep = 0;\n\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return this.getTickPositions(options.minorUnit, minorSkipStep);\n }\n\n axisType() {\n return NumericAxis;\n }\n}\n\ndeepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarNumericAxis;","import LogarithmicAxis from './logarithmic-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nclass RadarLogarithmicAxis extends LogarithmicAxis {\n radarMajorGridLinePositions() {\n const positions = [];\n\n this.traverseMajorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.majorGridLines);\n\n return positions;\n }\n\n radarMinorGridLinePositions() {\n const positions = [];\n\n this.traverseMinorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.minorGridLines);\n\n return positions;\n }\n\n axisType() {\n return LogarithmicAxis;\n }\n}\n\ndeepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarLogarithmicAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { X, Y } from '../common/constants';\nimport { Class, last, round } from '../common';\n\nconst WEIGHT = 0.333;\nconst EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\nclass CurveProcessor extends Class {\n\n constructor(closed) {\n super();\n\n this.closed = closed;\n }\n\n process(dataPoints) {\n const points = dataPoints.slice(0);\n const segments = [];\n let closed = this.closed;\n let length = points.length;\n\n if (length > 2) {\n this.removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n let p0 = points[0];\n let p1 = points[1];\n let p2 = points[2];\n\n segments.push(new geom.Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n const tangent = this.tangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n this.firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new geom.Segment(\n p1,\n this.secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n let initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n const controlPoints = this.controlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n const tangent = this.tangent(p0, p1, X,Y);\n initialControlPoint = this.firstControlPoint(tangent, p0, p1, X, Y);\n }\n\n let cp0 = initialControlPoint;\n for (let idx = 0; idx <= length - 3; idx++) {\n this.removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n const controlPoints = this.controlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints[1];\n\n const cp1 = controlPoints[0];\n segments.push(new geom.Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n const controlPoints = this.controlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p1,\n controlPoints[0]\n ));\n\n last(segments).controlOut(controlPoints[1]);\n segments.push(new geom.Segment(\n p2,\n lastControlPoint\n ));\n } else {\n const tangent = this.tangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p2,\n this.secondControlPoint(tangent, p1, p2, X, Y)\n ));\n }\n\n return segments;\n }\n\n removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n }\n\n invertAxis(p0, p1, p2) {\n let invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n const fn = this.lineFunction(p0,p1);\n const y2 = this.calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n }\n\n isLine(p0, p1, p2) {\n const fn = this.lineFunction(p0, p1);\n const y2 = this.calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n }\n\n lineFunction(p1, p2) {\n const a = (p2.y - p1.y) / (p2.x - p1.x);\n const b = p1.y - a * p1.x;\n\n return [ b, a ];\n }\n\n controlPoints(p0, p1, p2) {\n let xField = X;\n let yField = Y;\n let restrict = false;\n let switchOrientation = false;\n let tangent;\n\n if (this.isLine(p0, p1, p2)) {\n tangent = this.tangent(p0, p1, X, Y);\n } else {\n const monotonic = {\n x: this.isMonotonicByField(p0, p1, p2, X),\n y: this.isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = this.tangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (this.invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n let sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n const secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n const oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n const firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n }\n\n return [ secondControlPoint, firstControlPoint ];\n }\n\n restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n }\n\n tangent(p0, p1, xField, yField) {\n const x = p1[xField] - p0[xField];\n const y = p1[yField] - p0[yField];\n let tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n }\n\n isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n }\n\n firstControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n }\n\n secondControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n }\n\n point(xValue, yValue, xField, yField) {\n const controlPoint = new geom.Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n }\n\n calculateFunction(fn, x) {\n const length = fn.length;\n let result = 0;\n\n for (let i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n}\n\nfunction numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n\nexport default CurveProcessor;","import { Class } from '../../common';\n\nclass ChartAxis extends Class {\n constructor(axis) {\n super();\n\n this._axis = axis;\n this.options = axis.options;\n }\n\n value(point) {\n const axis = this._axis;\n const value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n return value;\n }\n\n slot(from, to, limit = true) {\n return this._axis.slot(from, to, limit);\n }\n\n range() {\n return this._axis.range();\n }\n\n valueRange() {\n return this._axis.valueRange();\n }\n}\n\nexport default ChartAxis;","import ChartAxis from './chart-axis';\n\nexport default function findAxisByName(name, axes) {\n for (let idx = 0; idx < axes.length; idx++) {\n if (axes[idx].options.name === name) {\n axes[idx].prepareUserOptions();\n return new ChartAxis(axes[idx]);\n }\n }\n}","import findAxisByName from './find-axis-by-name';\n\nclass ChartPane {\n constructor(pane) {\n this.visual = pane.visual;\n this.chartsVisual = pane.chartContainer.visual;\n this._pane = pane;\n }\n\n findAxisByName(name) {\n return findAxisByName(name, this._pane.axes);\n }\n}\n\nexport default ChartPane;","import { Class } from '../../common';\n\nclass ChartPlotArea extends Class {\n constructor(plotArea) {\n super();\n\n this._plotArea = plotArea;\n this.visual = plotArea.visual;\n this.backgroundVisual = plotArea._bgVisual;\n }\n}\n\nexport default ChartPlotArea;","import { isNumber } from '../../common';\n\nexport default function countNumbers(values) {\n const length = values.length;\n let count = 0;\n\n for (let i = 0; i < length; i++) {\n const num = values[i];\n if (isNumber(num)) {\n count++;\n }\n }\n\n return count;\n}","import { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined, isNumber } from '../../common';\n\nimport countNumbers from '../utils/count-numbers';\n\nconst Aggregates = {\n min: function(values) {\n const length = values.length;\n let min = MAX_VALUE;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n min = Math.min(min, value);\n }\n }\n\n return min === MAX_VALUE ? values[0] : min;\n },\n\n max: function(values) {\n const length = values.length;\n let max = MIN_VALUE;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n max = Math.max(max, value);\n }\n }\n\n return max === MIN_VALUE ? values[0] : max;\n },\n\n sum: function(values) {\n const length = values.length;\n let sum = 0;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n sum += value;\n }\n }\n\n return sum;\n },\n\n sumOrNull: function(values) {\n let result = null;\n\n if (countNumbers(values)) {\n result = Aggregates.sum(values);\n }\n\n return result;\n },\n\n count: function(values) {\n const length = values.length;\n let count = 0;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (value !== null && defined(value)) {\n count++;\n }\n }\n\n return count;\n },\n\n avg: function(values) {\n const count = countNumbers(values);\n let result = values[0];\n\n if (count > 0) {\n result = Aggregates.sum(values) / count;\n }\n\n return result;\n },\n\n first: function(values) {\n const length = values.length;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (value !== null && defined(value)) {\n return value;\n }\n }\n\n return values[0];\n }\n};\n\nexport default Aggregates;","import { getter } from '../../common';\n\nexport default function getField(field, row) {\n if (row === null) {\n return row;\n }\n\n const get = getter(field, true);\n return get(row);\n}","import getField from './utils/get-field';\nimport { VALUE } from '../common/constants';\nimport { Class, defined } from '../common';\n\nclass SeriesBinder extends Class {\n\n constructor() {\n super();\n\n this._valueFields = {};\n this._otherFields = {};\n this._nullValue = {};\n this._undefinedValue = {};\n }\n\n register(seriesTypes, valueFields = [ VALUE ], otherFields = {}) {\n\n for (let i = 0; i < seriesTypes.length; i++) {\n const type = seriesTypes[i];\n\n this._valueFields[type] = valueFields;\n this._otherFields[type] = otherFields;\n this._nullValue[type] = this._makeValue(valueFields, null);\n this._undefinedValue[type] = this._makeValue(valueFields, undefined);\n }\n }\n\n canonicalFields(series) {\n return this.valueFields(series).concat(this.otherFields(series));\n }\n\n valueFields(series) {\n return this._valueFields[series.type] || [ VALUE ];\n }\n\n otherFields(series) {\n return this._otherFields[series.type] || [ VALUE ];\n }\n\n bindPoint(series, pointIx, item) {\n const data = series.data;\n const pointData = defined(item) ? item : data[pointIx];\n const result = { valueFields: { value: pointData } };\n const valueFields = this.valueFields(series);\n const otherFields = this._otherFields[series.type];\n let fields, value;\n\n if (pointData === null) {\n value = this._nullValue[series.type];\n } else if (!defined(pointData)) {\n value = this._undefinedValue[series.type];\n } else if (Array.isArray(pointData)) {\n const fieldData = pointData.slice(valueFields.length);\n value = this._bindFromArray(pointData, valueFields);\n fields = this._bindFromArray(fieldData, otherFields);\n } else if (typeof pointData === \"object\") {\n const srcValueFields = this.sourceFields(series, valueFields);\n const srcPointFields = this.sourceFields(series, otherFields);\n\n value = this._bindFromObject(pointData, valueFields, srcValueFields);\n fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n }\n\n if (defined(value)) {\n if (valueFields.length === 1) {\n result.valueFields.value = value[valueFields[0]];\n } else {\n result.valueFields = value;\n }\n }\n\n result.fields = fields || {};\n\n return result;\n }\n\n _makeValue(fields, initialValue) {\n const value = {};\n const length = fields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = fields[i];\n value[fieldName] = initialValue;\n }\n\n return value;\n }\n\n _bindFromArray(array, fields) {\n const value = {};\n\n if (fields) {\n const length = Math.min(fields.length, array.length);\n\n for (let i = 0; i < length; i++) {\n value[fields[i]] = array[i];\n }\n }\n\n return value;\n }\n\n _bindFromObject(object, fields, srcFields = fields) {\n const value = {};\n\n if (fields) {\n const length = fields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = fields[i];\n const srcFieldName = srcFields[i];\n if (srcFieldName !== null) {\n value[fieldName] = getField(srcFieldName, object);\n }\n }\n }\n\n return value;\n }\n\n sourceFields(series, canonicalFields) {\n const sourceFields = [];\n\n if (canonicalFields) {\n const length = canonicalFields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = canonicalFields[i];\n const sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n }\n }\n\n return sourceFields;\n }\n}\n\nSeriesBinder.current = new SeriesBinder();\n\nexport default SeriesBinder;","import SeriesBinder from '../series-binder';\n\nimport { OBJECT } from '../../common/constants';\nimport { Class, defined, getter, isArray, isNumber } from '../../common';\n\nconst STD_ERR = \"stderr\";\nconst STD_DEV = \"stddev\";\nconst percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\nconst standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\nclass ErrorRangeCalculator extends Class {\n constructor(errorValue, series, field) {\n super();\n\n this.initGlobalRanges(errorValue, series, field);\n }\n\n initGlobalRanges(errorValue, series, field) {\n const data = series.data;\n const deviationMatch = standardDeviationRegex.exec(errorValue);\n\n if (deviationMatch) {\n this.valueGetter = this.createValueGetter(series, field);\n\n const average = this.getAverage(data);\n const deviation = this.getStandardDeviation(data, average, false);\n const multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n const errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n this.globalRange = function() {\n return errorRange;\n };\n } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n this.valueGetter = this.createValueGetter(series, field);\n const standardError = this.getStandardError(data, this.getAverage(data));\n\n this.globalRange = function(value) {\n return { low: value - standardError, high: value + standardError };\n };\n }\n }\n\n createValueGetter(series, field) {\n const data = series.data;\n const binder = SeriesBinder.current;\n const valueFields = binder.valueFields(series);\n const item = defined(data[0]) ? data[0] : {};\n let valueGetter;\n\n if (isArray(item)) {\n const index = field ? valueFields.indexOf(field) : 0;\n valueGetter = getter(\"[\" + index + \"]\");\n } else if (isNumber(item)) {\n valueGetter = getter();\n } else if (typeof item === OBJECT) {\n const srcValueFields = binder.sourceFields(series, valueFields);\n valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n }\n\n return valueGetter;\n }\n\n getErrorRange(pointValue, errorValue) {\n let low, high, value;\n\n if (!defined(errorValue)) {\n return null;\n }\n\n if (this.globalRange) {\n return this.globalRange(pointValue);\n }\n\n if (isArray(errorValue)) {\n low = pointValue - errorValue[0];\n high = pointValue + errorValue[1];\n } else if (isNumber(value = parseFloat(errorValue))) {\n low = pointValue - value;\n high = pointValue + value;\n } else if ((value = percentRegex.exec(errorValue))) {\n const percentValue = pointValue * (parseFloat(value[1]) / 100);\n low = pointValue - Math.abs(percentValue);\n high = pointValue + Math.abs(percentValue);\n } else {\n throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n }\n\n return { low: low, high: high };\n }\n\n getStandardError(data, average) {\n return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n }\n\n getStandardDeviation(data, average, isSample) {\n const length = data.length;\n const total = isSample ? average.count - 1 : average.count;\n let squareDifferenceSum = 0;\n\n for (let idx = 0; idx < length; idx++) {\n const value = this.valueGetter(data[idx]);\n if (isNumber(value)) {\n squareDifferenceSum += Math.pow(value - average.value, 2);\n }\n }\n\n return Math.sqrt(squareDifferenceSum / total);\n }\n\n getAverage(data) {\n const length = data.length;\n let sum = 0;\n let count = 0;\n\n for (let idx = 0; idx < length; idx++) {\n const value = this.valueGetter(data[idx]);\n if (isNumber(value)) {\n sum += value;\n count++;\n }\n }\n\n return {\n value: sum / count,\n count: count\n };\n }\n}\n\nexport default ErrorRangeCalculator;","import { support } from '@progress/kendo-drawing';\n\nconst browser = support.browser || {};\n\nconst INITIAL_ANIMATION_DURATION = 600;\nconst FADEIN = \"fadeIn\";\n\nconst GLASS = \"glass\";\nconst BORDER_BRIGHTNESS = 0.8;\nconst TOOLTIP_OFFSET = 5;\nconst START_SCALE = browser.msie ? 0.001 : 0;\nconst ERROR_LOW_FIELD = \"errorLow\";\nconst ERROR_HIGH_FIELD = \"errorHigh\";\nconst X_ERROR_LOW_FIELD = \"xErrorLow\";\nconst X_ERROR_HIGH_FIELD = \"xErrorHigh\";\nconst Y_ERROR_LOW_FIELD = \"yErrorLow\";\nconst Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\nconst LINE_MARKER_SIZE = 8;\nconst ZERO = \"zero\";\nconst INTERPOLATE = \"interpolate\";\nconst GAP = \"gap\";\nconst ABOVE = \"above\";\nconst BELOW = \"below\";\n\nconst SMOOTH = \"smooth\";\nconst STEP = \"step\";\n\nconst AREA = \"area\";\nconst BAR = \"bar\";\nconst BOX_PLOT = \"boxPlot\";\nconst BUBBLE = \"bubble\";\nconst BULLET = \"bullet\";\nconst CANDLESTICK = \"candlestick\";\nconst COLUMN = \"column\";\nconst DONUT = \"donut\";\nconst FUNNEL = \"funnel\";\nconst HEATMAP = \"heatmap\";\nconst HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\nconst LINE = \"line\";\nconst OHLC = \"ohlc\";\nconst PIE = \"pie\";\nconst POLAR_AREA = \"polarArea\";\nconst POLAR_LINE = \"polarLine\";\nconst POLAR_SCATTER = \"polarScatter\";\nconst RADAR_AREA = \"radarArea\";\nconst RADAR_COLUMN = \"radarColumn\";\nconst RADAR_LINE = \"radarLine\";\nconst RANGE_AREA = \"rangeArea\";\nconst RANGE_BAR = \"rangeBar\";\nconst RANGE_COLUMN = \"rangeColumn\";\nconst SCATTER = \"scatter\";\nconst SCATTER_LINE = \"scatterLine\";\nconst VERTICAL_AREA = \"verticalArea\";\nconst VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\nconst VERTICAL_BULLET = \"verticalBullet\";\nconst VERTICAL_LINE = \"verticalLine\";\nconst VERTICAL_RANGE_AREA = \"verticalRangeArea\";\nconst WATERFALL = \"waterfall\";\nconst EQUALLY_SPACED_SERIES = [\n BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n];\n\nconst LEGEND_ITEM_CLICK = \"legendItemClick\";\nconst LEGEND_ITEM_HOVER = \"legendItemHover\";\nconst LEGEND_ITEM_LEAVE = \"legendItemLeave\";\nconst SERIES_CLICK = \"seriesClick\";\nconst SERIES_HOVER = \"seriesHover\";\nconst SERIES_OVER = \"seriesOver\";\nconst SERIES_LEAVE = \"seriesLeave\";\nconst PLOT_AREA_CLICK = \"plotAreaClick\";\nconst PLOT_AREA_HOVER = \"plotAreaHover\";\nconst PLOT_AREA_LEAVE = \"plotAreaLeave\";\nconst DRAG = \"drag\";\nconst DRAG_END = \"dragEnd\";\nconst DRAG_START = \"dragStart\";\nconst ZOOM_START = \"zoomStart\";\nconst ZOOM = \"zoom\";\nconst ZOOM_END = \"zoomEnd\";\nconst SELECT_START = \"selectStart\";\nconst SELECT = \"select\";\nconst SELECT_END = \"selectEnd\";\nconst RENDER = \"render\";\nconst SHOW_TOOLTIP = \"showTooltip\";\nconst HIDE_TOOLTIP = \"hideTooltip\";\nconst PANE_RENDER = \"paneRender\";\n\nconst LOGARITHMIC = \"log\";\nconst CATEGORY = \"category\";\n\nconst INSIDE_END = \"insideEnd\";\nconst INSIDE_BASE = \"insideBase\";\nconst OUTSIDE_END = \"outsideEnd\";\n\nconst MOUSEWHEEL = \"DOMMouseScroll mousewheel\";\nconst MOUSEWHEEL_DELAY = 150;\nconst MOUSEWHEEL_ZOOM_RATE = 0.3;\n\nexport {\n INITIAL_ANIMATION_DURATION, FADEIN,\n LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE,\n SERIES_CLICK, SERIES_HOVER, SERIES_OVER, SERIES_LEAVE, GLASS,\n BORDER_BRIGHTNESS, TOOLTIP_OFFSET,\n START_SCALE, ERROR_LOW_FIELD, ERROR_HIGH_FIELD,\n X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD,\n Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n LINE_MARKER_SIZE, INTERPOLATE, ZERO,\n SMOOTH, STEP, CATEGORY, FUNNEL,\n BAR, CANDLESTICK, PIE, COLUMN, AREA,\n VERTICAL_BULLET, BOX_PLOT, OHLC, WATERFALL, LINE,\n BULLET, VERTICAL_LINE, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA,\n RANGE_COLUMN, VERTICAL_BOX_PLOT, RANGE_BAR, HORIZONTAL_WATERFALL,\n SCATTER, SCATTER_LINE, BUBBLE, RADAR_AREA, RADAR_LINE,\n RADAR_COLUMN, POLAR_LINE, POLAR_AREA, POLAR_SCATTER,\n RENDER, PLOT_AREA_CLICK, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n LOGARITHMIC, DRAG, DRAG_START, DRAG_END, ZOOM_START, ZOOM, ZOOM_END,\n SELECT_START, SELECT, SELECT_END, PANE_RENDER, GAP,\n DONUT, INSIDE_END, INSIDE_BASE, OUTSIDE_END,\n MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE,\n SHOW_TOOLTIP, HIDE_TOOLTIP,\n EQUALLY_SPACED_SERIES, ABOVE, BELOW,\n HEATMAP\n};\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point, Box } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { setDefaultOptions, alignPathToPixel } from '../../common';\n\nconst DEFAULT_ERROR_BAR_WIDTH = 4;\n\nclass ErrorBarBase extends ChartElement {\n constructor(low, high, isVertical, chart, series, options) {\n super(options);\n\n this.low = low;\n this.high = high;\n this.isVertical = isVertical;\n this.chart = chart;\n this.series = series;\n }\n\n reflow(targetBox) {\n const endCaps = this.options.endCaps;\n const isVertical = this.isVertical;\n const axis = this.getAxis();\n const valueBox = axis.getSlot(this.low, this.high);\n const centerBox = targetBox.center();\n const capsWidth = this.getCapsWidth(targetBox, isVertical);\n const capValue = isVertical ? centerBox.x : centerBox.y;\n const capStart = capValue - capsWidth;\n const capEnd = capValue + capsWidth;\n let linePoints;\n\n if (isVertical) {\n linePoints = [\n new Point(centerBox.x, valueBox.y1),\n new Point(centerBox.x, valueBox.y2)\n ];\n if (endCaps) {\n linePoints.push(new Point(capStart, valueBox.y1),\n new Point(capEnd, valueBox.y1),\n new Point(capStart, valueBox.y2),\n new Point(capEnd, valueBox.y2));\n }\n this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n } else {\n linePoints = [\n new Point(valueBox.x1, centerBox.y),\n new Point(valueBox.x2, centerBox.y)\n ];\n if (endCaps) {\n linePoints.push(new Point(valueBox.x1, capStart),\n new Point(valueBox.x1, capEnd),\n new Point(valueBox.x2, capStart),\n new Point(valueBox.x2, capEnd));\n }\n this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n }\n\n this.linePoints = linePoints;\n }\n\n getCapsWidth(box, isVertical) {\n const boxSize = isVertical ? box.width() : box.height();\n const capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n return capsWidth;\n }\n\n createVisual() {\n const options = this.options;\n const visual = options.visual;\n\n if (visual) {\n this.visual = visual({\n low: this.low,\n high: this.high,\n rect: this.box.toRect(),\n sender: this.getSender(),\n options: {\n endCaps: options.endCaps,\n color: options.color,\n line: options.line\n },\n createVisual: () => {\n this.createDefaultVisual();\n const defaultVisual = this.visual;\n delete this.visual;\n return defaultVisual;\n }\n });\n } else {\n this.createDefaultVisual();\n }\n }\n\n createDefaultVisual() {\n const { options, linePoints } = this;\n const lineOptions = {\n stroke: {\n color: options.color,\n width: options.line.width,\n dashType: options.line.dashType\n }\n };\n\n super.createVisual();\n\n for (let idx = 0; idx < linePoints.length; idx += 2) {\n const line = new draw.Path(lineOptions)\n .moveTo(linePoints[idx].x, linePoints[idx].y)\n .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n alignPathToPixel(line);\n this.visual.append(line);\n }\n }\n}\n\nsetDefaultOptions(ErrorBarBase, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n endCaps: true,\n line: {\n width: 2\n },\n zIndex: 1\n});\n\nexport default ErrorBarBase;","import ErrorBarBase from './error-bar-base';\n\nclass CategoricalErrorBar extends ErrorBarBase {\n getAxis() {\n const axis = this.chart.seriesValueAxis(this.series);\n\n return axis;\n }\n}\n\nexport default CategoricalErrorBar;","import { inArray, isFunction, isObject, valueOrDefault } from '../../common';\n\nconst MAX_EXPAND_DEPTH = 5;\n\nexport default function evalOptions(options, context, state = {}, dryRun = false) {\n const defaults = state.defaults = state.defaults || {};\n const depth = state.depth = state.depth || 0;\n let needsEval = false;\n\n state.excluded = state.excluded || [];\n\n if (depth > MAX_EXPAND_DEPTH) {\n return null;\n }\n\n for (let property in options) {\n if (!inArray(property, state.excluded) && options.hasOwnProperty(property)) {\n const propValue = options[property];\n if (isFunction(propValue)) {\n needsEval = true;\n if (!dryRun) {\n options[property] = valueOrDefault(propValue(context), defaults[property]);\n }\n } else if (isObject(propValue)) {\n if (!dryRun) {\n state.defaults = defaults[property];\n }\n state.depth++;\n needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n state.depth--;\n }\n }\n }\n\n return needsEval;\n}","export default function categoriesCount(series) {\n const seriesCount = series.length;\n let categories = 0;\n\n for (let i = 0; i < seriesCount; i++) {\n categories = Math.max(categories, series[i].data.length);\n }\n\n return categories;\n}","import ErrorRangeCalculator from './error-bars/error-range-calculator';\nimport CategoricalErrorBar from './error-bars/categorical-error-bar';\n\nimport SeriesBinder from './series-binder';\nimport { ERROR_LOW_FIELD, ERROR_HIGH_FIELD } from './constants';\n\nimport evalOptions from './utils/eval-options';\nimport categoriesCount from './utils/categories-count';\n\nimport { ChartElement, Box } from '../core';\n\nimport { VALUE, STRING, MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { convertableToNumber, deepExtend, defined, isNumber, last, setDefaultOptions, sparseArrayLimits } from '../common';\n\nclass CategoricalChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n // Value axis ranges grouped by axis name, e.g.:\n // primary: { min: 0, max: 1 }\n this.valueAxisRanges = {};\n\n this.points = [];\n this.categoryPoints = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n\n this.render();\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n vertical: !this.options.invertAxes\n }, series);\n }\n\n return options;\n }\n\n plotValue(point) {\n if (!point) {\n return 0;\n }\n\n if (this.options.isStacked100 && isNumber(point.value)) {\n const categoryIx = point.categoryIx;\n const categoryPoints = this.categoryPoints[categoryIx];\n const otherValues = [];\n let categorySum = 0;\n\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n if (other) {\n const stack = point.series.stack;\n const otherStack = other.series.stack;\n\n if ((stack && otherStack) && stack.group !== otherStack.group) {\n continue;\n }\n\n if (isNumber(other.value)) {\n categorySum += Math.abs(other.value);\n otherValues.push(Math.abs(other.value));\n }\n }\n }\n\n if (categorySum > 0) {\n return point.value / categorySum;\n }\n }\n\n return point.value;\n }\n\n plotRange(point, startValue = 0) {\n const categoryPoints = this.categoryPoints[point.categoryIx];\n\n if (this.options.isStacked) {\n let plotValue = this.plotValue(point);\n const positive = plotValue >= 0;\n let prevValue = startValue;\n let isStackedBar = false;\n\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n const stack = point.series.stack;\n const otherStack = other.series.stack;\n if (stack && otherStack) {\n if (typeof stack === STRING && stack !== otherStack) {\n continue;\n }\n\n if (stack.group && stack.group !== otherStack.group) {\n continue;\n }\n }\n\n const otherValue = this.plotValue(other);\n if ((otherValue >= 0 && positive) ||\n (otherValue < 0 && !positive)) {\n prevValue += otherValue;\n plotValue += otherValue;\n isStackedBar = true;\n\n if (this.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n }\n\n if (isStackedBar) {\n prevValue -= startValue;\n }\n\n return [ prevValue, plotValue ];\n }\n\n const series = point.series;\n const valueAxis = this.seriesValueAxis(series);\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n }\n\n stackLimits(axisName, stackName) {\n let min = MAX_VALUE;\n let max = MIN_VALUE;\n\n for (let i = 0; i < this.categoryPoints.length; i++) {\n const categoryPoints = this.categoryPoints[i];\n if (!categoryPoints) {\n continue;\n }\n\n for (let pIx = 0; pIx < categoryPoints.length; pIx++) {\n const point = categoryPoints[pIx];\n if (point) {\n if (point.series.stack === stackName || point.series.axis === axisName) {\n const to = this.plotRange(point, 0)[1];\n if (defined(to) && isFinite(to)) {\n max = Math.max(max, to);\n min = Math.min(min, to);\n }\n }\n }\n }\n }\n\n return { min: min, max: max };\n }\n\n updateStackRange() {\n const { isStacked, series: chartSeries } = this.options;\n const limitsCache = {};\n\n if (isStacked) {\n for (let i = 0; i < chartSeries.length; i++) {\n const series = chartSeries[i];\n const axisName = series.axis;\n const key = axisName + series.stack;\n\n let limits = limitsCache[key];\n if (!limits) {\n limits = this.stackLimits(axisName, series.stack);\n\n const errorTotals = this.errorTotals;\n if (errorTotals) {\n if (errorTotals.negative.length) {\n limits.min = Math.min(limits.min, sparseArrayLimits(errorTotals.negative).min);\n }\n if (errorTotals.positive.length) {\n limits.max = Math.max(limits.max, sparseArrayLimits(errorTotals.positive).max);\n }\n }\n\n if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n limitsCache[key] = limits;\n } else {\n limits = null;\n }\n }\n\n if (limits) {\n this.valueAxisRanges[axisName] = limits;\n }\n }\n }\n }\n\n addErrorBar(point, data, categoryIx) {\n const { value, series, seriesIx } = point;\n const errorBars = point.options.errorBars;\n const lowValue = data.fields[ERROR_LOW_FIELD];\n const highValue = data.fields[ERROR_HIGH_FIELD];\n let errorRange;\n\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n } else if (errorBars && defined(errorBars.value)) {\n this.seriesErrorRanges = this.seriesErrorRanges || [];\n this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n }\n\n if (errorRange) {\n point.low = errorRange.low;\n point.high = errorRange.high;\n this.addPointErrorBar(point, categoryIx);\n }\n }\n\n addPointErrorBar(point, categoryIx) {\n const isVertical = !this.options.invertAxes;\n const options = point.options.errorBars;\n let { series, low, high } = point;\n\n if (this.options.isStacked) {\n const stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n low = stackedErrorRange.low;\n high = stackedErrorRange.high;\n } else {\n const fields = { categoryIx: categoryIx, series: series };\n this.updateRange({ value: low }, fields);\n this.updateRange({ value: high }, fields);\n }\n\n const errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n point.errorBars = [ errorBar ];\n point.append(errorBar);\n }\n\n stackedErrorRange(point, categoryIx) {\n const plotValue = this.plotRange(point, 0)[1] - point.value;\n const low = point.low + plotValue;\n const high = point.high + plotValue;\n\n this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n if (low < 0) {\n this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n }\n\n if (high > 0) {\n this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n }\n\n return { low: low, high: high };\n }\n\n addValue(data, fields) {\n const { categoryIx, series, seriesIx } = fields;\n\n let categoryPoints = this.categoryPoints[categoryIx];\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n let seriesPoints = this.seriesPoints[seriesIx];\n if (!seriesPoints) {\n this.seriesPoints[seriesIx] = seriesPoints = [];\n }\n\n const point = this.createPoint(data, fields);\n if (point) {\n Object.assign(point, fields);\n\n point.owner = this;\n point.noteText = data.fields.noteText;\n if (!defined(point.dataItem)) {\n point.dataItem = series.data[categoryIx];\n }\n this.addErrorBar(point, data, categoryIx);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n categoryPoints.push(point);\n\n this.updateRange(data.valueFields, fields);\n }\n\n evalPointOptions(options, value, category, categoryIx, series, seriesIx) {\n const state = { defaults: series._defaults, excluded: [ \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\" ] };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, pointOptions);\n evalOptions(pointOptions, {\n value: value,\n category: category,\n index: categoryIx,\n series: series,\n dataItem: series.data[categoryIx]\n }, state);\n }\n\n return pointOptions;\n }\n\n updateRange(data, fields) {\n const axisName = fields.series.axis;\n const value = data.value;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (isFinite(value) && value !== null) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, value);\n axisRange.max = Math.max(axisRange.max, value);\n }\n }\n\n seriesValueAxis(series) {\n const plotArea = this.plotArea;\n const axisName = series.axis;\n const axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate value axis with name \" + axisName);\n }\n\n return axis;\n }\n\n reflow(targetBox) {\n const categorySlots = this.categorySlots = [];\n const chartPoints = this.points;\n const categoryAxis = this.categoryAxis;\n let pointIx = 0;\n\n this.traverseDataPoints((data, fields) => {\n const { categoryIx, series: currentSeries } = fields;\n\n const valueAxis = this.seriesValueAxis(currentSeries);\n const point = chartPoints[pointIx++];\n\n let categorySlot = categorySlots[categoryIx];\n if (!categorySlot) {\n categorySlots[categoryIx] = categorySlot =\n this.categorySlot(categoryAxis, categoryIx, valueAxis);\n }\n\n if (point) {\n const plotRange = this.plotRange(point, valueAxis.startValue());\n const valueSlot = this.valueSlot(valueAxis, plotRange);\n if (valueSlot) {\n const pointSlot = this.pointSlot(categorySlot, valueSlot);\n\n point.aboveAxis = this.aboveAxis(point, valueAxis);\n point.stackValue = plotRange[1];\n\n if (this.options.isStacked100) {\n point.percentage = this.plotValue(point);\n }\n\n this.reflowPoint(point, pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.reflowCategories(categorySlots);\n if (!this.options.clip && this.options.limitPoints && this.points.length) {\n this.limitPoints();\n }\n\n this.box = targetBox;\n }\n\n valueSlot(valueAxis, plotRange) {\n return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n }\n\n limitPoints() {\n const categoryPoints = this.categoryPoints;\n const points = categoryPoints[0].concat(last(categoryPoints));\n for (let idx = 0; idx < points.length; idx++) {\n if (points[idx]) {\n this.limitPoint(points[idx]);\n }\n }\n }\n\n limitPoint(point) {\n const limittedSlot = this.categoryAxis.limitSlot(point.box);\n if (!limittedSlot.equals(point.box)) {\n point.reflow(limittedSlot);\n }\n }\n\n aboveAxis(point, valueAxis) {\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n const value = point.value;\n\n return valueAxis.options.reverse ?\n value < axisCrossingValue : value >= axisCrossingValue;\n }\n\n categoryAxisCrossingValue(valueAxis) {\n const categoryAxis = this.categoryAxis;\n const options = valueAxis.options;\n const crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n\n return crossingValues[categoryAxis.axisIndex || 0] || 0;\n }\n\n reflowPoint(point, pointSlot) {\n point.reflow(pointSlot);\n }\n\n reflowCategories() { }\n\n pointSlot(categorySlot, valueSlot) {\n const options = this.options;\n const invertAxes = options.invertAxes;\n const slotX = invertAxes ? valueSlot : categorySlot;\n const slotY = invertAxes ? categorySlot : valueSlot;\n\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n categorySlot(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n }\n\n traverseDataPoints(callback) {\n const series = this.options.series;\n const count = categoriesCount(series);\n const seriesCount = series.length;\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n }\n\n for (let categoryIx = 0; categoryIx < count; categoryIx++) {\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const currentCategory = this.categoryAxis.categoryAt(categoryIx);\n const pointData = this._bindPoint(currentSeries, seriesIx, categoryIx);\n\n callback(pointData, {\n category: currentCategory,\n categoryIx: categoryIx,\n categoriesCount: count,\n series: currentSeries,\n seriesIx: seriesIx\n });\n }\n }\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this._outOfRangeCallback(series[seriesIx], \"_outOfRangeMaxPoint\", seriesIx, callback);\n }\n }\n\n _outOfRangeCallback(series, field, seriesIx, callback) {\n const outOfRangePoint = series[field];\n if (outOfRangePoint) {\n const categoryIx = outOfRangePoint.categoryIx;\n const pointData = this._bindPoint(series, seriesIx, categoryIx, outOfRangePoint.item);\n\n callback(pointData, {\n category: outOfRangePoint.category,\n categoryIx: categoryIx,\n series: series,\n seriesIx: seriesIx,\n dataItem: outOfRangePoint.item\n });\n }\n }\n\n _bindPoint(series, seriesIx, categoryIx, item) {\n if (!this._bindCache) {\n this._bindCache = [];\n }\n\n let bindCache = this._bindCache[seriesIx];\n if (!bindCache) {\n bindCache = this._bindCache[seriesIx] = [];\n }\n\n let data = bindCache[categoryIx];\n if (!data) {\n data = bindCache[categoryIx] = SeriesBinder.current.bindPoint(series, categoryIx, item);\n }\n\n return data;\n }\n\n formatPointValue(point, format) {\n if (point.value === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value);\n }\n\n pointValue(data) {\n return data.valueFields.value;\n }\n}\n\nsetDefaultOptions(CategoricalChart, {\n series: [],\n invertAxes: false,\n isStacked: false,\n clip: true,\n limitPoints: true\n});\n\nexport default CategoricalChart;\n","import { SERIES_CLICK, SERIES_HOVER, SERIES_LEAVE, SERIES_OVER } from '../constants';\nimport { eventElement } from '../../common';\n\nconst PointEventsMixin = {\n click: function(chart, e) {\n return chart.trigger(\n SERIES_CLICK,\n this.eventArgs(e)\n );\n },\n\n hover: function(chart, e) {\n return chart.trigger(\n SERIES_HOVER,\n this.eventArgs(e)\n );\n },\n\n over: function(chart, e) {\n return chart.trigger(\n SERIES_OVER,\n this.eventArgs(e)\n );\n },\n\n out: function(chart, e) {\n return chart.trigger(\n SERIES_LEAVE,\n this.eventArgs(e)\n );\n },\n\n eventArgs: function(e) {\n return {\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n category: this.category,\n series: this.series,\n dataItem: this.dataItem,\n runningTotal: this.runningTotal,\n total: this.total,\n element: eventElement(e),\n originalEvent: e,\n point: this\n };\n }\n};\n\nexport default PointEventsMixin;","import { Note } from '../../core';\nimport { defined } from '../../common';\n\nconst NoteMixin = {\n createNote: function() {\n const options = this.options.notes;\n const text = this.noteText || options.label.text;\n\n if (options.visible !== false && defined(text) && text !== null) {\n this.note = new Note({\n value: this.value,\n text: text,\n dataItem: this.dataItem,\n category: this.category,\n series: this.series\n }, this.options.notes, this.owner.chartService);\n\n this.append(this.note);\n }\n }\n};\n\nexport default NoteMixin;","import { geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox, ShapeElement, Box, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, BORDER_BRIGHTNESS, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\n\nimport { WHITE, CIRCLE, CENTER, TOP, BOTTOM, LEFT, HIGHLIGHT_ZINDEX } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, valueOrDefault, getSpacing } from '../../common';\n\nclass LinePoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n }\n\n render() {\n const { markers, labels } = this.options;\n\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n if (markers.visible && markers.size) {\n this.marker = this.createMarker();\n this.append(this.marker);\n }\n\n if (labels.visible) {\n const labelTemplate = getTemplate(labels);\n const pointData = this.pointData();\n let labelText = this.value;\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = this.formatValue(labels.format);\n }\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n }, labels),\n pointData\n );\n this.append(this.label);\n }\n\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n }\n\n markerBorder() {\n const options = this.options.markers;\n const background = options.background;\n const border = deepExtend({ color: this.color }, options.border);\n\n if (!defined(border.color)) {\n border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n\n return border;\n }\n\n createVisual() {}\n\n createMarker() {\n const options = this.options.markers;\n const marker = new ShapeElement({\n type: options.type,\n width: options.size,\n height: options.size,\n rotation: options.rotation,\n background: options.background,\n border: this.markerBorder(),\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n return marker;\n }\n\n markerBox() {\n if (!this.marker) {\n this.marker = this.createMarker();\n this.marker.reflow(this._childBox);\n }\n\n return this.marker.box;\n }\n\n reflow(targetBox) {\n const { options, aboveAxis } = this;\n const vertical = options.vertical;\n\n this.render();\n\n this.box = targetBox;\n const childBox = targetBox.clone();\n\n if (vertical) {\n if (aboveAxis) {\n childBox.y1 -= childBox.height();\n } else {\n childBox.y2 += childBox.height();\n }\n } else {\n if (aboveAxis) {\n childBox.x1 += childBox.width();\n } else {\n childBox.x2 -= childBox.width();\n }\n }\n\n this._childBox = childBox;\n if (this.marker) {\n this.marker.reflow(childBox);\n }\n\n this.reflowLabel(childBox);\n\n if (this.errorBars) {\n for (let i = 0; i < this.errorBars.length; i++) {\n this.errorBars[i].reflow(childBox);\n }\n }\n\n if (this.note) {\n let noteTargetBox = this.markerBox();\n\n if (!(options.markers.visible && options.markers.size)) {\n const center = noteTargetBox.center();\n noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n }\n\n this.note.reflow(noteTargetBox);\n }\n }\n\n reflowLabel(box) {\n const { options, label } = this;\n let anchor = options.labels.position;\n\n if (label) {\n anchor = anchor === ABOVE ? TOP : anchor;\n anchor = anchor === BELOW ? BOTTOM : anchor;\n\n label.reflow(box);\n label.box.alignTo(this.markerBox(), anchor);\n label.reflow(label.box);\n }\n }\n\n createHighlight() {\n const markers = this.options.highlight.markers;\n const defaultColor = this.markerBorder().color;\n const options = this.options.markers;\n const size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n const shadow = new ShapeElement({\n type: options.type,\n width: size,\n height: size,\n rotation: options.rotation,\n background: markers.color || defaultColor,\n border: {\n color: markers.border.color,\n width: markers.border.width,\n opacity: valueOrDefault(markers.border.opacity, 1)\n },\n opacity: valueOrDefault(markers.opacity, 1)\n });\n shadow.reflow(this._childBox);\n\n return shadow.getElement();\n }\n\n highlightVisual() {\n return (this.marker || {}).visual;\n }\n\n highlightVisualArgs() {\n const marker = this.marker;\n let visual, rect;\n\n if (marker) {\n rect = marker.paddingBox.toRect();\n visual = marker.visual;\n } else {\n const size = this.options.markers.size;\n const halfSize = size / 2;\n const center = this.box.center();\n rect = new geom.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n }\n\n return {\n options: this.options,\n rect: rect,\n visual: visual\n };\n }\n\n tooltipAnchor() {\n const markerBox = this.markerBox();\n const clipBox = this.owner.pane.clipBox();\n const showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n if (showTooltip) {\n const x = markerBox.x2 + TOOLTIP_OFFSET;\n const horizontalAlign = LEFT;\n let y, verticalAlign;\n\n if (this.aboveAxis) {\n y = markerBox.y1;\n verticalAlign = BOTTOM;\n } else {\n y = markerBox.y2;\n verticalAlign = TOP;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n const markerBox = this.markerBox();\n return markerBox.overlaps(box);\n }\n\n unclipElements() {\n if (this.label) {\n this.label.options.noclip = true;\n }\n\n if (this.note) {\n this.note.options.noclip = true;\n }\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n series: this.series\n };\n }\n}\n\nLinePoint.prototype.defaults = {\n vertical: true,\n markers: {\n visible: true,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n position: ABOVE,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: \"#fff\",\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n errorBars: {\n line: {\n width: 1\n }\n }\n};\n\ndeepExtend(LinePoint.prototype, PointEventsMixin);\ndeepExtend(LinePoint.prototype, NoteMixin);\n\nexport default LinePoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nclass LineSegment extends ChartElement {\n constructor(linePoints, series, seriesIx) {\n super();\n\n this.linePoints = linePoints;\n this.series = series;\n this.seriesIx = seriesIx;\n }\n\n points() {\n return this.toGeometryPoints(this.linePoints);\n }\n\n toGeometryPoints(points) {\n const result = [];\n for (let i = 0, length = points.length; i < length; i++) {\n if (points[i] && points[i].visible !== false) {\n result.push(points[i]._childBox.toRect().center());\n }\n }\n\n return result;\n }\n\n createVisual() {\n const customVisual = this.series.visual;\n if (customVisual) {\n this.visual = customVisual({\n points: this.toGeometryPoints(this.linePoints),\n series: this.series,\n sender: this.getSender(),\n createVisual: () => {\n this.segmentVisual();\n\n return this.visual;\n }\n });\n if (this.visual && !defined(this.visual.options.zIndex)) {\n this.visual.options.zIndex = this.series.zIndex;\n }\n } else {\n this.segmentVisual();\n }\n }\n\n segmentVisual() {\n const { options, series } = this;\n let { color, _defaults: defaults } = series;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n const line = draw.Path.fromPoints(this.points(), {\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n if (options.closed) {\n line.close();\n }\n\n this.visual = line;\n }\n\n aliasFor(e, coords) {\n return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n }\n}\n\nsetDefaultOptions(LineSegment, {\n closed: false\n});\n\nexport default LineSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { last } from '../../common';\nimport { X, Y } from '../../common/constants';\n\nconst StepLineMixin = {\n calculateStepPoints: function(points) {\n const categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n const { justified, vertical, reverse } = categoryAxis.options;\n\n const stepAxis = vertical ? X : Y;\n const axis = vertical ? Y : X;\n const stepDir = reverse ? 2 : 1;\n const dir = stepDir;\n\n let previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n const result = [ previousPoint ];\n\n for (let idx = 1; idx < points.length; idx++) {\n const point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n if (previousPoint[stepAxis] !== point[stepAxis]) {\n const stepPoint = new geom.Point();\n stepPoint[stepAxis] = previousPoint[stepAxis];\n stepPoint[axis] = point[axis];\n\n result.push(stepPoint, point);\n }\n\n previousPoint = point;\n }\n\n if (!justified) {\n result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n } else if (previousPoint !== last(result)) {\n result.push(previousPoint);\n }\n\n return result;\n\n }\n};\n\nfunction toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n const box = lintPoint.box;\n const result = new geom.Point();\n\n result[stepAxis] = box[stepAxis + stepDir];\n result[axis] = box[axis + dir];\n\n return result;\n}\n\nexport default StepLineMixin;","import LineSegment from './line-segment';\nimport StepLineMixin from './step-line-mixin';\nimport { deepExtend } from '../../common';\n\nclass StepLineSegment extends LineSegment {\n points() {\n return this.calculateStepPoints(this.linePoints);\n }\n}\n\ndeepExtend(StepLineSegment.prototype, StepLineMixin);\n\nexport default StepLineSegment;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport LineSegment from './line-segment';\n\nimport { CurveProcessor } from '../../core';\n\nimport { isFunction } from '../../common';\n\nclass SplineSegment extends LineSegment {\n segmentVisual() {\n const series = this.series;\n const defaults = series._defaults;\n let color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n const curveProcessor = new CurveProcessor(this.options.closed);\n const segments = curveProcessor.process(this.points());\n const curve = new draw.Path({\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n curve.segments.push.apply(curve.segments, segments);\n\n this.visual = curve;\n }\n}\n\nexport default SplineSegment;","import { ZERO, INTERPOLATE } from '../constants';\n\nimport { Point } from '../../core';\nimport { MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nconst LineChartMixin = {\n renderSegments: function() {\n const { options, seriesPoints } = this;\n const series = options.series;\n const seriesCount = seriesPoints.length;\n let lastSegment;\n\n this._segments = [];\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const sortedPoints = this.sortPoints(seriesPoints[seriesIx]);\n const pointCount = sortedPoints.length;\n let linePoints = [];\n\n for (let pointIx = 0; pointIx < pointCount; pointIx++) {\n const point = sortedPoints[pointIx];\n if (point) {\n linePoints.push(point);\n } else if (this.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n if (linePoints.length > 1) {\n lastSegment = this.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this._addSegment(lastSegment);\n }\n linePoints = [];\n }\n }\n\n if (linePoints.length > 1) {\n lastSegment = this.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this._addSegment(lastSegment);\n }\n }\n\n this.children.unshift.apply(this.children, this._segments);\n },\n\n _addSegment: function(segment) {\n this._segments.push(segment);\n segment.parent = this;\n },\n\n sortPoints: function(points) {\n return points;\n },\n\n seriesMissingValues: function(series) {\n const missingValues = series.missingValues;\n const assumeZero = !missingValues && this.options.isStacked;\n\n return assumeZero ? ZERO : missingValues || INTERPOLATE;\n },\n\n getNearestPoint: function(x, y, seriesIx) {\n const target = new Point(x, y);\n const allPoints = this.seriesPoints[seriesIx];\n let nearestPointDistance = MAX_VALUE;\n let nearestPoint;\n\n for (let i = 0; i < allPoints.length; i++) {\n const point = allPoints[i];\n\n if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n const pointBox = point.box;\n const pointDistance = pointBox.center().distanceTo(target);\n\n if (pointDistance < nearestPointDistance) {\n nearestPoint = point;\n nearestPointDistance = pointDistance;\n }\n }\n }\n\n return nearestPoint;\n }\n};\n\nexport default LineChartMixin;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nclass ClipAnimation extends draw.Animation {\n setup() {\n this._setEnd(this.options.box.x1);\n }\n\n step(pos) {\n const box = this.options.box;\n this._setEnd(interpolateValue(box.x1, box.x2, pos));\n }\n\n _setEnd(x) {\n const element = this.element;\n const segments = element.segments;\n const topRight = segments[1].anchor();\n const bottomRight = segments[2].anchor();\n\n element.suspend();\n topRight.setX(x);\n element.resume();\n bottomRight.setX(x);\n }\n}\n\nsetDefaultOptions(ClipAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(\"clip\", ClipAnimation);\n\nexport default ClipAnimation;","import { defined } from '../../common';\n\nexport default function anyHasZIndex(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n if (defined(elements[idx].zIndex)) {\n return true;\n }\n }\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ClipAnimation from '../animations/clip-animation';\nimport anyHasZIndex from '../utils/any-has-z-index';\nimport { defined } from '../../common';\n\nconst ClipAnimationMixin = {\n createAnimation: function() {\n const root = this.getRoot();\n if (root && (root.options || {}).transitions !== false) {\n const box = root.size();\n const clipPath = draw.Path.fromRect(box.toRect());\n this.visual.clip(clipPath);\n this.animation = new ClipAnimation(clipPath, {\n box: box\n });\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation(clipPath);\n }\n }\n },\n\n _setChildrenAnimation: function(clipPath) {\n const points = this.animationPoints();\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point && point.visual && defined(point.visual.options.zIndex)) {\n point.visual.clip(clipPath);\n }\n }\n }\n};\n\nexport default ClipAnimationMixin;","import CategoricalChart from '../categorical-chart';\nimport LinePoint from './line-point';\nimport LineSegment from './line-segment';\nimport StepLineSegment from './step-line-segment';\nimport SplineSegment from './spline-segment';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\n\nimport { ZERO, SMOOTH, STEP } from '../constants';\n\nimport { deepExtend, defined, isFunction } from '../../common';\n\nclass LineChart extends CategoricalChart {\n render() {\n\n super.render();\n\n this.updateStackRange();\n this.renderSegments();\n }\n\n pointType() {\n return LinePoint;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const missingValues = this.seriesMissingValues(series);\n let value = data.valueFields.value;\n\n if (!defined(value) || value === null) {\n if (missingValues === ZERO) {\n value = 0;\n } else {\n return null;\n }\n }\n\n let pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n let color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n plotRange(point) {\n let plotValue = this.plotValue(point);\n\n if (this.options.isStacked) {\n const categoryIx = point.categoryIx;\n const categoryPoints = this.categoryPoints[categoryIx];\n\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n plotValue += this.plotValue(other);\n\n if (this.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n\n }\n\n return [ plotValue, plotValue ];\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === STEP) {\n pointType = StepLineSegment;\n } else if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result.concat(this._segments);\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\ndeepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default LineChart;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { append, deepExtend, isFunction, last } from '../../common';\n\nclass AreaSegment extends LineSegment {\n constructor(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n super(linePoints, currentSeries, seriesIx);\n\n this.prevSegment = prevSegment;\n this.stackPoints = stackPoints;\n }\n\n createVisual() {\n const series = this.series;\n const defaults = series._defaults;\n const lineOptions = series.line || {};\n let color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n this.visual = new draw.Group({\n zIndex: series.zIndex\n });\n\n this.createFill({\n fill: {\n color: color,\n opacity: series.opacity\n },\n stroke: null\n });\n\n if (lineOptions.width > 0 && lineOptions.visible !== false) {\n this.createStroke({\n stroke: deepExtend({\n color: color,\n opacity: series.opacity,\n lineCap: \"butt\"\n }, lineOptions)\n });\n }\n }\n\n strokeSegments() {\n let segments = this._strokeSegments;\n\n if (!segments) {\n segments = this._strokeSegments = this.createStrokeSegments();\n }\n\n return segments;\n }\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.points());\n }\n\n stackSegments() {\n if (this.prevSegment) {\n return this.prevSegment.createStackSegments(this.stackPoints);\n }\n\n return this.createStackSegments(this.stackPoints);\n }\n\n createStackSegments(stackPoints) {\n return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n }\n\n segmentsFromPoints(points) {\n return points.map((point) => new geom.Segment(point));\n }\n\n createStroke(style) {\n const stroke = new draw.Path(style);\n stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n this.visual.append(stroke);\n }\n\n hasStackSegment() {\n return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n }\n\n createFill(style) {\n const strokeSegments = this.strokeSegments();\n const fillSegments = strokeSegments.slice(0);\n const hasStackSegments = this.hasStackSegment();\n\n if (hasStackSegments) {\n const stackSegments = this.stackSegments();\n\n append(fillSegments, stackSegments);\n }\n\n const fill = new draw.Path(style);\n fill.segments.push.apply(fill.segments, fillSegments);\n\n if (!hasStackSegments && strokeSegments.length > 1) {\n this.fillToAxes(fill);\n }\n\n this.visual.append(fill);\n }\n\n fillToAxes(fillPath) {\n const chart = this.parent;\n const invertAxes = chart.options.invertAxes;\n const valueAxis = chart.seriesValueAxis(this.series);\n const crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n const endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n const segments = this.strokeSegments();\n const firstPoint = segments[0].anchor();\n const lastPoint = last(segments).anchor();\n let end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n if (invertAxes) {\n fillPath.lineTo(end, lastPoint.y)\n .lineTo(end, firstPoint.y);\n } else {\n fillPath.lineTo(lastPoint.x, end)\n .lineTo(firstPoint.x, end);\n }\n }\n}\n\nexport default AreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport AreaSegment from './area-segment';\n\nimport { deepExtend } from '../../common';\n\nclass StepAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n }\n\n createStackSegments(stackPoints) {\n return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n }\n}\n\ndeepExtend(StepAreaSegment.prototype, StepLineMixin);\n\nexport default StepAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport { CurveProcessor } from '../../core';\n\nimport AreaSegment from './area-segment';\n\nclass SplineAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n const curveProcessor = new CurveProcessor(this.options.closed);\n const linePoints = this.points();\n\n return curveProcessor.process(linePoints);\n }\n\n createStackSegments() {\n const strokeSegments = this.strokeSegments();\n const stackSegments = [];\n for (let idx = strokeSegments.length - 1; idx >= 0; idx--) {\n const segment = strokeSegments[idx];\n stackSegments.push(new geom.Segment(\n segment.anchor(),\n segment.controlOut(),\n segment.controlIn()\n ));\n }\n\n return stackSegments;\n }\n}\n\nexport default SplineAreaSegment;","import LineChart from '../line-chart/line-chart';\nimport LinePoint from '../line-chart/line-point';\n\nimport AreaSegment from './area-segment';\nimport StepAreaSegment from './step-area-segment';\nimport SplineAreaSegment from './spline-area-segment';\n\nimport { STEP, SMOOTH, ZERO } from '../constants';\n\nclass AreaChart extends LineChart {\n createSegment(linePoints, currentSeries, seriesIx, prevSegment) {\n const isStacked = this.options.isStacked;\n const style = (currentSeries.line || {}).style;\n let previousSegment;\n\n let stackPoints;\n if (isStacked && seriesIx > 0 && prevSegment) {\n const missingValues = this.seriesMissingValues(currentSeries);\n if (missingValues !== \"gap\") {\n stackPoints = prevSegment.linePoints;\n previousSegment = prevSegment;\n } else {\n stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n }\n }\n\n let pointType;\n if (style === STEP) {\n pointType = StepAreaSegment;\n } else if (style === SMOOTH) {\n pointType = SplineAreaSegment;\n } else {\n pointType = AreaSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n reflow(targetBox) {\n super.reflow(targetBox);\n\n const stackPoints = this._stackPoints;\n if (stackPoints) {\n for (let idx = 0; idx < stackPoints.length; idx++) {\n const stackPoint = stackPoints[idx];\n const pointSlot = this.categoryAxis.getSlot(stackPoint.categoryIx);\n stackPoint.reflow(pointSlot);\n }\n }\n }\n\n _gapStackPoints(linePoints, seriesIx, style) {\n const seriesPoints = this.seriesPoints;\n let startIdx = linePoints[0].categoryIx;\n let length = linePoints.length;\n if (startIdx < 0) {\n startIdx = 0;\n length--;\n }\n\n const endIdx = startIdx + length;\n const pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n const stackPoints = [];\n\n this._stackPoints = this._stackPoints || [];\n for (let categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n const pointIx = categoryIx + pointOffset;\n let currentSeriesIx = seriesIx;\n let point;\n\n do {\n currentSeriesIx--;\n point = seriesPoints[currentSeriesIx][pointIx];\n } while (currentSeriesIx > 0 && !point);\n\n if (point) {\n if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n stackPoints.push(this._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n }\n\n stackPoints.push(point);\n\n if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n stackPoints.push(this._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n }\n } else {\n const gapStackPoint = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(gapStackPoint);\n stackPoints.push(gapStackPoint);\n }\n }\n\n return stackPoints;\n }\n\n _previousSegmentPoint(categoryIx, pointIx, segmentIx, seriesIdx) {\n const seriesPoints = this.seriesPoints;\n let index = seriesIdx;\n let point;\n\n while (index > 0 && !point) {\n index--;\n point = seriesPoints[index][segmentIx];\n }\n\n if (!point) {\n point = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(point);\n } else {\n point = seriesPoints[index][pointIx];\n }\n\n return point;\n }\n\n _createGapStackPoint(categoryIx) {\n const options = this.pointOptions({}, 0);\n const point = new LinePoint(0, options);\n point.categoryIx = categoryIx;\n point.series = {};\n\n return point;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\nexport default AreaChart;\n","import { MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { Class } from '../common';\n\nclass AxisGroupRangeTracker extends Class {\n constructor() {\n super();\n\n this.axisRanges = {};\n }\n\n update(chartAxisRanges) {\n const axisRanges = this.axisRanges;\n\n for (let axisName in chartAxisRanges) {\n const chartRange = chartAxisRanges[axisName];\n let range = axisRanges[axisName];\n axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n range.min = Math.min(range.min, chartRange.min);\n range.max = Math.max(range.max, chartRange.max);\n }\n }\n\n reset(axisName) {\n this.axisRanges[axisName] = undefined;\n }\n\n query(axisName) {\n return this.axisRanges[axisName];\n }\n}\n\nexport default AxisGroupRangeTracker;","import { ChartElement, TextBox, Box } from '../../core';\nimport { FADEIN, INITIAL_ANIMATION_DURATION, INSIDE_END, INSIDE_BASE, OUTSIDE_END } from '../constants';\n\nimport { CENTER, TOP, BOTTOM, LEFT, RIGHT, X, Y, BLACK } from '../../common/constants';\nimport { getSpacing, setDefaultOptions } from '../../common';\n\nclass BarLabel extends ChartElement {\n constructor(content, options, pointData) {\n super(options);\n\n this.textBox = new TextBox(content, this.options, pointData);\n this.append(this.textBox);\n }\n\n createVisual() {\n this.textBox.options.noclip = this.options.noclip;\n }\n\n reflow(targetBox) {\n const options = this.options;\n const { vertical, aboveAxis } = options;\n const text = this.children[0];\n const textOptions = text.options;\n const box = text.box;\n const padding = text.options.padding;\n let labelBox = targetBox;\n\n textOptions.align = vertical ? CENTER : LEFT;\n textOptions.vAlign = vertical ? TOP : CENTER;\n\n if (options.position === INSIDE_END) {\n if (vertical) {\n textOptions.vAlign = TOP;\n\n if (!aboveAxis && box.height() < targetBox.height()) {\n textOptions.vAlign = BOTTOM;\n }\n } else {\n textOptions.align = aboveAxis ? RIGHT : LEFT;\n }\n } else if (options.position === CENTER) {\n textOptions.vAlign = CENTER;\n textOptions.align = CENTER;\n } else if (options.position === INSIDE_BASE) {\n if (vertical) {\n textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n } else {\n textOptions.align = aboveAxis ? LEFT : RIGHT;\n }\n } else if (options.position === OUTSIDE_END) {\n if (vertical) {\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x1, targetBox.y1 - box.height(),\n targetBox.x2, targetBox.y1\n );\n } else {\n labelBox = new Box(\n targetBox.x1, targetBox.y2,\n targetBox.x2, targetBox.y2 + box.height()\n );\n }\n } else {\n textOptions.align = CENTER;\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x2, targetBox.y1,\n targetBox.x2 + box.width(), targetBox.y2\n );\n } else {\n labelBox = new Box(\n targetBox.x1 - box.width(), targetBox.y1,\n targetBox.x1, targetBox.y2\n );\n }\n }\n }\n\n if (!options.rotation) {\n if (vertical) {\n padding.left = padding.right =\n (labelBox.width() - text.contentBox.width()) / 2;\n } else {\n padding.top = padding.bottom =\n (labelBox.height() - text.contentBox.height()) / 2;\n }\n }\n\n text.reflow(labelBox);\n }\n\n alignToClipBox(clipBox) {\n const vertical = this.options.vertical;\n const field = vertical ? Y : X;\n const start = field + \"1\";\n const end = field + \"2\";\n const text = this.children[0];\n const parentBox = this.parent.box;\n\n if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n const targetBox = text.paddingBox.clone();\n targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n this.reflow(targetBox);\n }\n }\n}\n\nsetDefaultOptions(BarLabel, {\n position: OUTSIDE_END,\n margin: getSpacing(3),\n padding: getSpacing(4),\n color: BLACK,\n background: \"\",\n border: {\n width: 1,\n color: \"\"\n },\n aboveAxis: true,\n vertical: false,\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n zIndex: 2\n});\n\nexport default BarLabel;","export default function hasGradientOverlay(options) {\n const overlay = options.overlay;\n\n return overlay && overlay.gradient && overlay.gradient !== \"none\";\n}","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport BarLabel from './bar-label';\n\nimport { BORDER_BRIGHTNESS, TOOLTIP_OFFSET } from '../constants';\n\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { ChartElement, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { WHITE, LEFT, RIGHT, BOTTOM, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, valueOrDefault } from '../../common';\n\nconst BAR_ALIGN_MIN_WIDTH = 6;\n\nclass Bar extends ChartElement {\n constructor(value, options) {\n super();\n\n this.options = options;\n this.color = options.color || WHITE;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.value = value;\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n }\n\n createLabel() {\n const options = this.options;\n const labels = options.labels;\n\n if (labels.visible) {\n const pointData = this.pointData();\n let labelTemplate = getTemplate(labels);\n let labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText,\n deepExtend({\n vertical: options.vertical\n },\n labels\n ), pointData);\n this.append(this.label);\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n reflow(targetBox) {\n this.render();\n\n const label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n if (this.errorBars) {\n for (let i = 0; i < this.errorBars.length; i++) {\n this.errorBars[i].reflow(targetBox);\n }\n }\n }\n\n createVisual() {\n const { box, options } = this;\n const customVisual = options.visual;\n\n if (this.visible !== false) {\n super.createVisual();\n\n if (customVisual) {\n const visual = this.rectVisual = customVisual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n sender: this.getSender(),\n series: this.series,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n rect: box.toRect(),\n createVisual: () => {\n const group = new draw.Group();\n this.createRect(group);\n return group;\n },\n options: options\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else if (box.width() > 0 && box.height() > 0) {\n this.createRect(this.visual);\n }\n }\n }\n\n createRect(visual) {\n const options = this.options;\n const border = options.border;\n const strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n const rect = this.box.toRect();\n\n rect.size.width = Math.round(rect.size.width);\n\n const path = this.rectVisual = draw.Path.fromRect(rect, {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: {\n color: this.getBorderColor(),\n width: border.width,\n opacity: strokeOpacity,\n dashType: border.dashType\n }\n });\n\n const width = this.box.width();\n const height = this.box.height();\n\n const size = options.vertical ? width : height;\n\n if (size > BAR_ALIGN_MIN_WIDTH) {\n alignPathToPixel(path);\n\n // Fixes lineJoin issue in firefox when the joined lines are parallel\n if (width < 1 || height < 1) {\n path.options.stroke.lineJoin = \"round\";\n }\n }\n\n visual.append(path);\n\n if (hasGradientOverlay(options)) {\n const overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay));\n\n visual.append(overlay);\n }\n }\n\n createHighlight(style) {\n const highlight = draw.Path.fromRect(this.box.toRect(), style);\n\n return alignPathToPixel(highlight);\n }\n\n highlightVisual() {\n return this.rectVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n }\n\n getBorderColor() {\n const color = this.color;\n const border = this.options.border;\n const brightness = border._brightness || BORDER_BRIGHTNESS;\n let borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(color).brightness(brightness).toHex();\n }\n\n return borderColor;\n }\n\n tooltipAnchor() {\n const { options, box, aboveAxis } = this;\n const clipBox = this.owner.pane.clipBox() || box;\n let horizontalAlign = LEFT;\n let verticalAlign = TOP;\n let x, y;\n\n if (options.vertical) {\n x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n if (aboveAxis) {\n y = Math.max(box.y1, clipBox.y1);\n } else {\n y = Math.min(box.y2, clipBox.y2);\n verticalAlign = BOTTOM;\n }\n } else {\n const x1 = Math.max(box.x1, clipBox.x1);\n const x2 = Math.min(box.x2, clipBox.x2);\n\n if (options.isStacked) {\n verticalAlign = BOTTOM;\n if (aboveAxis) {\n horizontalAlign = RIGHT;\n x = x2;\n } else {\n x = x1;\n }\n y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n } else {\n if (aboveAxis) {\n x = x2 + TOOLTIP_OFFSET;\n } else {\n x = x1 - TOOLTIP_OFFSET;\n horizontalAlign = RIGHT;\n }\n y = Math.max(box.y1, clipBox.y1);\n }\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n series: this.series\n };\n }\n}\n\ndeepExtend(Bar.prototype, PointEventsMixin);\ndeepExtend(Bar.prototype, NoteMixin);\n\nBar.prototype.defaults = {\n border: {\n width: 1\n },\n vertical: true,\n overlay: {\n gradient: \"glass\"\n },\n labels: {\n visible: false,\n format: \"{0}\"\n },\n opacity: 1,\n notes: {\n label: {}\n }\n};\n\nexport default Bar;","export function forEach(elements, callback) {\n elements.forEach(callback);\n}\n\nexport function forEachReverse(elements, callback) {\n const length = elements.length;\n\n for (let idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx - length - 1);\n }\n}","import { ChartElement } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\nimport { forEach, forEachReverse } from './utils';\n\nclass ClusterLayout extends ChartElement {\n constructor(options) {\n super(options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n reflow(box) {\n const { vertical, gap, spacing } = this.options;\n const children = this.children;\n const count = children.length;\n const axis = vertical ? Y : X;\n const slots = count + gap + (spacing * (count - 1));\n const slotSize = (vertical ? box.height() : box.width()) / slots;\n let position = box[axis + 1] + slotSize * (gap / 2);\n\n this.forEach(children, (child, idx) => {\n const childBox = (child.box || box).clone();\n\n childBox[axis + 1] = position;\n childBox[axis + 2] = position + slotSize;\n\n child.reflow(childBox);\n if (idx < count - 1) {\n position += (slotSize * spacing);\n }\n\n position += slotSize;\n });\n }\n}\n\nsetDefaultOptions(ClusterLayout, {\n vertical: false,\n gap: 0,\n spacing: 0\n});\n\nexport default ClusterLayout;","import { ChartElement, Box } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nclass StackWrap extends ChartElement {\n reflow(targetBox) {\n const positionAxis = this.options.vertical ? X : Y;\n const children = this.children;\n const childrenCount = children.length;\n let box = this.box = new Box();\n\n for (let i = 0; i < childrenCount; i++) {\n const currentChild = children[i];\n\n if (currentChild.visible !== false) {\n const childBox = currentChild.box.clone();\n childBox.snapTo(targetBox, positionAxis);\n\n if (i === 0) {\n box = this.box = childBox.clone();\n }\n\n currentChild.reflow(childBox);\n box.wrap(childBox);\n }\n }\n }\n}\n\nsetDefaultOptions(StackWrap, {\n vertical: true\n});\n\nexport default StackWrap;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Bar from './bar';\n\nimport CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport StackWrap from '../layout/stack-wrap';\nimport { BAR, OUTSIDE_END, INSIDE_END } from '../constants';\n\nimport anyHasZIndex from '../utils/any-has-z-index';\n\nimport { STRING, X, Y } from '../../common/constants';\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nclass BarChart extends CategoricalChart {\n\n render() {\n super.render();\n this.updateStackRange();\n }\n\n pointType() {\n return Bar;\n }\n\n clusterType() {\n return ClusterLayout;\n }\n\n stackType() {\n return StackWrap;\n }\n\n stackLimits(axisName, stackName) {\n const limits = super.stackLimits(axisName, stackName);\n\n return limits;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { options, children } = this;\n const isStacked = options.isStacked;\n const value = this.pointValue(data);\n let pointOptions = this.pointOptions(series, seriesIx);\n\n const labelOptions = pointOptions.labels;\n if (isStacked) {\n if (labelOptions.position === OUTSIDE_END) {\n labelOptions.position = INSIDE_END;\n }\n }\n\n pointOptions.isStacked = isStacked;\n\n let color = data.fields.color || series.color;\n if (value < 0 && pointOptions.negativeColor) {\n color = pointOptions.negativeColor;\n }\n\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const pointType = this.pointType();\n const point = new pointType(value, pointOptions);\n point.color = color;\n\n let cluster = children[categoryIx];\n if (!cluster) {\n const clusterType = this.clusterType();\n cluster = new clusterType({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (isStacked) {\n const stackWrap = this.getStackWrap(series, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n }\n\n getStackWrap(series, cluster) {\n const stack = series.stack;\n const stackGroup = stack ? stack.group || stack : stack;\n const wraps = cluster.children;\n let stackWrap;\n\n if (typeof stackGroup === STRING) {\n for (let i = 0; i < wraps.length; i++) {\n if (wraps[i]._stackGroup === stackGroup) {\n stackWrap = wraps[i];\n break;\n }\n }\n } else {\n stackWrap = wraps[0];\n }\n\n if (!stackWrap) {\n const stackType = this.stackType();\n stackWrap = new stackType({\n vertical: !this.options.invertAxes\n });\n stackWrap._stackGroup = stackGroup;\n cluster.append(stackWrap);\n }\n\n return stackWrap;\n }\n\n categorySlot(categoryAxis, categoryIx, valueAxis) {\n const options = this.options;\n const categorySlot = categoryAxis.getSlot(categoryIx);\n const startValue = valueAxis.startValue();\n\n if (options.isStacked) {\n const zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n const stackAxis = options.invertAxes ? X : Y;\n categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n }\n\n return categorySlot;\n }\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n createAnimation() {\n this._setAnimationOptions();\n super.createAnimation();\n\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation();\n }\n }\n\n _setChildrenAnimation() {\n const points = this.points;\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n const pointVisual = point.visual;\n if (pointVisual && defined(pointVisual.options.zIndex)) {\n point.options.animation = this.options.animation;\n point.createAnimation();\n }\n }\n }\n\n _setAnimationOptions() {\n const options = this.options;\n const animation = options.animation || {};\n let origin;\n\n if (options.isStacked) {\n const valueAxis = this.seriesValueAxis(options.series[0]);\n origin = valueAxis.getSlot(valueAxis.startValue());\n } else {\n origin = this.categoryAxis.getSlot(0);\n }\n\n animation.origin = new geom.Point(origin.x1, origin.y1);\n animation.vertical = !options.invertAxes;\n }\n}\n\nsetDefaultOptions(BarChart, {\n animation: {\n type: BAR\n }\n});\n\nexport default BarChart;","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { WHITE, LEFT, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nclass Candlestick extends ChartElement {\n constructor(value, options) {\n super(options);\n this.value = value;\n }\n\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n const ocSlot = valueAxis.getSlot(value.open, value.close);\n const lhSlot = valueAxis.getSlot(value.low, value.high);\n\n ocSlot.x1 = lhSlot.x1 = box.x1;\n ocSlot.x2 = lhSlot.x2 = box.x2;\n\n this.realBody = ocSlot;\n\n const mid = lhSlot.center().x;\n const points = [];\n\n points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n this.lines = points;\n\n this.box = lhSlot.clone().wrap(ocSlot);\n\n if (!this._rendered) {\n this._rendered = true;\n this.createNote();\n }\n\n this.reflowNote();\n }\n\n reflowNote() {\n if (this.note) {\n this.note.reflow(this.box);\n }\n }\n\n createVisual() {\n super.createVisual();\n this._mainVisual = this.mainVisual(this.options);\n this.visual.append(\n this._mainVisual\n );\n\n this.createOverlay();\n }\n\n mainVisual(options) {\n const group = new draw.Group();\n\n this.createBody(group, options);\n this.createLines(group, options);\n\n return group;\n }\n\n createBody(container, options) {\n const body = draw.Path.fromRect(this.realBody.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: this.getBorderColor(),\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n alignPathToPixel(body);\n container.append(body);\n\n if (hasGradientOverlay(options)) {\n container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay)));\n }\n }\n\n createLines(container, options) {\n this.drawLines(container, options, this.lines, options.line);\n }\n\n drawLines(container, options, lines, lineOptions) {\n if (!lines) {\n return;\n }\n\n const lineStyle = {\n stroke: {\n color: lineOptions.color || this.color,\n opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n width: lineOptions.width,\n dashType: lineOptions.dashType,\n lineCap: \"butt\"\n }\n };\n\n for (let i = 0; i < lines.length; i++) {\n const line = draw.Path.fromPoints(lines[i], lineStyle);\n alignPathToPixel(line);\n container.append(line);\n }\n }\n\n getBorderColor() {\n const border = this.options.border;\n let borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(this.color).brightness(border._brightness).toHex();\n }\n\n return borderColor;\n }\n\n createOverlay() {\n const overlay = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null\n });\n\n this.visual.append(overlay);\n }\n\n createHighlight() {\n const highlight = this.options.highlight;\n const normalColor = this.color;\n\n this.color = highlight.color || this.color;\n const overlay = this.mainVisual(\n deepExtend({}, this.options, {\n line: {\n color: this.getBorderColor()\n }\n }, highlight)\n );\n this.color = normalColor;\n\n return overlay;\n }\n\n highlightVisual() {\n return this._mainVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this._mainVisual\n };\n }\n\n tooltipAnchor() {\n const box = this.box;\n const clipBox = this.owner.pane.clipBox() || box;\n\n return {\n point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n align: {\n horizontal: LEFT,\n vertical: TOP\n }\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n}\n\nsetDefaultOptions(Candlestick, {\n vertical: true,\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
{4:d}
Open:{0:C}
High:{1:C}
Low:{2:C}
Close:{3:C}
\"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n }\n});\n\ndeepExtend(Candlestick.prototype, PointEventsMixin);\ndeepExtend(Candlestick.prototype, NoteMixin);\n\nexport default Candlestick;","import countNumbers from './count-numbers';\n\nexport default function areNumbers(values) {\n return countNumbers(values) === values.length;\n}","import CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport Candlestick from './candlestick';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport { CANDLESTICK } from '../constants';\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, isFunction } from '../../common';\n\nclass CandlestickChart extends CategoricalChart {\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n addValue(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { children, options } = this;\n const value = data.valueFields;\n const valueParts = this.splitValue(value);\n const hasValue = areNumbers(valueParts);\n const dataItem = series.data[categoryIx];\n let categoryPoints = this.categoryPoints[categoryIx];\n let point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n point.noteText = data.fields.noteText;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n }\n\n pointType() {\n return Candlestick;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const pointType = this.pointType();\n const value = data.valueFields;\n let pointOptions = deepExtend({}, series);\n let color = data.fields.color || series.color;\n\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (series.type === CANDLESTICK) {\n if (value.open > value.close) {\n color = data.fields.downColor || series.downColor || series.color;\n }\n }\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.vertical = !this.options.invertAxes;\n\n const point = new pointType(value, pointOptions);\n point.color = color;\n\n return point;\n }\n\n splitValue(value) {\n return [ value.low, value.open, value.close, value.high ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n const parts = this.splitValue(value);\n let axisRange = this.valueAxisRanges[axisName];\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format,\n value.open, value.high,\n value.low, value.close, point.category\n );\n }\n\n animationPoints() {\n return this.points;\n }\n}\n\ndeepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\nexport default CandlestickChart;","import { Color } from '@progress/kendo-drawing';\n\nimport Candlestick from '../candlestick-chart/candlestick';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport { ShapeElement } from '../../core';\n\nimport { LINE_MARKER_SIZE, BORDER_BRIGHTNESS } from '../constants';\n\nimport { CROSS, CIRCLE, WHITE } from '../../common/constants';\nimport { deepExtend, defined, setDefaultOptions } from '../../common';\n\nclass BoxPlot extends Candlestick {\n constructor(value, options) {\n super(value, options);\n\n this.createNote();\n }\n\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n let whiskerSlot, boxSlot;\n\n this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n this.realBody = boxSlot;\n this.reflowBoxSlot(box);\n\n this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n this.reflowWhiskerSlot(box);\n\n const medianSlot = valueAxis.getSlot(value.median);\n\n if (value.mean) {\n const meanSlot = valueAxis.getSlot(value.mean);\n this.meanPoints = this.calcMeanPoints(box, meanSlot);\n }\n\n this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n this.box = whiskerSlot.clone().wrap(boxSlot);\n this.reflowNote();\n }\n\n reflowBoxSlot(box) {\n this.boxSlot.x1 = box.x1;\n this.boxSlot.x2 = box.x2;\n }\n\n reflowWhiskerSlot(box) {\n this.whiskerSlot.x1 = box.x1;\n this.whiskerSlot.x2 = box.x2;\n }\n\n calcMeanPoints(box, meanSlot) {\n return [\n [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n ];\n }\n\n calcWhiskerPoints(boxSlot, whiskerSlot) {\n const mid = whiskerSlot.center().x;\n return [ [\n [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n ], [\n [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n ] ];\n }\n\n calcMedianPoints(box, medianSlot) {\n return [\n [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n ];\n }\n\n renderOutliers(options) {\n const value = this.value;\n const outliers = value.outliers || [];\n const outerFence = Math.abs(value.q3 - value.q1) * 3;\n const elements = [];\n let markers = options.markers || {};\n\n for (let i = 0; i < outliers.length; i++) {\n const outlierValue = outliers[i];\n if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n markers = options.outliers;\n } else {\n markers = options.extremes;\n }\n let markersBorder = deepExtend({}, markers.border);\n\n if (!defined(markersBorder.color)) {\n if (defined(this.color)) {\n markersBorder.color = this.color;\n } else {\n markersBorder.color =\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n }\n\n const shape = new ShapeElement({\n type: markers.type,\n width: markers.size,\n height: markers.size,\n rotation: markers.rotation,\n background: markers.background,\n border: markersBorder,\n opacity: markers.opacity\n });\n\n shape.value = outlierValue;\n\n elements.push(shape);\n }\n\n this.reflowOutliers(elements);\n return elements;\n }\n\n reflowOutliers(outliers) {\n const valueAxis = this.owner.seriesValueAxis(this.options);\n const center = this.box.center();\n\n for (let i = 0; i < outliers.length; i++) {\n const outlierValue = outliers[i].value;\n const markerBox = valueAxis.getSlot(outlierValue);\n\n if (this.options.vertical) {\n markerBox.move(center.x);\n } else {\n markerBox.move(undefined, center.y);\n }\n\n this.box = this.box.wrap(markerBox);\n outliers[i].reflow(markerBox);\n }\n }\n\n mainVisual(options) {\n const group = super.mainVisual(options);\n const outliers = this.renderOutliers(options);\n\n for (let i = 0; i < outliers.length; i++) {\n const element = outliers[i].getElement();\n if (element) {\n group.append(element);\n }\n }\n\n return group;\n }\n\n createLines(container, options) {\n this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n this.drawLines(container, options, this.medianPoints, options.median);\n this.drawLines(container, options, this.meanPoints, options.mean);\n }\n\n getBorderColor() {\n if ((this.options.border || {}).color) {\n return this.options.border.color;\n }\n\n if (this.color) {\n return this.color;\n }\n\n return super.getBorderColor();\n }\n}\n\nsetDefaultOptions(BoxPlot, {\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n median: {\n color: \"#f6f6f6\"\n },\n mean: {\n width: 2,\n dashType: \"dash\",\n color: \"#f6f6f6\"\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
{6:d}
Lower:{0:C}
Q1:{1:C}
Median:{2:C}
Mean:{5:C}
Q3:{3:C}
Upper:{4:C}
\"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n outliers: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CROSS,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n },\n extremes: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n }\n});\n\ndeepExtend(BoxPlot.prototype, PointEventsMixin);\n\nexport default BoxPlot;","import BoxPlot from './box-plot';\n\nclass VerticalBoxPlot extends BoxPlot {\n reflowBoxSlot(box) {\n this.boxSlot.y1 = box.y1;\n this.boxSlot.y2 = box.y2;\n }\n\n reflowWhiskerSlot(box) {\n this.whiskerSlot.y1 = box.y1;\n this.whiskerSlot.y2 = box.y2;\n }\n\n calcMeanPoints(box, meanSlot) {\n return [\n [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n ];\n }\n\n calcWhiskerPoints(boxSlot, whiskerSlot) {\n const mid = whiskerSlot.center().y;\n return [ [\n [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n ], [\n [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n ] ];\n }\n\n calcMedianPoints(box, medianSlot) {\n return [\n [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n ];\n }\n}\n\nexport default VerticalBoxPlot;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport VerticalBoxPlot from './vertical-box-plot';\nimport BoxPlot from './box-plot';\nimport ClusterLayout from '../layout/cluster-layout';\n\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nclass BoxPlotChart extends CandlestickChart {\n addValue(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { children, options } = this;\n const value = data.valueFields;\n const valueParts = this.splitValue(value);\n const hasValue = areNumbers(valueParts);\n const dataItem = series.data[categoryIx];\n let categoryPoints = this.categoryPoints[categoryIx];\n let point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n }\n\n pointType() {\n if (this.options.invertAxes) {\n return VerticalBoxPlot;\n }\n\n return BoxPlot;\n }\n\n splitValue(value) {\n return [\n value.lower, value.q1, value.median,\n value.q3, value.upper\n ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n let axisRange = this.valueAxisRanges[axisName];\n let parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n if (defined(value.mean)) {\n parts = parts.concat(value.mean);\n }\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format,\n value.lower, value.q1, value.median,\n value.q3, value.upper, value.mean, point.category\n );\n }\n\n filterOutliers(items) {\n const length = (items || []).length;\n const result = [];\n\n for (let i = 0; i < length; i++) {\n const item = items[i];\n if (defined(item) && item !== null) {\n result.push(item);\n }\n }\n\n return result;\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\nexport default BoxPlotChart;\n","import ErrorBarBase from './error-bar-base';\n\nclass ScatterErrorBar extends ErrorBarBase {\n getAxis() {\n const axes = this.chart.seriesAxes(this.series);\n const axis = this.isVertical ? axes.y : axes.x;\n\n return axis;\n }\n}\n\nexport default ScatterErrorBar;","import { defined } from '../../common';\n\nexport default function hasValue(value) {\n return defined(value) && value !== null;\n}","import { ChartElement, Box } from '../../core';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport ErrorRangeCalculator from '../error-bars/error-range-calculator';\nimport ScatterErrorBar from '../error-bars/scatter-error-bar';\nimport LinePoint from '../line-chart/line-point';\nimport CategoricalChart from '../categorical-chart';\n\nimport hasValue from '../utils/has-value';\nimport evalOptions from '../utils/eval-options';\n\nimport { deepExtend, isNumber, isString, defined, isFunction, setDefaultOptions } from '../../common';\nimport { X, Y, MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { parseDate } from '../../date-utils';\n\nclass ScatterChart extends ChartElement {\n constructor(plotArea, options) {\n\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n _initFields() {\n // X and Y axis ranges grouped by name, e.g.:\n // primary: { min: 0, max: 1 }\n this.xAxisRanges = {};\n this.yAxisRanges = {};\n\n this.points = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n addErrorBar(point, field, fields) {\n const value = point.value[field];\n const valueErrorField = field + \"Value\";\n const lowField = field + \"ErrorLow\";\n const highField = field + \"ErrorHigh\";\n const { seriesIx, series } = fields;\n const errorBars = point.options.errorBars;\n const lowValue = fields[lowField];\n const highValue = fields[highField];\n\n if (isNumber(value)) {\n let errorRange;\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n }\n\n if (errorBars && defined(errorBars[valueErrorField])) {\n this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n }\n\n if (errorRange) {\n this.addPointErrorBar(errorRange, point, field);\n }\n }\n }\n\n addPointErrorBar(errorRange, point, field) {\n const { low, high } = errorRange;\n const { series, options: { errorBars: options } } = point;\n const isVertical = field === Y;\n const item = {};\n\n point[field + \"Low\"] = low;\n point[field + \"High\"] = high;\n\n point.errorBars = point.errorBars || [];\n const errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n point.errorBars.push(errorBar);\n point.append(errorBar);\n\n item[field] = low;\n this.updateRange(item, series);\n item[field] = high;\n this.updateRange(item, series);\n }\n\n addValue(value, fields) {\n const { x, y } = value;\n const seriesIx = fields.seriesIx;\n const series = this.options.series[seriesIx];\n const missingValues = this.seriesMissingValues(series);\n const seriesPoints = this.seriesPoints[seriesIx];\n\n let pointValue = value;\n if (!(hasValue(x) && hasValue(y))) {\n pointValue = this.createMissingValue(pointValue, missingValues);\n }\n\n let point;\n if (pointValue) {\n point = this.createPoint(pointValue, fields);\n if (point) {\n Object.assign(point, fields);\n this.addErrorBar(point, X, fields);\n this.addErrorBar(point, Y, fields);\n }\n this.updateRange(pointValue, fields.series);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n }\n\n seriesMissingValues(series) {\n return series.missingValues;\n }\n\n createMissingValue() {}\n\n updateRange(value, series) {\n const intlService = this.chartService.intl;\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n let { x, y } = value;\n let xAxisRange = this.xAxisRanges[xAxisName];\n let yAxisRange = this.yAxisRanges[yAxisName];\n\n if (hasValue(x)) {\n xAxisRange = this.xAxisRanges[xAxisName] =\n xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(x)) {\n x = parseDate(intlService, x);\n }\n\n xAxisRange.min = Math.min(xAxisRange.min, x);\n xAxisRange.max = Math.max(xAxisRange.max, x);\n }\n\n if (hasValue(y)) {\n yAxisRange = this.yAxisRanges[yAxisName] =\n yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(y)) {\n y = parseDate(intlService, y);\n }\n\n yAxisRange.min = Math.min(yAxisRange.min, y);\n yAxisRange.max = Math.max(yAxisRange.max, y);\n }\n }\n\n evalPointOptions(options, value, fields) {\n const { series, seriesIx } = fields;\n const state = { defaults: series._defaults, excluded: [ \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\" ] };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem\n }, state);\n }\n\n return pointOptions;\n }\n\n pointType() {\n return LinePoint;\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n let pointOptions = this.pointOptions(series, fields.seriesIx);\n let color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n seriesAxes(series) {\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n const plotArea = this.plotArea;\n const xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n const yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return {\n x: xAxis,\n y: yAxis\n };\n }\n\n reflow(targetBox) {\n const chartPoints = this.points;\n const limit = !this.options.clip;\n let pointIx = 0;\n\n\n this.traverseDataPoints((value, fields) => {\n const point = chartPoints[pointIx++];\n const seriesAxes = this.seriesAxes(fields.series);\n const slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n const slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n if (point) {\n if (slotX && slotY) {\n const pointSlot = this.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n }\n\n pointSlot(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n traverseDataPoints(callback) {\n const { options: { series }, seriesPoints } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const currentSeriesPoints = seriesPoints[seriesIx];\n if (!currentSeriesPoints) {\n seriesPoints[seriesIx] = [];\n }\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields: value, fields } = this._bindPoint(currentSeries, seriesIx, pointIx);\n\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this\n }, fields));\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n}\nsetDefaultOptions(ScatterChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}\"\n },\n labels: {\n format: \"{0}, {1}\"\n },\n clip: true\n});\ndeepExtend(ScatterChart.prototype, ClipAnimationMixin, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n});\n\nexport default ScatterChart;","import { drawing as draw, geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport LinePoint from '../line-chart/line-point';\nimport { BORDER_BRIGHTNESS } from '../constants';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend } from '../../common';\n\nclass Bubble extends LinePoint {\n constructor(value, options) {\n super(value, options);\n\n this.category = value.category;\n }\n\n createHighlight() {\n const highlight = this.options.highlight;\n const border = highlight.border;\n const markers = this.options.markers;\n const center = this.box.center();\n const radius = (markers.size + markers.border.width + border.width) / 2;\n const highlightGroup = new draw.Group();\n const shadow = new draw.Circle(new geom.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n stroke: {\n color: 'none'\n },\n fill: this.createGradient({\n gradient: 'bubbleShadow',\n color: markers.background,\n stops: [ {\n offset: 0,\n color: markers.background,\n opacity: 0.3\n }, {\n offset: 1,\n color: markers.background,\n opacity: 0\n } ]\n })\n });\n const overlay = new draw.Circle(new geom.Circle([ center.x, center.y ], radius), {\n stroke: {\n color: border.color ||\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n width: border.width,\n opacity: border.opacity\n },\n fill: {\n color: markers.background,\n opacity: highlight.opacity\n }\n });\n\n highlightGroup.append(shadow, overlay);\n\n return highlightGroup;\n }\n}\n\nBubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n labels: {\n position: CENTER\n },\n highlight: {\n opacity: 1,\n border: {\n color: \"#fff\",\n width: 2,\n opacity: 1\n }\n }\n});\n\nBubble.prototype.defaults.highlight.zIndex = undefined;\n\nexport default Bubble;","import ScatterChart from '../scatter-charts/scatter-chart';\nimport Bubble from './bubble';\n\nimport { INITIAL_ANIMATION_DURATION, BUBBLE } from '../constants';\n\nimport { MIN_VALUE, CIRCLE } from '../../common/constants';\nimport { deepExtend, isFunction, setDefaultOptions, valueOrDefault } from '../../common';\n\nclass BubbleChart extends ScatterChart {\n _initFields() {\n this._maxSize = MIN_VALUE;\n super._initFields();\n }\n\n addValue(value, fields) {\n if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n super.addValue(value, fields);\n } else {\n this.points.push(null);\n this.seriesPoints[fields.seriesIx].push(null);\n }\n }\n\n reflow(box) {\n this.updateBubblesSize(box);\n super.reflow(box);\n }\n\n pointType() {\n return Bubble;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n const pointsCount = series.data.length;\n const delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n const animationOptions = {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay,\n type: BUBBLE\n };\n\n let color = fields.color || series.color;\n if (value.size < 0 && series.negativeValues.visible) {\n color = valueOrDefault(\n series.negativeValues.color, color\n );\n }\n\n let pointOptions = deepExtend({\n labels: {\n animation: {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay\n }\n }\n }, this.pointOptions(series, fields.seriesIx), {\n markers: {\n type: CIRCLE,\n border: series.border,\n opacity: series.opacity,\n animation: animationOptions\n }\n });\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.markers.background = color;\n\n const point = new Bubble(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n updateBubblesSize(box) {\n const { options: { series } } = this;\n const boxSize = Math.min(box.width(), box.height());\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesPoints = this.seriesPoints[seriesIx];\n const minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n const maxSize = currentSeries.maxSize || boxSize * 0.2;\n const minR = minSize / 2;\n const maxR = maxSize / 2;\n const minArea = Math.PI * minR * minR;\n const maxArea = Math.PI * maxR * maxR;\n const areaRange = maxArea - minArea;\n const areaRatio = areaRange / this._maxSize;\n\n for (let pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n const point = seriesPoints[pointIx];\n if (point) {\n const area = Math.abs(point.value.size) * areaRatio;\n const radius = Math.sqrt((minArea + area) / Math.PI);\n const baseZIndex = valueOrDefault(point.options.zIndex, 0);\n const zIndex = baseZIndex + (1 - radius / maxR);\n\n deepExtend(point.options, {\n zIndex: zIndex,\n markers: {\n size: radius * 2,\n zIndex: zIndex\n },\n labels: {\n zIndex: zIndex + 1\n }\n });\n }\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n }\n\n createAnimation() {}\n createVisual() {}\n}\n\nsetDefaultOptions(BubbleChart, {\n tooltip: {\n format: \"{3}\"\n },\n labels: {\n format: \"{3}\"\n }\n});\n\nexport default BubbleChart;","import { ShapeElement } from '../../core';\nimport { deepExtend } from '../../common';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nclass Target extends ShapeElement { }\n\ndeepExtend(Target.prototype, PointEventsMixin);\n\nexport default Target;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport Target from './target';\n\nimport { ChartElement, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport Bar from '../bar-chart/bar';\n\nimport { WHITE, TOP, RIGHT } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nclass Bullet extends ChartElement {\n constructor(value, options) {\n super(options);\n\n this.aboveAxis = this.options.aboveAxis;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n render() {\n const options = this.options;\n\n if (!this._rendered) {\n this._rendered = true;\n\n if (defined(this.value.target)) {\n this.target = new Target({\n type: options.target.shape,\n background: options.target.color || this.color,\n opacity: options.opacity,\n zIndex: options.zIndex,\n border: options.target.border,\n vAlign: TOP,\n align: RIGHT\n });\n\n this.target.value = this.value;\n this.target.dataItem = this.dataItem;\n this.target.series = this.series;\n\n this.append(this.target);\n }\n\n this.createNote();\n }\n }\n\n reflow(box) {\n this.render();\n\n const { options, target, owner: chart } = this;\n const invertAxes = options.invertAxes;\n const valueAxis = chart.seriesValueAxis(this.options);\n const categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n const targetValueSlot = valueAxis.getSlot(this.value.target);\n const targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n const targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n if (target) {\n const targetSlot = new Box(\n targetSlotX.x1, targetSlotY.y1,\n targetSlotX.x2, targetSlotY.y2\n );\n target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n target.reflow(targetSlot);\n }\n\n if (this.note) {\n this.note.reflow(box);\n }\n\n this.box = box;\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options;\n const body = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: options.border.color || this.color,\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n this.bodyVisual = body;\n\n alignPathToPixel(body);\n this.visual.append(body);\n }\n\n createAnimation() {\n if (this.bodyVisual) {\n this.animation = draw.Animation.create(\n this.bodyVisual, this.options.animation\n );\n }\n }\n\n createHighlight(style) {\n return draw.Path.fromRect(this.box.toRect(), style);\n }\n\n highlightVisual() {\n return this.bodyVisual;\n }\n\n highlightVisualArgs() {\n return {\n rect: this.box.toRect(),\n visual: this.bodyVisual,\n options: this.options\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n}\n\nBullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\n\nsetDefaultOptions(Bullet, {\n border: {\n width: 1\n },\n vertical: false,\n opacity: 1,\n target: {\n shape: \"\",\n border: {\n width: 0,\n color: \"green\"\n },\n line: {\n width: 2\n }\n },\n tooltip: {\n format: \"Current: {0}
Target: {1}\"\n }\n});\n\ndeepExtend(Bullet.prototype, PointEventsMixin);\ndeepExtend(Bullet.prototype, NoteMixin);\n\nexport default Bullet;","\nimport CategoricalChart from '../categorical-chart';\nimport BarChart from '../bar-chart/bar-chart';\nimport Bullet from './bullet';\nimport ClusterLayout from '../layout/cluster-layout';\nimport { BAR } from '../constants';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, defined, isArray, isFunction, isObject, setDefaultOptions } from '../../common';\n\nclass BulletChart extends CategoricalChart {\n constructor(plotArea, options) {\n\n wrapData(options);\n\n super(plotArea, options);\n }\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n plotRange(point) {\n const series = point.series;\n const valueAxis = this.seriesValueAxis(series);\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { options, children } = this;\n const value = data.valueFields;\n\n let bulletOptions = deepExtend({\n vertical: !options.invertAxes,\n overlay: series.overlay,\n categoryIx: categoryIx,\n invertAxes: options.invertAxes\n }, series);\n\n let color = data.fields.color || series.color;\n bulletOptions = this.evalPointOptions(\n bulletOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (isFunction(series.color)) {\n color = bulletOptions.color;\n }\n\n const bullet = new Bullet(value, bulletOptions);\n bullet.color = color;\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n cluster.append(bullet);\n\n return bullet;\n }\n\n updateRange(value, fields) {\n const { current, target } = value;\n const axisName = fields.series.axis;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, current, target);\n axisRange.max = Math.max(axisRange.max, current, target);\n }\n }\n\n formatPointValue(point, format) {\n return this.chartService.format.auto(format, point.value.current, point.value.target);\n }\n\n pointValue(data) {\n return data.valueFields.current;\n }\n\n aboveAxis(point) {\n const value = point.value.current;\n\n return value > 0;\n }\n\n createAnimation() {\n const points = this.points;\n\n this._setAnimationOptions();\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n point.options.animation = this.options.animation;\n point.createAnimation();\n }\n }\n}\n\nBulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\nsetDefaultOptions(BulletChart, {\n animation: {\n type: BAR\n }\n});\n\nfunction wrapData(options) {\n const series = options.series;\n\n for (let i = 0; i < series.length; i++) {\n const seriesItem = series[i];\n const data = seriesItem.data;\n if (data && !isArray(data[0]) && !isObject(data[0])) {\n seriesItem.data = [ data ];\n }\n }\n}\n\nexport default BulletChart;","import { Color } from '@progress/kendo-drawing';\n\nimport { Class, defined, deepExtend, setDefaultOptions, valueOrDefault, getSpacing, styleValue } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nclass BaseTooltip extends Class {\n constructor(chartService, options) {\n super();\n\n this.chartService = chartService;\n this.options = deepExtend({}, this.options, options);\n }\n\n getStyle(options, point) {\n let { background, border: { color: border } } = options;\n\n if (point) {\n const pointColor = point.color || point.options.color;\n background = valueOrDefault(background, pointColor);\n border = valueOrDefault(border, pointColor);\n }\n\n const padding = getSpacing(options.padding || {}, \"auto\");\n\n return {\n backgroundColor: background,\n borderColor: border,\n font: options.font,\n color: options.color,\n opacity: options.opacity,\n borderWidth: styleValue(options.border.width),\n paddingTop: styleValue(padding.top),\n paddingBottom: styleValue(padding.bottom),\n paddingLeft: styleValue(padding.left),\n paddingRight: styleValue(padding.right)\n };\n }\n\n show(options, tooltipOptions, point) {\n options.format = tooltipOptions.format;\n\n const style = this.getStyle(tooltipOptions, point);\n options.style = style;\n\n const background = new Color(style.backgroundColor);\n if (!defined(tooltipOptions.color) && !background.isDark()) {\n options.className = \"k-chart-tooltip-inverse\";\n }\n\n this.chartService.notify(SHOW_TOOLTIP, options);\n\n this.visible = true;\n }\n\n hide() {\n if (this.chartService) {\n this.chartService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n }\n\n destroy() {\n delete this.chartService;\n }\n}\n\nsetDefaultOptions(BaseTooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n\nexport default BaseTooltip;\n","import BaseTooltip from '../tooltip/base-tooltip';\n\nimport { HIDE_TOOLTIP } from '../constants';\nimport { TOP, BOTTOM, LEFT, RIGHT, CENTER, DATE } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nclass CrosshairTooltip extends BaseTooltip {\n constructor(chartService, crosshair, options) {\n super(chartService, options);\n\n this.crosshair = crosshair;\n this.formatService = chartService.format;\n this.initAxisName();\n }\n\n initAxisName() {\n const axis = this.crosshair.axis;\n const plotArea = axis.plotArea;\n let name;\n if (plotArea.categoryAxis) {\n name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n } else {\n name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n }\n this.axisName = name;\n }\n\n showAt(point) {\n const { crosshair: { axis }, options } = this;\n let value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n let formattedValue = value;\n\n if (options.format) {\n formattedValue = this.formatService.auto(options.format, value);\n } else if (axis.options.type === DATE) {\n formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n }\n\n this.show({\n point: point,\n anchor: this.getAnchor(),\n crosshair: this.crosshair,\n value: formattedValue,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n }, this.options);\n }\n\n hide() {\n this.chartService.notify(HIDE_TOOLTIP, {\n crosshair: this.crosshair,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n });\n }\n\n getAnchor() {\n const { crosshair, options: { position, padding } } = this;\n const vertical = !crosshair.axis.options.vertical;\n const lineBox = crosshair.line.bbox();\n let horizontalAlign, verticalAlign, point;\n\n if (vertical) {\n horizontalAlign = CENTER;\n if (position === BOTTOM) {\n verticalAlign = TOP;\n point = lineBox.bottomLeft().translate(0, padding);\n } else {\n verticalAlign = BOTTOM;\n point = lineBox.topLeft().translate(0, -padding);\n }\n } else {\n verticalAlign = CENTER;\n if (position === LEFT) {\n horizontalAlign = RIGHT;\n point = lineBox.topLeft().translate(-padding, 0);\n } else {\n horizontalAlign = LEFT;\n point = lineBox.topRight().translate(padding, 0);\n }\n }\n\n return {\n point: point,\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n}\n\nsetDefaultOptions(CrosshairTooltip, {\n padding: 10\n});\n\nexport default CrosshairTooltip;\n\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, CategoryAxis } from '../../core';\nimport CrosshairTooltip from './crosshair-tooltip';\n\nimport { BLACK, X, Y } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nclass Crosshair extends ChartElement {\n constructor(chartService, axis, options) {\n super(options);\n\n this.axis = axis;\n this.stickyMode = axis instanceof CategoryAxis;\n\n const tooltipOptions = this.options.tooltip;\n\n if (tooltipOptions.visible) {\n this.tooltip = new CrosshairTooltip(chartService, this,\n deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n );\n }\n }\n\n showAt(point) {\n this.point = point;\n this.moveLine();\n this.line.visible(true);\n\n if (this.tooltip) {\n this.tooltip.showAt(point);\n }\n }\n\n hide() {\n this.line.visible(false);\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n }\n\n moveLine() {\n const { axis, point } = this;\n const vertical = axis.options.vertical;\n const box = this.getBox();\n const dim = vertical ? Y : X;\n const lineStart = new geom.Point(box.x1, box.y1);\n let lineEnd;\n\n if (vertical) {\n lineEnd = new geom.Point(box.x2, box.y1);\n } else {\n lineEnd = new geom.Point(box.x1, box.y2);\n }\n\n if (point) {\n if (this.stickyMode) {\n const slot = axis.getSlot(axis.pointCategoryIndex(point));\n lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n } else {\n lineStart[dim] = lineEnd[dim] = point[dim];\n }\n }\n\n this.box = box;\n\n this.line.moveTo(lineStart).lineTo(lineEnd);\n }\n\n getBox() {\n const axis = this.axis;\n const axes = axis.pane.axes;\n const length = axes.length;\n const vertical = axis.options.vertical;\n const box = axis.lineBox().clone();\n const dim = vertical ? X : Y;\n let axisLineBox;\n\n for (let i = 0; i < length; i++) {\n const currentAxis = axes[i];\n if (currentAxis.options.vertical !== vertical) {\n if (!axisLineBox) {\n axisLineBox = currentAxis.lineBox().clone();\n } else {\n axisLineBox.wrap(currentAxis.lineBox());\n }\n }\n }\n\n box[dim + 1] = axisLineBox[dim + 1];\n box[dim + 2] = axisLineBox[dim + 2];\n\n return box;\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options;\n this.line = new draw.Path({\n stroke: {\n color: options.color,\n width: options.width,\n opacity: options.opacity,\n dashType: options.dashType\n },\n visible: false\n });\n\n this.moveLine();\n this.visual.append(this.line);\n }\n\n destroy() {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n super.destroy();\n }\n}\n\nsetDefaultOptions(Crosshair, {\n color: BLACK,\n width: 2,\n zIndex: -1,\n tooltip: {\n visible: false\n }\n});\n\nexport default Crosshair;","import { drawing as draw } from '@progress/kendo-drawing';\nimport { alignPathToPixel } from '../common';\n\nimport { ChartElement } from '../core';\n\nclass ChartContainer extends ChartElement {\n constructor(options, pane) {\n super(options);\n this.pane = pane;\n }\n\n shouldClip() {\n const children = this.children;\n const length = children.length;\n\n for (let i = 0; i < length; i++) {\n if (children[i].options.clip === true) {\n return true;\n }\n }\n return false;\n }\n\n _clipBox() {\n return this.pane.chartsBox();\n }\n\n createVisual() {\n this.visual = new draw.Group({\n zIndex: 0\n });\n\n if (this.shouldClip()) {\n const clipBox = this.clipBox = this._clipBox();\n const clipRect = clipBox.toRect();\n const clipPath = draw.Path.fromRect(clipRect);\n alignPathToPixel(clipPath);\n\n this.visual.clip(clipPath);\n this.unclipLabels();\n }\n }\n\n stackRoot() {\n return this;\n }\n\n unclipLabels() {\n const { children: charts, clipBox } = this;\n\n for (let i = 0; i < charts.length; i++) {\n const points = charts[i].points || {};\n const length = points.length;\n\n for (let j = 0; j < length; j++) {\n const point = points[j];\n if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n if (point.unclipElements) {\n point.unclipElements();\n } else {\n const { label, note } = point;\n\n if (label && label.options.visible) {\n if (label.alignToClipBox) {\n label.alignToClipBox(clipBox);\n }\n label.options.noclip = true;\n }\n\n if (note && note.options.visible) {\n note.options.noclip = true;\n }\n }\n }\n }\n }\n }\n\n destroy() {\n super.destroy();\n\n delete this.parent;\n }\n}\n\nChartContainer.prototype.isStackRoot = true;\n\nexport default ChartContainer;","import { ChartElement, BoxElement, Title, Box } from '../core';\nimport { ChartPane } from './api-elements';\nimport ChartContainer from './chart-container';\n\nimport { PANE_RENDER } from './constants';\nimport { TOP, LEFT, X, Y } from '../common/constants';\nimport { append, deepExtend, isObject, last, setDefaultOptions } from '../common';\n\nclass Pane extends BoxElement {\n constructor(options) {\n super(options);\n\n this.id = paneID();\n\n this.createTitle();\n\n this.content = new ChartElement();\n\n this.chartContainer = new ChartContainer({}, this);\n this.append(this.content);\n\n this.axes = [];\n this.charts = [];\n }\n\n createTitle() {\n let titleOptions = this.options.title;\n if (isObject(titleOptions)) {\n titleOptions = deepExtend({}, titleOptions, {\n align: titleOptions.position,\n position: TOP\n });\n }\n\n this.title = Title.buildTitle(titleOptions, this, Pane.prototype.options.title);\n }\n\n appendAxis(axis) {\n this.content.append(axis);\n this.axes.push(axis);\n axis.pane = this;\n }\n\n appendAxisAt(axis, pos) {\n this.content.append(axis);\n this.axes.splice(pos, 0, axis);\n axis.pane = this;\n }\n\n appendChart(chart) {\n if (this.chartContainer.parent !== this.content) {\n this.content.append(this.chartContainer);\n }\n\n this.charts.push(chart);\n this.chartContainer.append(chart);\n chart.pane = this;\n }\n\n empty() {\n const plotArea = this.parent;\n\n if (plotArea) {\n for (let i = 0; i < this.axes.length; i++) {\n plotArea.removeAxis(this.axes[i]);\n }\n\n for (let i = 0; i < this.charts.length; i++) {\n plotArea.removeChart(this.charts[i]);\n }\n }\n\n this.axes = [];\n this.charts = [];\n\n this.content.destroy();\n this.content.children = [];\n this.chartContainer.children = [];\n }\n\n reflow(targetBox) {\n // Content (such as charts) is rendered, but excluded from reflows\n let content;\n if (last(this.children) === this.content) {\n content = this.children.pop();\n }\n\n super.reflow(targetBox);\n\n if (content) {\n this.children.push(content);\n }\n\n if (this.title) {\n this.contentBox.y1 += this.title.box.height();\n }\n }\n\n visualStyle() {\n const style = super.visualStyle();\n style.zIndex = -10;\n\n return style;\n }\n\n renderComplete() {\n if (this.options.visible) {\n this.createGridLines();\n }\n }\n\n stackRoot() {\n return this;\n }\n\n clipRoot() {\n return this;\n }\n\n createGridLines() {\n const axes = this.axes;\n const allAxes = axes.concat(this.parent.axes);\n const vGridLines = [];\n const hGridLines = [];\n\n // TODO\n // Is full combination really necessary?\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const vertical = axis.options.vertical;\n const gridLines = vertical ? vGridLines : hGridLines;\n for (let j = 0; j < allAxes.length; j++) {\n if (gridLines.length === 0) {\n const altAxis = allAxes[j];\n if (vertical !== altAxis.options.vertical) {\n append(gridLines, axis.createGridLines(altAxis));\n }\n }\n }\n }\n }\n\n refresh() {\n this.visual.clear();\n\n this.content.parent = null;\n this.content.createGradient = this.createGradient.bind(this);\n this.content.renderVisual();\n this.content.parent = this;\n\n if (this.title) {\n this.visual.append(this.title.visual);\n }\n\n this.visual.append(this.content.visual);\n\n this.renderComplete();\n this.notifyRender();\n }\n\n chartsBox() {\n const axes = this.axes;\n const length = axes.length;\n const chartsBox = new Box();\n\n for (let idx = 0; idx < length; idx++) {\n const axis = axes[idx];\n const axisValueField = axis.options.vertical ? Y : X;\n const lineBox = axis.lineBox();\n chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n }\n\n if (chartsBox.x2 === 0) {\n const allAxes = this.parent.axes;\n const length = allAxes.length;\n\n for (let idx = 0; idx < length; idx++) {\n const axis = allAxes[idx];\n if (!axis.options.vertical) {\n const lineBox = axis.lineBox();\n chartsBox.x1 = lineBox.x1;\n chartsBox.x2 = lineBox.x2;\n }\n }\n }\n return chartsBox;\n }\n\n clipBox() {\n return this.chartContainer.clipBox;\n }\n\n notifyRender() {\n const service = this.getService();\n if (service) {\n service.notify(PANE_RENDER, {\n pane: new ChartPane(this),\n index: this.paneIndex,\n name: this.options.name\n });\n }\n }\n}\n\nlet ID = 1;\n\nfunction paneID() {\n return \"pane\" + ID++;\n}\n\nPane.prototype.isStackRoot = true;\n\nsetDefaultOptions(Pane, {\n zIndex: -1,\n shrinkToFit: true,\n title: {\n align: LEFT\n },\n visible: true\n});\n\nexport default Pane;\n","export default function appendIfNotNull(array, element) {\n if (element !== null) {\n array.push(element);\n }\n}","import { defined } from '../../common';\n\nexport default function segmentVisible(series, fields, index) {\n const visible = fields.visible;\n if (defined(visible)) {\n return visible;\n }\n\n const pointVisibility = series.pointVisibility;\n if (pointVisibility) {\n return pointVisibility[index];\n }\n}\n\n","import { isNumber, isString } from '../../common';\nimport SeriesBinder from '../series-binder';\nimport segmentVisible from './segment-visible';\n\nexport default function bindSegments(series) {\n const data = series.data;\n const points = [];\n let sum = 0;\n let count = 0;\n\n for (let idx = 0; idx < data.length; idx++) {\n const pointData = SeriesBinder.current.bindPoint(series, idx);\n let value = pointData.valueFields.value;\n\n\n if (isString(value)) {\n value = parseFloat(value);\n }\n\n if (isNumber(value)) {\n pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n pointData.value = Math.abs(value);\n points.push(pointData);\n\n if (pointData.visible) {\n sum += pointData.value;\n }\n\n if (value !== 0) {\n count++;\n }\n } else {\n points.push(null);\n }\n }\n\n return {\n total: sum,\n points: points,\n count: count\n };\n}","export default function equalsIgnoreCase(a, b) {\n if (a && b) {\n return a.toLowerCase() === b.toLowerCase();\n }\n\n return a === b;\n}","import { inArray } from '../../common';\n\nexport default function filterSeriesByType(series, types) {\n const result = [];\n\n const seriesTypes = [].concat(types);\n for (let idx = 0; idx < series.length; idx++) {\n const currentSeries = series[idx];\n if (inArray(currentSeries.type, seriesTypes)) {\n result.push(currentSeries);\n }\n }\n\n return result;\n}","import { parseDate } from '../../date-utils';\nimport { getter } from '../../common';\n\nexport default function getDateField(field, row, intlService) {\n if (row === null) {\n return row;\n }\n\n const key = \"_date_\" + field;\n let value = row[key];\n\n if (!value) {\n value = parseDate(intlService, getter(field, true)(row));\n row[key] = value;\n }\n\n return value;\n}","import equalsIgnoreCase from './equals-ignore-case';\n\nimport { DATE } from '../../common/constants';\n\nexport default function isDateAxis(axisOptions, sampleCategory) {\n const type = axisOptions.type;\n const dateCategory = sampleCategory instanceof Date;\n\n return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n}","export default function singleItemOrArray(array) {\n return array.length === 1 ? array[0] : array;\n}","import { INTERPOLATE, ZERO } from '../constants';\nimport { convertableToNumber } from '../../common';\nimport SeriesBinder from '../series-binder';\n\nconst AREA_REGEX = /area/i;\n\nfunction seriesMissingValues(series) {\n if (series.missingValues) {\n return series.missingValues;\n }\n\n return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n}\n\nfunction hasValue(series, item) {\n const fields = SeriesBinder.current.bindPoint(series, null, item);\n const valueFields = fields.valueFields;\n\n for (let field in valueFields) {\n if (convertableToNumber(valueFields[field])) {\n return true;\n }\n }\n}\n\nfunction findNext({ start, dir, min, max, getter, hasItem, series }) {\n let pointHasValue, outPoint;\n let idx = start;\n do {\n idx += dir;\n //aggregating and binding the item takes too much time for large number of categories\n //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n if (hasItem(idx)) {\n outPoint = getter(idx);\n pointHasValue = hasValue(series, outPoint.item);\n }\n } while (min <= idx && idx <= max && !pointHasValue);\n\n if (pointHasValue) {\n return outPoint;\n }\n}\n\nexport default function createOutOfRangePoints(series, range, count, getter, hasItem) {\n const { min, max } = range;\n const hasMinPoint = min > 0 && min < count;\n const hasMaxPoint = max + 1 < count;\n\n if (hasMinPoint || hasMaxPoint) {\n const missingValues = seriesMissingValues(series);\n let minPoint, maxPoint;\n if (missingValues !== INTERPOLATE) {\n if (hasMinPoint) {\n minPoint = getter(min - 1);\n }\n\n if (hasMaxPoint) {\n maxPoint = getter(max + 1);\n }\n } else {\n let outPoint, pointHasValue;\n if (hasMinPoint) {\n outPoint = getter(min - 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n minPoint = findNext({\n start: min,\n dir: -1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n minPoint = outPoint;\n }\n }\n\n if (hasMaxPoint) {\n outPoint = getter(max + 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n maxPoint = findNext({\n start: max,\n dir: 1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n maxPoint = outPoint;\n }\n }\n }\n\n if (minPoint) {\n series._outOfRangeMinPoint = minPoint;\n }\n\n if (maxPoint) {\n series._outOfRangeMaxPoint = maxPoint;\n }\n }\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box } from '../../core';\nimport Crosshair from '../crosshair/crosshair';\nimport Pane from '../pane';\nimport { hasValue } from '../utils';\n\nimport { WHITE, BLACK, X, Y, COORD_PRECISION, TOP, BOTTOM, LEFT, RIGHT, START, END } from '../../common/constants';\nimport { append, deepExtend, defined, getSpacing, getTemplate, inArray, isFunction, isString, limitValue, round, setDefaultOptions } from '../../common';\n\nclass PlotAreaBase extends ChartElement {\n constructor(series, options, chartService) {\n super(options);\n\n this.initFields(series, options);\n this.series = series;\n this.initSeries();\n this.charts = [];\n this.options.legend = this.options.legend || {};\n this.options.legend.items = [];\n this.axes = [];\n this.crosshairs = [];\n this.chartService = chartService;\n this.originalOptions = options;\n\n this.createPanes();\n this.render();\n this.createCrosshairs();\n }\n\n initFields() { }\n\n initSeries() {\n const series = this.series;\n\n for (let i = 0; i < series.length; i++) {\n series[i].index = i;\n }\n }\n\n createPanes() {\n const titleOptions = this.options.title || {};\n const paneDefaults = this.options.paneDefaults;\n const paneOptions = this.options.panes || [];\n const panesLength = Math.max(paneOptions.length, 1);\n const panes = [];\n\n const defaults = deepExtend({\n title: {\n color: titleOptions.color\n }\n }, paneDefaults);\n\n for (let i = 0; i < panesLength; i++) {\n const options = deepExtend({}, defaults, paneOptions[i]);\n if (isString(options.title)) {\n options.title = deepExtend({ text: options.title }, defaults.title);\n }\n\n const currentPane = new Pane(options);\n currentPane.paneIndex = i;\n\n panes.push(currentPane);\n this.append(currentPane);\n }\n\n this.panes = panes;\n }\n\n crosshairOptions(axis) {\n return axis.options.crosshair;\n }\n\n createCrosshairs(panes = this.panes) {\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n for (let j = 0; j < pane.axes.length; j++) {\n const axis = pane.axes[j];\n const options = this.crosshairOptions(axis);\n if (options && options.visible) {\n const currentCrosshair = new Crosshair(this.chartService, axis, options);\n\n this.crosshairs.push(currentCrosshair);\n pane.content.append(currentCrosshair);\n }\n }\n }\n }\n\n removeCrosshairs(pane) {\n const crosshairs = this.crosshairs;\n const axes = pane.axes;\n\n for (let i = crosshairs.length - 1; i >= 0; i--) {\n for (let j = 0; j < axes.length; j++) {\n if (crosshairs[i].axis === axes[j]) {\n crosshairs.splice(i, 1);\n break;\n }\n }\n }\n }\n\n hideCrosshairs() {\n const crosshairs = this.crosshairs;\n for (let idx = 0; idx < crosshairs.length; idx++) {\n crosshairs[idx].hide();\n }\n }\n\n findPane(name) {\n const panes = this.panes;\n let matchingPane;\n\n for (let i = 0; i < panes.length; i++) {\n if (panes[i].options.name === name) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane || panes[0];\n }\n\n findPointPane(point) {\n const panes = this.panes;\n let matchingPane;\n\n for (let i = 0; i < panes.length; i++) {\n if (panes[i].box.containsPoint(point)) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane;\n }\n\n appendAxis(axis) {\n const pane = this.findPane(axis.options.pane);\n\n pane.appendAxis(axis);\n this.axes.push(axis);\n axis.plotArea = this;\n }\n\n removeAxis(axisToRemove) {\n const filteredAxes = [];\n\n for (let i = 0; i < this.axes.length; i++) {\n const axis = this.axes[i];\n if (axisToRemove !== axis) {\n filteredAxes.push(axis);\n } else {\n axis.destroy();\n }\n }\n\n this.axes = filteredAxes;\n }\n\n appendChart(chart, pane) {\n this.charts.push(chart);\n if (pane) {\n pane.appendChart(chart);\n } else {\n this.append(chart);\n }\n }\n\n removeChart(chartToRemove) {\n const filteredCharts = [];\n\n for (let i = 0; i < this.charts.length; i++) {\n const chart = this.charts[i];\n if (chart !== chartToRemove) {\n filteredCharts.push(chart);\n } else {\n chart.destroy();\n }\n }\n\n this.charts = filteredCharts;\n }\n\n addToLegend(series) {\n const count = series.length;\n const legend = this.options.legend;\n const labels = legend.labels || {};\n const inactiveItems = legend.inactiveItems || {};\n const inactiveItemsLabels = inactiveItems.labels || {};\n const data = [];\n\n for (let i = 0; i < count; i++) {\n const currentSeries = series[i];\n const seriesVisible = currentSeries.visible !== false;\n if (currentSeries.visibleInLegend === false) {\n continue;\n }\n\n let text = currentSeries.name;\n const labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n if (labelTemplate) {\n text = labelTemplate({\n text: hasValue(text) ? text : \"\",\n series: currentSeries\n });\n }\n\n const defaults = currentSeries._defaults;\n let color = currentSeries.color;\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n let itemLabelOptions, markerColor;\n if (seriesVisible) {\n itemLabelOptions = {};\n markerColor = color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = inactiveItems.markers.color;\n }\n\n if (hasValue(text) && text !== \"\") {\n data.push({\n text: text,\n labels: itemLabelOptions,\n markerColor: markerColor,\n series: currentSeries,\n active: seriesVisible\n });\n }\n }\n\n append(legend.items, data);\n }\n\n groupAxes(panes) {\n const xAxes = [];\n const yAxes = [];\n\n for (let paneIx = 0; paneIx < panes.length; paneIx++) {\n const paneAxes = panes[paneIx].axes;\n for (let axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n const axis = paneAxes[axisIx];\n if (axis.options.vertical) {\n yAxes.push(axis);\n } else {\n xAxes.push(axis);\n }\n }\n }\n\n return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n }\n\n groupSeriesByPane() {\n const series = this.series;\n const seriesByPane = {};\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const pane = this.seriesPaneName(currentSeries);\n\n if (seriesByPane[pane]) {\n seriesByPane[pane].push(currentSeries);\n } else {\n seriesByPane[pane] = [ currentSeries ];\n }\n }\n\n return seriesByPane;\n }\n\n filterVisibleSeries(series) {\n const result = [];\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n if (currentSeries.visible !== false) {\n result.push(currentSeries);\n }\n }\n\n return result;\n }\n\n reflow(targetBox) {\n const options = this.options.plotArea;\n const panes = this.panes;\n const margin = getSpacing(options.margin);\n\n this.box = targetBox.clone().unpad(margin);\n this.reflowPanes();\n\n this.detachLabels();\n this.reflowAxes(panes);\n this.reflowCharts(panes);\n }\n\n redraw(panes) {\n const panesArray = [].concat(panes);\n this.initSeries();\n\n //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n const root = this.getRoot();\n if (root) {\n root.cleanGradients();\n }\n\n for (let i = 0; i < panesArray.length; i++) {\n this.removeCrosshairs(panesArray[i]);\n panesArray[i].empty();\n }\n\n this.render(panesArray);\n this.detachLabels();\n this.reflowAxes(this.panes);\n this.reflowCharts(panesArray);\n\n this.createCrosshairs(panesArray);\n\n for (let i = 0; i < panesArray.length; i++) {\n panesArray[i].refresh();\n }\n }\n\n axisCrossingValues(axis, crossingAxes) {\n const options = axis.options;\n const crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n const valuesToAdd = crossingAxes.length - crossingValues.length;\n const defaultValue = crossingValues[0] || 0;\n\n for (let i = 0; i < valuesToAdd; i++) {\n crossingValues.push(defaultValue);\n }\n\n return crossingValues;\n }\n\n alignAxisTo(axis, targetAxis, crossingValue, targetCrossingValue) {\n const slot = axis.getSlot(crossingValue, crossingValue, true);\n const slotEdge = axis.options.reverse ? 2 : 1;\n const targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n const targetEdge = targetAxis.options.reverse ? 2 : 1;\n const axisBox = axis.box.translate(\n targetSlot[X + targetEdge] - slot[X + slotEdge],\n targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n );\n\n if (axis.pane !== targetAxis.pane) {\n axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n }\n\n axis.reflow(axisBox);\n }\n\n alignAxes(xAxes, yAxes) {\n const xAnchor = xAxes[0];\n const yAnchor = yAxes[0];\n const xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n const yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n const leftAnchors = {};\n const rightAnchors = {};\n const topAnchors = {};\n const bottomAnchors = {};\n\n for (let i = 0; i < yAxes.length; i++) {\n const axis = yAxes[i];\n const pane = axis.pane;\n const paneId = pane.id;\n const visible = axis.options.visible !== false;\n\n // Locate pane anchor, if any, and use its axisCrossingValues\n const anchor = paneAnchor(xAxes, pane) || xAnchor;\n let anchorCrossings = xAnchorCrossings;\n\n if (anchor !== xAnchor) {\n anchorCrossings = this.axisCrossingValues(anchor, yAxes);\n }\n\n this.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n // Push the axis to the left the previous y-axis so they don't overlap\n if (leftAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(leftAnchors[paneId].box, LEFT)\n .translate(-axis.options.margin, 0)\n );\n }\n\n if (visible) {\n leftAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n // Flip the labels on the right if we're at the right end of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n\n this.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis to the right the previous y-axis so they don't overlap\n if (rightAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(rightAnchors[paneId].box, RIGHT)\n .translate(axis.options.margin, 0)\n );\n }\n\n if (visible) {\n rightAnchors[paneId] = axis;\n }\n }\n\n if (i !== 0 && yAnchor.pane === axis.pane) {\n axis.alignTo(yAnchor);\n axis.reflow(axis.box);\n }\n }\n\n for (let i = 0; i < xAxes.length; i++) {\n const axis = xAxes[i];\n const pane = axis.pane;\n const paneId = pane.id;\n const visible = axis.options.visible !== false;\n\n // Locate pane anchor and use its axisCrossingValues\n const anchor = paneAnchor(yAxes, pane) || yAnchor;\n let anchorCrossings = yAnchorCrossings;\n if (anchor !== yAnchor) {\n anchorCrossings = this.axisCrossingValues(anchor, xAxes);\n }\n\n this.alignAxisTo(axis, anchor, xAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().y1) === round(anchor.lineBox().y1)) {\n // Flip the labels on top if we're at the top of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n this.alignAxisTo(axis, anchor, xAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis above the previous x-axis so they don't overlap\n if (topAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(topAnchors[paneId].box, TOP)\n .translate(0, -axis.options.margin)\n );\n }\n\n if (visible) {\n topAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().y2, COORD_PRECISION) === round(anchor.lineBox().y2, COORD_PRECISION)) {\n // Push the axis below the previous x-axis so they don't overlap\n if (bottomAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(bottomAnchors[paneId].box, BOTTOM)\n .translate(0, axis.options.margin)\n );\n }\n\n if (visible) {\n bottomAnchors[paneId] = axis;\n }\n }\n\n if (i !== 0) {\n axis.alignTo(xAnchor);\n axis.reflow(axis.box);\n }\n }\n }\n\n shrinkAxisWidth(panes) {\n const axes = this.groupAxes(panes).any;\n const axisBox = axisGroupBox(axes);\n let overflowX = 0;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n\n if (currentPane.axes.length > 0) {\n overflowX = Math.max(\n overflowX,\n axisBox.width() - currentPane.contentBox.width()\n );\n }\n }\n\n if (overflowX !== 0) {\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n\n if (!currentAxis.options.vertical) {\n currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n }\n }\n }\n }\n\n shrinkAxisHeight(panes) {\n let shrinked;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n const axes = currentPane.axes;\n const overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n if (overflowY !== 0) {\n for (let j = 0; j < axes.length; j++) {\n const currentAxis = axes[j];\n\n if (currentAxis.options.vertical) {\n currentAxis.reflow(\n currentAxis.box.shrink(0, overflowY)\n );\n }\n }\n shrinked = true;\n }\n }\n\n return shrinked;\n }\n\n fitAxes(panes) {\n const axes = this.groupAxes(panes).any;\n let offsetX = 0;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n const paneAxes = currentPane.axes;\n const paneBox = currentPane.contentBox;\n\n if (paneAxes.length > 0) {\n const axisBox = axisGroupBox(paneAxes);\n // OffsetY is calculated and applied per pane\n const offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n // OffsetX is calculated and applied globally\n offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n\n for (let j = 0; j < paneAxes.length; j++) {\n const currentAxis = paneAxes[j];\n\n currentAxis.reflow(\n currentAxis.box.translate(0, offsetY)\n );\n }\n }\n }\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n\n currentAxis.reflow(\n currentAxis.box.translate(offsetX, 0)\n );\n }\n }\n\n reflowAxes(panes) {\n const axes = this.groupAxes(panes);\n\n for (let i = 0; i < panes.length; i++) {\n this.reflowPaneAxes(panes[i]);\n }\n\n if (axes.x.length > 0 && axes.y.length > 0) {\n this.alignAxes(axes.x, axes.y);\n this.shrinkAxisWidth(panes);\n\n this.autoRotateAxisLabels(axes);\n\n this.alignAxes(axes.x, axes.y);\n if (this.shrinkAxisWidth(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.shrinkAxisHeight(panes);\n this.alignAxes(axes.x, axes.y);\n\n if (this.shrinkAxisHeight(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.fitAxes(panes);\n }\n }\n\n autoRotateAxisLabels(groupedAxes) {\n const { panes } = this;\n const axes = allPaneAxes(panes);\n let rotated;\n\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n if (axis.autoRotateLabels()) {\n rotated = true;\n }\n }\n\n if (rotated) {\n for (let idx = 0; idx < panes.length; idx++) {\n this.reflowPaneAxes(panes[idx]);\n }\n\n if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n this.alignAxes(groupedAxes.x, groupedAxes.y);\n this.shrinkAxisWidth(panes);\n }\n }\n }\n\n reflowPaneAxes(pane) {\n const axes = pane.axes;\n const length = axes.length;\n\n if (length > 0) {\n for (let i = 0; i < length; i++) {\n axes[i].reflow(pane.contentBox);\n }\n }\n }\n\n reflowCharts(panes) {\n const charts = this.charts;\n const count = charts.length;\n const box = this.box;\n\n for (let i = 0; i < count; i++) {\n const chartPane = charts[i].pane;\n if (!chartPane || inArray(chartPane, panes)) {\n charts[i].reflow(box);\n }\n }\n }\n\n reflowPanes() {\n const { box, panes } = this;\n const panesLength = panes.length;\n let remainingHeight = box.height();\n let remainingPanes = panesLength;\n let autoHeightPanes = 0;\n let top = box.y1;\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n const height = currentPane.options.height;\n\n currentPane.options.width = box.width();\n\n if (!currentPane.options.height) {\n autoHeightPanes++;\n } else {\n if (height.indexOf && height.indexOf(\"%\")) {\n const percents = parseInt(height, 10) / 100;\n currentPane.options.height = percents * box.height();\n }\n\n currentPane.reflow(box.clone());\n\n remainingHeight -= currentPane.options.height;\n }\n }\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n\n if (!currentPane.options.height) {\n currentPane.options.height = remainingHeight / autoHeightPanes;\n }\n }\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n const paneBox = box\n .clone()\n .move(box.x1, top);\n\n currentPane.reflow(paneBox);\n\n remainingPanes--;\n top += currentPane.options.height;\n }\n }\n\n backgroundBox() {\n const axes = this.axes;\n const axesCount = axes.length;\n let box;\n\n for (let i = 0; i < axesCount; i++) {\n const axisA = axes[i];\n\n for (let j = 0; j < axesCount; j++) {\n const axisB = axes[j];\n\n if (axisA.options.vertical !== axisB.options.vertical) {\n const lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n if (!box) {\n box = lineBox;\n } else {\n box = box.wrap(lineBox);\n }\n }\n }\n }\n\n return box || this.box;\n }\n\n chartsBoxes() {\n const panes = this.panes;\n const boxes = [];\n\n for (let idx = 0; idx < panes.length; idx++) {\n boxes.push(panes[idx].chartsBox());\n }\n\n return boxes;\n }\n\n addBackgroundPaths(multipath) {\n const boxes = this.chartsBoxes();\n for (let idx = 0; idx < boxes.length; idx++) {\n multipath.paths.push(draw.Path.fromRect(boxes[idx].toRect()));\n }\n }\n\n backgroundContainsPoint(point) {\n const boxes = this.chartsBoxes();\n for (let idx = 0; idx < boxes.length; idx++) {\n if (boxes[idx].containsPoint(point)) {\n return true;\n }\n }\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options.plotArea;\n let { opacity, background, border = {} } = options;\n if (isTransparent(background)) {\n background = WHITE;\n opacity = 0;\n }\n\n const bg = this._bgVisual = new draw.MultiPath({\n fill: {\n color: background,\n opacity: opacity\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n zIndex: -1\n });\n\n this.addBackgroundPaths(bg);\n\n this.appendVisual(bg);\n }\n\n pointsByCategoryIndex(categoryIndex) {\n const charts = this.charts;\n const result = [];\n\n if (categoryIndex !== null) {\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n if (chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n const points = charts[i].categoryPoints[categoryIndex];\n if (points && points.length) {\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && defined(point.value) && point.value !== null) {\n result.push(point);\n }\n }\n }\n }\n }\n\n return result;\n }\n\n pointsBySeriesIndex(seriesIndex) {\n return this.filterPoints(function(point) {\n return point.series.index === seriesIndex;\n });\n }\n\n pointsBySeriesName(name) {\n return this.filterPoints(function(point) {\n return point.series.name === name;\n });\n }\n\n filterPoints(callback) {\n const charts = this.charts;\n const result = [];\n\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n const points = chart.points;\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && point.visible !== false && callback(point)) {\n result.push(point);\n }\n }\n }\n\n return result;\n }\n\n findPoint(callback) {\n const charts = this.charts;\n\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n const points = chart.points;\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && point.visible !== false && callback(point)) {\n return point;\n }\n }\n }\n }\n\n paneByPoint(point) {\n const panes = this.panes;\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n if (pane.box.containsPoint(point)) {\n return pane;\n }\n }\n }\n\n detachLabels() {\n const axes = this.groupAxes(this.panes);\n const xAxes = axes.x;\n const yAxes = axes.y;\n\n this.detachAxisGroupLabels(yAxes, xAxes);\n this.detachAxisGroupLabels(xAxes, yAxes);\n }\n\n detachAxisGroupLabels(axes, crossingAxes) {\n let labelAxisCount = 0;\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const pane = axis.pane;\n const anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n const axisIndex = i + labelAxisCount;\n const labelAxis = this.createLabelAxis(axis, axisIndex, anchor);\n\n if (labelAxis) {\n labelAxisCount++;\n\n const pos = pane.axes.indexOf(axis) + labelAxisCount;\n pane.appendAxisAt(labelAxis, pos);\n }\n }\n }\n\n createLabelAxis(axis, axisIndex, anchor) {\n const labelOptions = axis.options.labels;\n const position = labelOptions.position;\n const onAxis = position !== END && position !== START;\n const visible = labelOptions.visible;\n\n if (onAxis || visible === false) {\n return null;\n }\n\n const allAxes = this.groupAxes(this.panes);\n const crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n const anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n const end = position === END;\n const range = anchor.range();\n const edge = end ? range.max : range.min;\n const crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n if (crossingValue - edge === 0) {\n return null;\n }\n\n anchorCrossings.splice(axisIndex + 1, 0, edge);\n anchor.options.axisCrossingValues = anchorCrossings;\n\n const labelAxis = axis.clone();\n axis.clear();\n\n labelAxis.options.name = undefined;\n labelAxis.options.line.visible = false;\n\n labelAxis.options.crosshair = undefined;\n labelAxis.options.notes = undefined;\n labelAxis.options.plotBands = undefined;\n\n return labelAxis;\n }\n}\n\nfunction isSingleAxis(axis) {\n return !axis.pane.axes.some((a) =>\n a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false\n );\n}\n\nfunction axisGroupBox(axes) {\n const length = axes.length;\n let box;\n\n for (let i = 0; i < length; i++) {\n const axis = axes[i];\n const visible = axis.options.visible !== false;\n if (visible || isSingleAxis(axis)) {\n const axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n if (!box) {\n box = axisBox.clone();\n } else {\n box.wrap(axisBox);\n }\n }\n }\n\n return box || new Box();\n}\n\nfunction paneAnchor(axes, pane) {\n for (let i = 0; i < axes.length; i++) {\n const anchor = axes[i];\n if (anchor && anchor.pane === pane) {\n return anchor;\n }\n }\n}\n\nfunction isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}\n\nconst allPaneAxes = (panes) => panes.reduce((acc, pane) => acc.concat(pane.axes), []);\n\nsetDefaultOptions(PlotAreaBase, {\n series: [],\n plotArea: {\n margin: {}\n },\n background: \"\",\n border: {\n color: BLACK,\n width: 0\n },\n paneDefaults: {\n title: {}\n },\n legend: {\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n }\n});\n\nexport default PlotAreaBase;\n","import { PLOT_AREA_HOVER, PLOT_AREA_CLICK } from '../constants';\n\nconst PlotAreaEventsMixin = {\n hover: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n },\n\n click: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n }\n};\n\nexport default PlotAreaEventsMixin;","import Aggregates from './aggregates';\n\nimport { Class, defined, inArray, isArray, isFunction, isNumber, isObject } from '../../common';\n\nclass SeriesAggregator extends Class {\n constructor(series, binder, defaultAggregates) {\n super();\n\n const canonicalFields = binder.canonicalFields(series);\n const valueFields = binder.valueFields(series);\n const sourceFields = binder.sourceFields(series, canonicalFields);\n const seriesFields = this._seriesFields = [];\n const defaults = defaultAggregates.query(series.type);\n const rootAggregate = series.aggregate || defaults;\n\n this._series = series;\n this._binder = binder;\n\n for (let i = 0; i < canonicalFields.length; i++) {\n const field = canonicalFields[i];\n let fieldAggregate;\n\n if (isObject(rootAggregate)) {\n fieldAggregate = rootAggregate[field];\n } else if (i === 0 || inArray(field, valueFields)) {\n fieldAggregate = rootAggregate;\n } else {\n break;\n }\n\n if (fieldAggregate) {\n seriesFields.push({\n canonicalName: field,\n name: sourceFields[i],\n transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n });\n }\n }\n }\n\n aggregatePoints(srcPoints, group) {\n const { _series: series, _seriesFields: seriesFields } = this;\n const data = this._bindPoints(srcPoints || []);\n const firstDataItem = data.dataItems[0];\n let result = {};\n\n if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n const fn = function() {};\n fn.prototype = firstDataItem;\n result = new fn();\n }\n\n for (let i = 0; i < seriesFields.length; i++) {\n const field = seriesFields[i];\n const srcValues = this._bindField(data.values, field.canonicalName);\n const value = field.transform(srcValues, series, data.dataItems, group);\n\n if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n result = value;\n break;\n } else {\n if (defined(value)) {\n setValue(field.name, result, value);\n }\n }\n }\n\n return result;\n }\n\n _bindPoints(points) {\n const { _binder: binder, _series: series } = this;\n const values = [];\n const dataItems = [];\n\n for (let i = 0; i < points.length; i++) {\n const pointIx = points[i];\n\n values.push(binder.bindPoint(series, pointIx));\n dataItems.push(series.data[pointIx]);\n }\n\n return {\n values: values,\n dataItems: dataItems\n };\n }\n\n _bindField(data, field) {\n const values = [];\n const count = data.length;\n\n for (let i = 0; i < count; i++) {\n const item = data[i];\n const valueFields = item.valueFields;\n let value;\n\n if (defined(valueFields[field])) {\n value = valueFields[field];\n } else {\n value = item.fields[field];\n }\n\n values.push(value);\n }\n\n return values;\n }\n}\n\nfunction setValue(fieldName, target, value) {\n let parentObj = target;\n let field = fieldName;\n\n if (fieldName.indexOf(\".\") > -1) {\n const parts = fieldName.split(\".\");\n\n while (parts.length > 1) {\n field = parts.shift();\n if (!defined(parentObj[field])) {\n parentObj[field] = {};\n }\n parentObj = parentObj[field];\n }\n field = parts.shift();\n }\n\n parentObj[field] = value;\n}\n\nexport default SeriesAggregator;","import { Class } from '../../common';\n\nclass DefaultAggregates extends Class {\n constructor() {\n super();\n\n this._defaults = {};\n }\n\n register(seriesTypes, aggregates) {\n for (let i = 0; i < seriesTypes.length; i++) {\n this._defaults[seriesTypes[i]] = aggregates;\n }\n }\n\n query(seriesType) {\n return this._defaults[seriesType];\n }\n}\n\nDefaultAggregates.current = new DefaultAggregates();\n\nexport default DefaultAggregates;","import Bar from '../bar-chart/bar';\nimport BarLabel from '../bar-chart/bar-label';\n\nimport { deepExtend, getTemplate } from '../../common';\n\nclass RangeBar extends Bar {\n createLabel() {\n const labels = this.options.labels;\n const fromOptions = deepExtend({}, labels, labels.from);\n const toOptions = deepExtend({}, labels, labels.to);\n\n if (fromOptions.visible) {\n this.labelFrom = this._createLabel(fromOptions);\n this.append(this.labelFrom);\n }\n\n if (toOptions.visible) {\n this.labelTo = this._createLabel(toOptions);\n this.append(this.labelTo);\n }\n }\n\n _createLabel(options) {\n const labelTemplate = getTemplate(options);\n const pointData = this.pointData();\n\n let labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(options.format);\n }\n\n return new BarLabel(labelText,\n deepExtend({\n vertical: this.options.vertical\n },\n options\n ), pointData);\n }\n\n reflow(targetBox) {\n this.render();\n\n const { labelFrom, labelTo, value } = this;\n\n this.box = targetBox;\n\n if (labelFrom) {\n labelFrom.options.aboveAxis = value.from > value.to;\n labelFrom.reflow(targetBox);\n }\n\n if (labelTo) {\n labelTo.options.aboveAxis = value.to > value.from;\n labelTo.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n }\n}\n\nRangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n labels: {\n format: \"{0} - {1}\"\n },\n tooltip: {\n format: \"{1}\"\n }\n});\n\nexport default RangeBar;","import BarChart from '../bar-chart/bar-chart';\nimport RangeBar from './range-bar';\nimport CategoricalChart from '../categorical-chart';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\n\nclass RangeBarChart extends BarChart {\n pointType() {\n return RangeBar;\n }\n\n pointValue(data) {\n return data.valueFields;\n }\n\n formatPointValue(point, format) {\n if (point.value.from === null && point.value.to === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value.from, point.value.to);\n }\n\n plotRange(point) {\n if (!point) {\n return 0;\n }\n\n return [ point.value.from, point.value.to ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n const { from, to } = value;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (value !== null && isNumber(from) && isNumber(to)) {\n axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, from);\n axisRange.max = Math.max(axisRange.max, from);\n\n axisRange.min = Math.min(axisRange.min, to);\n axisRange.max = Math.max(axisRange.max, to);\n }\n }\n\n aboveAxis(point) {\n const value = point.value;\n return value.from < value.to;\n }\n}\n\nRangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\nexport default RangeBarChart;","import LinePoint from '../line-chart/line-point';\n\nclass RangeLinePoint extends LinePoint {\n aliasFor() {\n return this.parent;\n }\n}\n\nexport default RangeLinePoint;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport RangeLinePoint from './range-line-point';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\nimport { WHITE, CIRCLE, HIGHLIGHT_ZINDEX, LEFT, RIGHT, BOTTOM, CENTER } from '../../common/constants';\nimport { deepExtend, valueOrDefault, getSpacing } from '../../common';\n\nconst AUTO = 'auto';\nconst DEFAULT_FROM_FORMAT = '{0}';\nconst DEFAULT_TO_FORMAT = '{1}';\n\nclass RangeAreaPoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this.initLabelsFormat();\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n const { markers, labels } = this.options;\n const value = this.value;\n\n const fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.from,\n markers: markers.from\n }));\n\n const toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.to,\n markers: markers.to\n }));\n\n this.copyFields(fromPoint);\n this.copyFields(toPoint);\n\n this.append(fromPoint);\n this.append(toPoint);\n }\n\n reflow(targetBox) {\n this.render();\n\n const { from: fromBox, to: toBox } = targetBox;\n\n this.positionLabels(fromBox, toBox);\n\n this.fromPoint.reflow(fromBox);\n this.toPoint.reflow(toBox);\n\n this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n }\n\n createHighlight() {\n const group = new draw.Group();\n group.append(this.fromPoint.createHighlight());\n group.append(this.toPoint.createHighlight());\n\n return group;\n }\n\n highlightVisual() {\n return this.visual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n from: this.fromPoint.highlightVisualArgs(),\n to: this.toPoint.highlightVisualArgs()\n };\n }\n\n tooltipAnchor() {\n const clipBox = this.owner.pane.clipBox();\n const showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n if (showTooltip) {\n const box = this.box;\n const center = box.center();\n const horizontalAlign = LEFT;\n let x, y, verticalAlign;\n\n if (this.options.vertical) {\n x = center.x;\n y = box.y1 - TOOLTIP_OFFSET;\n verticalAlign = BOTTOM;\n } else {\n x = box.x2 + TOOLTIP_OFFSET;\n y = center.y;\n verticalAlign = CENTER;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n unclipElements() {\n this.fromPoint.unclipElements();\n this.toPoint.unclipElements();\n }\n\n initLabelsFormat() {\n const labels = this.options.labels;\n if (!labels.format) {\n if (!labels.from || !labels.from.format) {\n labels.from = Object.assign({}, labels.from, {\n format: DEFAULT_FROM_FORMAT\n });\n }\n\n if (!labels.to || !labels.to.format) {\n labels.to = Object.assign({}, labels.to, {\n format: DEFAULT_TO_FORMAT\n });\n }\n }\n }\n\n positionLabels(fromBox, toBox) {\n const { labels, vertical } = this.options;\n\n if (labels.position === AUTO) {\n let fromLabelPosition, toLabelPosition;\n if (vertical) {\n if (toBox.y1 <= fromBox.y1) {\n toLabelPosition = ABOVE;\n fromLabelPosition = BELOW;\n } else {\n toLabelPosition = BELOW;\n fromLabelPosition = ABOVE;\n }\n } else {\n if (toBox.x1 <= fromBox.x1) {\n toLabelPosition = LEFT;\n fromLabelPosition = RIGHT;\n } else {\n toLabelPosition = RIGHT;\n fromLabelPosition = LEFT;\n }\n }\n\n if (!labels.from || !labels.from.position) {\n this.fromPoint.options.labels.position = fromLabelPosition;\n }\n\n if (!labels.to || !labels.to.position) {\n this.toPoint.options.labels.position = toLabelPosition;\n }\n }\n }\n\n copyFields(point) {\n point.dataItem = this.dataItem;\n point.category = this.category;\n point.series = this.series;\n point.color = this.color;\n point.owner = this.owner;\n }\n}\n\ndeepExtend(RangeAreaPoint.prototype, PointEventsMixin);\ndeepExtend(RangeAreaPoint.prototype, NoteMixin);\n\nRangeAreaPoint.prototype.defaults = {\n markers: {\n visible: false,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n position: AUTO\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: WHITE,\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n tooltip: {\n format: '{0} - {1}'\n }\n};\n\nexport default RangeAreaPoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nclass RangeAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n }\n\n return fromSegments;\n }\n\n createStroke(style) {\n const toPath = new draw.Path(style);\n const fromPath = new draw.Path(style);\n\n toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n this.visual.append(toPath);\n this.visual.append(fromPath);\n }\n\n hasStackSegment() {\n return true;\n }\n\n fromPoints() {\n return this.linePoints.map(point => point.fromPoint);\n }\n\n toPoints() {\n return this.linePoints.map(point => point.toPoint);\n }\n}\n\nexport default RangeAreaSegment;","import { CurveProcessor } from '../../core';\n\nimport RangeAreaSegment from './range-area-segment';\n\nclass SplineRangeAreaSegment extends RangeAreaSegment {\n\n createStrokeSegments() {\n return this.createCurveSegments(this.toPoints());\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n }\n\n return fromSegments;\n }\n\n createCurveSegments(points) {\n const curveProcessor = new CurveProcessor();\n\n return curveProcessor.process(this.toGeometryPoints(points));\n }\n\n\n}\n\nexport default SplineRangeAreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport RangeAreaSegment from './range-area-segment';\nimport { deepExtend } from '../../common';\n\nclass StepRangeAreaSegment extends RangeAreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n fromSegments.reverse();\n }\n\n return fromSegments;\n }\n}\n\ndeepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\nexport default StepRangeAreaSegment;","import CategoricalChart from '../categorical-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport RangeAreaPoint from './range-area-point';\nimport RangeAreaSegment from './range-area-segment';\nimport SplineRangeAreaSegment from './spline-range-area-segment';\nimport StepRangeAreaSegment from './step-range-area-segment';\n\nimport { Box } from '../../core';\nimport { ZERO } from '../constants';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\nimport { deepExtend, isFunction } from '../../common';\nimport { hasValue } from '../utils';\n\nclass RangeAreaChart extends CategoricalChart {\n\n render() {\n super.render();\n\n this.renderSegments();\n }\n\n pointType() {\n return RangeAreaPoint;\n }\n\n createPoint(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n let value = data.valueFields;\n\n if (!hasValue(value.from) && !hasValue(value.to)) {\n if (this.seriesMissingValues(series) === ZERO) {\n value = {\n from: 0,\n to: 0\n };\n } else {\n return null;\n }\n }\n\n let pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n let color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new RangeAreaPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = (currentSeries.line || {}).style;\n let segmentType;\n if (style === \"smooth\") {\n segmentType = SplineRangeAreaSegment;\n } else if (style === \"step\") {\n segmentType = StepRangeAreaSegment;\n } else {\n segmentType = RangeAreaSegment;\n }\n\n return new segmentType(linePoints, currentSeries, seriesIx);\n }\n\n plotRange(point, startValue) {\n if (!point) {\n return [ startValue, startValue ];\n }\n\n return [ point.value.from, point.value.to ];\n }\n\n valueSlot(valueAxis, plotRange) {\n const fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n const toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n if (fromSlot && toSlot) {\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n }\n\n pointSlot(categorySlot, valueSlot) {\n const { from, to } = valueSlot;\n let fromSlot, toSlot;\n\n if (this.options.invertAxes) {\n fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n } else {\n fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n }\n\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n\n addValue(data, fields) {\n const valueFields = data.valueFields;\n if (!isNumber(valueFields.from)) {\n valueFields.from = valueFields.to;\n }\n\n if (!isNumber(valueFields.to)) {\n valueFields.to = valueFields.from;\n }\n\n super.addValue(data, fields);\n }\n\n updateRange(value, fields) {\n if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n const axisName = fields.series.axis;\n const axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n const { from, to } = value;\n\n axisRange.min = Math.min(axisRange.min, from, to);\n axisRange.max = Math.max(axisRange.max, from, to);\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format, value.from, value.to);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point) {\n result.push((point.fromPoint || {}).marker);\n result.push((point.toPoint || {}).marker);\n }\n }\n\n return result.concat(this._segments);\n }\n}\n\ndeepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default RangeAreaChart;\n","import Candlestick from '../candlestick-chart/candlestick';\n\nclass OHLCPoint extends Candlestick {\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n const oPoints = [];\n const cPoints = [];\n const lhPoints = [];\n\n const lhSlot = valueAxis.getSlot(value.low, value.high);\n const oSlot = valueAxis.getSlot(value.open, value.open);\n const cSlot = valueAxis.getSlot(value.close, value.close);\n\n oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n const mid = lhSlot.center().x;\n\n oPoints.push([ oSlot.x1, oSlot.y1 ]);\n oPoints.push([ mid, oSlot.y1 ]);\n cPoints.push([ mid, cSlot.y1 ]);\n cPoints.push([ cSlot.x2, cSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y2 ]);\n\n this.lines = [\n oPoints, cPoints, lhPoints\n ];\n\n this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n this.reflowNote();\n }\n\n createBody() {}\n}\n\nexport default OHLCPoint;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport OHLCPoint from './ohlc-point';\n\nclass OHLCChart extends CandlestickChart {\n pointType() {\n return OHLCPoint;\n }\n}\n\nexport default OHLCChart;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { alignPathToPixel, setDefaultOptions } from '../../common';\n\nclass WaterfallSegment extends ChartElement {\n constructor(from, to, series) {\n super();\n\n this.from = from;\n this.to = to;\n this.series = series;\n }\n\n linePoints() {\n const from = this.from;\n const { from: { box: fromBox }, to: { box: toBox } } = this;\n const points = [];\n\n if (from.isVertical) {\n const y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n points.push(\n [ fromBox.x1, y ],\n [ toBox.x2, y ]\n );\n } else {\n const x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n points.push(\n [ x, fromBox.y1 ],\n [ x, toBox.y2 ]\n );\n }\n\n return points;\n }\n\n createVisual() {\n super.createVisual();\n\n const line = this.series.line || {};\n\n const path = draw.Path.fromPoints(this.linePoints(), {\n stroke: {\n color: line.color,\n width: line.width,\n opacity: line.opacity,\n dashType: line.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n}\n\nsetDefaultOptions(WaterfallSegment, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n});\n\nexport default WaterfallSegment;","import BarChart from '../bar-chart/bar-chart';\nimport SeriesBinder from '../series-binder';\nimport WaterfallSegment from './waterfall-segment';\n\nimport categoriesCount from '../utils/categories-count';\n\nimport { isNumber } from '../../common';\n\nclass WaterfallChart extends BarChart {\n render() {\n super.render();\n this.createSegments();\n }\n\n traverseDataPoints(callback) {\n const series = this.options.series;\n const totalCategories = categoriesCount(series);\n const isVertical = !this.options.invertAxes;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n let total = 0;\n let runningTotal = 0;\n\n for (let categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n const data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n const value = data.valueFields.value;\n const summary = data.fields.summary;\n let from = total;\n let to;\n\n if (summary) {\n if (summary.toLowerCase() === \"total\") {\n data.valueFields.value = total;\n from = 0;\n to = total;\n } else {\n data.valueFields.value = runningTotal;\n to = from - runningTotal;\n runningTotal = 0;\n }\n } else if (isNumber(value)) {\n runningTotal += value;\n total += value;\n to = total;\n }\n\n callback(data, {\n category: this.categoryAxis.categoryAt(categoryIx),\n categoryIx: categoryIx,\n series: currentSeries,\n seriesIx: seriesIx,\n total: total,\n runningTotal: runningTotal,\n from: from,\n to: to,\n isVertical: isVertical\n });\n }\n }\n }\n\n updateRange(value, fields) {\n super.updateRange({ value: fields.to }, fields);\n }\n\n aboveAxis(point) {\n return point.value >= 0;\n }\n\n plotRange(point) {\n return [ point.from, point.to ];\n }\n\n createSegments() {\n const series = this.options.series;\n const seriesPoints = this.seriesPoints;\n const segments = this.segments = [];\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const points = seriesPoints[seriesIx];\n\n if (points) {\n let prevPoint;\n for (let pointIx = 0; pointIx < points.length; pointIx++) {\n const point = points[pointIx];\n\n if (point && prevPoint) {\n const segment = new WaterfallSegment(prevPoint, point, currentSeries);\n segments.push(segment);\n this.append(segment);\n }\n\n prevPoint = point;\n }\n }\n }\n }\n}\n\nexport default WaterfallChart;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesAggregator from '../aggregates/series-aggregator';\nimport DefaultAggregates from '../aggregates/default-aggregates';\nimport SeriesBinder from '../series-binder';\nimport BarChart from '../bar-chart/bar-chart';\nimport RangeBarChart from '../range-bar-chart/range-bar-chart';\nimport BulletChart from '../bullet-chart/bullet-chart';\nimport LineChart from '../line-chart/line-chart';\nimport AreaChart from '../area-chart/area-chart';\nimport RangeAreaChart from '../range-area-chart/range-area-chart';\nimport OHLCChart from '../ohlc-chart/ohlc-chart';\nimport CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport BoxPlotChart from '../box-plot-chart/box-plot-chart';\nimport WaterfallChart from '../waterfall-chart/waterfall-chart';\n\nimport { CategoryAxis, DateCategoryAxis, NumericAxis, LogarithmicAxis, Point } from '../../core';\n\nimport { appendIfNotNull, categoriesCount, createOutOfRangePoints, equalsIgnoreCase, filterSeriesByType,\n getDateField, getField, isDateAxis, singleItemOrArray } from '../utils';\n\nimport { BAR, COLUMN, BULLET, VERTICAL_BULLET, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n RANGE_AREA, VERTICAL_RANGE_AREA, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL,\n BOX_PLOT, VERTICAL_BOX_PLOT, OHLC, CANDLESTICK, LOGARITHMIC, STEP, EQUALLY_SPACED_SERIES } from '../constants';\n\nimport { DATE, MAX_VALUE } from '../../common/constants';\nimport { setDefaultOptions, inArray, isNumber, deepExtend, defined, eventElement, grep } from '../../common';\n\nconst AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\nconst OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\nclass CategoricalPlotArea extends PlotAreaBase {\n\n initFields(series) {\n this.namedCategoryAxes = {};\n this.namedValueAxes = {};\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n\n if (series.length > 0) {\n this.invertAxes = inArray(\n series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n );\n\n for (let i = 0; i < series.length; i++) {\n const stack = series[i].stack;\n if (stack && stack.type === \"100%\") {\n this.stack100 = true;\n break;\n }\n }\n }\n\n }\n\n render(panes = this.panes) {\n this.createCategoryAxes(panes);\n this.aggregateCategories(panes);\n this.createCategoryAxesLabels(panes);\n this.createCharts(panes);\n this.createValueAxes(panes);\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis instanceof CategoryAxis) {\n delete this.namedCategoryAxes[axisName];\n } else {\n this.valueAxisRangeTracker.reset(axisName);\n delete this.namedValueAxes[axisName];\n }\n\n if (axis === this.categoryAxis) {\n delete this.categoryAxis;\n }\n\n if (axis === this.valueAxis) {\n delete this.valueAxis;\n }\n }\n\n createCharts(panes) {\n const seriesByPane = this.groupSeriesByPane();\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n\n const visibleSeries = this.filterVisibleSeries(paneSeries);\n if (!visibleSeries) {\n continue;\n }\n\n const groups = this.groupSeriesByCategoryAxis(visibleSeries);\n for (let groupIx = 0; groupIx < groups.length; groupIx++) {\n this.createChartGroup(groups[groupIx], pane);\n }\n }\n }\n\n createChartGroup(series, pane) {\n this.createAreaChart(\n filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n );\n\n this.createRangeAreaChart(\n filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ COLUMN, BAR ]), pane\n );\n\n this.createRangeBarChart(\n filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n );\n\n this.createBulletChart(\n filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n );\n\n this.createCandlestickChart(\n filterSeriesByType(series, CANDLESTICK), pane\n );\n\n this.createBoxPlotChart(\n filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n );\n\n this.createOHLCChart(\n filterSeriesByType(series, OHLC), pane\n );\n\n this.createWaterfallChart(\n filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n );\n }\n\n aggregateCategories(panes) {\n const series = this.srcSeries || this.series;\n const processedSeries = [];\n this._currentPointsCache = {};\n this._seriesPointsCache = this._seriesPointsCache || {};\n\n for (let i = 0; i < series.length; i++) {\n let currentSeries = series[i];\n const categoryAxis = this.seriesCategoryAxis(currentSeries);\n const axisPane = this.findPane(categoryAxis.options.pane);\n const dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n currentSeries = this.aggregateSeries(currentSeries, categoryAxis);\n } else {\n currentSeries = this.filterSeries(currentSeries, categoryAxis);\n }\n\n processedSeries.push(currentSeries);\n }\n\n this._seriesPointsCache = this._currentPointsCache;\n this._currentPointsCache = null;\n\n this.srcSeries = series;\n this.series = processedSeries;\n }\n\n filterSeries(series, categoryAxis) {\n const dataLength = (series.data || {}).length;\n categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n if (!(isNumber(categoryAxis.options.min) || isNumber(categoryAxis.options.max))) {\n return series;\n }\n\n const range = categoryAxis.currentRangeIndices();\n const outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n const currentSeries = deepExtend({}, series);\n\n currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n if (outOfRangePoints) {\n createOutOfRangePoints(currentSeries, range, dataLength, (idx) => ({\n item: series.data[idx],\n category: categoryAxis.categoryAt(idx, true),\n categoryIx: idx - range.min\n }), (idx) => defined(series.data[idx]));\n }\n\n return currentSeries;\n }\n\n clearSeriesPointsCache() {\n this._seriesPointsCache = {};\n }\n\n seriesSourcePoints(series, categoryAxis) {\n const key = `${ series.index };${ categoryAxis.categoriesHash() }`;\n if (this._seriesPointsCache[key]) {\n this._currentPointsCache[key] = this._seriesPointsCache[key];\n return this._seriesPointsCache[key];\n }\n\n const axisOptions = categoryAxis.options;\n const srcCategories = axisOptions.srcCategories;\n const dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n const srcData = series.data;\n const getFn = dateAxis ? getDateField : getField;\n const result = [];\n if (!dateAxis) {\n categoryAxis.mapCategories();//fixes major performance issue caused by searching for the index for large data\n }\n\n for (let idx = 0; idx < srcData.length; idx++) {\n let category;\n if (series.categoryField) {\n category = getFn(series.categoryField, srcData[idx], this.chartService.intl);\n } else {\n category = srcCategories[idx];\n }\n\n if (defined(category) && category !== null) {\n const categoryIx = categoryAxis.totalIndex(category);\n result[categoryIx] = result[categoryIx] || { items: [], category: category };\n result[categoryIx].items.push(idx);\n }\n }\n\n this._currentPointsCache[key] = result;\n\n return result;\n }\n\n aggregateSeries(series, categoryAxis) {\n const srcData = series.data;\n if (!srcData.length) {\n return series;\n }\n\n const srcPoints = this.seriesSourcePoints(series, categoryAxis);\n const result = deepExtend({}, series);\n const aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n const data = result.data = [];\n const dataItems = categoryAxis.options.dataItems || [];\n\n const range = categoryAxis.currentRangeIndices();\n const categoryItem = (idx) => {\n const categoryIdx = idx - range.min;\n let point = srcPoints[idx];\n if (!point) {\n point = srcPoints[idx] = {};\n }\n\n point.categoryIx = categoryIdx;\n\n if (!point.item) {\n const category = categoryAxis.categoryAt(idx, true);\n point.category = category;\n point.item = aggregator.aggregatePoints(point.items, category);\n }\n\n return point;\n };\n\n for (let idx = range.min; idx <= range.max; idx++) {\n const point = categoryItem(idx);\n data[point.categoryIx] = point.item;\n\n if (point.items && point.items.length) {\n dataItems[point.categoryIx] = point.item;\n }\n }\n\n if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, (idx) => srcPoints[idx]);\n }\n\n categoryAxis.options.dataItems = dataItems;\n\n return result;\n }\n\n appendChart(chart, pane) {\n const series = chart.options.series;\n const categoryAxis = this.seriesCategoryAxis(series[0]);\n let categories = categoryAxis.options.categories;\n let categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n while (categoriesToAdd--) {\n categories.push(\"\");\n }\n }\n\n this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n super.appendChart(chart, pane);\n }\n\n // TODO: Refactor, optionally use series.pane option\n seriesPaneName(series) {\n const options = this.options;\n const axisName = series.axis;\n const axisOptions = [].concat(options.valueAxis);\n const axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = (panes[0] || {}).name || \"default\";\n const paneName = (axis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n seriesCategoryAxis(series) {\n const axisName = series.categoryAxis;\n const axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate category axis with name \" + axisName);\n }\n\n return axis;\n }\n\n stackableChartOptions(firstSeries, pane) {\n const stack = firstSeries.stack;\n const isStacked100 = stack && stack.type === \"100%\";\n const clip = pane.options.clip;\n\n return {\n isStacked: stack,\n isStacked100: isStacked100,\n clip: clip\n };\n }\n\n groupSeriesByCategoryAxis(series) {\n const categoryAxes = [];\n const unique = {};\n for (let idx = 0; idx < series.length; idx++) {\n const name = series[idx].categoryAxis || \"$$default$$\";\n if (!unique.hasOwnProperty(name)) {\n unique[name] = true;\n categoryAxes.push(name);\n }\n }\n\n const groups = [];\n for (let axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n const axis = categoryAxes[axisIx];\n const axisSeries = groupSeries(series, axis, axisIx);\n if (axisSeries.length === 0) {\n continue;\n }\n\n groups.push(axisSeries);\n }\n\n return groups;\n }\n\n createBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const barChart = new BarChart(this, Object.assign({\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(barChart, pane);\n }\n\n createRangeBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const rangeColumnChart = new RangeBarChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(rangeColumnChart, pane);\n }\n\n createBulletChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const bulletChart = new BulletChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(bulletChart, pane);\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const lineChart = new LineChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(lineChart, pane);\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const areaChart = new AreaChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(areaChart, pane);\n }\n\n createRangeAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const rangeAreaChart = new RangeAreaChart(this, {\n invertAxes: this.invertAxes,\n series: series,\n clip: pane.options.clip\n });\n\n this.appendChart(rangeAreaChart, pane);\n }\n\n createOHLCChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new OHLCChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createCandlestickChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new CandlestickChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createBoxPlotChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new BoxPlotChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createWaterfallChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const waterfallChart = new WaterfallChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(waterfallChart, pane);\n }\n\n axisRequiresRounding(categoryAxisName, categoryAxisIndex) {\n const centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n for (let seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n const currentSeries = this.series[seriesIx];\n if (inArray(currentSeries.type, AREA_SERIES)) {\n const line = currentSeries.line;\n if (line && line.style === STEP) {\n centeredSeries.push(currentSeries);\n }\n }\n }\n\n for (let seriesIx = 0; seriesIx < centeredSeries.length; seriesIx++) {\n const seriesAxis = centeredSeries[seriesIx].categoryAxis || \"\";\n if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n return true;\n }\n }\n }\n\n aggregatedAxis(categoryAxisName, categoryAxisIndex) {\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const seriesAxis = series[seriesIx].categoryAxis || \"\";\n if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n return true;\n }\n }\n }\n\n createCategoryAxesLabels() {\n const axes = this.axes;\n for (let i = 0; i < axes.length; i++) {\n if (axes[i] instanceof CategoryAxis) {\n axes[i].createLabels();\n }\n }\n }\n\n createCategoryAxes(panes) {\n const invertAxes = this.invertAxes;\n const definitions = [].concat(this.options.categoryAxis);\n const axes = [];\n\n for (let i = 0; i < definitions.length; i++) {\n let axisOptions = definitions[i];\n const axisPane = this.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n const { name, categories = [] } = axisOptions;\n axisOptions = deepExtend({\n vertical: invertAxes,\n reverse: !invertAxes && this.chartService.rtl,\n axisCrossingValue: invertAxes ? MAX_VALUE : 0\n }, axisOptions);\n\n if (!defined(axisOptions.justified)) {\n axisOptions.justified = this.isJustified();\n }\n\n if (this.axisRequiresRounding(name, i)) {\n axisOptions.justified = false;\n }\n\n let categoryAxis;\n\n if (isDateAxis(axisOptions, categories[0])) {\n categoryAxis = new DateCategoryAxis(axisOptions, this.chartService);\n } else {\n categoryAxis = new CategoryAxis(axisOptions, this.chartService);\n }\n\n definitions[i].categories = categoryAxis.options.srcCategories;\n\n if (name) {\n if (this.namedCategoryAxes[name]) {\n throw new Error(`Category axis with name ${ name } is already defined`);\n }\n this.namedCategoryAxes[name] = categoryAxis;\n }\n\n categoryAxis.axisIndex = i;\n axes.push(categoryAxis);\n this.appendAxis(categoryAxis);\n }\n }\n\n const primaryAxis = this.categoryAxis || axes[0];\n this.categoryAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisY = primaryAxis;\n } else {\n this.axisX = primaryAxis;\n }\n }\n\n isJustified() {\n const series = this.series;\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n if (!inArray(currentSeries.type, AREA_SERIES)) {\n return false;\n }\n }\n\n return true;\n }\n\n createValueAxes(panes) {\n const tracker = this.valueAxisRangeTracker;\n const defaultRange = tracker.query();\n const definitions = [].concat(this.options.valueAxis);\n const invertAxes = this.invertAxes;\n const baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n const axes = [];\n\n if (this.stack100) {\n baseOptions.roundToMajorUnit = false;\n baseOptions.labels = { format: \"P0\" };\n }\n\n for (let i = 0; i < definitions.length; i++) {\n const axisOptions = definitions[i];\n const axisPane = this.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n const name = axisOptions.name;\n const defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n const range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n if (i === 0 && range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n const valueAxis = new axisType(range.min, range.max,\n deepExtend({}, baseOptions, axisOptions),\n this.chartService\n );\n\n if (name) {\n if (this.namedValueAxes[name]) {\n throw new Error(`Value axis with name ${ name } is already defined`);\n }\n this.namedValueAxes[name] = valueAxis;\n }\n valueAxis.axisIndex = i;\n\n axes.push(valueAxis);\n this.appendAxis(valueAxis);\n }\n }\n\n const primaryAxis = this.valueAxis || axes[0];\n this.valueAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisX = primaryAxis;\n } else {\n this.axisY = primaryAxis;\n }\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const pane = this.pointPane(point);\n const categories = [];\n const values = [];\n\n if (!pane) {\n return;\n }\n\n const allAxes = pane.axes;\n for (let i = 0; i < allAxes.length; i++) {\n const axis = allAxes[i];\n if (axis.getValue) {\n appendIfNotNull(values, axis.getValue(point));\n } else {\n appendIfNotNull(categories, axis.getCategory(point));\n }\n }\n\n if (categories.length === 0) {\n appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n }\n\n if (categories.length > 0 && values.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n category: singleItemOrArray(categories),\n value: singleItemOrArray(values)\n });\n }\n }\n\n pointPane(point) {\n const panes = this.panes;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n if (currentPane.contentBox.containsPoint(point)) {\n return currentPane;\n }\n }\n }\n\n updateAxisOptions(axis, options) {\n updateAxisOptions(this.options, axis, options);\n updateAxisOptions(this.originalOptions, axis, options);\n }\n}\n\nfunction updateAxisOptions(targetOptions, axis, options) {\n const axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n deepExtend(axesOptions[axis.axisIndex], options);\n}\n\nfunction groupSeries(series, axis, axisIx) {\n return grep(series, function(s) {\n return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n });\n}\n\nsetDefaultOptions(CategoricalPlotArea, {\n categoryAxis: {},\n valueAxis: {}\n});\n\ndeepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default CategoricalPlotArea;","import Class from './class';\n\nclass Observable extends Class {\n constructor() {\n super();\n\n this._events = {};\n }\n\n bind(eventName, handlers, one) {\n const eventNames = getArray(eventName);\n const handlersIsFunction = isFunction(handlers);\n const length = eventNames.length;\n\n if (handlers === undefined) {\n for (let field in eventName) {\n this.bind(field, eventName[field]);\n }\n return this;\n }\n\n for (let idx = 0; idx < length; idx++) {\n const eventName = eventNames[idx];\n\n let handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n const original = handler;\n handler = () => { // eslint-disable-line no-loop-func\n this.unbind(eventName, handler);\n original.apply(this, arguments);\n };\n handler.original = original;\n }\n let events = this._events[eventName] = this._events[eventName] || [];\n events.push(handler);\n }\n }\n\n return this;\n }\n\n one(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n }\n\n first(eventName, handlers) {\n const eventNames = getArray(eventName);\n const handlersIsFunction = isFunction(handlers);\n\n for (let idx = 0, length = eventNames.length; idx < length; idx++) {\n const eventName = eventNames[idx];\n\n const handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n const events = this._events[eventName] = this._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return this;\n }\n\n trigger(eventName, e = {}) {\n let events = this._events[eventName];\n\n if (events) {\n const length = events.length;\n\n e.sender = this;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (let idx = 0; idx < length; idx++) {\n events[idx].call(this, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n }\n\n unbind(eventName, handler) {\n const events = this._events[eventName];\n\n if (eventName === undefined) {\n this._events = {};\n } else if (events) {\n if (handler) {\n for (let idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n this._events[eventName] = [];\n }\n }\n\n return this;\n }\n}\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction getArray(value) {\n return typeof value === \"string\" ? [ value ] : value;\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nfunction isDefaultPrevented() {\n return this._defaultPrevented === true;\n}\n\nexport default Observable;","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementPadding, elementScale, elementSize, elementOffset } from '../util';\n\nconst events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n];\n\nclass Surface extends Observable {\n constructor(element, options) {\n super();\n\n this.options = Object.assign({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n draw(element) {\n this._visual.children.push(element);\n }\n\n clear() {\n this._visual.children = [];\n }\n\n destroy() {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n }\n\n eventTarget(e) {\n let domNode = eventElement(e);\n let node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n }\n\n exportVisual() {\n return this._visual;\n }\n\n getSize() {\n return elementSize(this.element);\n }\n\n currentSize(size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n }\n\n setSize(size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n }\n\n resize(force) {\n const size = this.getSize();\n const currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n }\n\n size(value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n }\n\n suspendTracking() {\n this._suspendedTracking = true;\n }\n\n resumeTracking() {\n this._suspendedTracking = false;\n }\n\n _enableTracking() {}\n\n _resize() {}\n\n _handler(eventName) {\n return (e) => {\n const node = this.eventTarget(e);\n if (node && !this._suspendedTracking) {\n this.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n }\n\n _elementOffset() {\n const element = this.element;\n const padding = elementPadding(element);\n const { left, top } = elementOffset(element);\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n }\n\n _surfacePoint(e) {\n const offset = this._elementOffset();\n const coord = eventCoordinates(e);\n const x = coord.x - offset.left;\n const y = coord.y - offset.top;\n\n const inverseTransform = elementScale(this.element).invert();\n const point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n }\n}\n\nexport default Surface;\n","import { Class } from '../common';\n\nclass BaseNode extends Class {\n constructor(srcElement) {\n super();\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n destroy() {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n const children = this.childNodes;\n for (let i = 0; i < children.length; i++) {\n this.childNodes[i].destroy();\n }\n\n this.parent = null;\n }\n\n load() {}\n\n observe() {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n }\n\n append(node) {\n this.childNodes.push(node);\n node.parent = this;\n }\n\n insertAt(node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n }\n\n remove(index, count) {\n const end = index + count;\n for (let i = index; i < end; i++) {\n this.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n }\n\n removeSelf() {\n this.clear();\n this.destroy();\n }\n\n clear() {\n this.remove(0, this.childNodes.length);\n }\n\n invalidate() {\n if (this.parent) {\n this.parent.invalidate();\n }\n }\n\n geometryChange() {\n this.invalidate();\n }\n\n optionsChange() {\n this.invalidate();\n }\n\n childrenChange(e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n }\n}\n\nexport default BaseNode;","import { defined } from '../../util';\n\nexport default function renderAttr(name, value) {\n return (defined(value) && value !== null) ? ` ${ name }=\"${ value }\" ` : \"\";\n}","import renderAttr from './render-attribute';\n\nexport default function renderAllAttr(attrs) {\n let output = \"\";\n for (let i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n}","import { defined } from '../../util';\n\nexport default function renderStyle(attrs) {\n let output = \"\";\n for (let i = 0; i < attrs.length; i++) {\n let value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n}","const NODE_MAP = {};\n\nexport default NODE_MAP;","const SVG_NS = \"http://www.w3.org/2000/svg\";\nconst NONE = \"none\";\n\nexport { SVG_NS, NONE };","import { SVG_NS } from '../constants';\n\nlet renderSVG = function(container, svg) {\n container.innerHTML = svg;\n};\n\nif (typeof document !== \"undefined\") {\n const testFragment = \"\";\n const testContainer = document.createElement(\"div\");\n const hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n const parser = new DOMParser();\n const chartDoc = parser.parseFromString(svg, \"text/xml\");\n const importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n}\n\nexport default renderSVG;","import BaseNode from '../core/base-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport renderStyle from './utils/render-style';\nimport NODE_MAP from './node-map';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS, NONE } from './constants';\nimport { support } from '../common';\nimport { defined } from '../util';\n\nconst TRANSFORM = \"transform\";\nconst DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n};\n\nfunction isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n}\n\nfunction baseUrl() {\n const base = document.getElementsByTagName(\"base\")[0];\n let href = document.location.href;\n let url = \"\";\n\n if (base && !(support.browser || {}).msie) {\n const hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n}\n\nclass Node extends BaseNode {\n\n constructor(srcElement, options) {\n super(srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n destroy() {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n super.destroy();\n }\n\n load(elements, pos) {\n for (let i = 0; i < elements.length; i++) {\n const srcElement = elements[i];\n const children = srcElement.children;\n\n const childNode = new NODE_MAP[srcElement.nodeType](srcElement, this.options);\n\n if (defined(pos)) {\n this.insertAt(childNode, pos);\n } else {\n this.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n const element = this.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n }\n\n root() {\n let root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n }\n\n attachTo(domElement, pos) {\n const container = document.createElement(\"div\");\n renderSVG(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n const element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n }\n\n setElement(element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n const nodes = this.childNodes;\n for (let i = 0; i < nodes.length; i++) {\n let childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n }\n\n clear() {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n const children = this.childNodes;\n for (let i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n }\n\n removeSelf() {\n if (this.element) {\n const parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n super.removeSelf();\n }\n\n template() {\n return this.renderChildren();\n }\n\n render() {\n return this.template();\n }\n\n renderChildren() {\n const nodes = this.childNodes;\n let output = \"\";\n\n for (let i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n }\n\n optionsChange(e) {\n const { field, value } = e;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n super.optionsChange(e);\n }\n\n attr(name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n }\n\n allAttr(attrs) {\n for (let i = 0; i < attrs.length; i++) {\n this.attr(attrs[i][0], attrs[i][1]);\n }\n }\n\n css(name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n }\n\n allCss(styles) {\n for (let i = 0; i < styles.length; i++) {\n this.css(styles[i][0], styles[i][1]);\n }\n }\n\n removeAttr(name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n }\n\n mapTransform(transform) {\n const attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n }\n\n renderTransform() {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n }\n\n transformChange(value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n }\n\n mapStyle() {\n const options = this.srcElement.options;\n const style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n }\n\n renderStyle() {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n }\n\n renderOpacity() {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n }\n\n renderId() {\n return renderAttr(\"id\", this.srcElement.options.id);\n }\n\n createDefinitions() {\n const srcElement = this.srcElement;\n const definitions = this.definitions;\n if (srcElement) {\n const options = srcElement.options;\n let hasDefinitions;\n\n for (let field in DefinitionMap) {\n let definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n }\n\n definitionChange(e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n }\n\n updateDefinition(type, value) {\n const definitions = this.definitions;\n const current = definitions[type];\n const attr = DefinitionMap[type];\n const definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n }\n\n clearDefinitions() {\n const definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n }\n\n renderDefinitions() {\n return renderAllAttr(this.mapDefinitions());\n }\n\n mapDefinitions() {\n const definitions = this.definitions;\n const attrs = [];\n\n for (let field in definitions) {\n attrs.push([ DefinitionMap[field], this.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n }\n\n refUrl(id) {\n const skipBaseHref = (this.options || {}).skipBaseHref;\n const baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n const base = skipBaseHref ? '' : baseHref;\n return `url(${ base }#${ id })`;\n }\n\n baseUrl() {\n return baseUrl();\n }\n}\n\nexport default Node;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nclass GradientStopNode extends Node {\n template() {\n return ``;\n }\n\n renderOffset() {\n return renderAttr(\"offset\", this.srcElement.offset());\n }\n\n mapStyle() {\n const srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n }\n\n optionsChange(e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n }\n}\n\nexport default GradientStopNode;","import GradientStopNode from './gradient-stop-node';\nimport BaseNode from '../core/base-node';\nimport Node from './node';\nimport renderAllAttr from './utils/render-all-attributes';\n\nclass GradientNode extends Node {\n constructor(srcElement) {\n super(srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n loadStops() {\n const stops = this.srcElement.stops;\n const element = this.element;\n\n for (let idx = 0; idx < stops.length; idx++) {\n let stopNode = new GradientStopNode(stops[idx]);\n this.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n }\n\n optionsChange(e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n }\n\n renderCoordinates() {\n return renderAllAttr(this.mapCoordinates());\n }\n\n mapSpace() {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n }\n}\n\nexport default GradientNode;","import GradientNode from './gradient-node';\n\nclass LinearGradientNode extends GradientNode {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n mapCoordinates() {\n const srcElement = this.srcElement;\n const start = srcElement.start();\n const end = srcElement.end();\n const attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n }\n}\n\nexport default LinearGradientNode;","import GradientNode from './gradient-node';\n\nclass RadialGradientNode extends GradientNode {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n mapCoordinates() {\n const srcElement = this.srcElement;\n const center = srcElement.center();\n const radius = srcElement.radius();\n const attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n }\n}\n\nexport default RadialGradientNode;","import Node from './node';\n\nclass ClipNode extends Node {\n constructor(srcElement) {\n super();\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n template() {\n return `${ this.renderChildren() }`;\n }\n}\n\nexport default ClipNode;","import LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport LinearGradientNode from './linear-gradient-node';\nimport RadialGradientNode from './radial-gradient-node';\nimport Node from './node';\nimport ClipNode from './clip-node';\n\nclass DefinitionNode extends Node {\n constructor() {\n super();\n this.definitionMap = {};\n }\n\n attachTo(domElement) {\n this.element = domElement;\n }\n\n template() {\n return `${ this.renderChildren() }`;\n }\n\n definitionChange(e) {\n const { definitions, action } = e;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n }\n\n createDefinition(type, item) {\n let nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n }\n }\n return new nodeType(item);\n }\n\n addDefinitions(definitions) {\n for (let field in definitions) {\n this.addDefinition(field, definitions[field]);\n }\n }\n\n addDefinition(type, srcElement) {\n const { element, definitionMap } = this;\n const id = srcElement.id;\n const mapItem = definitionMap[id];\n if (!mapItem) {\n const node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n }\n\n removeDefinitions(definitions) {\n for (let field in definitions) {\n this.removeDefinition(definitions[field]);\n }\n }\n\n removeDefinition(srcElement) {\n const definitionMap = this.definitionMap;\n const id = srcElement.id;\n const mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n }\n}\n\nexport default DefinitionNode;","import BaseNode from '../core/base-node';\nimport Node from './node';\nimport DefinitionNode from './definition-node';\n\nclass RootNode extends Node {\n constructor(options) {\n super();\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n attachTo(domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n }\n\n clear() {\n BaseNode.prototype.clear.call(this);\n }\n\n template() {\n return this.defs.render() + this.renderChildren();\n }\n\n definitionChange(e) {\n this.defs.definitionChange(e);\n }\n}\n\nexport default RootNode;","const DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n};\n\nconst SOLID = \"solid\";\nconst BUTT = \"butt\";\n\nexport { DASH_ARRAYS, SOLID, BUTT };","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport { NONE } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\n\nconst ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n};\nconst SPACE = \" \";\n\nclass PathNode extends Node {\n\n geometryChange() {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n }\n\n optionsChange(e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n const name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n super.optionsChange(e);\n }\n\n content() {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n }\n\n renderData() {\n return this.printPath(this.srcElement);\n }\n\n printPath(path) {\n const segments = path.segments;\n const length = segments.length;\n if (length > 0) {\n const parts = [];\n let output, currentType;\n\n for (let i = 1; i < length; i++) {\n let segmentType = this.segmentType(segments[i - 1], segments[i]);\n if (segmentType !== currentType) {\n currentType = segmentType;\n parts.push(segmentType);\n }\n\n if (segmentType === \"L\") {\n parts.push(this.printPoints(segments[i].anchor()));\n } else {\n parts.push(this.printPoints(segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()));\n }\n }\n\n output = \"M\" + this.printPoints(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (path.options.closed) {\n output += \"Z\";\n }\n\n return output;\n }\n }\n\n printPoints() {\n const points = arguments;\n const length = points.length;\n const result = [];\n\n for (let i = 0; i < length; i++) {\n result.push(points[i].toString(3));\n }\n\n return result.join(\" \");\n }\n\n segmentType(segmentStart, segmentEnd) {\n return segmentStart.controlOut() && segmentEnd.controlIn() ? \"C\" : \"L\";\n }\n\n mapStroke(stroke) {\n const attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n }\n\n renderStroke() {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n }\n\n renderDashType(stroke) {\n const { dashType, width = 1 } = stroke;\n\n if (dashType && dashType !== SOLID) {\n const dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n const result = [];\n\n for (let i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n }\n\n renderLinecap(stroke) {\n const { dashType, lineCap } = stroke;\n\n return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n }\n\n mapFill(fill) {\n const attrs = [];\n if (!(fill && fill.nodeType === \"Gradient\")) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n }\n\n renderFill() {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n }\n\n template() {\n return ``;\n }\n}\n\nexport default PathNode;\n","import PathNode from './path-node';\n\nclass ArcNode extends PathNode {\n renderData() {\n return this.printPath(this.srcElement.toPath());\n }\n}\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nclass CircleNode extends PathNode {\n\n geometryChange() {\n const center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n }\n\n center() {\n return this.srcElement.geometry().center;\n }\n\n radius() {\n return this.srcElement.geometry().radius;\n }\n\n template() {\n return ``;\n }\n}\n\nexport default CircleNode;\n","import Node from './node';\n\nclass GroupNode extends Node {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n optionsChange(e) {\n if (e.field === \"transform\") {\n this.transformChange(e.value);\n }\n\n super.optionsChange(e);\n }\n}\n\nexport default GroupNode;\n","const ampRegExp = /&/g;\nconst ltRegExp = //g;\n\nexport default function htmlEncode(value) {\n return String(value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n}","import PathNode from './path-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport { htmlEncode } from '../common';\n\nclass ImageNode extends PathNode {\n\n geometryChange() {\n this.allAttr(this.mapPosition());\n this.invalidate();\n }\n\n optionsChange(e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n super.optionsChange(e);\n }\n\n mapPosition() {\n const rect = this.srcElement.rect();\n const tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n }\n\n renderPosition() {\n return renderAllAttr(this.mapPosition());\n }\n\n mapSource(encode) {\n let src = this.srcElement.src();\n\n if (encode) {\n src = htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n }\n\n renderSource() {\n return renderAllAttr(this.mapSource(true));\n }\n\n template() {\n return `` +\n ``;\n }\n}\n\nexport default ImageNode;\n","import PathNode from './path-node';\n\nclass MultiPathNode extends PathNode {\n renderData() {\n const paths = this.srcElement.paths;\n\n if (paths.length > 0) {\n const result = [];\n\n for (let i = 0; i < paths.length; i++) {\n result.push(this.printPath(paths[i]));\n }\n\n return result.join(\" \");\n }\n }\n}\n\nexport default MultiPathNode;\n","import PathNode from './path-node';\n\nclass RectNode extends PathNode {\n\n geometryChange() {\n const geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.attr(\"rx\", geometry.cornerRadius[0]);\n this.attr(\"ry\", geometry.cornerRadius[1]);\n this.invalidate();\n }\n\n size() {\n return this.srcElement.geometry().size;\n }\n\n origin() {\n return this.srcElement.geometry().origin;\n }\n\n rx() {\n return this.srcElement.geometry().cornerRadius[0];\n }\n\n ry() {\n return this.srcElement.geometry().cornerRadius[1];\n }\n\n template() {\n return ``;\n }\n}\n\nexport default RectNode;\n","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\n\nconst ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\nfunction decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n const element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, (match) => {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n}\n\nif (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n}\n\nclass TextNode extends PathNode {\n\n geometryChange() {\n const pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n }\n\n optionsChange(e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n super.content(this.srcElement.content());\n }\n\n super.optionsChange(e);\n }\n\n mapStyle(encode) {\n const style = super.mapStyle(encode);\n let font = this.srcElement.options.font;\n\n if (encode) {\n font = htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n }\n\n pos() {\n const pos = this.srcElement.position();\n const size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n }\n\n renderContent() {\n let content = this.srcElement.content();\n content = decodeEntities(content);\n content = htmlEncode(content);\n\n return normalizeText(content);\n }\n\n renderTextAnchor() {\n let anchor;\n\n if ((this.options || {}).rtl && !(support.browser.msie || support.browser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n }\n\n template() {\n return `${ this.renderContent() }`;\n }\n}\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport RootNode from './root-node';\nimport Group from '../shapes/group';\nimport transform from '../geometry/transform';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS } from './constants';\nimport { bindEvents, unbindEvents, elementStyles } from '../util';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\nconst RTL = 'rtl';\n\nfunction alignToScreen(element) {\n let ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n const left = - ctm.e % 1;\n const top = - ctm.f % 1;\n const style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n}\n\nclass Surface extends BaseSurface {\n get type() {\n return \"svg\";\n }\n\n constructor(element, options) {\n super(element, options);\n\n this._root = new RootNode(Object.assign({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG(this.element, this._template());\n\n this._rootElement = this.element.firstElementChild;\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n destroy() {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n super.destroy();\n }\n\n translate(offset) {\n const viewBox = `${ Math.round(offset.x) } ${ Math.round(offset.y) } ${ this._size.width } ${ this._size.height }`;\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n }\n\n draw(element) {\n super.draw(element);\n this._root.load([ element ]);\n }\n\n clear() {\n super.clear();\n this._root.clear();\n }\n\n svg() {\n return \"\" + this._template();\n }\n\n exportVisual() {\n let { _visual: visual, _offset: offset } = this;\n\n if (offset) {\n const wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n }\n\n _resize() {\n if (this._offset) {\n this.translate(this._offset);\n }\n }\n\n _template() {\n return `${ this._root.render() }`;\n }\n}\n\nexport default Surface;\n","const NODE_MAP = {};\n\nexport default NODE_MAP;","\nexport default function renderPath(ctx, path) {\n const segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n let segment = segments[0];\n let anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (let i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n let prevSeg = segments[i - 1];\n let prevOut = prevSeg.controlOut();\n let controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n}","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport renderPath from './utils/render-path';\nimport { defined } from '../util';\n\nclass Node extends BaseNode {\n constructor(srcElement) {\n super(srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n initClip() {\n const clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n }\n\n clear() {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n super.clear();\n }\n\n clearClip() {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n }\n\n setClip(ctx) {\n if (this.clip) {\n ctx.beginPath();\n renderPath(ctx, this.clip);\n ctx.clip();\n }\n }\n\n optionsChange(e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n super.optionsChange(e);\n }\n\n setTransform(ctx) {\n if (this.srcElement) {\n const transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n }\n\n loadElements(elements, pos, cors) {\n for (let i = 0; i < elements.length; i++) {\n let srcElement = elements[i];\n let children = srcElement.children;\n\n let childNode = new NODE_MAP[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this.insertAt(childNode, pos);\n } else {\n this.append(childNode);\n }\n }\n }\n\n load(elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n }\n\n setOpacity(ctx) {\n if (this.srcElement) {\n const opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n }\n\n globalAlpha(ctx, value) {\n let opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n }\n\n visible() {\n const src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n }\n}\n\nexport default Node;","import Node from './node';\nimport traversable from '../mixins/traversable';\n\n\nclass GroupNode extends traversable(Node, \"childNodes\") {\n renderTo(ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n const childNodes = this.childNodes;\n for (let i = 0; i < childNodes.length; i++) {\n let child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n }\n}\n\nexport default GroupNode;\n","import now from '../util/now';\n\nexport default function throttle(fn, delay) {\n let lastExecTime = 0;\n let timeout;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n const throttled = function() {\n const elapsed = now() - lastExecTime;\n const args = arguments;\n\n const exec = function() {\n fn.apply(null, args);\n lastExecTime = now();\n };\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n}\n","import GroupNode from './group-node';\nimport traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\n\n\nconst FRAME_DELAY = 1000 / 60;\n\nclass RootNode extends traversable(GroupNode, \"childNodes\") {\n constructor(canvas, size) {\n super();\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n const invalidateHandler = this._invalidate.bind(this);\n this.invalidate = throttle(() => {\n animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n destroy() {\n super.destroy();\n this.canvas = null;\n this.ctx = null;\n }\n\n load(elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n }\n\n _rescale(scale) {\n const { canvas, size } = this;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n }\n\n _devicePixelRatio() {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n }\n\n _invalidate(options) {\n if (!this.ctx) {\n return;\n }\n\n const fixedScale = options && options.fixedScale;\n const scale = fixedScale ? 1 : this._devicePixelRatio();\n this._rescale(scale);\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n }\n}\n\nexport default RootNode;\n","import { Class } from '../common';\n\nclass QuadRoot extends Class {\n constructor() {\n super();\n\n this.shapes = [];\n }\n\n _add(shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n }\n\n pointShapes(point) {\n const shapes = this.shapes;\n const length = shapes.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n }\n\n insert(shape, bbox) {\n this._add(shape, bbox);\n }\n\n remove(shape) {\n const shapes = this.shapes;\n const length = shapes.length;\n\n for (let idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n }\n}\n\nexport default QuadRoot;","import QuadRoot from './quad-root';\nimport { Rect } from '../geometry';\nimport { append } from '../util';\n\nclass QuadNode extends QuadRoot {\n constructor(rect) {\n super();\n this.children = [];\n this.rect = rect;\n }\n\n inBounds(rect) {\n const nodeRect = this.rect;\n const nodeBottomRight = nodeRect.bottomRight();\n const bottomRight = rect.bottomRight();\n const inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n }\n\n pointShapes(point) {\n const children = this.children;\n const length = children.length;\n const result = super.pointShapes(point);\n for (let idx = 0; idx < length; idx++) {\n append(result, children[idx].pointShapes(point));\n }\n return result;\n }\n\n insert(shape, bbox) {\n const children = this.children;\n let inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (let idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n }\n\n _initChildren() {\n const { rect, children } = this;\n const center = rect.center();\n const halfWidth = rect.width() / 2;\n const halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n }\n}\n\nexport default QuadNode;","import QuadRoot from './quad-root';\nimport QuadNode from './quad-node';\nimport { Rect } from '../geometry';\nimport { Class } from '../common';\nimport { append } from '../util';\n\nconst ROOT_SIZE = 3000;\nconst LEVEL_STEP = 10000;\nconst MAX_LEVEL = 75;\n\nclass ShapesQuadTree extends Class {\n\n constructor() {\n super();\n\n this.initRoots();\n }\n\n initRoots() {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n }\n\n clear() {\n const rootElements = this.rootElements;\n for (let idx = 0; idx < rootElements.length; idx++) {\n this.remove(rootElements[idx]);\n }\n this.initRoots();\n }\n\n pointShape(point) {\n const sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n let result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (let idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n }\n\n assignZindex(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n let element = elements[idx];\n let zIndex = 0;\n let levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n let parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n }\n\n optionsChange(e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n }\n\n geometryChange(e) {\n this.bboxChange(e.element);\n }\n\n bboxChange(element) {\n if (element.nodeType === \"Group\") {\n for (let idx = 0; idx < element.children.length; idx++) {\n this.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n }\n\n add(elements) {\n const elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append(this.rootElements, elementsArray);\n this._insert(elementsArray);\n }\n\n childrenChange(e) {\n if (e.action === \"remove\") {\n for (let idx = 0; idx < e.items.length; idx++) {\n this.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n }\n\n _insert(elements) {\n let element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this);\n if (element.nodeType === \"Group\") {\n append(elements, element.children);\n } else {\n this._insertShape(element);\n }\n }\n }\n\n _insertShape(shape) {\n const bbox = shape.bbox();\n if (bbox) {\n const sectors = this.getSectors(bbox);\n const x = sectors[0][0];\n const y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n const rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n }\n\n remove(element) {\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n const children = element.children;\n for (let idx = 0; idx < children.length; idx++) {\n this.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n }\n\n inRoot(sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n }\n\n getSectors(rect) {\n const bottomRight = rect.bottomRight();\n const bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n const bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n const sectors = [ [], [] ];\n for (let x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (let y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n }\n}\n\nfunction zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n}\n\nexport default ShapesQuadTree;","import { defined } from '../util';\n\nclass SurfaceCursor {\n\n constructor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n }\n\n clear() {\n this._resetCursor();\n }\n\n destroy() {\n this._resetCursor();\n delete this.element;\n }\n\n _mouseenter(e) {\n const cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n }\n\n _mouseleave() {\n this._resetCursor();\n }\n\n _shapeCursor(e) {\n let shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n }\n\n _getCursor() {\n if (this.element) {\n return this.element.style.cursor;\n }\n }\n\n _setCursor(cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n }\n\n _resetCursor() {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n }\n}\n\nexport default SurfaceCursor;\n\n","import Node from './node';\nimport { parseColor } from '../common';\nimport { isTransparent, valueOrDefault } from '../util';\nimport LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport renderPath from './utils/render-path';\n\nfunction addGradientStops(gradient, stops) {\n for (let idx = 0; idx < stops.length; idx++) {\n let stop = stops[idx];\n let color = parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n}\n\nclass PathNode extends Node {\n\n renderTo(ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n }\n\n setFill(ctx) {\n const fill = this.srcElement.options.fill;\n let hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n }\n\n setGradientFill(ctx, fill) {\n const bbox = this.srcElement.rawBBox();\n let gradient;\n\n if (fill instanceof LinearGradient) {\n let start = fill.start();\n let end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n let center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n }\n\n setStroke(ctx) {\n const stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n }\n\n dashType() {\n const stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n }\n\n setLineDash(ctx) {\n const dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n const dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n }\n\n setLineCap(ctx) {\n const dashType = this.dashType();\n const stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n }\n\n setLineJoin(ctx) {\n const stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n }\n\n renderPoints(ctx, path) {\n renderPath(ctx, path);\n }\n}\n\nexport default PathNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nclass ArcNode extends PathNode {\n renderPoints(ctx) {\n const path = this.srcElement.toPath();\n renderPath(ctx, path);\n }\n}\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nclass CircleNode extends PathNode {\n renderPoints(ctx) {\n const { center, radius } = this.srcElement.geometry();\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n }\n}\n\nexport default CircleNode;\n","import PathNode from './path-node';\nimport { createPromise } from '../util';\n\nclass ImageNode extends PathNode {\n constructor(srcElement, cors) {\n super(srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n const img = this.img = new Image();\n\n if (cors && !(/^data:/i.test(srcElement.src()))) {\n img.crossOrigin = cors;\n }\n\n img.src = srcElement.src();\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n renderTo(ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n }\n\n optionsChange(e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n super.optionsChange(e);\n }\n }\n\n onLoad() {\n this.loading.resolve();\n this.invalidate();\n }\n\n onError() {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n }\n\n drawImage(ctx) {\n const rect = this.srcElement.rect();\n const topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n }\n}\n\nexport default ImageNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nclass MultiPathNode extends PathNode {\n renderPoints(ctx) {\n const paths = this.srcElement.paths;\n for (let i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n }\n}\n\nexport default MultiPathNode;\n","import { Path } from '../shapes/path';\nimport PathNode from './path-node';\n\nclass RectNode extends PathNode {\n renderPoints(ctx) {\n const geometry = this.srcElement.geometry();\n const [ rx, ry ] = geometry.cornerRadius;\n\n if (rx === 0 && ry === 0) {\n const { origin, size } = geometry;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n super.renderPoints(ctx, Path.fromRect(geometry));\n }\n }\n}\n\nexport default RectNode;\n","import PathNode from './path-node';\n\nclass TextNode extends PathNode {\n renderTo(ctx) {\n const text = this.srcElement;\n const pos = text.position();\n const size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n ctx.restore();\n }\n}\n\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport { createPromise, promiseAll, bindEvents, elementSize, unbindEvents } from '../util';\nimport RootNode from './root-node';\nimport ShapesQuadTree from '../search/shapes-quad-tree';\nimport SurfaceCursor from './surface-cursor';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\n\nclass Surface extends BaseSurface {\n get type() {\n return \"canvas\";\n }\n\n constructor(element, options) {\n super(element, options);\n\n this.element.innerHTML = this._template(this);\n\n const canvas = this.element.firstElementChild;\n const size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n destroy() {\n super.destroy();\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n draw(element) {\n super.draw(element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n }\n\n clear() {\n super.clear();\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n }\n\n eventTarget(e) {\n if (this._searchTree) {\n const point = this._surfacePoint(e);\n const shape = this._searchTree.pointShape(point);\n return shape;\n }\n }\n\n image() {\n const { _root: root, _rootElement: rootElement } = this;\n const loadingStates = [];\n\n root.traverse((childNode) => {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n const promise = createPromise();\n const resolveDataURL = () => {\n root._invalidate({ fixedScale: true });\n\n try {\n const data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n }\n\n suspendTracking() {\n super.suspendTracking();\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n }\n\n resumeTracking() {\n super.resumeTracking();\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n const childNodes = this._root.childNodes;\n const rootElements = [];\n for (let idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n }\n\n _resize() {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n }\n\n _template() {\n return \"\";\n }\n\n _enableTracking() {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n super._enableTracking();\n }\n\n _trackMouse(e) {\n if (this._suspendedTracking) {\n return;\n }\n\n const shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n const currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n }\n}\n\nexport default Surface;\n","import { Class, logToConsole } from './common';\nimport SVGSurface from './svg/surface';\nimport CanvasSurface from './canvas/surface';\n\nlet instance;\nlet support;\n\nconst hasDocument = () => typeof document !== \"undefined\";\n\nconst supportsCanvas = () => hasDocument() &&\n document.createElement(\"canvas\").getContext;\n\nconst supportsSVG = () => hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\");\n\nclass SurfaceFactory extends Class {\n static get support() {\n if (!support) {\n support = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support;\n }\n\n static get current() {\n if (!instance) {\n instance = new SurfaceFactory();\n }\n\n return instance;\n }\n\n constructor() {\n super();\n\n this._items = [ {\n name: \"svg\",\n type: SVGSurface\n }, {\n name: \"canvas\",\n type: CanvasSurface\n } ];\n }\n\n create(element, options) {\n const items = this._items;\n let match = items[0];\n\n if (options && options.type) {\n const preferred = options.type.toLowerCase();\n for (let i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n `- The browser does not support SVG and Canvas. User agent: ${ navigator.userAgent }`);\n }\n}\n\nexport default SurfaceFactory;\n\n","import BaseSurface from './core/surface';\nimport SurfaceFactory from './surface-factory';\n\nclass Surface extends BaseSurface {\n static get support() {\n return SurfaceFactory.support;\n }\n\n static create(element, options) {\n return SurfaceFactory.current.create(element, options);\n }\n}\n\nexport default Surface;\n\n","import { Class } from '../common';\n\nclass Highlight extends Class {\n constructor() {\n super();\n\n this._points = [];\n }\n\n destroy() {\n this._points = [];\n }\n\n show(points, opacity) {\n const arrayPoints = [].concat(points);\n this.hide();\n\n for (let i = 0; i < arrayPoints.length; i++) {\n const point = arrayPoints[i];\n if (point && point.toggleHighlight && point.hasHighlight()) {\n this.togglePointHighlight(point, true, opacity);\n this._points.push(point);\n }\n }\n }\n\n togglePointHighlight(point, show, opacity) {\n const toggleHandler = (point.options.highlight || {}).toggle;\n if (toggleHandler) {\n const eventArgs = {\n category: point.category,\n series: point.series,\n dataItem: point.dataItem,\n value: point.value,\n stackValue: point.stackValue,\n preventDefault: preventDefault,\n visual: point.highlightVisual(),\n show: show\n };\n toggleHandler(eventArgs);\n if (!eventArgs._defaultPrevented) {\n point.toggleHighlight(show, opacity);\n }\n } else {\n point.toggleHighlight(show, opacity);\n }\n }\n\n hide() {\n const points = this._points;\n while (points.length) {\n this.togglePointHighlight(points.pop(), false);\n }\n }\n\n isHighlighted(element) {\n const points = this._points;\n\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n if (element === point) {\n return true;\n }\n }\n\n return false;\n }\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nexport default Highlight;","export default function acceptKey(e, mouseKey) {\n const key = (mouseKey || \"\").toLowerCase();\n const event = e.event;\n const accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n return accept;\n}","export default function toChartAxisRanges(axisRanges) {\n const ranges = {};\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n if (axisRange.axis.options.name) {\n ranges[axisRange.axis.options.name] = {\n min: axisRange.range.min,\n max: axisRange.range.max\n };\n }\n }\n return ranges;\n}","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\n\nclass Pannable extends Class {\n constructor(plotArea, options) {\n super();\n\n this.plotArea = plotArea;\n this.options = deepExtend({}, this.options, options);\n }\n\n start(e) {\n this._active = acceptKey(e, this.options.key);\n return this._active;\n }\n\n move(e) {\n if (this._active) {\n const axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n if (axisRanges.length) {\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n }\n }\n\n end() {\n const active = this._active;\n this._active = false;\n\n return active;\n }\n\n pan() {\n const { plotArea, axisRanges } = this;\n if (axisRanges.length) {\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const range = axisRanges[idx];\n plotArea.updateAxisOptions(range.axis, range.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n delete this.plotArea;\n }\n\n _panAxes(e, position) {\n const plotArea = this.plotArea;\n const delta = -e[position].delta;\n const lock = (this.options.lock || \"\").toLowerCase();\n const updatedAxes = [];\n\n if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n const axes = plotArea.axes;\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n\n if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n const range = axis.pan(delta);\n\n if (range) {\n range.limitRange = true;\n updatedAxes.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n }\n\n return updatedAxes;\n }\n}\n\nPannable.prototype.options = {\n key: \"none\",\n lock: \"none\"\n};\n\nexport default Pannable;","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend, elementStyles, elementOffset, defined } from '../../common';\n\nclass ZoomSelection extends Class {\n constructor(chart, options) {\n super();\n\n this.chart = chart;\n this.options = deepExtend({}, this.options, options);\n this.createElement();\n }\n\n createElement() {\n const marquee = this._marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n const marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n }\n\n removeElement() {\n if (this._marquee.parentNode) {\n this._marquee.parentNode.removeChild(this._marquee);\n }\n }\n\n setStyles(styles) {\n elementStyles(this._marquee, styles);\n }\n\n start(e) {\n if (acceptKey(e, this.options.key)) {\n const chart = this.chart;\n const point = chart._eventCoordinates(e);\n const zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n const clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n if (zoomPane && clipBox) {\n const offset = this._elementOffset();\n\n clipBox.translate(offset.left, offset.top);\n this._zoomPaneClipBox = clipBox;\n\n document.body.appendChild(this._marquee);\n this.setStyles({\n left: e.pageX + 1,\n top: e.pageY + 1,\n width: 0,\n height: 0\n });\n\n return true;\n }\n }\n return false;\n }\n\n _elementOffset() {\n const chartElement = this.chart.element;\n const { paddingLeft, paddingTop } = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n const offset = elementOffset(chartElement);\n\n return {\n left: paddingLeft + offset.left,\n top: paddingTop + offset.top\n };\n }\n\n move(e) {\n const zoomPane = this._zoomPane;\n if (zoomPane) {\n this.setStyles(this._selectionPosition(e));\n }\n }\n\n end(e) {\n const zoomPane = this._zoomPane;\n if (zoomPane) {\n const elementOffset = this._elementOffset();\n const selectionPosition = this._selectionPosition(e);\n selectionPosition.left -= elementOffset.left;\n selectionPosition.top -= elementOffset.top;\n\n const start = { x: selectionPosition.left, y: selectionPosition.top };\n const end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n this._updateAxisRanges(start, end);\n\n this.removeElement();\n delete this._zoomPane;\n\n return toChartAxisRanges(this.axisRanges);\n }\n }\n\n zoom() {\n const axisRanges = this.axisRanges;\n if (axisRanges && axisRanges.length) {\n const plotArea = this.chart._plotArea;\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n this.removeElement();\n delete this._marquee;\n delete this.chart;\n }\n\n _updateAxisRanges(start, end) {\n const lock = (this.options.lock || \"\").toLowerCase();\n const axisRanges = [];\n\n const axes = this._zoomPane.axes;\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n const vertical = axis.options.vertical;\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n const range = axis.pointsRange(start, end);\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n }\n\n _selectionPosition(e) {\n const clipBox = this._zoomPaneClipBox;\n const startLocation = {\n x: e.x.startLocation,\n y: e.y.startLocation\n };\n const { x: { location: pageX }, y: { location: pageY } } = e;\n const lock = (this.options.lock || \"\").toLowerCase();\n let left = Math.min(startLocation.x, pageX);\n let top = Math.min(startLocation.y, pageY);\n let width = Math.abs(startLocation.x - pageX);\n let height = Math.abs(startLocation.y - pageY);\n\n if (lock === X) {\n left = clipBox.x1;\n width = clipBox.width();\n }\n if (lock === Y) {\n top = clipBox.y1;\n height = clipBox.height();\n }\n\n if (pageX > clipBox.x2) {\n width = clipBox.x2 - startLocation.x;\n }\n\n if (pageX < clipBox.x1) {\n width = startLocation.x - clipBox.x1;\n }\n\n if (pageY > clipBox.y2) {\n height = clipBox.y2 - startLocation.y;\n }\n\n if (pageY < clipBox.y1) {\n height = startLocation.y - clipBox.y1;\n }\n\n return {\n left: Math.max(left, clipBox.x1),\n top: Math.max(top, clipBox.y1),\n width: width,\n height: height\n };\n }\n}\n\nZoomSelection.prototype.options = {\n key: \"shift\",\n lock: \"none\"\n};\n\nexport default ZoomSelection;","\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\nimport { limitValue } from '../../drawing-utils';\n\n// Limit the zoom rate between 1% and 90% per mousewheel event.\n// At zoom rates close to 100% the axis range quickly becomes 0.\nconst MIN_RATE = 0.01;\nconst MAX_RATE = 0.9;\nconst DEFAULT_RATE = 0.3;\n\nclass MousewheelZoom extends Class {\n constructor(chart, options) {\n super();\n\n this.chart = chart;\n this.options = deepExtend({\n rate: DEFAULT_RATE\n }, this.options, options);\n }\n\n updateRanges(delta, coords) {\n const lock = (this.options.lock || \"\").toLowerCase();\n const axisRanges = [];\n const axes = this.chart._plotArea.axes;\n\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n const vertical = axis.options.vertical;\n\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n const rate = limitValue(this.options.rate, MIN_RATE, MAX_RATE);\n const range = axis.zoomRange(-delta * rate, coords);\n\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n\n zoom() {\n const axisRanges = this.axisRanges;\n const plotArea = this.chart._plotArea;\n\n if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n delete this.chart;\n }\n}\n\nexport default MousewheelZoom;\n","import createTransform from '../geometry/transform';\n\nexport default function translateToPoint(point, bbox, element) {\n const transofrm = element.transform() || createTransform();\n const matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n\n transofrm.matrix(matrix);\n element.transform(transofrm);\n}","\nexport default function alignStart(size, rect, align, axis, sizeField) {\n let start;\n if (align === \"start\") {\n start = rect.origin[axis];\n } else if (align === \"end\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","\nexport default function alignStartReverse(size, rect, align, axis, sizeField) {\n let start;\n if (align === \"start\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === \"end\") {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","import Group from './group';\nimport Size from '../geometry/size';\nimport Rect from '../geometry/rect';\nimport Point from '../geometry/point';\nimport createTransform from '../geometry/transform';\nimport translateToPoint from '../alignment/translate-to-point';\nimport alignStart from '../alignment/align-start';\nimport alignStartReverse from '../alignment/align-start-reverse';\n\nconst DEFAULT_OPTIONS = {\n alignContent: \"start\",\n justifyContent: \"start\",\n alignItems: \"start\",\n spacing: 0,\n orientation: \"horizontal\",\n lineSpacing: 0,\n wrap: true,\n revers: false\n};\n\nconst forEach = (elements, callback) => {\n elements.forEach(callback);\n};\n\nconst forEachReverse = (elements, callback) => {\n const length = elements.length;\n\n for (let idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n};\n\nclass Layout extends Group {\n\n constructor(rect, options) {\n super(Object.assign({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n rect(value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n }\n\n _initMap() {\n const options = this.options;\n const fieldMap = this._fieldMap;\n if (options.orientation === \"horizontal\") {\n fieldMap.sizeField = \"width\";\n fieldMap.groupsSizeField = \"height\";\n fieldMap.groupAxis = \"x\";\n fieldMap.groupsAxis = \"y\";\n } else {\n fieldMap.sizeField = \"height\";\n fieldMap.groupsSizeField = \"width\";\n fieldMap.groupAxis = \"y\";\n fieldMap.groupsAxis = \"x\";\n }\n\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n }\n\n reflow() {\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n\n if (this.options.transform) {\n this.transform(null);\n }\n\n const options = this.options;\n const rect = this._rect;\n const { groups, groupsSize } = this._initGroups();\n const { sizeField, groupsSizeField, groupAxis, groupsAxis } = this._fieldMap;\n const groupOrigin = new Point();\n const elementOrigin = new Point();\n const size = new Size();\n let groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n let elementStart, group, groupBox;\n\n const arrangeElements = (bbox, idx) => {\n const element = group.elements[idx];\n\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n\n for (let groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n const scale = rect.size[sizeField] / groupBox.size[sizeField];\n const scaledStart = groupBox.topLeft().scale(scale, scale);\n const scaledSize = groupBox.size[groupsSizeField] * scale;\n const newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n const transform = createTransform();\n if (groupAxis === \"x\") {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n\n this.transform(transform);\n }\n }\n\n _initGroups() {\n const { options, children } = this;\n const { lineSpacing, wrap, spacing } = options;\n const sizeField = this._fieldMap.sizeField;\n let group = this._newGroup();\n const groups = [];\n const addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n let groupsSize = -lineSpacing;\n\n for (let idx = 0; idx < children.length; idx++) {\n let element = children[idx];\n let bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this._addToGroup(group, bbox, element);\n addGroup();\n group = this._newGroup();\n } else {\n addGroup();\n group = this._newGroup();\n this._addToGroup(group, bbox, element);\n }\n } else {\n this._addToGroup(group, bbox, element);\n }\n }\n }\n\n if (group.bboxes.length) {\n addGroup();\n }\n\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n }\n\n _addToGroup(group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n }\n\n _newGroup() {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n }\n}\n\nexport default Layout;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, rectToBox } from '../../core';\n\nclass LegendLayout extends ChartElement {\n\n constructor(options, chartService) {\n super(options);\n\n this.chartService = chartService;\n }\n\n render() {\n const { children, options } = this;\n const vertical = options.vertical;\n\n this.visual = new draw.Layout(null, {\n spacing: vertical ? 0 : options.spacing,\n lineSpacing: vertical ? options.spacing : 0,\n orientation: vertical ? \"vertical\" : \"horizontal\",\n reverse: options.rtl,\n alignItems: vertical ? \"start\" : \"center\"\n });\n\n for (let idx = 0; idx < children.length; idx++) {\n let legendItem = children[idx];\n legendItem.reflow(new Box());\n legendItem.renderVisual();\n }\n }\n\n reflow(box) {\n this.visual.rect(box.toRect());\n this.visual.reflow();\n const bbox = this.visual.clippedBBox();\n\n if (bbox) {\n this.box = rectToBox(bbox);\n } else {\n this.box = new Box();\n }\n }\n\n renderVisual() {\n this.addVisual();\n }\n\n createVisual() {}\n}\n\nexport default LegendLayout;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { BoxElement, FloatElement, ShapeElement, TextBox } from '../../core';\nimport { LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE } from '../constants';\nimport { CENTER, WHITE } from '../../common/constants';\nimport { deepExtend, eventElement } from '../../common';\n\nclass LegendItem extends BoxElement {\n constructor(options) {\n super(options);\n\n this.createContainer();\n if (!options.rtl) {\n this.createMarker();\n this.createLabel();\n } else {\n this.createLabel();\n this.createMarker();\n }\n }\n\n createContainer() {\n this.container = new FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n this.append(this.container);\n }\n\n createMarker() {\n this.container.append(new ShapeElement(this.markerOptions()));\n }\n\n markerOptions() {\n const options = this.options;\n const markerColor = options.markerColor;\n return deepExtend({}, options.markers, {\n background: markerColor,\n border: {\n color: markerColor\n }\n });\n }\n\n createLabel() {\n const options = this.options;\n const labelOptions = deepExtend({}, options.labels);\n\n this.container.append(new TextBox(options.text, labelOptions));\n }\n\n renderComplete() {\n super.renderComplete();\n\n const cursor = this.options.cursor || {};\n const eventSink = this._itemOverlay = draw.Path.fromRect(this.container.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null,\n cursor: cursor.style || cursor\n });\n\n this.appendVisual(eventSink);\n }\n\n click(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n e.preventDefault();\n }\n }\n\n over(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n widget._legendItemHover(args.seriesIndex, args.pointIndex);\n }\n\n // Don't trigger point hover for legend items\n return true;\n }\n\n out(widget, e) {\n widget._unsetActivePoint();\n\n widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n }\n\n eventArgs(e) {\n const options = this.options;\n\n return {\n element: eventElement(e),\n text: options.text,\n series: options.series,\n seriesIndex: options.series.index,\n pointIndex: options.pointIndex\n };\n }\n\n renderVisual() {\n const options = this.options;\n const customVisual = options.visual;\n\n if (customVisual) {\n this.visual = customVisual({\n active: options.active,\n series: options.series,\n sender: this.getSender(),\n pointIndex: options.pointIndex,\n options: {\n markers: this.markerOptions(),\n labels: options.labels\n },\n createVisual: () => {\n this.createVisual();\n this.renderChildren();\n this.renderComplete();\n\n const defaultVisual = this.visual;\n\n delete this.visual;\n\n return defaultVisual;\n }\n });\n this.addVisual();\n } else {\n super.renderVisual();\n }\n }\n}\n\nexport default LegendItem;\n","\nimport { ChartElement, BoxElement, Box, TextBox, FloatElement } from '../../core';\nimport LegendLayout from './legend-layout';\nimport LegendItem from './legend-item';\n\nimport { TOP, RIGHT, BOTTOM, LEFT, CENTER, X, Y, BLACK } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, getSpacing, inArray, setDefaultOptions } from '../../common';\n\nconst HORIZONTAL = \"horizontal\";\nconst POINTER = \"pointer\";\nconst CUSTOM = \"custom\";\n\nclass Legend extends ChartElement {\n constructor(options, chartService = {}) {\n super(options);\n\n this.chartService = chartService;\n\n if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n this.options.position = RIGHT;\n }\n\n this.createContainers();\n\n this.createLegendTitle(options.title);\n\n this.createItems();\n }\n\n createContainers() {\n const options = this.options;\n const { position, align: userAlign } = options;\n let align = position;\n let vAlign = CENTER;\n\n if (position === CUSTOM) {\n align = LEFT;\n } else if (inArray(position, [ TOP, BOTTOM ])) {\n if (userAlign === \"start\") {\n align = LEFT;\n } else if (userAlign === \"end\") {\n align = RIGHT;\n } else {\n align = CENTER;\n }\n vAlign = position;\n } else if (userAlign) {\n if (userAlign === \"start\") {\n vAlign = TOP;\n } else if (userAlign === \"end\") {\n vAlign = BOTTOM;\n }\n }\n\n this.container = new BoxElement({\n margin: options.margin,\n padding: options.padding,\n background: options.background,\n border: options.border,\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n\n if (this.hasTitle()) {\n this.itemsContainer = new BoxElement({\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n } else {\n this.itemsContainer = this.container;\n }\n\n this.append(this.container);\n }\n\n createItems() {\n const chartService = this.getService();\n const options = this.options;\n const vertical = this.isVertical();\n const innerElement = new LegendLayout({\n vertical: vertical,\n spacing: options.spacing,\n rtl: chartService.rtl\n }, chartService);\n let items = options.items;\n\n if (options.reverse) {\n items = items.slice(0).reverse();\n }\n\n const count = items.length;\n\n for (let i = 0; i < count; i++) {\n let item = items[i];\n\n innerElement.append(new LegendItem(deepExtend({}, {\n markers: options.markers,\n labels: options.labels,\n rtl: chartService.rtl\n }, options.item, item)));\n }\n\n innerElement.render();\n this.itemsContainer.append(innerElement);\n }\n\n isVertical() {\n const { orientation, position } = this.options;\n const vertical = (position === CUSTOM && orientation !== HORIZONTAL) ||\n (defined(orientation) ? orientation !== HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n return vertical;\n }\n\n hasItems() {\n return this.container.children[0].children.length > 0;\n }\n\n reflow(targetBox) {\n const options = this.options;\n const legendBox = targetBox.clone();\n\n if (!this.hasItems()) {\n this.box = legendBox;\n return;\n }\n\n if (options.position === CUSTOM) {\n this.containerCustomReflow(legendBox);\n this.box = legendBox;\n } else {\n this.containerReflow(legendBox);\n }\n\n if (this.hasTitle()) {\n this.title.reflow(new Box(this.container.box.x1, this.title.box.y1, this.container.box.x2, this.title.box.y2));\n }\n }\n\n containerReflow(targetBox) {\n const { options, container } = this;\n const { position, width, height } = options;\n const pos = position === TOP || position === BOTTOM ? X : Y;\n const vertical = this.isVertical();\n const alignTarget = targetBox.clone();\n let containerBox = targetBox.clone();\n\n if (position === LEFT || position === RIGHT) {\n containerBox.y1 = alignTarget.y1 = 0;\n }\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n containerBox.align(alignTarget, Y, container.options.vAlign);\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n containerBox.align(alignTarget, X, container.options.align);\n }\n\n container.reflow(containerBox);\n containerBox = container.box;\n\n const box = containerBox.clone();\n\n if (options.offsetX || options.offsetY) {\n containerBox.translate(options.offsetX, options.offsetY);\n container.reflow(containerBox);\n }\n\n box[pos + 1] = targetBox[pos + 1];\n box[pos + 2] = targetBox[pos + 2];\n\n this.box = box;\n }\n\n containerCustomReflow(targetBox) {\n const { options, container } = this;\n const { offsetX, offsetY, width, height } = options;\n const vertical = this.isVertical();\n let containerBox = targetBox.clone();\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n }\n container.reflow(containerBox);\n containerBox = container.box;\n\n container.reflow(new Box(\n offsetX, offsetY,\n offsetX + containerBox.width(), offsetY + containerBox.height()\n ));\n }\n\n renderVisual() {\n if (this.hasItems()) {\n super.renderVisual();\n }\n }\n\n createLegendTitle(title) {\n let titleOptions = deepExtend({}, {\n color: BLACK,\n position: TOP,\n align: CENTER\n }, title);\n let text = titleOptions.text;\n\n if (!title || title.visible === false) {\n return;\n }\n\n if (defined(titleOptions) && titleOptions.visible) {\n const labelTemplate = getTemplate(titleOptions);\n if (labelTemplate) {\n text = labelTemplate({ text: text });\n } else if (titleOptions.format) {\n text = this.chartService.format.auto(titleOptions.format, text);\n }\n }\n\n this.title = new TextBox(text, titleOptions);\n\n this.createTitleLayout();\n\n this.appendTitleLayoutContent();\n }\n\n createTitleLayout() {\n this.layout = new FloatElement({\n vertical: true,\n wrap: false\n });\n\n this.container.append(this.layout);\n }\n\n hasTitle() {\n return Boolean(this.options.title && this.options.title.visible !== false);\n }\n\n appendTitleLayoutContent() {\n const options = this.options;\n\n if (options.title.position === BOTTOM) {\n this.layout.append(this.itemsContainer);\n this.layout.append(this.title);\n } else {\n this.layout.append(this.title);\n this.layout.append(this.itemsContainer);\n }\n }\n}\n\nsetDefaultOptions(Legend, {\n position: RIGHT,\n items: [],\n offsetX: 0,\n offsetY: 0,\n margin: getSpacing(5),\n padding: getSpacing(5),\n border: {\n color: BLACK,\n width: 0\n },\n item: {\n cursor: POINTER,\n spacing: 6\n },\n spacing: 6,\n background: \"\",\n zIndex: 1,\n markers: {\n border: {\n width: 0\n },\n width: 15,\n height: 3,\n type: \"rect\",\n align: LEFT,\n vAlign: CENTER\n }\n});\n\nexport default Legend;\n","import filterSeriesByType from '../utils/filter-series-by-type';\nimport { Class } from '../../common';\n\nclass PlotAreaFactory extends Class {\n\n constructor() {\n super();\n\n this._registry = [];\n }\n\n register(type, seriesTypes) {\n this._registry.push({\n type: type,\n seriesTypes: seriesTypes\n });\n }\n\n create(srcSeries, options, chartService) {\n const registry = this._registry;\n let match = registry[0];\n let series;\n\n for (let idx = 0; idx < registry.length; idx++) {\n const entry = registry[idx];\n series = filterSeriesByType(srcSeries, entry.seriesTypes);\n\n if (series.length > 0) {\n match = entry;\n break;\n }\n }\n\n return new match.type(series, options, chartService);\n }\n}\n\nPlotAreaFactory.current = new PlotAreaFactory();\n\nexport default PlotAreaFactory;","import { DomEventsBuilder } from '../services';\n\nimport { DateCategoryAxis, Point } from '../core';\n\nimport { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';\n\nimport { LEFT, RIGHT, MIN_VALUE, MAX_VALUE, X } from '../common/constants';\nimport { addClass, Class, removeClass, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';\nimport { parseDate } from '../date-utils';\n\nconst ZOOM_ACCELERATION = 3;\nconst SELECTOR_HEIGHT_ADJUST = 0.1;\n\nfunction createDiv(className) {\n const element = document.createElement(\"div\");\n if (className) {\n element.className = className;\n }\n\n return element;\n}\n\nfunction closestHandle(element) {\n let current = element;\n while (current && !hasClasses(current, \"k-handle\")) {\n current = current.parentNode;\n }\n\n return current;\n}\n\nclass Selection extends Class {\n constructor(chart, categoryAxis, options, observer) {\n super();\n\n const chartElement = chart.element;\n\n this.options = deepExtend({}, this.options, options);\n this.chart = chart;\n this.observer = observer;\n this.chartElement = chartElement;\n this.categoryAxis = categoryAxis;\n this._dateAxis = this.categoryAxis instanceof DateCategoryAxis;\n\n this.initOptions();\n\n this.visible = this.options.visible && chartElement.offsetHeight;\n\n if (this.visible) {\n this.createElements();\n\n this.set(this._index(this.options.from), this._index(this.options.to));\n\n this.bindEvents();\n }\n }\n\n onPane(pane) {\n return this.categoryAxis.pane === pane;\n }\n\n createElements() {\n const options = this.options;\n const wrapper = this.wrapper = createDiv(\"k-selector\");\n elementStyles(wrapper, {\n top: options.offset.top,\n left: options.offset.left,\n width: options.width,\n height: options.height,\n direction: 'ltr'\n });\n const selection = this.selection = createDiv(\"k-selection\");\n this.leftMask = createDiv(\"k-mask\");\n this.rightMask = createDiv(\"k-mask\");\n\n wrapper.appendChild(this.leftMask);\n wrapper.appendChild(this.rightMask);\n wrapper.appendChild(selection);\n\n selection.appendChild(createDiv(\"k-selection-bg\"));\n\n const leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle\");\n const rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle\");\n leftHandle.appendChild(createDiv());\n rightHandle.appendChild(createDiv());\n\n selection.appendChild(leftHandle);\n selection.appendChild(rightHandle);\n\n this.chartElement.appendChild(wrapper);\n const selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n const leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n const rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n options.selection = {\n border: {\n left: selectionStyles.borderLeftWidth,\n right: selectionStyles.borderRightWidth\n }\n };\n\n elementStyles(leftHandle, {\n top: (selectionStyles.height - leftHandleHeight) / 2\n });\n\n elementStyles(rightHandle, {\n top: (selectionStyles.height - rightHandleHeight) / 2\n });\n\n wrapper.style.cssText = wrapper.style.cssText;\n }\n\n bindEvents() {\n if (this.options.mousewheel !== false) {\n this._mousewheelHandler = this._mousewheel.bind(this);\n bindEvents(this.wrapper, {\n [ MOUSEWHEEL ]: this._mousewheelHandler\n });\n }\n\n this._domEvents = DomEventsBuilder.create(this.wrapper, {\n stopPropagation: true, // applicable for the jQuery UserEvents\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n press: this._press.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n }\n\n initOptions() {\n const { options, categoryAxis } = this;\n const box = categoryAxis.pane.chartsBox();\n const intlService = this.chart.chartService.intl;\n\n if (this._dateAxis) {\n deepExtend(options, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n from: parseDate(intlService, options.from),\n to: parseDate(intlService, options.to)\n });\n }\n\n const { paddingLeft, paddingTop } = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n\n this.options = deepExtend({}, {\n width: box.width(),\n height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n padding: {\n left: paddingLeft,\n top: paddingTop\n },\n offset: {\n left: box.x1 + paddingLeft,\n top: box.y1 + paddingTop\n },\n from: options.min,\n to: options.max\n }, options);\n }\n\n destroy() {\n if (this._domEvents) {\n this._domEvents.destroy();\n delete this._domEvents;\n }\n\n clearTimeout(this._mwTimeout);\n this._state = null;\n\n if (this.wrapper) {\n if (this._mousewheelHandler) {\n unbindEvents(this.wrapper, {\n [ MOUSEWHEEL ]: this._mousewheelHandler\n });\n this._mousewheelHandler = null;\n }\n this.chartElement.removeChild(this.wrapper);\n this.wrapper = null;\n }\n }\n\n _rangeEventArgs(range) {\n\n return {\n axis: this.categoryAxis.options,\n from: this._value(range.from),\n to: this._value(range.to)\n };\n }\n\n _start(e) {\n const options = this.options;\n const target = eventElement(e);\n\n if (this._state || !target) {\n return;\n }\n\n this.chart._unsetActivePoint();\n this._state = {\n moveTarget: closestHandle(target) || target,\n startLocation: e.x ? e.x.location : 0,\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n\n const args = this._rangeEventArgs({\n from: this._index(options.from),\n to: this._index(options.to)\n });\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n }\n }\n\n _press(e) {\n let handle;\n if (this._state) {\n handle = this._state.moveTarget;\n } else {\n handle = closestHandle(eventElement(e));\n }\n if (handle) {\n addClass(handle, \"k-handle-active\");\n }\n }\n\n _move(e) {\n if (!this._state) {\n return;\n }\n\n const { _state: state, options, categoryAxis } = this;\n const { range, moveTarget: target } = state;\n const reverse = categoryAxis.options.reverse;\n const from = this._index(options.from);\n const to = this._index(options.to);\n const min = this._index(options.min);\n const max = this._index(options.max);\n const delta = state.startLocation - e.x.location;\n const oldRange = { from: range.from, to: range.to };\n const span = range.to - range.from;\n const scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n const offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n if (!target) {\n return;\n }\n\n const leftHandle = hasClasses(target, \"k-left-handle\");\n const rightHandle = hasClasses(target, \"k-right-handle\");\n\n if (hasClasses(target, \"k-selection k-selection-bg\")) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n range.to = Math.min(\n range.from + span,\n max\n );\n } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - 1\n );\n range.to = Math.max(range.from + 1, range.to);\n } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n range.to = Math.min(\n Math.max(min + 1, to - offset),\n max\n );\n range.from = Math.min(range.to - 1, range.from);\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.move(range.from, range.to);\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n }\n\n _end() {\n if (this._state) {\n const moveTarget = this._state.moveTarget;\n if (moveTarget) {\n removeClass(moveTarget, \"k-handle-active\");\n }\n\n const range = this._state.range;\n this.set(range.from, range.to);\n this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n delete this._state;\n }\n }\n\n _tap(e) {\n const { options, categoryAxis } = this;\n const coords = this.chart._eventCoordinates(e);\n const categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n const from = this._index(options.from);\n const to = this._index(options.to);\n const min = this._index(options.min);\n const max = this._index(options.max);\n const span = to - from;\n const mid = from + span / 2;\n const range = {};\n const rightClick = e.event.which === 3;\n let offset = Math.round(mid - categoryIx);\n\n if (this._state || rightClick) {\n return;\n }\n\n\n this.chart._unsetActivePoint();\n\n if (!categoryAxis.options.justified) {\n offset--;\n }\n\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n\n range.to = Math.min(range.from + span, max);\n\n this._start(e);\n if (this._state) {\n this._state.range = range;\n this.trigger(SELECT, this._rangeEventArgs(range));\n this._end();\n }\n }\n\n _mousewheel(e) {\n let delta = mousewheelDelta(e);\n\n this._start({ target: this.selection });\n\n if (this._state) {\n const range = this._state.range;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (this.options.mousewheel.reverse) {\n delta *= -1;\n }\n\n if (this.expand(delta)) {\n this.trigger(SELECT, {\n axis: this.categoryAxis.options,\n delta: delta,\n originalEvent: e,\n from: this._value(range.from),\n to: this._value(range.to)\n });\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(() => {\n this._end();\n }, MOUSEWHEEL_DELAY);\n }\n }\n\n _gesturestart(e) {\n const options = this.options;\n\n this._state = {\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n const args = this._rangeEventArgs(this._state.range);\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n } else {\n e.preventDefault();\n }\n }\n\n _gestureend() {\n if (this._state) {\n this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n delete this._state;\n }\n }\n\n _gesturechange(e) {\n const { chart, _state: state, options, categoryAxis } = this;\n const range = state.range;\n const p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n const p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n const left = Math.min(p0, p1);\n const right = Math.max(p0, p1);\n\n e.preventDefault();\n\n range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n this.move(range.from, range.to);\n\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n\n _index(value) {\n let index = value;\n\n if (value instanceof Date) {\n index = this.categoryAxis.categoryIndex(value);\n }\n\n return index;\n }\n\n _value(index) {\n let value = index;\n if (this._dateAxis) {\n value = this.categoryAxis.categoryAt(index);\n if (value > this.options.max) {\n value = this.options.max;\n }\n }\n\n return value;\n }\n\n _slot(value) {\n const categoryAxis = this.categoryAxis;\n const index = this._index(value);\n\n return categoryAxis.getSlot(index, index, true);\n }\n\n move(from, to) {\n const options = this.options;\n const reverse = this.categoryAxis.options.reverse;\n const { offset, padding, selection: { border } } = options;\n const left = reverse ? to : from;\n const right = reverse ? from : to;\n const edge = 'x' + (reverse ? 2 : 1);\n\n let box = this._slot(left);\n const leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n elementStyles(this.leftMask, {\n width: leftMaskWidth\n });\n elementStyles(this.selection, {\n left: leftMaskWidth\n });\n\n box = this._slot(right);\n\n const rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n elementStyles(this.rightMask, {\n width: rightMaskWidth\n });\n\n let distance = options.width - rightMaskWidth;\n if (distance !== options.width) {\n distance += border.right;\n }\n\n elementStyles(this.rightMask, {\n left: distance\n });\n elementStyles(this.selection, {\n width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n });\n }\n\n set(from, to) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const fromValue = limitValue(this._index(from), min, max);\n const toValue = limitValue(this._index(to), fromValue + 1, max);\n\n if (options.visible) {\n this.move(fromValue, toValue);\n }\n\n options.from = this._value(fromValue);\n options.to = this._value(toValue);\n }\n\n expand(delta) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const zDir = options.mousewheel.zoom;\n const from = this._index(options.from);\n const to = this._index(options.to);\n let range = { from: from, to: to };\n const oldRange = deepExtend({}, range);\n\n if (this._state) {\n range = this._state.range;\n }\n\n if (zDir !== RIGHT) {\n range.from = limitValue(\n limitValue(from - delta, 0, to - 1),\n min, max\n );\n }\n\n if (zDir !== LEFT) {\n range.to = limitValue(\n limitValue(to + delta, range.from + 1, max),\n min,\n max\n );\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n }\n\n zoom(delta, coords) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const from = this._index(options.from);\n const to = this._index(options.to);\n let range = { from: from, to: to };\n const oldRange = deepExtend({}, range);\n\n const { reverse } = this.categoryAxis.options;\n const origin = X + (reverse ? '2' : '1');\n const lineBox = this.categoryAxis.lineBox();\n const relative = Math.abs(lineBox[origin] - coords[X]);\n const size = lineBox.width();\n const position = round(relative / size, 2);\n const minDelta = round(position * delta);\n const maxDelta = round((1 - position) * delta);\n\n if (this._state) {\n range = this._state.range;\n }\n\n range.from = limitValue(\n limitValue(from - minDelta, 0, to - 1),\n min, max\n );\n\n range.to = limitValue(\n limitValue(to + maxDelta, range.from + 1, max),\n min,\n max\n );\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n }\n\n trigger(name, args) {\n return (this.observer || this.chart).trigger(name, args);\n }\n}\n\nsetDefaultOptions(Selection, {\n visible: true,\n mousewheel: {\n zoom: \"both\"\n },\n min: MIN_VALUE,\n max: MAX_VALUE\n});\n\nexport default Selection;\n","import BaseTooltip from './base-tooltip';\n\nimport { deepExtend } from '../../common';\n\nclass Tooltip extends BaseTooltip {\n show(point) {\n if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n return;\n }\n\n const options = deepExtend({}, this.options, point.options.tooltip);\n const anchor = point.tooltipAnchor();\n\n if (anchor) {\n this._current = point;\n super.show({\n point: point,\n anchor: anchor\n }, options, point);\n } else {\n this.hide();\n }\n }\n\n hide() {\n delete this._current;\n super.hide();\n }\n}\n\nexport default Tooltip;","import BaseTooltip from './base-tooltip';\nimport { Point } from '../../core';\n\nimport { grep, setDefaultOptions } from '../../common';\n\nclass SharedTooltip extends BaseTooltip {\n constructor(plotArea, options) {\n super(plotArea.chartService, options);\n\n this.plotArea = plotArea;\n this.formatService = plotArea.chartService.format;\n }\n\n showAt(points, coords) {\n const tooltipPoints = grep(points, function(point) {\n const tooltip = point.series.tooltip;\n const excluded = tooltip && tooltip.visible === false;\n\n return !excluded;\n });\n\n if (tooltipPoints.length > 0) {\n const point = tooltipPoints[0];\n const slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n const anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n this.show({\n anchor: anchor,\n shared: true,\n points: points,\n category: point.category,\n categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n series: this.plotArea.series\n }, this.options);\n }\n }\n\n _slotAnchor(point, slot) {\n const axis = this.plotArea.categoryAxis;\n const align = {\n horizontal: \"left\",\n vertical: \"center\"\n };\n\n if (!axis.options.vertical) {\n point.x = slot.center().x;\n }\n\n return {\n point: point,\n align: align\n };\n }\n\n _defaultAnchor(point, slot) {\n const box = point.owner.pane.chartsBox();\n const vertical = this.plotArea.categoryAxis.options.vertical;\n const center = box.center();\n const slotCenter = slot.center();\n const align = {\n horizontal: \"center\",\n vertical: \"center\"\n };\n\n let centerPoint;\n if (vertical) {\n centerPoint = new Point(center.x, slotCenter.y);\n } else {\n centerPoint = new Point(slotCenter.x, center.y);\n }\n\n return {\n point: centerPoint,\n align: align\n };\n }\n}\n\nsetDefaultOptions(SharedTooltip, {\n categoryFormat: '{0:d}'\n});\n\nexport default SharedTooltip;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION, BAR, START_SCALE } from '../constants';\n\nimport { X, Y } from '../../common/constants';\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nclass BarChartAnimation extends draw.Animation {\n\n setup() {\n const { element, options } = this;\n const bbox = element.bbox();\n\n if (bbox) {\n this.origin = options.origin;\n const axis = options.vertical ? Y : X;\n\n const fromScale = this.fromScale = new geom.Point(1, 1);\n fromScale[axis] = START_SCALE;\n\n element.transform(geom.transform()\n .scale(fromScale.x, fromScale.y)\n );\n } else {\n this.abort();\n }\n }\n\n step(pos) {\n const scaleX = interpolateValue(this.fromScale.x, 1, pos);\n const scaleY = interpolateValue(this.fromScale.y, 1, pos);\n\n this.element.transform(geom.transform()\n .scale(scaleX, scaleY, this.origin)\n );\n }\n\n abort() {\n super.abort();\n this.element.transform(null);\n }\n}\n\nsetDefaultOptions(BarChartAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(BAR, BarChartAnimation);\n\nexport default BarChartAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, BUBBLE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass BubbleAnimation extends draw.Animation {\n setup() {\n const center = this.center = this.element.bbox().center();\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, center)\n );\n }\n\n step(pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.center)\n );\n }\n}\n\nsetDefaultOptions(BubbleAnimation, {\n easing: \"easeOutElastic\"\n});\n\ndraw.AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\nexport default BubbleAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { FADEIN } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass FadeInAnimation extends draw.Animation {\n setup() {\n this.fadeTo = this.element.opacity();\n this.element.opacity(0);\n }\n\n step(pos) {\n this.element.opacity(pos * this.fadeTo);\n }\n}\n\nsetDefaultOptions(FadeInAnimation, {\n duration: 200,\n easing: \"linear\"\n});\n\ndraw.AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\nexport default FadeInAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, INITIAL_ANIMATION_DURATION, PIE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PieAnimation extends draw.Animation {\n setup() {\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, this.options.center)\n );\n }\n\n step(pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.options.center)\n );\n }\n}\n\nsetDefaultOptions(PieAnimation, {\n easing: \"easeOutElastic\",\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(PIE, PieAnimation);\n\nexport default PieAnimation;","import ScatterChart from './scatter-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport LineSegment from '../line-chart/line-segment';\nimport SplineSegment from '../line-chart/spline-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nimport { deepExtend } from '../../common';\n\nclass ScatterLineChart extends ScatterChart {\n render() {\n super.render();\n\n this.renderSegments();\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n }\n\n animationPoints() {\n const points = super.animationPoints();\n return points.concat(this._segments);\n }\n\n createMissingValue(value, missingValues) {\n if (missingValues === ZERO) {\n const missingValue = {\n x: value.x,\n y: value.y\n };\n if (!hasValue(missingValue.x)) {\n missingValue.x = 0;\n }\n if (!hasValue(missingValue.y)) {\n missingValue.y = 0;\n }\n return missingValue;\n }\n }\n}\n\ndeepExtend(ScatterLineChart.prototype, LineChartMixin);\n\nexport default ScatterLineChart;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport ScatterChart from '../scatter-charts/scatter-chart';\nimport ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport BubbleChart from '../bubble-chart/bubble-chart';\nimport SeriesBinder from '../series-binder';\n\nimport { NumericAxis, LogarithmicAxis, DateValueAxis, Point } from '../../core';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\nimport equalsIgnoreCase from '../utils/equals-ignore-case';\nimport singleItemOrArray from '../utils/single-item-or-array';\n\nimport { SCATTER, SCATTER_LINE, BUBBLE, LOGARITHMIC } from '../constants';\n\nimport { DATE } from '../../common/constants';\nimport { deepExtend, eventElement, grep, inArray, setDefaultOptions } from '../../common';\n\nclass XYPlotArea extends PlotAreaBase {\n initFields() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n\n this.xAxisRangeTracker = new AxisGroupRangeTracker();\n this.yAxisRangeTracker = new AxisGroupRangeTracker();\n }\n\n render(panes = this.panes) {\n const seriesByPane = this.groupSeriesByPane();\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n const filteredSeries = this.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this.createScatterChart(\n filterSeriesByType(filteredSeries, SCATTER),\n pane\n );\n\n this.createScatterLineChart(\n filterSeriesByType(filteredSeries, SCATTER_LINE),\n pane\n );\n\n this.createBubbleChart(\n filterSeriesByType(filteredSeries, BUBBLE),\n pane\n );\n }\n\n this.createAxes(panes);\n }\n\n appendChart(chart, pane) {\n this.xAxisRangeTracker.update(chart.xAxisRanges);\n this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n super.appendChart(chart, pane);\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis.options.vertical) {\n this.yAxisRangeTracker.reset(axisName);\n delete this.namedYAxes[axisName];\n } else {\n this.xAxisRangeTracker.reset(axisName);\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n }\n\n // TODO: Refactor, optionally use series.pane option\n seriesPaneName(series) {\n const options = this.options;\n const xAxisName = series.xAxis;\n const xAxisOptions = [].concat(options.xAxis);\n const xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n const yAxisName = series.yAxis;\n const yAxisOptions = [].concat(options.yAxis);\n const yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = panes[0].name || \"default\";\n const paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n createScatterChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createScatterLineChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createBubbleChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new BubbleChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createXYAxis(options, vertical, axisIndex) {\n const axisName = options.name;\n const namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n const tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n const axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n const isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n const defaultRange = tracker.query();\n const defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n const range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n const typeSamples = [ axisOptions.min, axisOptions.max ];\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n const firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n if (axisIndex === 0 && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n let inferredDate;\n\n for (let i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateValueAxis;\n } else if (isLog) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n const axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(`${ vertical ? \"Y\" : \"X\" } axis with name ${ axisName } is already defined`);\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n\n return axis;\n }\n\n createAxes(panes) {\n const options = this.options;\n const xAxesOptions = [].concat(options.xAxis);\n const xAxes = [];\n const yAxesOptions = [].concat(options.yAxis);\n const yAxes = [];\n\n for (let idx = 0; idx < xAxesOptions.length; idx++) {\n const axisPane = this.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (let idx = 0; idx < yAxesOptions.length; idx++) {\n const axisPane = this.findPane(yAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n yAxes.push(this.createXYAxis(yAxesOptions[idx], true, idx));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const allAxes = this.axes;\n const length = allAxes.length;\n const xValues = [];\n const yValues = [];\n\n for (let i = 0; i < length; i++) {\n const axis = allAxes[i];\n const values = axis.options.vertical ? yValues : xValues;\n const currentValue = axis.getValue(point);\n if (currentValue !== null) {\n values.push(currentValue);\n }\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n }\n\n updateAxisOptions(axis, options) {\n const vertical = axis.options.vertical;\n const axes = this.groupAxes(this.panes);\n const index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n }\n}\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n const axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(XYPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default XYPlotArea;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, ShapeBuilder, TextBox, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { OUTSIDE_END, INSIDE_END, PIE, FADEIN, TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { TOP, BOTTOM, LEFT, RIGHT, DEFAULT_FONT, CIRCLE, WHITE, CENTER, DEFAULT_PRECISION } from '../../common/constants';\nimport { autoTextColor, setDefaultOptions, getSpacing, getTemplate, deepExtend, round, rad } from '../../common';\n\nclass PieSegment extends ChartElement {\n constructor(value, sector, options) {\n super(options);\n\n this.value = value;\n this.sector = sector;\n }\n\n render() {\n const labels = this.options.labels;\n const chartService = this.owner.chartService;\n let labelText = this.value;\n\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n const labelTemplate = getTemplate(labels);\n const pointData = this.pointData();\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = chartService.format.auto(labels.format, labelText);\n }\n\n if (labels.visible && (labelText || labelText === 0)) {\n if (labels.position === CENTER || labels.position === INSIDE_END) {\n if (!labels.color) {\n labels.color = autoTextColor(this.options.color);\n }\n if (!labels.background) {\n labels.background = this.options.color;\n }\n } else {\n const themeLabels = chartService.theme.seriesDefaults.labels;\n labels.color = labels.color || themeLabels.color;\n labels.background = labels.background || themeLabels.background;\n }\n\n\n this.label = new TextBox(labelText, deepExtend({}, labels, {\n align: CENTER,\n vAlign: \"\",\n animation: {\n type: FADEIN,\n delay: this.animationDelay\n }\n }), pointData);\n\n this.append(this.label);\n }\n }\n\n reflow(targetBox) {\n this.render();\n this.box = targetBox;\n this.reflowLabel();\n }\n\n reflowLabel() {\n const { options: { labels: labelsOptions }, label } = this;\n const sector = this.sector.clone();\n const labelsDistance = labelsOptions.distance;\n const angle = sector.middle();\n\n if (label) {\n const labelHeight = label.box.height();\n const labelWidth = label.box.width();\n let lp;\n\n if (labelsOptions.position === CENTER) {\n sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else if (labelsOptions.position === INSIDE_END) {\n sector.radius = sector.radius - labelHeight / 2;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n let x1;\n lp = sector.clone().expand(labelsDistance).point(angle);\n if (lp.x >= sector.center.x) {\n x1 = lp.x + labelWidth;\n label.orientation = RIGHT;\n } else {\n x1 = lp.x - labelWidth;\n label.orientation = LEFT;\n }\n label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n }\n }\n }\n\n createVisual() {\n const { sector, options } = this;\n\n super.createVisual();\n\n if (this.value) {\n if (options.visual) {\n const startAngle = (sector.startAngle + 180) % 360;\n const visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n center: new geom.Point(sector.center.x, sector.center.y),\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n startAngle: startAngle,\n endAngle: startAngle + sector.angle,\n options: options,\n sender: this.getSender(),\n createVisual: () => {\n const group = new draw.Group();\n this.createSegmentVisual(group);\n\n return group;\n }\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else {\n this.createSegmentVisual(this.visual);\n }\n }\n }\n\n createSegmentVisual(group) {\n const { sector, options } = this;\n const borderOptions = options.border || {};\n const border = borderOptions.width > 0 ? {\n stroke: {\n color: borderOptions.color,\n width: borderOptions.width,\n opacity: borderOptions.opacity,\n dashType: borderOptions.dashType\n }\n } : {};\n const color = options.color;\n const fill = {\n color: color,\n opacity: options.opacity\n };\n const visual = this.createSegment(sector, deepExtend({\n fill: fill,\n stroke: {\n opacity: options.opacity\n },\n zIndex: options.zIndex\n }, border));\n\n group.append(visual);\n\n if (hasGradientOverlay(options)) {\n group.append(this.createGradientOverlay(visual, {\n baseColor: color,\n fallbackFill: fill\n }, deepExtend({\n center: [ sector.center.x, sector.center.y ],\n innerRadius: sector.innerRadius,\n radius: sector.radius,\n userSpace: true\n }, options.overlay)));\n }\n }\n\n createSegment(sector, options) {\n if (options.singleSegment) {\n return new draw.Circle(new geom.Circle(new geom.Point(sector.center.x, sector.center.y), sector.radius), options);\n }\n\n return ShapeBuilder.current.createRing(sector, options);\n }\n\n createAnimation() {\n const { options, sector: { center } } = this;\n\n deepExtend(options, {\n animation: {\n center: [ center.x, center.y ],\n delay: this.animationDelay\n }\n });\n\n super.createAnimation();\n }\n\n createHighlight(options) {\n const highlight = this.options.highlight || {};\n const border = highlight.border || {};\n\n return this.createSegment(this.sector, deepExtend({}, options, {\n fill: {\n color: highlight.color,\n opacity: highlight.opacity\n },\n stroke: {\n opacity: border.opacity,\n width: border.width,\n color: border.color\n }\n }));\n }\n\n highlightVisual() {\n return this.visual.children[0];\n }\n\n highlightVisualArgs() {\n const sector = this.sector;\n\n return {\n options: this.options,\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n center: new geom.Point(sector.center.x, sector.center.y),\n startAngle: sector.startAngle,\n endAngle: sector.angle + sector.startAngle,\n visual: this.visual\n };\n }\n\n tooltipAnchor() {\n const sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n const midAndle = sector.middle();\n const midPoint = sector.point(midAndle);\n\n return {\n point: midPoint,\n align: tooltipAlignment(midAndle + 180)\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n }\n}\n\nconst RAD_30 = round(rad(30), DEFAULT_PRECISION);\nconst RAD_60 = round(rad(60), DEFAULT_PRECISION);\n\nfunction tooltipAlignment(angle) {\n const radians = rad(angle);\n const sine = round(Math.sin(radians), DEFAULT_PRECISION);\n const cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n\n let horizontal;\n if (Math.abs(sine) > RAD_60) {\n horizontal = CENTER;\n } else if (cosine < 0) {\n horizontal = RIGHT;\n } else {\n horizontal = LEFT;\n }\n\n let vertical;\n if (Math.abs(sine) < RAD_30) {\n vertical = CENTER;\n } else if (sine < 0) {\n vertical = BOTTOM;\n } else {\n vertical = TOP;\n }\n\n return {\n horizontal: horizontal,\n vertical: vertical\n };\n}\n\nsetDefaultOptions(PieSegment, {\n color: WHITE,\n overlay: {\n gradient: \"roundedBevel\"\n },\n border: {\n width: 0.5\n },\n labels: {\n visible: false,\n distance: 35,\n font: DEFAULT_FONT,\n margin: getSpacing(0.5),\n align: CIRCLE,\n zIndex: 1,\n position: OUTSIDE_END\n },\n animation: {\n type: PIE\n },\n highlight: {\n visible: true,\n border: {\n width: 1\n }\n },\n visible: true\n});\n\ndeepExtend(PieSegment.prototype, PointEventsMixin);\n\nexport default PieSegment;\n","import { getTemplate } from '../../common';\nimport { hasValue } from '../utils';\n\nconst PieChartMixin = {\n createLegendItem: function(value, point, options) {\n const legendOptions = this.options.legend || {};\n const labelsOptions = legendOptions.labels || {};\n const inactiveItems = legendOptions.inactiveItems || {};\n const inactiveItemsLabels = inactiveItems.labels || {};\n\n if (options && options.visibleInLegend !== false) {\n const pointVisible = options.visible !== false;\n const labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n let text = options.category;\n\n if (labelTemplate) {\n text = labelTemplate({\n text: text,\n series: options.series,\n dataItem: options.dataItem,\n percentage: options.percentage,\n value: value\n });\n }\n\n let itemLabelOptions, markerColor;\n if (pointVisible) {\n itemLabelOptions = {};\n markerColor = point.color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = (inactiveItems.markers || {}).color;\n }\n\n if (hasValue(text) && text !== \"\") {\n this.legendItems.push({\n active: pointVisible,\n pointIndex: options.index,\n text: text,\n series: options.series,\n markerColor: markerColor,\n labels: itemLabelOptions\n });\n }\n }\n }\n};\n\nexport default PieChartMixin;","import { drawing as draw, geometry } from '@progress/kendo-drawing';\n\nimport PieSegment from './pie-segment';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport { ChartElement, Ring, Box, Point } from '../../core';\n\nimport { OUTSIDE_END, FADEIN, COLUMN } from '../constants';\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CIRCLE, RIGHT, CENTER } from '../../common/constants';\nimport { deepExtend, defined, find, isFunction, last, round, setDefaultOptions, valueOrDefault } from '../../common';\n\nconst PIE_SECTOR_ANIM_DELAY = 70;\n\nclass PieChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.legendItems = [];\n this.render();\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n traverseDataPoints(callback) {\n const { options, plotArea: { options: { seriesColors = [] } } } = this;\n const colorsCount = seriesColors.length;\n const series = options.series;\n const seriesCount = series.length;\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const data = currentSeries.data;\n const { total, points, count } = bindSegments(currentSeries);\n const anglePerValue = 360 / total;\n let constantAngle;\n if (!isFinite(anglePerValue)) {\n constantAngle = 360 / count;\n }\n let currentAngle;\n\n if (defined(currentSeries.startAngle)) {\n currentAngle = currentSeries.startAngle;\n } else {\n currentAngle = options.startAngle;\n }\n\n if (seriesIx !== seriesCount - 1) {\n if (currentSeries.labels.position === OUTSIDE_END) {\n currentSeries.labels.position = CENTER;\n }\n }\n\n for (let i = 0; i < points.length; i++) {\n const pointData = points[i];\n if (!pointData) {\n continue;\n }\n\n const { fields, value, visible } = pointData;\n const angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n const explode = data.length !== 1 && Boolean(fields.explode);\n\n if (!isFunction(currentSeries.color)) {\n currentSeries.color = fields.color || seriesColors[i % colorsCount];\n }\n\n callback(value, new Ring(null, 0, 0, currentAngle, angle), {\n owner: this,\n category: defined(fields.category) ? fields.category : \"\",\n index: i,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: total !== 0 ? value / total : 0,\n explode: explode,\n visibleInLegend: fields.visibleInLegend,\n visible: visible,\n zIndex: seriesCount - seriesIx,\n animationDelay: this.animationDelay(i, seriesIx, seriesCount)\n });\n\n if (visible !== false) {\n currentAngle += angle;\n }\n }\n }\n }\n\n evalSegmentOptions(options, value, fields) {\n const series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n category: fields.category,\n percentage: fields.percentage\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"visual\", \"toggle\" ] });\n }\n\n addValue(value, sector, fields) {\n const segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n const segment = new PieSegment(value, sector, segmentOptions);\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n }\n\n reflow(targetBox) {\n const { options, points, seriesConfigs = [] } = this;\n const count = points.length;\n const box = targetBox.clone();\n const space = 5;\n const minWidth = Math.min(box.width(), box.height());\n const halfMinWidth = minWidth / 2;\n const defaultPadding = minWidth - minWidth * 0.85;\n const newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n const newBoxCenter = newBox.center();\n const boxCenter = box.center();\n const seriesCount = options.series.length;\n const leftSideLabels = [];\n const rightSideLabels = [];\n let padding = valueOrDefault(options.padding, defaultPadding);\n\n this.targetBox = targetBox;\n\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n const radius = halfMinWidth - padding;\n const center = new Point(\n radius + newBox.x1 + padding,\n radius + newBox.y1 + padding\n );\n\n for (let i = 0; i < count; i++) {\n const segment = points[i];\n const sector = segment.sector;\n const seriesIndex = segment.seriesIx;\n sector.radius = radius;\n sector.center = center;\n\n if (seriesConfigs.length) {\n const seriesConfig = seriesConfigs[seriesIndex];\n sector.innerRadius = seriesConfig.innerRadius;\n sector.radius = seriesConfig.radius;\n }\n\n if (seriesIndex === seriesCount - 1 && segment.explode) {\n sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n }\n\n segment.reflow(newBox);\n\n const label = segment.label;\n if (label) {\n if (label.options.position === OUTSIDE_END) {\n if (seriesIndex === seriesCount - 1) {\n if (label.orientation === RIGHT) {\n rightSideLabels.push(label);\n } else {\n leftSideLabels.push(label);\n }\n }\n }\n }\n }\n\n if (leftSideLabels.length > 0) {\n leftSideLabels.sort(this.labelComparator(true));\n this.leftLabelsReflow(leftSideLabels);\n }\n\n if (rightSideLabels.length > 0) {\n rightSideLabels.sort(this.labelComparator(false));\n this.rightLabelsReflow(rightSideLabels);\n }\n\n this.box = newBox;\n }\n\n leftLabelsReflow(labels) {\n const distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n }\n\n rightLabelsReflow(labels) {\n const distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n }\n\n distanceBetweenLabels(labels) {\n const segment = last(this.points);\n const sector = segment.sector;\n const count = labels.length - 1;\n const lr = sector.radius + segment.options.labels.distance;\n const distances = [];\n let firstBox = labels[0].box;\n let distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n distances.push(distance);\n\n for (let i = 0; i < count; i++) {\n const secondBox = labels[i + 1].box;\n\n firstBox = labels[i].box;\n distance = round(secondBox.y1 - firstBox.y2);\n distances.push(distance);\n }\n distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n distances.push(distance);\n\n return distances;\n }\n\n distributeLabels(distances, labels) {\n const count = distances.length;\n let left, right, remaining;\n\n for (let i = 0; i < count; i++) {\n remaining = -distances[i];\n left = right = i;\n\n while (remaining > 0 && (left >= 0 || right < count)) {\n remaining = this._takeDistance(distances, i, --left, remaining);\n remaining = this._takeDistance(distances, i, ++right, remaining);\n }\n }\n\n this.reflowLabels(distances, labels);\n }\n\n _takeDistance(distances, anchor, position, amount) {\n let result = amount;\n if (distances[position] > 0) {\n const available = Math.min(distances[position], result);\n result -= available;\n distances[position] -= available;\n distances[anchor] += available;\n }\n\n return result;\n }\n\n reflowLabels(distances, labels) {\n const segment = last(this.points);\n const sector = segment.sector;\n const labelOptions = segment.options.labels;\n const labelsCount = labels.length;\n const labelDistance = labelOptions.distance;\n let boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n let boxX;\n\n distances[0] += 2;\n for (let i = 0; i < labelsCount; i++) {\n const label = labels[i];\n const box = label.box;\n\n boxY += distances[i];\n boxX = this.hAlignLabel(\n box.x2,\n sector.clone().expand(labelDistance),\n boxY,\n boxY + box.height(),\n label.orientation === RIGHT);\n\n if (label.orientation === RIGHT) {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.radius + sector.center.x + labelDistance;\n }\n label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n } else {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.center.x - sector.radius - labelDistance;\n }\n label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n }\n\n boxY += box.height();\n }\n }\n\n createVisual() {\n const { options: { connectors }, points } = this;\n const count = points.length;\n const space = 4;\n\n super.createVisual();\n\n this._connectorLines = [];\n\n for (let i = 0; i < count; i++) {\n const segment = points[i];\n const { sector, label } = segment;\n const angle = sector.middle();\n const connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n if (label) {\n const connectorLine = new draw.Path({\n stroke: {\n color: connectorsColor,\n width: connectors.width\n },\n animation: {\n type: FADEIN,\n delay: segment.animationDelay\n }\n });\n\n if (label.options.position === OUTSIDE_END) {\n const box = label.box;\n const centerPoint = sector.center;\n let start = sector.point(angle);\n let middle = new Point(box.x1, box.center().y);\n let sr, end, crossing;\n\n start = sector.clone().expand(connectors.padding).point(angle);\n connectorLine.moveTo(start.x, start.y);\n // TODO: Extract into a method to remove duplication\n if (label.orientation === RIGHT) {\n end = new Point(box.x1 - connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x - space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.min(crossing.x, middle.x);\n\n if (this.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x < sector.center.x) {\n sr = sector.center.x + sector.radius + space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr < middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x + space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n } else {\n end = new Point(box.x2 + connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x + space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.max(crossing.x, middle.x);\n\n if (this.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x > sector.center.x) {\n sr = sector.center.x - sector.radius - space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr > middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x - space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n }\n\n connectorLine.lineTo(end.x, end.y);\n\n this._connectorLines.push(connectorLine);\n this.visual.append(connectorLine);\n }\n }\n }\n }\n\n renderVisual() {\n super.renderVisual();\n\n if (find(this.options.series, options => options.autoFit)) {\n const targetBox = this.targetBox;\n const pieCenter = this.box.center();\n const bbox = this.visual.bbox();\n if (!bbox) {\n return;\n }\n\n const bboxBottom = bbox.bottomRight();\n\n const scale = Math.min(\n (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n );\n\n if (scale < 1) {\n this.visual.transform(geometry.transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n }\n }\n }\n\n labelComparator(reverse) {\n const reverseValue = reverse ? -1 : 1;\n\n return function(a, b) {\n const first = (a.parent.sector.middle() + 270) % 360;\n const second = (b.parent.sector.middle() + 270) % 360;\n return (first - second) * reverseValue;\n };\n }\n\n hAlignLabel(originalX, sector, y1, y2, direction) {\n const { radius, center: { x: cx, y: cy } } = sector;\n const t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n if (t > radius) {\n return originalX;\n }\n\n return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n }\n\n pointInCircle(point, center, radius) {\n return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n }\n\n formatPointValue(point, format) {\n return this.chartService.format.auto(format, point.value);\n }\n\n animationDelay(categoryIndex) {\n return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n }\n\n stackRoot() {\n return this;\n }\n}\n\nfunction intersection(a1, a2, b1, b2) {\n const uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n const ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n let result;\n if (ub !== 0) {\n const ua = (uat / ub);\n\n result = new Point(\n a1.x + ua * (a2.x - a1.x),\n a1.y + ua * (a2.y - a1.y)\n );\n }\n\n return result;\n}\n\nsetDefaultOptions(PieChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n },\n inactiveItems: {\n markers: {},\n labels: {}\n }\n});\n\ndeepExtend(PieChart.prototype, PieChartMixin);\n\nPieChart.prototype.isStackRoot = true;\n\nexport default PieChart;\n","import PlotAreaBase from './plotarea-base';\nimport PieChart from '../pie-chart/pie-chart';\n\nimport { append } from '../../common';\n\nclass PiePlotArea extends PlotAreaBase {\n render() {\n this.createPieChart(this.series);\n }\n\n createPieChart(series) {\n const firstSeries = series[0];\n const pieChart = new PieChart(this, {\n series: series,\n padding: firstSeries.padding,\n startAngle: firstSeries.startAngle,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(pieChart);\n }\n\n appendChart(chart, pane) {\n super.appendChart(chart, pane);\n append(this.options.legend.items, chart.legendItems);\n }\n}\n\nexport default PiePlotArea;","import PieSegment from '../pie-chart/pie-segment';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { PIE } from '../constants';\n\nimport { ShapeBuilder, Box } from '../../core';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nclass DonutSegment extends PieSegment {\n reflowLabel() {\n const { options: { labels: labelsOptions }, label } = this;\n const sector = this.sector.clone();\n const angle = sector.middle();\n\n if (label) {\n const labelHeight = label.box.height();\n if (labelsOptions.position === CENTER) {\n sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n const lp = sector.point(angle);\n\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n super.reflowLabel();\n }\n }\n }\n\n createSegment(sector, options) {\n return ShapeBuilder.current.createRing(sector, options);\n }\n}\n\nsetDefaultOptions(DonutSegment, {\n overlay: {\n gradient: \"roundedGlass\"\n },\n labels: {\n position: CENTER\n },\n animation: {\n type: PIE\n }\n});\n\ndeepExtend(DonutSegment.prototype, PointEventsMixin);\n\n\nexport default DonutSegment;\n","import PieChart from '../pie-chart/pie-chart';\nimport DonutSegment from './donut-segment';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nconst DONUT_SECTOR_ANIM_DELAY = 50;\n\nclass DonutChart extends PieChart {\n addValue(value, sector, fields) {\n const segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n const segment = new DonutSegment(value, sector, segmentOptions);\n\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n }\n\n reflow(targetBox) {\n const options = this.options;\n const box = targetBox.clone();\n const space = 5;\n const minWidth = Math.min(box.width(), box.height());\n const halfMinWidth = minWidth / 2;\n const defaultPadding = minWidth - minWidth * 0.85;\n const series = options.series;\n const seriesCount = series.length;\n\n let padding = valueOrDefault(options.padding, defaultPadding);\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n let totalSize = halfMinWidth - padding;\n let seriesWithoutSize = 0;\n let holeSize;\n\n for (let i = 0; i < seriesCount; i++) {\n const currentSeries = series[i];\n if (i === 0) {\n if (defined(currentSeries.holeSize)) {\n holeSize = currentSeries.holeSize;\n totalSize -= currentSeries.holeSize;\n }\n }\n\n if (defined(currentSeries.size)) {\n totalSize -= currentSeries.size;\n } else {\n seriesWithoutSize++;\n }\n\n if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n totalSize -= currentSeries.margin;\n }\n }\n\n if (!defined(holeSize)) {\n const currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n holeSize = currentSize * 0.75;\n totalSize -= holeSize;\n }\n\n let innerRadius = holeSize;\n let margin = 0;\n let size, radius;\n\n this.seriesConfigs = [];\n\n for (let i = 0; i < seriesCount; i++) {\n const currentSeries = series[i];\n size = valueOrDefault(currentSeries.size, totalSize / seriesWithoutSize);\n innerRadius += margin;\n radius = innerRadius + size;\n this.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n margin = currentSeries.margin || 0;\n innerRadius = radius;\n }\n\n super.reflow(targetBox);\n }\n\n animationDelay(categoryIndex, seriesIndex, seriesCount) {\n return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n }\n}\n\n\nsetDefaultOptions(DonutChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n }\n});\n\nexport default DonutChart;\n","import PiePlotArea from './pie-plotarea';\nimport DonutChart from '../donut-chart/donut-chart';\n\nclass DonutPlotArea extends PiePlotArea {\n render() {\n this.createDonutChart(this.series);\n }\n\n createDonutChart(series) {\n const firstSeries = series[0];\n const donutChart = new DonutChart(this, {\n series: series,\n padding: firstSeries.padding,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(donutChart);\n }\n}\n\nexport default DonutPlotArea;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport { RadarLogarithmicAxis, RadarNumericAxis } from '../../core';\n\nimport { LOGARITHMIC } from '../constants';\n\nimport { getSpacing } from '../../common';\nimport { Y, CENTER } from '../../common/constants';\n\nconst DEFAULT_PADDING = 0.15;\n\nclass PolarPlotAreaBase extends PlotAreaBase {\n initFields() {\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n }\n\n render() {\n this.addToLegend(this.series);\n this.createPolarAxis();\n this.createCharts();\n this.createValueAxis();\n }\n\n alignAxes() {\n const axis = this.valueAxis;\n const range = axis.range();\n const crossingValue = axis.options.reverse ? range.max : range.min;\n const slot = axis.getSlot(crossingValue);\n const center = this.polarAxis.getSlot(0).center;\n const axisBox = axis.box.translate(\n center.x - slot.x1,\n center.y - slot.y1\n );\n\n axis.reflow(axisBox);\n }\n\n createValueAxis() {\n const tracker = this.valueAxisRangeTracker;\n const defaultRange = tracker.query();\n const axisOptions = this.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n });\n let axisType, axisDefaultRange;\n\n if (axisOptions.type === LOGARITHMIC) {\n axisType = RadarLogarithmicAxis;\n axisDefaultRange = { min: 0.1, max: 1 };\n } else {\n axisType = RadarNumericAxis;\n axisDefaultRange = { min: 0, max: 1 };\n }\n\n const range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n if (range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n const valueAxis = new axisType(\n range.min, range.max,\n axisOptions,\n this.chartService\n );\n\n this.valueAxis = valueAxis;\n this.appendAxis(valueAxis);\n }\n\n reflowAxes() {\n const { options: { plotArea: options }, valueAxis, polarAxis, box } = this;\n const defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n const padding = getSpacing(options.padding || {}, defaultPadding);\n const paddingBox = box.clone().unpad(padding);\n const axisBox = paddingBox.clone();\n\n axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n axisBox.align(paddingBox, Y, CENTER);\n\n const valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n const heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n this.axisBox = axisBox;\n this.alignAxes(axisBox);\n }\n\n backgroundBox() {\n return this.box;\n }\n\n detachLabels() {}\n}\n\nexport default PolarPlotAreaBase;\n","import ScatterChart from '../scatter-charts/scatter-chart';\n\nimport { Point, Box } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PolarScatterChart extends ScatterChart {\n pointSlot(slotX, slotY) {\n const valueRadius = slotX.center.y - slotY.y1;\n const slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n}\n\nsetDefaultOptions(PolarScatterChart, {\n clip: false\n});\n\nexport default PolarScatterChart;","import ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PolarLineChart extends ScatterLineChart {\n}\n\nPolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\nsetDefaultOptions(PolarLineChart, {\n clip: false\n});\n\nexport default PolarLineChart;","import SplineAreaSegment from '../area-chart/spline-area-segment';\nimport { CurveProcessor } from '../../core';\n\nclass SplinePolarAreaSegment extends SplineAreaSegment {\n fillToAxes(fillPath) {\n const center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n }\n\n _polarAxisCenter() {\n const polarAxis = this.parent.plotArea.polarAxis;\n const center = polarAxis.box.center();\n return center;\n }\n\n strokeSegments() {\n let segments = this._strokeSegments;\n\n if (!segments) {\n const center = this._polarAxisCenter();\n const curveProcessor = new CurveProcessor(false);\n const linePoints = this.points();\n\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n\n return segments;\n }\n}\n\nexport default SplinePolarAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nclass PolarAreaSegment extends AreaSegment {\n fillToAxes(fillPath) {\n const polarAxis = this.parent.plotArea.polarAxis;\n const center = polarAxis.box.center();\n const centerSegment = new geom.Segment([ center.x, center.y ]);\n\n fillPath.segments.unshift(centerSegment);\n fillPath.segments.push(centerSegment);\n }\n}\n\nexport default PolarAreaSegment;","import PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport SplinePolarAreaSegment from './spline-polar-area-segment';\nimport PolarAreaSegment from './polar-area-segment';\n\nimport { SMOOTH, INTERPOLATE, ZERO, GAP } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nclass PolarAreaChart extends PolarLineChart {\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = (currentSeries.line || {}).style;\n let segment;\n\n if (style === SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n }\n return segment;\n }\n\n createMissingValue(value, missingValues) {\n let missingValue;\n\n if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues === ZERO) {\n missingValue.y = 0;\n }\n }\n\n return missingValue;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n\n _hasMissingValuesGap() {\n const series = this.options.series;\n\n for (let idx = 0; idx < series.length; idx++) {\n if (this.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n }\n\n sortPoints(points) {\n points.sort(xComparer);\n\n if (this._hasMissingValuesGap()) {\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point) {\n const value = point.value;\n if (!hasValue(value.y) && this.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n\n return points;\n }\n}\n\nfunction xComparer(a, b) {\n return a.value.x - b.value.x;\n}\n\nexport default PolarAreaChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport PlotAreaBase from './plotarea-base';\nimport PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\nimport PolarAreaChart from '../polar-area-chart/polar-area-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { PolarAxis, Point } from '../../core';\n\nimport { POLAR_AREA, POLAR_LINE, POLAR_SCATTER } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { deepExtend, eventElement, setDefaultOptions } from '../../common';\n\nclass PolarPlotArea extends PolarPlotAreaBase {\n createPolarAxis() {\n const polarAxis = new PolarAxis(this.options.xAxis, this.chartService);\n\n this.polarAxis = polarAxis;\n this.axisX = polarAxis;\n this.appendAxis(polarAxis);\n }\n\n valueAxisOptions(defaults) {\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, this.options.yAxis);\n }\n\n createValueAxis() {\n super.createValueAxis();\n this.axisY = this.valueAxis;\n }\n\n appendChart(chart, pane) {\n this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n }\n\n createCharts() {\n const series = this.filterVisibleSeries(this.series);\n const pane = this.panes[0];\n\n this.createLineChart(\n filterSeriesByType(series, [ POLAR_LINE ]),\n pane\n );\n\n this.createScatterChart(\n filterSeriesByType(series, [ POLAR_SCATTER ]),\n pane\n );\n\n this.createAreaChart(\n filterSeriesByType(series, [ POLAR_AREA ]),\n pane\n );\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const lineChart = new PolarLineChart(this, { series: series });\n\n this.appendChart(lineChart, pane);\n }\n\n createScatterChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const scatterChart = new PolarScatterChart(this, { series: series });\n\n this.appendChart(scatterChart, pane);\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const areaChart = new PolarAreaChart(this, { series: series });\n\n this.appendChart(areaChart, pane);\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const xValue = this.axisX.getValue(point);\n const yValue = this.axisY.getValue(point);\n\n if (xValue !== null && yValue !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n x: xValue,\n y: yValue\n });\n }\n }\n\n createCrosshairs() {}\n}\n\nsetDefaultOptions(PolarPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default PolarPlotArea;","import LineChart from '../line-chart/line-chart';\nimport SplineSegment from '../line-chart/spline-segment';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { Point, Box } from '../../core';\n\nimport { SMOOTH, INTERPOLATE } from '../constants';\n\nimport { setDefaultOptions, last } from '../../common';\n\nfunction groupBySeriesIx(segments) {\n const seriesSegments = [];\n for (let idx = 0; idx < segments.length; idx++) {\n const segment = segments[idx];\n seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n seriesSegments[segment.seriesIx].push(segment);\n }\n\n return seriesSegments;\n}\n\nclass RadarLineChart extends LineChart {\n\n pointSlot(categorySlot, valueSlot) {\n const valueRadius = categorySlot.center.y - valueSlot.y1;\n const slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n\n renderSegments() {\n super.renderSegments();\n\n if (this._segments && this._segments.length > 1) {\n const seriesSegments = groupBySeriesIx(this._segments);\n\n for (let idx = 0; idx < seriesSegments.length; idx++) {\n const segments = seriesSegments[idx];\n if (segments && segments.length > 1) {\n const firstPoint = segments[0].linePoints[0];\n const lastSegment = last(segments);\n const lastPoint = last(lastSegment.linePoints);\n const isFirstDataPoint = firstPoint.categoryIx === 0;\n const isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n if (isFirstDataPoint && isLastDataPoint) {\n last(segments).linePoints.push(firstPoint);\n }\n }\n }\n }\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n const segment = new pointType(linePoints, currentSeries, seriesIx);\n const missingValues = this.seriesMissingValues(currentSeries);\n\n if (linePoints.length === currentSeries.data.length || missingValues === INTERPOLATE) {\n segment.options.closed = true;\n }\n\n return segment;\n }\n}\n\nsetDefaultOptions(RadarLineChart, {\n clip: false,\n limitPoints: false\n});\n\nexport default RadarLineChart;\n","import SplineAreaSegment from '../area-chart/spline-area-segment';\n\nclass SplineRadarAreaSegment extends SplineAreaSegment {\n fillToAxes() {}\n}\n\nexport default SplineRadarAreaSegment;","import AreaSegment from '../area-chart/area-segment';\n\nclass RadarAreaSegment extends AreaSegment {\n fillToAxes() {}\n}\n\nexport default RadarAreaSegment;","import RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport SplineRadarAreaSegment from './spline-radar-area-segment';\nimport RadarAreaSegment from './radar-area-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nclass RadarAreaChart extends RadarLineChart {\n createSegment(linePoints, currentSeries, seriesIx, prevSegment) {\n const isStacked = this.options.isStacked;\n const style = (currentSeries.line || {}).style;\n let previousSegment;\n let stackPoints;\n let segment;\n\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0);\n previousSegment = prevSegment;\n }\n\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n segment.options.closed = true;\n } else {\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n return segment;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n}\n\nexport default RadarAreaChart;","import DonutSegment from '../donut-chart/donut-segment';\n\nimport { setDefaultOptions } from '../../common';\n\nclass RadarSegment extends DonutSegment {\n constructor(value, options) {\n super(value, null, options);\n }\n}\n\nsetDefaultOptions(RadarSegment, {\n overlay: {\n gradient: \"none\"\n },\n labels: {\n distance: 10\n }\n});\n\nexport default RadarSegment;","import { ChartElement } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nimport { forEach, forEachReverse } from './utils';\n\nclass RadarClusterLayout extends ChartElement {\n constructor(options) {\n super(options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n reflow(sector) {\n const { options, children } = this;\n const { gap, spacing } = options;\n const count = children.length;\n const slots = count + gap + (spacing * (count - 1));\n const slotAngle = sector.angle / slots;\n let angle = sector.startAngle + slotAngle * (gap / 2);\n\n this.forEach(children, (child) => {\n const slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n\n if (child.sector) {\n slotSector.radius = child.sector.radius;\n }\n\n child.reflow(slotSector);\n child.sector = slotSector;\n\n angle += slotAngle + (slotAngle * spacing);\n });\n }\n}\n\nsetDefaultOptions(RadarClusterLayout, {\n gap: 1,\n spacing: 0\n});\n\nexport default RadarClusterLayout;","import { ChartElement, Box } from '../../core';\n\nclass RadarStackLayout extends ChartElement {\n reflow(sector) {\n const { options: { reverse }, children } = this;\n const childrenCount = children.length;\n const first = reverse ? childrenCount - 1 : 0;\n const step = reverse ? -1 : 1;\n\n this.box = new Box();\n\n for (let i = first; i >= 0 && i < childrenCount; i += step) {\n const childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n }\n}\n\nexport default RadarStackLayout;","import BarChart from '../bar-chart/bar-chart';\nimport RadarSegment from './radar-segment';\nimport RadarClusterLayout from '../layout/radar-cluster-layout';\nimport RadarStackLayout from '../layout/radar-stack-layout';\nimport CategoricalChart from '../categorical-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nclass RadarBarChart extends BarChart {\n pointType() {\n return RadarSegment;\n }\n\n clusterType() {\n return RadarClusterLayout;\n }\n\n stackType() {\n return RadarStackLayout;\n }\n\n categorySlot(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n }\n\n pointSlot(categorySlot, valueSlot) {\n const slot = categorySlot.clone();\n const y = categorySlot.center.y;\n\n slot.radius = y - valueSlot.y1;\n slot.innerRadius = y - valueSlot.y2;\n\n return slot;\n }\n\n reflowPoint(point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n }\n\n createAnimation() {\n this.options.animation.center = this.box.toRect().center();\n super.createAnimation();\n }\n}\n\nRadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\nsetDefaultOptions(RadarBarChart, {\n clip: false,\n limitPoints: false,\n animation: {\n type: \"pie\"\n }\n});\n\nexport default RadarBarChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport CategoricalPlotArea from './categorical-plotarea';\nimport RadarAreaChart from '../radar-area-chart/radar-area-chart';\nimport RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport RadarBarChart from '../radar-bar-chart/radar-bar-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { RadarCategoryAxis, Point } from '../../core';\n\nimport { RADAR_AREA, RADAR_LINE, RADAR_COLUMN } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { eventElement, deepExtend, setDefaultOptions } from '../../common';\n\nclass RadarPlotArea extends PolarPlotAreaBase {\n createPolarAxis() {\n const categoryAxis = new RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n this.polarAxis = categoryAxis;\n this.categoryAxis = categoryAxis;\n this.appendAxis(categoryAxis);\n this.aggregateCategories();\n this.createCategoryAxesLabels();\n }\n\n valueAxisOptions(defaults) {\n if (this._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n\n if (this._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: \"P0\" }\n });\n }\n\n return deepExtend(defaults, this.options.valueAxis);\n }\n\n aggregateCategories() {\n // No separate panes in radar charts\n CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n }\n\n createCategoryAxesLabels() {\n CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n }\n\n filterSeries(currentSeries) {\n // Not supported for radar charts\n return currentSeries;\n }\n\n createCharts() {\n const series = this.filterVisibleSeries(this.series);\n const pane = this.panes[0];\n\n this.createAreaChart(\n filterSeriesByType(series, [ RADAR_AREA ]),\n pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ RADAR_LINE ]),\n pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ RADAR_COLUMN ]),\n pane\n );\n }\n\n chartOptions(series) {\n const options = { series: series };\n const firstSeries = series[0];\n if (firstSeries) {\n const filteredSeries = this.filterVisibleSeries(series);\n const stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n\n return options;\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n }\n\n createBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const options = this.chartOptions(series);\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n\n const barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n\n this._hasBarCharts = true;\n }\n\n seriesCategoryAxis() {\n return this.categoryAxis;\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const category = this.categoryAxis.getCategory(point);\n const value = this.valueAxis.getValue(point);\n\n if (category !== null && value !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n category: category,\n value: value\n });\n }\n }\n\n createCrosshairs() {}\n}\n\ndeepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n appendChart: CategoricalPlotArea.prototype.appendChart,\n aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints\n});\n\nsetDefaultOptions(RadarPlotArea, {\n categoryAxis: {\n categories: []\n },\n valueAxis: {}\n});\n\nexport default RadarPlotArea;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { WHITE } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nclass FunnelSegment extends ChartElement {\n constructor(value, options, segmentOptions) {\n super(options);\n\n this.value = value;\n this.options.index = segmentOptions.index;\n }\n\n reflow(chartBox) {\n const points = this.points;\n const label = this.children[0];\n\n this.box = new Box(points[0].x, points[0].y, points[1].x, points[2].y);\n\n if (label) {\n label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n }\n }\n\n createVisual() {\n const options = this.options;\n let visual;\n\n super.createVisual();\n\n if (options.visual) {\n visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n points: this.points,\n options: options,\n sender: this.getSender(),\n createVisual: () => this.createPath()\n });\n } else {\n visual = this.createPath();\n }\n\n if (visual) {\n this.visual.append(visual);\n }\n }\n\n createPath() {\n const options = this.options;\n const border = options.border;\n const path = draw.Path.fromPoints(this.points, {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: {\n color: border.color,\n opacity: border.opacity,\n width: border.width\n }\n }).close();\n\n return path;\n }\n\n createHighlight(style) {\n return draw.Path.fromPoints(this.points, style);\n }\n\n highlightVisual() {\n return this.visual.children[0];\n }\n\n highlightVisualArgs() {\n const path = draw.Path.fromPoints(this.points).close();\n\n return {\n options: this.options,\n path: path\n };\n }\n\n tooltipAnchor() {\n const box = this.box;\n return {\n point: new Point(box.center().x, box.y1),\n align: {\n horizontal: \"center\",\n vertical: \"top\"\n }\n };\n }\n\n formatValue(format) {\n const point = this;\n return point.owner.formatPointValue(point, format);\n }\n}\n\nsetDefaultOptions(FunnelSegment, {\n color: WHITE,\n border: {\n width: 1\n }\n});\n\ndeepExtend(FunnelSegment.prototype, PointEventsMixin);\n\nexport default FunnelSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox } from '../../core';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport FunnelSegment from './funnel-segment';\n\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CENTER, LEFT } from '../../common/constants';\nimport { autoTextColor, deepExtend, isFunction, getTemplate, limitValue, setDefaultOptions } from '../../common';\n\nclass FunnelChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.points = [];\n this.labels = [];\n this.legendItems = [];\n this.render();\n }\n\n formatPointValue(point, format) {\n return this.chartService.format.auto(format,point.value);\n }\n\n render() {\n const { options, plotArea: { options: { seriesColors = [] } } } = this;\n const series = options.series[0];\n const data = series.data;\n\n if (!data) {\n return;\n }\n\n const { total, points } = bindSegments(series);\n\n for (let i = 0; i < points.length; i++) {\n const pointData = points[i];\n\n if (!pointData) {\n continue;\n }\n\n let fields = pointData.fields;\n\n if (!isFunction(series.color)) {\n series.color = fields.color || seriesColors[i % seriesColors.length];\n }\n\n fields = deepExtend({\n index: i,\n owner: this,\n series: series,\n dataItem: data[i],\n percentage: pointData.value / total\n }, fields, { visible: pointData.visible });\n\n const value = pointData.valueFields.value;\n const segment = this.createSegment(value, fields);\n const label = this.createLabel(value, fields);\n\n if (segment && label) {\n segment.append(label);\n }\n }\n }\n\n evalSegmentOptions(options, value, fields) {\n const series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n index: fields.index\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"toggle\", \"visual\" ] });\n }\n\n createSegment(value, fields) {\n const seriesOptions = deepExtend({}, fields.series);\n this.evalSegmentOptions(seriesOptions, value, fields);\n\n this.createLegendItem(value, seriesOptions, fields);\n\n if (fields.visible !== false) {\n\n const segment = new FunnelSegment(value, seriesOptions, fields);\n Object.assign(segment, fields);\n\n this.append(segment);\n this.points.push(segment);\n\n return segment;\n }\n }\n\n createLabel(value, fields) {\n const { series, dataItem } = fields;\n const labels = deepExtend({}, this.options.labels, series.labels);\n let text = value;\n\n if (labels.visible) {\n const labelTemplate = getTemplate(labels);\n const data = {\n dataItem: dataItem,\n value: value,\n percentage: fields.percentage,\n category: fields.category,\n series: series\n };\n if (labelTemplate) {\n text = labelTemplate(data);\n } else if (labels.format) {\n text = this.plotArea.chartService.format.auto(labels.format, text);\n }\n\n if (!labels.color) {\n labels.color = autoTextColor(series.color);\n if (!labels.background) {\n labels.background = series.color;\n }\n }\n\n this.evalSegmentOptions(labels, value, fields);\n const textBox = new TextBox(text, deepExtend({\n vAlign: labels.position\n }, labels), data);\n\n this.labels.push(textBox);\n\n return textBox;\n }\n }\n\n labelPadding() {\n const labels = this.labels;\n const padding = { left: 0, right: 0 };\n\n for (let i = 0; i < labels.length; i++) {\n const label = labels[i];\n const align = label.options.align;\n if (align !== CENTER) {\n const width = labels[i].box.width();\n\n if (align === LEFT) {\n padding.left = Math.max(padding.left, width);\n } else {\n padding.right = Math.max(padding.right, width);\n }\n }\n }\n\n return padding;\n }\n\n dynamicSlopeReflow(box, width, totalHeight) {\n const { options, points: segments } = this;\n const count = segments.length;\n const firstSegment = segments[0];\n let maxSegment = firstSegment;\n\n for (let idx = 0; idx < segments.length; idx++) {\n if (segments[idx].percentage > maxSegment.percentage) {\n maxSegment = segments[idx];\n }\n }\n\n let lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n let previousOffset = (width - lastUpperSide) / 2;\n let previousHeight = 0;\n\n for (let idx = 0; idx < count; idx++) {\n const percentage = segments[idx].percentage;\n const nextSegment = segments[idx + 1];\n const nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n const points = segments[idx].points = [];\n const height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n let offset;\n\n if (!percentage) {\n offset = nextPercentage ? 0 : width / 2;\n } else {\n offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n }\n\n offset = limitValue(offset, 0, width);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + offset, box.y1 + height + previousHeight));\n\n previousOffset = offset;\n previousHeight += height + options.segmentSpacing;\n lastUpperSide = limitValue(width - 2 * offset, 0, width);\n }\n }\n\n constantSlopeReflow(box, width, totalHeight) {\n const { options, points: segments } = this;\n const count = segments.length;\n const decreasingWidth = options.neckRatio <= 1;\n const neckRatio = decreasingWidth ? options.neckRatio * width : width;\n let previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n const topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n const finalNarrow = (topMostWidth - neckRatio) / 2;\n let previousHeight = 0;\n\n for (let idx = 0; idx < count; idx++) {\n const points = segments[idx].points = [];\n const percentage = segments[idx].percentage;\n const offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n const height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + options.segmentSpacing;\n }\n }\n\n reflow(chartBox) {\n const points = this.points;\n const count = points.length;\n\n if (!count) {\n return;\n }\n\n const options = this.options;\n const box = chartBox.clone().unpad(this.labelPadding());\n const totalHeight = box.height() - options.segmentSpacing * (count - 1);\n const width = box.width();\n\n if (options.dynamicSlope) {\n this.dynamicSlopeReflow(box, width, totalHeight);\n } else {\n this.constantSlopeReflow(box, width, totalHeight);\n }\n\n for (let idx = 0; idx < count; idx++) {\n points[idx].reflow(chartBox);\n }\n }\n}\n\nsetDefaultOptions(FunnelChart, {\n neckRatio: 0.3,\n width: 300,\n dynamicSlope: false,\n dynamicHeight: true,\n segmentSpacing: 0,\n labels: {\n visible: false,\n align: CENTER,\n position: CENTER,\n zIndex: 1\n }\n});\n\ndeepExtend(FunnelChart.prototype, PieChartMixin);\n\nexport default FunnelChart;\n","import PlotAreaBase from './plotarea-base';\nimport FunnelChart from '../funnel-chart/funnel-chart';\n\nimport { append } from '../../common';\n\nclass FunnelPlotArea extends PlotAreaBase {\n render() {\n this.createFunnelChart(this.series);\n }\n\n createFunnelChart(series) {\n const firstSeries = series[0];\n const funnelChart = new FunnelChart(this, {\n series: series,\n legend: this.options.legend,\n neckRatio: firstSeries.neckRatio,\n dynamicHeight: firstSeries.dynamicHeight,\n dynamicSlope: firstSeries.dynamicSlope,\n segmentSpacing: firstSeries.segmentSpacing,\n highlight: firstSeries.highlight\n });\n\n this.appendChart(funnelChart);\n }\n\n appendChart(chart, pane) {\n super.appendChart(chart, pane);\n append(this.options.legend.items, chart.legendItems);\n }\n}\n\nexport default FunnelPlotArea;","import { autoTextColor, deepExtend, getTemplate, valueOrDefault } from '../../common';\nimport { CENTER, ROUNDED_RECT, BOTTOM, WHITE } from '../../common/constants';\nimport { ChartElement, Point, rectToBox, ShapeElement, TextBox } from '../../core';\nimport { TOOLTIP_OFFSET } from '../constants';\nimport NoteMixin from '../mixins/note-mixin';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nclass HeatmapPoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.options = options;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createMarker();\n this.createLabel();\n this.createNote();\n }\n\n createLabel() {\n const options = this.options;\n const labels = options.labels;\n\n if (labels.visible) {\n const pointData = this.pointData();\n let labelTemplate = getTemplate(labels);\n let labelText;\n let labelColor = labels.color;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n if (!labelColor) {\n labelColor = autoTextColor(this.color);\n }\n\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n },\n labels, {\n color: labelColor\n }),\n pointData\n );\n this.append(this.label);\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n reflow(targetBox) {\n this.render();\n\n const label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.reflow(this.markerBox());\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n this.marker.reflow(this.markerBox());\n }\n\n markerBox() {\n const options = this.options;\n const markers = options.markers;\n const border = markers.border;\n const rect = this.box.toRect();\n const type = valueOrDefault(markers.type, 'rect');\n const isRoundRect = type === ROUNDED_RECT;\n let borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n const halfBorderWidth = Math.round(borderWidth / 2);\n\n if (markers.size) {\n const center = rect.center();\n rect.size.width = rect.size.height = markers.size;\n rect.origin.x = Math.round(center.x - rect.size.width / 2);\n rect.origin.y = Math.round(center.y - rect.size.height / 2);\n }\n\n rect.size.width -= borderWidth;\n rect.size.height -= borderWidth;\n rect.origin.y += halfBorderWidth + 0.5;\n rect.origin.x += halfBorderWidth + 0.5;\n\n return rectToBox(rect);\n }\n\n markerBorder() {\n const options = this.options;\n const markers = options.markers;\n const border = markers.border;\n const opacity = valueOrDefault(border.opacity, options.opacity);\n\n return {\n color: border.color || this.color,\n width: border.width,\n opacity: opacity,\n dashType: border.dashType\n };\n }\n\n createMarker() {\n const options = this.options;\n const markerOptions = options.markers;\n const marker = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n this.marker = marker;\n this.append(marker);\n }\n\n createHighlight(style) {\n const options = this.options;\n const markerOptions = this.options.highlight.markers || this.options.markers;\n\n const highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: markerOptions.color || this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n });\n\n highlight.reflow(this.markerBox());\n const visual = highlight.getElement();\n\n visual.options.fill = style.fill;\n visual.options.stroke = style.stroke;\n\n return visual;\n }\n\n highlightVisual() {\n return this.rectVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n }\n\n tooltipAnchor() {\n const left = this.box.center().x;\n const top = this.box.y1 - TOOLTIP_OFFSET;\n\n return {\n point: new Point(left, top),\n align: {\n horizontal: CENTER,\n vertical: BOTTOM\n }\n };\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n unclipElements() {\n /* noop, clip labels */\n }\n\n pointData() {\n return {\n x: this.value.x,\n y: this.value.y,\n value: this.value.value,\n dataItem: this.dataItem,\n series: this.series\n };\n }\n}\n\ndeepExtend(HeatmapPoint.prototype, PointEventsMixin);\ndeepExtend(HeatmapPoint.prototype, NoteMixin);\n\nHeatmapPoint.prototype.defaults = {\n markers: {\n type: 'rect',\n borderRadius: 4,\n border: {\n color: 'transparent'\n }\n },\n padding: { top: 1 },\n labels: {\n visible: false,\n padding: 3\n },\n opacity: 1,\n notes: {\n label: {}\n }\n};\n\nexport default HeatmapPoint;\n","import { deepExtend, defined, isFunction, setDefaultOptions } from '../../common';\nimport { MAX_VALUE, MIN_VALUE } from '../../common/constants';\nimport { Box, ChartElement } from '../../core';\nimport CategoricalChart from '../categorical-chart';\nimport evalOptions from '../utils/eval-options';\nimport colorScale from './color-scale';\nimport HeatmapPoint from './heatmap-point';\n\nclass HeatmapChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n _initFields() {\n this.points = [];\n this.seriesOptions = [];\n this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n this._evalSeries = [];\n }\n\n render() {\n this.setRange();\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n setRange() {\n const { options: { series } } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields } = this._bindPoint(currentSeries, seriesIx, pointIx);\n if (defined(valueFields.value) && valueFields.value !== null) {\n this.valueRange.min = Math.min(this.valueRange.min, valueFields.value);\n this.valueRange.max = Math.max(this.valueRange.max, valueFields.value);\n }\n }\n }\n }\n\n addValue(value, fields) {\n let point;\n if (value && defined(value.value) && value.value !== null) {\n point = this.createPoint(value, fields);\n if (point) {\n Object.assign(point, fields);\n }\n }\n\n this.points.push(point);\n }\n\n evalPointOptions(options, value, fields) {\n const { series, seriesIx } = fields;\n const state = { defaults: series._defaults, excluded: [ \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\" ] };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n min: this.valueRange.min,\n max: this.valueRange.max\n }, state);\n }\n\n return pointOptions;\n }\n\n pointType() {\n return HeatmapPoint;\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n let pointOptions = this.pointOptions(series, fields.seriesIx);\n let color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n } else if (this.valueRange.max !== 0) {\n const scale = colorScale(color);\n color = scale(value.value / this.valueRange.max);\n }\n\n const point = new HeatmapPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n seriesAxes(series) {\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n const plotArea = this.plotArea;\n const xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n const yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis, yAxis };\n }\n\n reflow(targetBox) {\n const chartPoints = this.points;\n const limit = !this.options.clip;\n let pointIx = 0;\n\n\n this.traverseDataPoints((value, fields) => {\n const point = chartPoints[pointIx++];\n const { xAxis, yAxis } = this.seriesAxes(fields.series);\n const indexX = xAxis.categoryIndex(value.x);\n const indexY = yAxis.categoryIndex(value.y);\n const slotX = xAxis.getSlot(indexX, indexX, limit);\n const slotY = yAxis.getSlot(indexY, indexY, limit);\n\n if (point) {\n if (slotX && slotY) {\n const pointSlot = this.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n }\n\n pointSlot(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n traverseDataPoints(callback) {\n const { options: { series } } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const { xAxis, yAxis } = this.seriesAxes(currentSeries);\n const xRange = xAxis.currentRangeIndices();\n const yRange = yAxis.currentRangeIndices();\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields: value, fields } = this._bindPoint(currentSeries, seriesIx, pointIx);\n const xIndex = xAxis.totalIndex(value.x);\n const yIndex = yAxis.totalIndex(value.y);\n const xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n const yIn = yRange.min <= yIndex && yIndex <= yRange.max;\n\n if (xIn && yIn) {\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this\n }, fields));\n }\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.value);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n}\nsetDefaultOptions(HeatmapChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}: {2}\"\n },\n labels: {\n format: \"{2}\"\n },\n clip: true\n});\ndeepExtend(HeatmapChart.prototype, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n});\n\nexport default HeatmapChart;\n","import { parseColor } from '@progress/kendo-drawing';\n\n// Linear color scale from the given color to white minus minimum lightness offset.\nconst colorScale = (color, minLightnessOffset = 0.05) => {\n const baseColor = parseColor(color);\n const offset = 1 - minLightnessOffset;\n\n return (value) => {\n const hsl = baseColor.toHSL();\n const range = 100 - hsl.l;\n const point = offset - value;\n hsl.l += Math.min(point * range, range);\n\n return hsl.toCss();\n };\n};\n\nexport default colorScale;\n","import { deepExtend, eventElement, grep, inArray, setDefaultOptions, createHashSet } from '../../common';\nimport { DATE } from '../../common/constants';\nimport { CategoryAxis, DateCategoryAxis, Point } from '../../core';\nimport { HEATMAP } from '../constants';\nimport HeatmapChart from '../heatmap-chart/heatmap-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesBinder from '../series-binder';\nimport { appendIfNotNull, equalsIgnoreCase, filterSeriesByType, singleItemOrArray } from '../utils';\nimport PlotAreaBase from './plotarea-base';\n\n\nclass HeatmapPlotArea extends PlotAreaBase {\n initFields() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n }\n\n render(panes = this.panes) {\n this.bindCategories();\n this.createAxes(panes);\n this.createCharts(panes);\n this.createAxisLabels();\n }\n\n bindCategories() {\n const series = this.srcSeries || this.series;\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const data = currentSeries.data || [];\n const { xAxis, yAxis } = this.seriesAxes(currentSeries);\n\n const xCategories = createHashSet(xAxis.categories || []);\n const yCategories = createHashSet(yAxis.categories || []);\n\n for (let pointIndex = 0; pointIndex < data.length; pointIndex++) {\n const { x, y } = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n\n if (!xCategories.has(x)) {\n xCategories.add(x);\n }\n\n if (!yCategories.has(y)) {\n yCategories.add(y);\n }\n }\n\n xAxis.categories = xCategories.values();\n yAxis.categories = yCategories.values();\n }\n }\n\n createCharts(panes) {\n const seriesByPane = this.groupSeriesByPane();\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n const filteredSeries = this.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this.createHeatmapChart(\n filterSeriesByType(filteredSeries, [ HEATMAP ]),\n pane\n );\n }\n }\n\n createHeatmapChart(series, pane) {\n const chart = new HeatmapChart(this, {\n series: series\n });\n\n this.appendChart(chart, pane);\n }\n\n seriesPaneName(series) {\n const options = this.options;\n const xAxisName = series.xAxis;\n const xAxisOptions = [].concat(options.xAxis);\n const xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n const yAxisName = series.yAxis;\n const yAxisOptions = [].concat(options.yAxis);\n const yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = panes[0].name || \"default\";\n const paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n seriesAxes(series) {\n let xAxis;\n let yAxis;\n\n const options = this.options;\n\n const xAxisOptions = [].concat(options.xAxis);\n const xAxisName = series.xAxis;\n if (xAxisName) {\n xAxis = xAxisOptions.find(axis => axis.name === xAxisName);\n } else {\n xAxis = xAxisOptions[0];\n }\n\n const yAxisOptions = [].concat(options.yAxis);\n const yAxisName = series.yAxis;\n if (yAxisName) {\n yAxis = yAxisOptions.find(axis => axis.name === yAxisName);\n } else {\n yAxis = yAxisOptions[0];\n }\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis, yAxis };\n }\n\n createAxisLabels() {\n const axes = this.axes;\n for (let i = 0; i < axes.length; i++) {\n axes[i].createLabels();\n }\n }\n\n createXYAxis(options, vertical, axisIndex) {\n const axisName = options.name;\n const namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n const axisOptions = Object.assign({\n axisCrossingValue: 0\n }, options, {\n vertical: vertical,\n reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n justified: false\n });\n const firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n const typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n const firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n let inferredDate;\n\n for (let i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateCategoryAxis;\n } else {\n axisType = CategoryAxis;\n }\n\n const axis = new axisType(axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(`${ vertical ? \"Y\" : \"X\" } axis with name ${ axisName } is already defined`);\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n axis.mapCategories();\n\n return axis;\n }\n\n createAxes(panes) {\n const options = this.options;\n const xAxesOptions = [].concat(options.xAxis);\n const xAxes = [];\n const yAxesOptions = [].concat(options.yAxis);\n const yAxes = [];\n\n for (let idx = 0; idx < xAxesOptions.length; idx++) {\n const axisPane = this.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (let idx = 0; idx < yAxesOptions.length; idx++) {\n const axisPane = this.findPane(yAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n yAxes.push(this.createXYAxis(yAxesOptions[idx], true, idx));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis.options.vertical) {\n delete this.namedYAxes[axisName];\n } else {\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const allAxes = this.axes;\n const length = allAxes.length;\n const xValues = [];\n const yValues = [];\n\n for (let i = 0; i < length; i++) {\n const axis = allAxes[i];\n const values = axis.options.vertical ? yValues : xValues;\n appendIfNotNull(values, axis.getCategory(point));\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n }\n\n updateAxisOptions(axis, options) {\n const vertical = axis.options.vertical;\n const axes = this.groupAxes(this.panes);\n const index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n }\n\n crosshairOptions(axis) {\n // Stack the crosshair above the series points.\n return Object.assign({}, axis.options.crosshair, { zIndex: 0 });\n }\n}\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n const axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(HeatmapPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default HeatmapPlotArea;\n","import PlotAreaFactory from './plotarea/plotarea-factory';\nimport SeriesBinder from './series-binder';\nimport DefaultAggregates from './aggregates/default-aggregates';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport XYPlotArea from './plotarea/xy-plotarea';\nimport PiePlotArea from './plotarea/pie-plotarea';\nimport DonutPlotArea from './plotarea/donut-plotarea';\nimport PolarPlotArea from './plotarea/polar-plotarea';\nimport RadarPlotArea from './plotarea/radar-plotarea';\nimport FunnelPlotArea from './plotarea/funnel-plotarea';\nimport HeatmapPlotArea from './plotarea/heatmap-plotarea';\n\nimport { COLUMN, DONUT, PIE, FUNNEL, BAR, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT, RANGE_COLUMN,\n RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, SCATTER, SCATTER_LINE, BUBBLE,\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER, RADAR_AREA, RADAR_COLUMN, RADAR_LINE, CATEGORY,\n RANGE_AREA, VERTICAL_RANGE_AREA, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n ERROR_LOW_FIELD, ERROR_HIGH_FIELD, HEATMAP } from './constants';\nimport { X, Y, VALUE } from '../common/constants';\n\nconst COLOR = \"color\";\nconst FIRST = \"first\";\nconst FROM = \"from\";\nconst MAX = \"max\";\nconst MIN = \"min\";\nconst NOTE_TEXT = \"noteText\";\nconst SUMMARY_FIELD = \"summary\";\nconst TO = \"to\";\n\nPlotAreaFactory.current.register(CategoricalPlotArea, [\n BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA\n]);\n\nPlotAreaFactory.current.register(XYPlotArea, [\n SCATTER, SCATTER_LINE, BUBBLE\n]);\n\nPlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\nPlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\nPlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL ]);\n\nPlotAreaFactory.current.register(PolarPlotArea, [ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ]);\nPlotAreaFactory.current.register(RadarPlotArea, [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ]);\n\nPlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\nSeriesBinder.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ WATERFALL, HORIZONTAL_WATERFALL ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD ]\n);\n\nSeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR ]);\nSeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ COLOR ]);\n\nSeriesBinder.current.register(\n [ FUNNEL ],\n [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\" ]\n);\n\nDefaultAggregates.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n);\n\nDefaultAggregates.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n);\n\nDefaultAggregates.current.register(\n [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n { value: MAX, color: FIRST }\n);\n\nSeriesBinder.current.register(\n [ SCATTER, SCATTER_LINE, BUBBLE ],\n [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ HEATMAP ],\n [ X, Y, VALUE ], [ COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ CANDLESTICK, OHLC ],\n [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ CANDLESTICK, OHLC ],\n { open: MAX, high: MAX, low: MIN, close: MAX,\n color: FIRST, downColor: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BULLET, VERTICAL_BULLET ],\n [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ BULLET, VERTICAL_BULLET ],\n { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ PIE, DONUT ],\n [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\" ]\n);\n","import { drawing as draw, throttle, geometry } from '@progress/kendo-drawing';\n\nimport { RootElement, Title, CategoryAxis, Point } from '../core';\n\nimport Highlight from './highlight';\nimport Pannable from './pan-and-zoom/pannable';\nimport ZoomSelection from './pan-and-zoom/zoom-selection';\nimport MousewheelZoom from './pan-and-zoom/mousewheel-zoom';\nimport Legend from './legend/legend';\nimport PlotAreaFactory from './plotarea/plotarea-factory';\nimport Selection from './selection';\nimport SeriesBinder from './series-binder';\nimport Tooltip from './tooltip/tooltip';\nimport SharedTooltip from './tooltip/shared-tooltip';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport PlotAreaBase from './plotarea/plotarea-base';\nimport { ChartService, DomEventsBuilder } from '../services';\nimport getField from './utils/get-field';\nimport isDateAxis from './utils/is-date-axis';\nimport getDateField from './utils/get-date-field';\nimport { ChartPane, ChartPlotArea, findAxisByName } from './api-elements';\n\nimport { X, Y, VALUE, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_SERIES_OPACITY } from '../common/constants';\nimport { addClass, Class, setDefaultOptions, deepExtend, defined, find, isObject, isFunction, elementSize, elementOffset,\n elementScale, elementStyles, eventCoordinates, bindEvents, unbindEvents, mousewheelDelta, FontLoader, inArray, last, round,\n HashMap, valueOrDefault } from '../common';\n\nimport { dateComparer } from '../date-utils';\n\nimport { DRAG_START, DRAG, DRAG_END, ZOOM_START, ZOOM, ZOOM_END, SELECT_START, SELECT, SELECT_END, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n RENDER, CATEGORY, PIE, DONUT, FUNNEL, COLUMN, MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE, SHOW_TOOLTIP, SERIES_HOVER } from './constants';\n\nimport './animations';\nimport './register-charts';\n\nconst AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\nconst MOUSEMOVE = \"mousemove\";\nconst CONTEXTMENU = \"contextmenu\";\nconst MOUSELEAVE = \"mouseleave\";\nconst MOUSEMOVE_DELAY = 20;\n\nclass Chart extends Class {\n constructor(element, userOptions, themeOptions, context = {}) {\n super();\n\n this.observers = [];\n this.addObserver(context.observer);\n this.chartService = new ChartService(this, context);\n this.chartService.theme = themeOptions;\n\n this._initElement(element);\n\n const options = deepExtend({}, this.options, userOptions);\n this._originalOptions = deepExtend({}, options);\n this._theme = themeOptions;\n this._initTheme(options, themeOptions);\n\n this._initHandlers();\n this._initSurface();\n\n this.bindCategories();\n FontLoader.preloadFonts(userOptions, () => {\n this.fontLoaded = true;\n if (!this._destroyed) {\n this.trigger('init');\n this._redraw();\n this._attachEvents();\n }\n });\n }\n\n _initElement(element) {\n this._setElementClass(element);\n element.style.position = \"relative\";\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n this.element = element;\n }\n\n _setElementClass(element) {\n addClass(element, \"k-chart\");\n }\n\n _initTheme(options, themeOptions) {\n const seriesCopies = [];\n const series = options.series || [];\n\n for (let i = 0; i < series.length; i++) {\n seriesCopies.push(Object.assign({}, series[i]));\n }\n options.series = seriesCopies;\n\n resolveAxisAliases(options);\n this.applyDefaults(options, themeOptions);\n\n // Clean up default if not overriden by data attributes\n if (options.seriesColors === null) {\n delete options.seriesColors;\n }\n\n this.options = deepExtend({}, themeOptions, options);\n this.applySeriesColors();\n }\n\n getSize() {\n const chartArea = this.options.chartArea || {};\n const width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n const height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n return {\n width: width,\n height: height\n };\n }\n\n resize(force) {\n const size = this.getSize();\n const currentSize = this._size;\n const hasSize = size.width > 0 || size.height > 0;\n\n if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n } else if (hasSize && this._selections && find(this._selections, s => !s.visible)) {\n this._destroySelections();\n this._setupSelection();\n }\n }\n\n _resize() {\n this._noTransitionsRedraw();\n }\n\n redraw(paneName) {\n this.applyDefaults(this.options);\n this.applySeriesColors();\n\n if (paneName) {\n const plotArea = this._model._plotArea;\n const pane = plotArea.findPane(paneName);\n plotArea.redraw(pane);\n } else {\n this._redraw();\n }\n }\n\n getAxis(name) {\n return findAxisByName(name, this._plotArea.axes);\n }\n\n findAxisByName(name) {\n return this.getAxis(name);\n }\n\n findPaneByName(name) {\n const panes = this._plotArea.panes;\n\n for (let idx = 0; idx < panes.length; idx++) {\n if (panes[idx].options.name === name) {\n return new ChartPane(panes[idx]);\n }\n }\n }\n\n findPaneByIndex(idx) {\n const panes = this._plotArea.panes;\n if (panes[idx]) {\n return new ChartPane(panes[idx]);\n }\n }\n\n plotArea() {\n return new ChartPlotArea(this._plotArea);\n }\n\n toggleHighlight(show, filter) {\n const plotArea = this._plotArea;\n const firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n let points;\n\n if (isFunction(filter)) {\n points = plotArea.filterPoints(filter);\n } else {\n let seriesName, categoryName;\n if (isObject(filter)) {\n seriesName = filter.series;\n categoryName = filter.category;\n } else {\n seriesName = categoryName = filter;\n }\n\n if (firstSeries.type === DONUT) {\n points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n } else if (firstSeries.type === PIE || firstSeries.type === FUNNEL) {\n points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n } else {\n points = plotArea.pointsBySeriesName(seriesName);\n }\n }\n\n if (points) {\n this.togglePointsHighlight(show, points);\n }\n }\n\n togglePointsHighlight(show, points) {\n const highlight = this._highlight;\n for (let idx = 0; idx < points.length; idx++) {\n highlight.togglePointHighlight(points[idx], show);\n }\n }\n\n showTooltip(filter) {\n const shared = this._sharedTooltip();\n const { _tooltip: tooltip, _plotArea: plotArea } = this;\n let point, categoryIndex;\n\n if (isFunction(filter)) {\n point = plotArea.findPoint(filter);\n if (point && shared) {\n categoryIndex = point.categoryIx;\n }\n } else if (shared && defined(filter)) {\n categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n }\n\n if (shared) {\n if (categoryIndex >= 0) {\n const points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n tooltip.showAt(points);\n }\n } else if (point) {\n tooltip.show(point);\n }\n }\n\n hideTooltip() {\n this._tooltip.hide();\n }\n\n _initSurface() {\n const surface = this.surface;\n const wrap = this._surfaceWrap();\n\n const chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n elementSize(wrap, { width: chartArea.width });\n }\n if (chartArea.height) {\n elementSize(wrap, { height: chartArea.height });\n }\n\n if (!surface || surface.options.type !== this.options.renderAs) {\n this._destroySurface();\n\n this.surface = draw.Surface.create(wrap, {\n type: this.options.renderAs\n });\n\n this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n }\n\n _surfaceWrap() {\n return this.element;\n }\n\n _redraw() {\n const model = this._getModel();\n this._size = {\n width: model.options.width,\n height: model.options.height\n };\n\n this._destroyView();\n\n this._model = model;\n this._plotArea = model._plotArea;\n\n model.renderVisual();\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.setup();\n }\n });\n }\n\n this._initSurface();\n this.surface.draw(model.visual);\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.play();\n }\n });\n }\n\n this._tooltip = this._createTooltip();\n this._highlight = new Highlight();\n this._setupSelection();\n this._createPannable();\n this._createZoomSelection();\n this._createMousewheelZoom();\n\n this.trigger(RENDER);\n triggerPaneRender(this._plotArea.panes);\n\n if (!this._navState) {\n this._cancelDomEvents();\n }\n }\n\n exportVisual(exportOptions) {\n let visual;\n if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n const currentOptions = this.options;\n const options = deepExtend({}, exportOptions.options, {\n chartArea: {\n width: exportOptions.width,\n height: exportOptions.height\n }\n });\n\n clearMissingValues(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions, options);\n this._initTheme(this.options, this._theme);\n this.bindCategories();\n\n const model = this._getModel();\n\n model.renderVisual();\n triggerPaneRender(model._plotArea.panes);\n\n visual = model.visual;\n\n this.options = currentOptions;\n } else {\n visual = this.surface.exportVisual();\n }\n\n return visual;\n }\n\n _sharedTooltip() {\n return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n }\n\n _createPannable() {\n const options = this.options;\n if (options.pannable !== false) {\n this._pannable = new Pannable(this._plotArea, options.pannable);\n }\n }\n\n _createZoomSelection() {\n const zoomable = this.options.zoomable;\n const selection = (zoomable || {}).selection;\n if (zoomable !== false && selection !== false) {\n this._zoomSelection = new ZoomSelection(this, selection);\n }\n }\n\n _createMousewheelZoom() {\n const zoomable = this.options.zoomable;\n const mousewheel = (zoomable || {}).mousewheel;\n if (zoomable !== false && mousewheel !== false) {\n this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n }\n }\n\n _toggleDragZoomEvents() {\n const pannable = this.options.pannable;\n const zoomable = this.options.zoomable;\n const selection = (zoomable || {}).selection;\n const mousewheel = (zoomable || {}).mousewheel;\n const allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n const allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n const element = this.element;\n\n if (this._dragZoomEnabled && allowDrag && allowZoom) {\n element.style.touchAction = this._touchAction || '';\n this._dragZoomEnabled = false;\n } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n\n this._toggleDomEvents(!allowDrag, !allowZoom);\n }\n\n _toggleDomEvents(drag, zoom) {\n const domEvents = this.domEvents;\n if (!domEvents) {\n return;\n }\n\n if (domEvents.toggleDrag) {\n domEvents.toggleDrag(drag);\n }\n\n if (domEvents.toggleZoom) {\n domEvents.toggleZoom(zoom);\n }\n }\n\n _createTooltip() {\n const { options: { tooltip: tooltipOptions } } = this;\n let tooltip;\n\n if (this._sharedTooltip()) {\n tooltip = this._createSharedTooltip(tooltipOptions);\n } else {\n tooltip = new Tooltip(this.chartService, tooltipOptions);\n }\n\n return tooltip;\n }\n\n _createSharedTooltip(options) {\n return new SharedTooltip(this._plotArea, options);\n }\n\n applyDefaults(options, themeOptions) {\n applyAxisDefaults(options, themeOptions);\n applySeriesDefaults(options, themeOptions);\n }\n\n applySeriesColors() {\n const options = this.options;\n const series = options.series;\n const colors = options.seriesColors || [];\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const seriesColor = colors[i % colors.length];\n const defaults = currentSeries._defaults;\n\n currentSeries.color = currentSeries.color || seriesColor;\n if (defaults) {\n defaults.color = defaults.color || seriesColor;\n }\n }\n }\n\n _getModel() {\n const options = this.options;\n const plotArea = this._createPlotArea();\n const model = new RootElement(this._modelOptions());\n model.chart = this;\n model._plotArea = plotArea;\n\n Title.buildTitle(options.title, model);\n\n if (options.legend && options.legend.visible) {\n model.append(new Legend(plotArea.options.legend, this.chartService));\n }\n model.append(plotArea);\n model.reflow();\n\n return model;\n }\n\n _modelOptions() {\n const options = this.options;\n const size = this.getSize();\n\n return deepExtend({\n transitions: options.transitions,\n width: size.width || DEFAULT_WIDTH,\n height: size.height || DEFAULT_HEIGHT\n }, options.chartArea);\n }\n\n _createPlotArea(skipSeries) {\n const options = this.options;\n\n const plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n return plotArea;\n }\n\n _setupSelection() {\n const { _plotArea: { axes } } = this;\n const selections = this._selections = [];\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const options = axis.options;\n if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n const range = axis.range();\n\n const selection = new Selection(this, axis,\n deepExtend({ min: range.min, max: range.max }, options.select)\n );\n\n selections.push(selection);\n }\n }\n }\n\n _selectStart(e) {\n return this.trigger(SELECT_START, e);\n }\n\n _select(e) {\n return this.trigger(SELECT, e);\n }\n\n _selectEnd(e) {\n return this.trigger(SELECT_END, e);\n }\n\n _initHandlers() {\n this._clickHandler = this._click.bind(this);\n this._mousewheelHandler = this._mousewheel.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._surfaceMouseenterHandler = this._mouseover.bind(this);\n this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n this._mousemove = throttle(\n this._mousemove.bind(this),\n MOUSEMOVE_DELAY\n );\n }\n\n addObserver(observer) {\n if (observer) {\n this.observers.push(observer);\n }\n }\n\n removeObserver(observer) {\n const index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n }\n\n requiresHandlers(eventNames) {\n const observers = this.observers;\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n }\n\n trigger(name, args = {}) {\n if (name === SHOW_TOOLTIP) {\n args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n }\n args.sender = this;\n\n const observers = this.observers;\n let isDefaultPrevented = false;\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n }\n\n _attachEvents() {\n const element = this.element;\n\n this._touchAction = element.style.touchAction;\n\n bindEvents(element, {\n [ CONTEXTMENU ]: this._clickHandler,\n [ MOUSEWHEEL ]: this._mousewheelHandler,\n [ MOUSELEAVE ]: this._mouseleaveHandler\n });\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(element, { [ MOUSEMOVE ]: this._mousemove });\n }\n\n this.domEvents = DomEventsBuilder.create(this.element, {\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n\n this._toggleDragZoomEvents();\n }\n\n _mouseleave(e) {\n if (this._hoveredPoint) {\n this._hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (this._plotArea.hovered) {\n this.trigger(PLOT_AREA_LEAVE);\n this._plotArea.hovered = false;\n }\n }\n\n _cancelDomEvents() {\n if (this.domEvents && this.domEvents.cancel) {\n this.domEvents.cancel();\n }\n }\n\n _gesturestart(e) {\n if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n this._gestureDistance = e.distance;\n this._unsetActivePoint();\n this.surface.suspendTracking();\n }\n }\n\n _gestureend(e) {\n if (this._zooming && !this._stopChartHandlers(e)) {\n if (this.surface) {\n this.surface.resumeTracking();\n }\n this._zooming = false;\n this.trigger(ZOOM_END, {});\n }\n }\n\n _gesturechange(e) {\n const mousewheelZoom = this._mousewheelZoom;\n\n if (mousewheelZoom && !this._stopChartHandlers(e)) {\n e.preventDefault();\n const previousGestureDistance = this._gestureDistance;\n let scaleDelta = -e.distance / previousGestureDistance + 1;\n\n if (Math.abs(scaleDelta) >= 0.1) {\n scaleDelta = Math.round(scaleDelta * 10);\n\n this._gestureDistance = e.distance;\n const args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n const coords = this._eventCoordinates(e);\n\n if (!this._zooming) {\n this._zooming = true;\n }\n\n const ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);\n if (ranges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n }\n }\n }\n }\n\n _mouseout(e) {\n if (e.element) {\n const element = this._drawingChartElement(e.element, e);\n\n if (element && element.leave) {\n element.leave(this, e.originalEvent);\n }\n }\n }\n\n _start(e) {\n const coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n\n if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n this._startNavigation(e, coords, DRAG_START);\n }\n\n if (this._pannable && this._pannable.start(e)) {\n this.surface.suspendTracking();\n this._unsetActivePoint();\n this._suppressHover = true;\n this.chartService.panning = true;\n }\n\n if (this._zoomSelection) {\n if (this._zoomSelection.start(e)) {\n this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n }\n }\n }\n\n _move(e) {\n let { _navState: state, _pannable: pannable } = this;\n\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n if (pannable) {\n const ranges = pannable.move(e);\n\n if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n pannable.pan();\n }\n } else if (state) {\n const ranges = {};\n const axes = state.axes;\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n const axisName = currentAxis.options.name;\n if (axisName) {\n const axis = currentAxis.options.vertical ? e.y : e.x;\n const delta = axis.startLocation - axis.location;\n\n if (delta !== 0) {\n ranges[currentAxis.options.name] = currentAxis.translateRange(delta);\n }\n }\n }\n\n state.axisRanges = ranges;\n this.trigger(DRAG, {\n axisRanges: ranges,\n originalEvent: e\n });\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.move(e);\n }\n }\n\n _end(e) {\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n const pannable = this._pannable;\n if (pannable && pannable.end(e)) {\n this.surface.resumeTracking();\n this.trigger(DRAG_END, {\n axisRanges: axisRanges(this._plotArea.axes),\n originalEvent: e\n });\n this._suppressHover = false;\n this.chartService.panning = false;\n } else {\n this._endNavigation(e, DRAG_END);\n }\n\n if (this._zoomSelection) {\n const ranges = this._zoomSelection.end(e);\n if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n this._zoomSelection.zoom();\n this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n }\n }\n }\n\n _stopChartHandlers(e) {\n const selections = this._selections || [];\n if (!selections.length) {\n return false;\n }\n\n const coords = this._eventCoordinates(e);\n const pane = this._plotArea.paneByPoint(coords);\n if (pane) {\n for (let idx = 0; idx < selections.length; idx++) {\n if (selections[idx].onPane(pane)) {\n return true;\n }\n }\n }\n }\n\n _mousewheelZoomRate() {\n const zoomable = this.options.zoomable;\n const mousewheel = (zoomable || {}).mousewheel || {};\n return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n }\n\n _mousewheel(e) {\n const delta = mousewheelDelta(e);\n const mousewheelZoom = this._mousewheelZoom;\n const coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (mousewheelZoom) {\n const args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n e.preventDefault();\n\n if (!this._zooming) {\n this._unsetActivePoint();\n this.surface.suspendTracking();\n this._zooming = true;\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n args.axisRanges = mousewheelZoom.updateRanges(delta, coords);\n if (args.axisRanges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n\n this._mwTimeout = setTimeout(() => {\n this.trigger(ZOOM_END, args);\n this._zooming = false;\n if (this.surface) {\n this.surface.resumeTracking();\n }\n }, MOUSEWHEEL_DELAY);\n }\n } else {\n let state = this._navState;\n if (!state) {\n const prevented = this._startNavigation(e, coords, ZOOM_START);\n if (!prevented) {\n state = this._navState;\n }\n }\n\n if (state) {\n const totalDelta = state.totalDelta || delta;\n state.totalDelta = totalDelta + delta;\n\n const axes = this._navState.axes;\n const ranges = {};\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n const axisName = currentAxis.options.name;\n if (axisName) {\n ranges[axisName] = currentAxis.scaleRange(-totalDelta * this._mousewheelZoomRate(), coords);\n }\n }\n\n this.trigger(ZOOM, {\n delta: delta,\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(() => {\n this._endNavigation(e, ZOOM_END);\n }, MOUSEWHEEL_DELAY);\n }\n }\n }\n\n _startNavigation(e, coords, chartEvent) {\n const plotArea = this._model._plotArea;\n const pane = plotArea.findPointPane(coords);\n const axes = plotArea.axes.slice(0);\n\n if (!pane) {\n return;\n }\n\n const ranges = axisRanges(axes);\n\n const prevented = this.trigger(chartEvent, {\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (prevented) {\n this._cancelDomEvents();\n } else {\n this._suppressHover = true;\n this._unsetActivePoint();\n this._navState = {\n axisRanges: ranges,\n pane: pane,\n axes: axes\n };\n }\n }\n\n _endNavigation(e, chartEvent) {\n if (this._navState) {\n this.trigger(chartEvent, {\n axisRanges: this._navState.axisRanges,\n originalEvent: e\n });\n this._suppressHover = false;\n this._navState = null;\n }\n }\n\n _getChartElement(e, match) {\n const element = this.surface.eventTarget(e);\n if (element) {\n return this._drawingChartElement(element, e, match);\n }\n }\n\n _drawingChartElement(element, e, match) {\n let current = element;\n let chartElement;\n while (current && !chartElement) {\n chartElement = current.chartElement;\n current = current.parent;\n }\n\n if (chartElement) {\n if (chartElement.aliasFor) {\n chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n }\n\n if (match) {\n chartElement = chartElement.closest(match);\n if (chartElement && chartElement.aliasFor) {\n chartElement = chartElement.aliasFor();\n }\n }\n\n return chartElement;\n }\n }\n\n _eventCoordinates(e) {\n const coordinates = eventCoordinates(e);\n return this._toModelCoordinates(coordinates.x, coordinates.y);\n }\n\n _elementPadding() {\n if (!this._padding) {\n const { paddingLeft, paddingTop } = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n this._padding = {\n top: paddingTop,\n left: paddingLeft\n };\n }\n\n return this._padding;\n }\n\n _toDocumentCoordinates(point) {\n const padding = this._elementPadding();\n const offset = elementOffset(this.element);\n\n return {\n left: round(point.x + padding.left + offset.left),\n top: round(point.y + padding.top + offset.top)\n };\n }\n\n // TODO: Breaking change due to peer version change\n // Reuse by exposing _surfacePoint on Surface\n _toModelCoordinates(clientX, clientY) {\n const element = this.element;\n const offset = elementOffset(element);\n const padding = this._elementPadding();\n const inverseTransform = elementScale(element).invert();\n const point = new geometry.Point(\n clientX - offset.left - padding.left,\n clientY - offset.top - padding.top\n ).transform(inverseTransform);\n\n return new Point(point.x, point.y);\n }\n\n _tap(e) {\n const drawingElement = this.surface.eventTarget(e);\n const element = this._drawingChartElement(drawingElement, e);\n const sharedTooltip = this._sharedTooltip();\n\n if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n this._unsetActivePoint();\n }\n\n if (sharedTooltip) {\n this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n }\n\n this._propagateClick(element, e);\n\n //part of fix for hover issue on windows touch\n this.handlingTap = true;\n setTimeout(() => {\n this.handlingTap = false;\n }, 0);\n }\n\n _click(e) {\n const element = this._getChartElement(e);\n this._propagateClick(element, e);\n }\n\n _propagateClick(element, e) {\n let current = element;\n while (current) {\n if (current.click) {\n current.click(this, e);\n }\n\n current = current.parent;\n }\n }\n\n _startHover(element, e) {\n if (this._suppressHover) {\n return false;\n }\n\n let point = this._drawingChartElement(element, e, function(element) {\n return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n });\n\n const activePoint = this._activePoint;\n const multipleSeries = this._plotArea.series.length > 1;\n const hasInactiveOpacity = this._hasInactiveOpacity();\n\n this._updateHoveredPoint(point, e);\n\n if (point && activePoint !== point && point.hover) {\n this._activePoint = point;\n\n if (!this._sharedTooltip() && !point.hover(this, e)) {\n this._displayTooltip(point);\n\n if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n }\n } else if (!point && hasInactiveOpacity) {\n if (multipleSeries && this._activeChartInstance) {\n this._updateSeriesOpacity(point, true);\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._activeChartInstance = null;\n }\n this._highlight && this._highlight.hide();\n this._activePoint = null;\n }\n\n return point;\n }\n\n _displayTooltip(point) {\n const tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n if (tooltipOptions.visible) {\n this._tooltip.show(point);\n }\n }\n\n _displayInactiveOpacity(activePoint, multipleSeries, highlightPoints) {\n const chartInstance = this._activeChartInstance = this._chartInstanceFromPoint(activePoint);\n if (!chartInstance) {\n return;\n }\n\n if (multipleSeries) {\n this._updateSeriesOpacity(activePoint);\n this._applySeriesOpacity(chartInstance.children, null, true);\n this._applySeriesOpacity(chartInstance.children, activePoint.series);\n this._highlight.show(highlightPoints || activePoint);\n } else {\n let inactivePoints;\n\n if (!chartInstance.supportsPointInactiveOpacity()) {\n this._highlight.show(activePoint);\n return;\n }\n\n inactivePoints = this._getInactivePoints(activePoint, chartInstance);\n\n if (inactivePoints && inactivePoints.length) {\n this._highlight.show(inactivePoints, 1 - this._getInactiveOpacityForSeries(activePoint.series));\n }\n }\n }\n\n _getInactivePoints(activePoint, chartInstance) {\n let allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n return allPoints.filter(point => point !== activePoint);\n }\n\n _getAllPointsOfType(container, type) {\n let points = [];\n\n for (let i = 0; i < container.children.length; i++) {\n const element = container.children[i];\n\n if (element.constructor === type) {\n points.push(element);\n } else if (element.children && element.children.length) {\n points = points.concat(this._getAllPointsOfType(element, type));\n }\n }\n\n return points;\n }\n\n _updateHoveredPoint(point, e) {\n const hoveredPoint = this._hoveredPoint;\n\n if (hoveredPoint && hoveredPoint !== point) {\n hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (point && hoveredPoint !== point && point.over) {\n this._hoveredPoint = point;\n point.over(this, e);\n }\n }\n\n _updateSeriesOpacity(point, resetOpacity) {\n const plotArea = this._plotArea;\n const length = plotArea.series.length;\n\n for (let i = 0; i < length; i++) {\n const currSeries = plotArea.series[i];\n const defaultOpacity = this._getDefaultOpacityForSeries(currSeries);\n const inactiveOpacity = this._getInactiveOpacityForSeries(currSeries);\n\n if (!resetOpacity && currSeries !== point.series) {\n currSeries.defaultOpacity = defaultOpacity;\n currSeries.opacity = inactiveOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = inactiveOpacity;\n }\n } else {\n currSeries.opacity = defaultOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = defaultOpacity;\n }\n }\n }\n }\n\n _applySeriesOpacity(elements, activeSeries, reset, series) {\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n const currSeries = element.series || series;\n const shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n if (shouldHighlight && element.visual) {\n const opacity = series ? series.opacity : element.series.opacity;\n if (currSeries !== activeSeries || reset) {\n element.visual.opacity(reset ? 1 : opacity);\n }\n }\n\n if (element.children && element.children.length) {\n this._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n }\n }\n }\n\n _chartInstanceFromPoint(point) {\n let chartInstance = point.parent;\n\n while (chartInstance && !chartInstance.plotArea) {\n chartInstance = chartInstance.parent;\n }\n\n return chartInstance;\n }\n\n _hasInactiveOpacity() {\n let hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n let hasInactiveOpacity = this.options.series.filter(s => s.highlight.inactiveOpacity !== undefined ).length > 0;\n return hasDefaultInactiveOpacity || hasInactiveOpacity;\n }\n\n _getInactiveOpacityForSeries(series) {\n let defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n let seriesInactiveOpacity = series.highlight.inactiveOpacity;\n return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n }\n\n _getDefaultOpacityForSeries(series) {\n return series.defaultOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n }\n\n _mouseover(e) {\n const point = this._startHover(e.element, e.originalEvent);\n\n if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n bindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n }\n }\n\n _mouseMoveTracking(e) {\n const { options, _tooltip: tooltip, _highlight: highlight, _activePoint: point } = this;\n const coords = this._eventCoordinates(e);\n\n if (this._plotArea.box.containsPoint(coords)) {\n if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n const seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n if (seriesPoint && seriesPoint !== point) {\n this._activePoint = seriesPoint;\n\n if (!seriesPoint.hover(this, e)) {\n const tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n if (tooltipOptions.visible) {\n tooltip.show(seriesPoint);\n }\n\n highlight.show(seriesPoint);\n }\n }\n }\n } else {\n unbindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n this._unsetActivePoint();\n this._mouseMoveTrackHandler = null;\n }\n }\n\n _mousemove(e) {\n const coords = this._eventCoordinates(e);\n const plotArea = this._plotArea;\n\n this._trackCrosshairs(coords);\n\n if (plotArea.hover) {\n const overPlotArea = plotArea.backgroundContainsPoint(coords);\n if (overPlotArea) {\n plotArea.hovered = true;\n this._plotArea.hover(this, e);\n } else if (plotArea.hovered && !overPlotArea) {\n this.trigger(PLOT_AREA_LEAVE);\n plotArea.hovered = false;\n }\n }\n\n if (this._sharedTooltip()) {\n this._trackSharedTooltip(coords, e);\n }\n }\n\n _trackCrosshairs(coords) {\n const crosshairs = this._plotArea.crosshairs;\n\n for (let i = 0; i < crosshairs.length; i++) {\n const current = crosshairs[i];\n\n if (current.box.containsPoint(coords)) {\n current.showAt(coords);\n } else {\n current.hide();\n }\n }\n }\n\n _trackSharedTooltip(coords, e, toggle) {\n if (this._suppressHover) {\n return;\n }\n\n const { options: { tooltip: tooltipOptions }, _plotArea: plotArea, _plotArea: { categoryAxis }, _tooltip: tooltip, _highlight: highlight } = this;\n\n if (plotArea.backgroundContainsPoint(coords)) {\n const index = categoryAxis.pointCategoryIndex(coords);\n if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n const points = plotArea.pointsByCategoryIndex(index);\n const pointArgs = points.map(function(point) {\n return point.eventArgs(e);\n });\n const hoverArgs = pointArgs[0] || {};\n hoverArgs.categoryPoints = pointArgs;\n\n if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n if (tooltipOptions.visible) {\n tooltip.showAt(points, coords);\n }\n\n highlight.show(points);\n\n this._sharedHighlight = true;\n } else {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = index;\n } else if (toggle && this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._sharedHighlight = false;\n }\n } else if (this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n }\n }\n\n hideElements(options) {\n const plotArea = this._plotArea;\n this._mousemove.cancel();\n\n plotArea.hideCrosshairs();\n\n this._unsetActivePoint(options);\n }\n\n _unsetActivePoint(options) {\n const { _tooltip: tooltip, _highlight: highlight } = this;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (tooltip && !(options && options.keepTooltipOpen)) {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n }\n\n _deferRedraw() {\n this._redraw();\n }\n\n _clearRedrawTimeout() {\n if (this._redrawTimeout) {\n clearInterval(this._redrawTimeout);\n this._redrawTimeout = null;\n }\n }\n\n bindCategories() {\n const options = this.options;\n const definitions = [].concat(options.categoryAxis);\n\n for (let axisIx = 0; axisIx < definitions.length; axisIx++) {\n const axis = definitions[axisIx];\n if (axis.autoBind !== false) {\n this.bindCategoryAxisFromSeries(axis, axisIx);\n }\n }\n }\n\n bindCategoryAxisFromSeries(axis, axisIx) {\n const series = this.options.series;\n const seriesLength = series.length;\n const uniqueCategories = new HashMap();//perf improvement in case type category with dates\n let items = [];\n let bindable = false;\n let dateAxis;\n\n for (let seriesIx = 0; seriesIx < seriesLength; seriesIx++) {\n const s = series[seriesIx];\n const onAxis = s.categoryAxis === axis.name || (!s.categoryAxis && axisIx === 0);\n const data = s.data;\n const dataLength = data.length;\n const bind = s.categoryField && onAxis;\n bindable = bind || bindable;\n\n if (bind && dataLength > 0) {\n dateAxis = isDateAxis(axis, getField(s.categoryField, data[0]));\n\n const getFn = dateAxis ? getDateField : getField;\n\n for (let dataIx = 0; dataIx < dataLength; dataIx++) {\n const dataRow = data[dataIx];\n const category = getFn(s.categoryField, dataRow, this.chartService.intl);\n\n if (dateAxis || !uniqueCategories.get(category)) {\n items.push([ category, dataRow ]);\n\n if (!dateAxis) {\n uniqueCategories.set(category, true);\n }\n }\n }\n }\n }\n\n if (items.length > 0) {\n if (dateAxis) {\n items = uniqueDates(items, function(a, b) {\n return dateComparer(a[0], b[0]);\n });\n }\n\n const result = transpose(items);\n axis.categories = result[0];\n } else if (bindable) {\n axis.categories = [];\n }\n }\n\n _isBindable(series) {\n const valueFields = SeriesBinder.current.valueFields(series);\n let result = true;\n\n for (let i = 0; i < valueFields.length; i++) {\n let field = valueFields[i];\n if (field === VALUE) {\n field = \"field\";\n } else {\n field = field + \"Field\";\n }\n\n if (!defined(series[field])) {\n result = false;\n break;\n }\n }\n\n return result;\n }\n\n _noTransitionsRedraw() {\n const options = this.options;\n let transitionsState;\n\n if (options.transitions !== false) {\n options.transitions = false;\n transitionsState = true;\n }\n\n this._redraw();\n\n if (transitionsState) {\n options.transitions = true;\n }\n }\n\n _legendItemHover(seriesIndex, pointIndex) {\n const { _plotArea: plotArea, _highlight: highlight } = this;\n const currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n let items;\n\n if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL ])) {\n items = plotArea.findPoint(function(point) {\n return point.series.index === seriesIndex && point.index === pointIndex;\n });\n } else {\n items = plotArea.pointsBySeriesIndex(seriesIndex);\n }\n\n if (this._hasInactiveOpacity() && currentSeries.visible && items) {\n const multipleSeries = plotArea.series.length > 1;\n const point = items.length ? items[0] : items;\n\n this._displayInactiveOpacity(point, multipleSeries, items);\n } else {\n highlight.show(items);\n }\n }\n\n _shouldAttachMouseMove() {\n return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n }\n\n updateMouseMoveHandler() {\n unbindEvents(this.element, {\n [ MOUSEMOVE ]: this._mousemove\n });\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(this.element, {\n [ MOUSEMOVE ]: this._mousemove\n });\n }\n }\n\n applyOptions(options, theme) {\n clearMissingValues(this._originalOptions, options);\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n if (theme) {\n this._theme = theme;\n this.chartService.theme = theme;\n }\n this._initTheme(this.options, this._theme);\n\n this._toggleDragZoomEvents();\n }\n\n setOptions(options, theme) {\n this.applyOptions(options, theme);\n this.bindCategories();\n this.redraw();\n this.updateMouseMoveHandler();\n }\n\n setDirection(rtl) {\n this.chartService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this._destroySurface();\n }\n }\n\n setIntlService(intl) {\n this.chartService.intl = intl;\n }\n\n noTransitionsRedraw() {\n this._noTransitionsRedraw();\n }\n\n destroy() {\n this._destroyed = true;\n\n unbindEvents(this.element, {\n [ CONTEXTMENU ]: this._clickHandler,\n [ MOUSEWHEEL ]: this._mousewheelHandler,\n [ MOUSEMOVE ]: this._mousemove,\n [ MOUSELEAVE ]: this._mouseleaveHandler\n });\n\n if (this.domEvents) {\n this.domEvents.destroy();\n delete this.domEvents;\n }\n\n if (this._mouseMoveTrackHandler) {\n unbindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n }\n\n this._destroyView();\n\n this._destroySurface();\n\n this._clearRedrawTimeout();\n }\n\n _destroySurface() {\n const surface = this.surface;\n if (surface) {\n surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n surface.destroy();\n\n this.surface = null;\n }\n }\n\n _destroySelections() {\n const selections = this._selections;\n\n if (selections) {\n while (selections.length > 0) {\n selections.shift().destroy();\n }\n }\n }\n\n _destroyView() {\n const model = this._model;\n\n if (model) {\n model.destroy();\n this._model = null;\n }\n\n this._unsetActivePoint();\n\n this._destroySelections();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this._highlight) {\n this._highlight.destroy();\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.destroy();\n delete this._zoomSelection;\n }\n\n if (this._pannable) {\n this._pannable.destroy();\n delete this._pannable;\n }\n\n if (this._mousewheelZoom) {\n this._mousewheelZoom.destroy();\n delete this._mousewheelZoom;\n }\n }\n}\n\nfunction resolveAxisAliases(options) {\n const aliases = AXIS_NAMES;\n\n for (let idx = 0; idx < aliases.length; idx++) {\n const alias = aliases[idx] + \"Axes\";\n if (options[alias]) {\n options[aliases[idx] + \"Axis\"] = options[alias];\n delete options[alias];\n }\n }\n}\n\nfunction pointByCategoryName(points, name) {\n if (points) {\n for (let idx = 0; idx < points.length; idx++) {\n if (points[idx].category === name) {\n return [ points[idx] ];\n }\n }\n }\n}\n\nfunction applyAxisDefaults(options, themeOptions) {\n const themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n let axisName, axisDefaults, axes;\n\n function mapAxisOptions(axisOptions) {\n const axisColor = (axisOptions || {}).color || axisDefaults.color;\n const result = deepExtend({},\n themeAxisDefaults,\n themeAxisDefaults[axisName],\n axisDefaults,\n axisDefaults[axisName], {\n line: { color: axisColor },\n labels: { color: axisColor },\n title: { color: axisColor }\n },\n axisOptions\n );\n\n delete result[axisName];\n\n return result;\n }\n\n for (let idx = 0; idx < AXIS_NAMES.length; idx++) {\n axisName = AXIS_NAMES[idx] + \"Axis\";\n axisDefaults = options.axisDefaults || {};\n axes = [].concat(options[axisName]);\n\n axes = axes.map(mapAxisOptions);\n\n options[axisName] = axes.length > 1 ? axes : axes[0];\n }\n}\n\nfunction applySeriesDefaults(options, themeOptions) {\n const series = options.series;\n const seriesLength = series.length;\n const seriesDefaults = options.seriesDefaults;\n const commonDefaults = deepExtend({}, options.seriesDefaults);\n const themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n const commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n cleanupNestedSeriesDefaults(commonDefaults);\n cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n for (let i = 0; i < seriesLength; i++) {\n const seriesType = series[i].type || options.seriesDefaults.type;\n\n const baseOptions = deepExtend(\n { data: [] },\n commonThemeDefaults,\n themeSeriesDefaults[seriesType],\n { tooltip: options.tooltip },\n commonDefaults,\n seriesDefaults[seriesType]\n );\n\n series[i]._defaults = baseOptions;\n series[i] = deepExtend({}, baseOptions, series[i]);\n series[i].data = series[i].data || [];\n }\n}\n\nfunction cleanupNestedSeriesDefaults(seriesDefaults) {\n delete seriesDefaults.bar;\n delete seriesDefaults.column;\n delete seriesDefaults.rangeColumn;\n delete seriesDefaults.line;\n delete seriesDefaults.verticalLine;\n delete seriesDefaults.pie;\n delete seriesDefaults.donut;\n delete seriesDefaults.area;\n delete seriesDefaults.verticalArea;\n delete seriesDefaults.scatter;\n delete seriesDefaults.scatterLine;\n delete seriesDefaults.bubble;\n delete seriesDefaults.candlestick;\n delete seriesDefaults.ohlc;\n delete seriesDefaults.boxPlot;\n delete seriesDefaults.bullet;\n delete seriesDefaults.verticalBullet;\n delete seriesDefaults.polarArea;\n delete seriesDefaults.polarLine;\n delete seriesDefaults.radarArea;\n delete seriesDefaults.radarLine;\n delete seriesDefaults.waterfall;\n}\n\n\nfunction axisRanges(axes) {\n const ranges = {};\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const axisName = axis.options.name;\n if (axisName) {\n ranges[axisName] = axis.range();\n }\n }\n\n return ranges;\n}\n\nfunction sortDates(dates, comparer = dateComparer) {\n for (let i = 1, length = dates.length; i < length; i++) {\n if (comparer(dates[i], dates[i - 1]) < 0) {\n dates.sort(comparer);\n break;\n }\n }\n\n return dates;\n}\n\nfunction uniqueDates(srcDates, comparer = dateComparer) {\n const dates = sortDates(srcDates, comparer);\n const length = dates.length;\n const result = length > 0 ? [ dates[0] ] : [];\n\n for (let i = 1; i < length; i++) {\n if (comparer(dates[i], last(result)) !== 0) {\n result.push(dates[i]);\n }\n }\n\n return result;\n}\n\nfunction transpose(rows) {\n const rowCount = rows.length;\n const result = [];\n\n for (let rowIx = 0; rowIx < rowCount; rowIx++) {\n const row = rows[rowIx];\n const colCount = row.length;\n\n for (let colIx = 0; colIx < colCount; colIx++) {\n result[colIx] = result[colIx] || [];\n result[colIx].push(row[colIx]);\n }\n }\n\n return result;\n}\n\nconst DATA_FIELDS = [ 'data', 'categories' ];\n\nfunction clearMissingValues(originalOptions, options) {\n for (let field in options) {\n if (!inArray(field, DATA_FIELDS) && options.hasOwnProperty(field)) {\n const fieldValue = options[field];\n const originalValue = originalOptions[field];\n if (defined(originalValue)) {\n const nullValue = fieldValue === null;\n if ((nullValue || !defined(fieldValue))) {\n delete originalOptions[field];\n if (nullValue) {\n delete options[field];\n }\n } else if (originalValue && isObject(fieldValue)) {\n if (isObject(originalValue)) {\n clearMissingValues(originalValue, fieldValue);\n }\n }\n }\n }\n }\n}\n\nfunction triggerPaneRender(panes) {\n for (let idx = 0; idx < panes.length; idx++) {\n panes[idx].notifyRender();\n }\n}\n\nsetDefaultOptions(Chart, {\n renderAs: \"\",\n chartArea: {},\n legend: {\n visible: true,\n labels: {}\n },\n categoryAxis: {},\n seriesDefaults: {\n type: COLUMN,\n data: [],\n highlight: {\n visible: true\n },\n labels: {},\n negativeValues: {\n visible: false\n }\n },\n series: [],\n seriesColors: null,\n tooltip: {\n visible: false\n },\n transitions: true,\n valueAxis: {},\n plotArea: {},\n title: {},\n xAxis: {},\n yAxis: {},\n panes: [ {} ],\n pannable: false,\n zoomable: false\n});\n\nexport default Chart;\n","import { SharedTooltip as ChartSharedTooltip } from '../chart';\nimport { Point } from '../core';\nconst TOP_OFFSET = -2;\n\nclass SharedTooltip extends ChartSharedTooltip {\n _slotAnchor(coords, slot) {\n const axis = this.plotArea.categoryAxis;\n const vertical = axis.options.vertical;\n const align = vertical ? {\n horizontal: \"left\",\n vertical: \"center\"\n } : {\n horizontal: \"center\",\n vertical: \"bottom\"\n };\n\n let point;\n\n if (vertical) {\n point = new Point(this.plotArea.box.x2, slot.center().y);\n } else {\n point = new Point(slot.center().x, TOP_OFFSET);\n }\n\n return {\n point: point,\n align: align\n };\n }\n\n _defaultAnchor(point, slot) {\n return this._slotAnchor({}, slot);\n }\n}\n\nexport default SharedTooltip;","import { Chart } from '../chart';\nimport { BAR, BULLET, PIE, COLUMN, VERTICAL_BULLET } from '../chart/constants';\nimport{ addClass, deepExtend, elementSize, getSpacing, inArray, isArray, isNumber, setDefaultOptions } from '../common';\nimport SharedTooltip from './shared-tooltip';\n\nconst DEAULT_BAR_WIDTH = 150;\nconst DEAULT_BULLET_WIDTH = 150;\nconst NO_CROSSHAIR = [ BAR, BULLET ];\n\nfunction hide(children) {\n const state = [];\n for (let idx = 0; idx < children.length; idx++) {\n const child = children[idx];\n state[idx] = child.style.display;\n child.style.display = \"none\";\n }\n\n return state;\n}\n\nfunction show(children, state) {\n for (let idx = 0; idx < children.length; idx++) {\n children[idx].style.display = state[idx];\n }\n}\n\nfunction wrapNumber(value) {\n return isNumber(value) ? [ value ] : value;\n}\n\nclass Sparkline extends Chart {\n _setElementClass(element) {\n addClass(element, 'k-sparkline');\n }\n\n _initElement(element) {\n super._initElement(element);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n }\n\n _resize() {\n const element = this.element;\n const state = hide(element.childNodes);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n\n show(element.childNodes, state);\n\n super._resize();\n }\n\n _modelOptions() {\n const chartOptions = this.options;\n const stage = this._surfaceWrap();\n const displayState = hide(stage.childNodes);\n\n const space = document.createElement('span');\n space.innerHTML = ' ';\n\n stage.appendChild(space);\n\n const options = deepExtend({\n width: this._autoWidth,\n height: elementSize(stage).height,\n transitions: chartOptions.transitions\n }, chartOptions.chartArea, {\n inline: true,\n align: false\n });\n\n elementSize(stage, {\n width: options.width,\n height: options.height\n });\n\n stage.removeChild(space);\n\n show(stage.childNodes, displayState);\n\n if (this.surface) {\n this.surface.resize();\n }\n\n return options;\n }\n\n _surfaceWrap() {\n if (!this.stage) {\n const stage = this.stage = document.createElement('span');\n this.element.appendChild(stage);\n }\n return this.stage;\n }\n\n _createPlotArea(skipSeries) {\n const plotArea = super._createPlotArea(skipSeries);\n this._autoWidth = this._initialWidth || this._calculateWidth(plotArea);\n\n return plotArea;\n }\n\n _calculateWidth(plotArea) {\n const options = this.options;\n const margin = getSpacing(options.chartArea.margin);\n const charts = plotArea.charts;\n const stage = this._surfaceWrap();\n let total = 0;\n\n\n for (let i = 0; i < charts.length; i++) {\n const currentChart = charts[i];\n const firstSeries = (currentChart.options.series || [])[0];\n if (!firstSeries) {\n continue;\n }\n\n if (firstSeries.type === BAR) {\n return DEAULT_BAR_WIDTH;\n }\n\n if (firstSeries.type === BULLET) {\n return DEAULT_BULLET_WIDTH;\n }\n\n if (firstSeries.type === PIE) {\n return elementSize(stage).height;\n }\n\n const categoryAxis = currentChart.categoryAxis;\n if (categoryAxis) {\n const pointsCount = categoryAxis.categoriesCount() *\n (!currentChart.options.isStacked && inArray(firstSeries.type, [ COLUMN, VERTICAL_BULLET ]) ? currentChart.seriesOptions.length : 1);\n\n total = Math.max(total, pointsCount);\n }\n }\n\n let size = total * options.pointWidth;\n if (size > 0) {\n size += margin.left + margin.right;\n }\n\n return size;\n }\n\n _createSharedTooltip(options) {\n return new SharedTooltip(this._plotArea, options);\n }\n\n static normalizeOptions(userOptions) {\n let options = wrapNumber(userOptions);\n\n if (isArray(options)) {\n options = { seriesDefaults: { data: options } };\n } else {\n options = deepExtend({}, options);\n }\n\n if (!options.series) {\n options.series = [ { data: wrapNumber(options.data) } ];\n }\n\n deepExtend(options, {\n seriesDefaults: {\n type: options.type\n }\n });\n\n if (inArray(options.series[0].type, NO_CROSSHAIR) ||\n inArray(options.seriesDefaults.type, NO_CROSSHAIR)) {\n options = deepExtend({}, {\n categoryAxis: {\n crosshair: {\n visible: false\n }\n }\n }, options);\n }\n\n return options;\n }\n}\n\nsetDefaultOptions(Sparkline, {\n chartArea: {\n margin: 2\n },\n axisDefaults: {\n visible: false,\n majorGridLines: {\n visible: false\n },\n valueAxis: {\n narrowRange: true\n }\n },\n seriesDefaults: {\n type: \"line\",\n area: {\n line: {\n width: 0.5\n }\n },\n bar: {\n stack: true\n },\n padding: 2,\n width: 0.5,\n overlay: {\n gradient: null\n },\n highlight: {\n visible: false\n },\n border: {\n width: 0\n },\n markers: {\n size: 2,\n visible: false\n }\n },\n tooltip: {\n visible: true,\n shared: true\n },\n categoryAxis: {\n crosshair: {\n visible: true,\n tooltip: {\n visible: false\n }\n }\n },\n legend: {\n visible: false\n },\n transitions: false,\n\n pointWidth: 5,\n\n panes: [ { clip: false } ]\n});\n\nexport default Sparkline;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { interpolateValue, elementStyles } from '../common';\n\nclass FadeOutAnimation extends draw.Animation {\n\n setup() {\n this._initialOpacity = parseFloat(elementStyles(this.element, 'opacity').opacity);\n }\n\n step(pos) {\n elementStyles(this.element, {\n opacity: String(interpolateValue(this._initialOpacity, 0, pos))\n });\n }\n\n abort() {\n super.abort();\n elementStyles(this.element, {\n display: 'none',\n opacity: String(this._initialOpacity)\n });\n }\n\n cancel() {\n super.abort();\n elementStyles(this.element, {\n opacity: String(this._initialOpacity)\n });\n }\n}\n\nexport default FadeOutAnimation;","import { Class, deepExtend, elementStyles, getTemplate, setDefaultOptions } from '../common';\nimport { toDate, toTime } from '../date-utils';\nimport FadeOutAnimation from './fade-out-animation';\n\nfunction createDiv(className, style) {\n const div = document.createElement(\"div\");\n div.className = className;\n if (style) {\n div.style.cssText = style;\n }\n\n return div;\n}\n\nclass NavigatorHint extends Class {\n constructor(container, chartService, options) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.container = container;\n this.chartService = chartService;\n\n const padding = elementStyles(container, [ \"paddingLeft\", \"paddingTop\" ]);\n this.chartPadding = {\n top: padding.paddingTop,\n left: padding.paddingLeft\n };\n\n this.createElements();\n container.appendChild(this.element);\n }\n\n createElements() {\n const element = this.element = createDiv('k-navigator-hint', 'display: none; position: absolute; top: 1px; left: 1px;');\n const tooltip = this.tooltip = createDiv('k-tooltip k-chart-tooltip');\n const scroll = this.scroll = createDiv('k-scroll');\n\n tooltip.innerHTML = ' ';\n\n element.appendChild(tooltip);\n element.appendChild(scroll);\n }\n\n show(from, to, bbox) {\n const { element, options, scroll, tooltip } = this;\n const middle = toDate(toTime(from) + toTime(to - from) / 2);\n const scrollWidth = bbox.width() * 0.4;\n const minPos = bbox.center().x - scrollWidth;\n const maxPos = bbox.center().x;\n const posRange = maxPos - minPos;\n const range = options.max - options.min;\n const scale = posRange / range;\n const offset = middle - options.min;\n let text = this.chartService.intl.format(options.format, from, to);\n const template = getTemplate(options);\n\n this.clearHideTimeout();\n\n if (!this._visible) {\n elementStyles(element, {\n visibility: 'hidden',\n display: 'block'\n });\n this._visible = true;\n }\n\n if (template) {\n text = template({\n from: from,\n to: to\n });\n }\n\n tooltip.innerHTML = text;\n elementStyles(tooltip, {\n left: bbox.center().x - tooltip.offsetWidth / 2,\n top: bbox.y1\n });\n\n const tooltipStyle = elementStyles(tooltip, [ 'marginTop', 'borderTopWidth', 'height' ]);\n\n elementStyles(scroll, {\n width: scrollWidth,\n left: minPos + offset * scale,\n top: bbox.y1 + tooltipStyle.marginTop + tooltipStyle.borderTopWidth + tooltipStyle.height / 2\n });\n\n elementStyles(element, {\n visibility: 'visible'\n });\n }\n\n clearHideTimeout() {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n if (this._hideAnimation) {\n this._hideAnimation.cancel();\n }\n }\n\n hide() {\n this.clearHideTimeout();\n\n this._hideTimeout = setTimeout(() => {\n this._visible = false;\n this._hideAnimation = new FadeOutAnimation(this.element);\n this._hideAnimation.setup();\n this._hideAnimation.play();\n }, this.options.hideDelay);\n }\n\n destroy() {\n this.clearHideTimeout();\n if (this.container) {\n this.container.removeChild(this.element);\n }\n delete this.container;\n delete this.chartService;\n delete this.element;\n delete this.tooltip;\n delete this.scroll;\n }\n}\n\nsetDefaultOptions(NavigatorHint, {\n format: \"{0:d} - {1:d}\",\n hideDelay: 500\n});\n\nexport default NavigatorHint;","const NAVIGATOR_PANE = \"_navigator\";\nconst NAVIGATOR_AXIS = NAVIGATOR_PANE;\n\nexport { NAVIGATOR_AXIS, NAVIGATOR_PANE };","import NavigatorHint from './navigator-hint';\nimport { Selection, filterSeriesByType } from '../chart';\nimport { DRAG, DRAG_END, EQUALLY_SPACED_SERIES, ZOOM, ZOOM_END } from '../chart/constants';\nimport { DateCategoryAxis } from '../core';\nimport { addDuration, parseDate, toDate, toTime } from '../date-utils';\nimport { Class, deepExtend, defined, getTemplate, InstanceObserver, last, limitValue, valueOrDefault } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nconst ZOOM_ACCELERATION = 3;\n\nclass Navigator extends Class {\n constructor(chart) {\n super();\n\n this.chart = chart;\n const options = this.options = deepExtend({}, this.options, chart.options.navigator);\n const select = options.select;\n if (select) {\n select.from = this.parseDate(select.from);\n select.to = this.parseDate(select.to);\n }\n\n if (!defined(options.hint.visible)) {\n options.hint.visible = options.visible;\n }\n\n this.chartObserver = new InstanceObserver(this, {\n [DRAG]: '_drag',\n [DRAG_END]: '_dragEnd',\n [ZOOM]: '_zoom',\n [ZOOM_END]: '_zoomEnd'\n });\n chart.addObserver(this.chartObserver);\n }\n\n parseDate(value) {\n return parseDate(this.chart.chartService.intl, value);\n }\n\n clean() {\n if (this.selection) {\n this.selection.destroy();\n this.selection = null;\n }\n\n if (this.hint) {\n this.hint.destroy();\n this.hint = null;\n }\n }\n\n destroy() {\n if (this.chart) {\n this.chart.removeObserver(this.chartObserver);\n delete this.chart;\n }\n\n this.clean();\n }\n\n redraw() {\n this._redrawSelf();\n this.initSelection();\n }\n\n initSelection() {\n const { chart, options } = this;\n const axis = this.mainAxis();\n const { min, max } = axis.roundedRange();\n const { from, to, mousewheel } = options.select;\n const axisClone = clone(axis);\n\n if (axis.categoriesCount() === 0) {\n return;\n }\n\n this.clean();\n\n // \"Freeze\" the selection axis position until the next redraw\n axisClone.box = axis.box;\n\n this.selection = new Selection(chart, axisClone, {\n min: min,\n max: max,\n from: from || min,\n to: to || max,\n mousewheel: valueOrDefault(mousewheel, { zoom: \"left\" }),\n visible: options.visible\n }, new InstanceObserver(this, {\n selectStart: '_selectStart',\n select: '_select',\n selectEnd: '_selectEnd'\n }));\n\n if (options.hint.visible) {\n this.hint = new NavigatorHint(chart.element, chart.chartService, {\n min: min,\n max: max,\n template: getTemplate(options.hint),\n format: options.hint.format\n });\n }\n }\n\n setRange() {\n const plotArea = this.chart._createPlotArea(true);\n const axis = plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n\n const { min, max } = axis.roundedRange();\n\n const select = this.options.select || {};\n let from = select.from || min;\n if (from < min) {\n from = min;\n }\n\n let to = select.to || max;\n if (to > max) {\n to = max;\n }\n\n this.options.select = deepExtend({}, select, {\n from: from,\n to: to\n });\n\n this.filterAxes();\n }\n\n _redrawSelf(silent) {\n const plotArea = this.chart._plotArea;\n\n if (plotArea) {\n plotArea.redraw(last(plotArea.panes), silent);\n }\n }\n\n redrawSlaves() {\n const chart = this.chart;\n const plotArea = chart._plotArea;\n const slavePanes = plotArea.panes.slice(0, -1);\n\n // Update the original series and categoryAxis before partial refresh.\n plotArea.srcSeries = chart.options.series;\n plotArea.options.categoryAxis = chart.options.categoryAxis;\n plotArea.clearSeriesPointsCache();\n\n plotArea.redraw(slavePanes);\n }\n\n _drag(e) {\n const { chart, selection } = this;\n const coords = chart._eventCoordinates(e.originalEvent);\n const navigatorAxis = this.mainAxis();\n const naviRange = navigatorAxis.roundedRange();\n const inNavigator = navigatorAxis.pane.box.containsPoint(coords);\n const axis = chart._plotArea.categoryAxis;\n const range = e.axisRanges[axis.options.name];\n const select = this.options.select;\n let duration;\n\n if (!range || inNavigator || !selection) {\n return;\n }\n\n if (select.from && select.to) {\n duration = toTime(select.to) - toTime(select.from);\n } else {\n duration = toTime(selection.options.to) - toTime(selection.options.from);\n }\n\n const from = toDate(limitValue(\n toTime(range.min),\n naviRange.min, toTime(naviRange.max) - duration\n ));\n\n const to = toDate(limitValue(\n toTime(from) + duration,\n toTime(naviRange.min) + duration, naviRange.max\n ));\n\n this.options.select = { from: from, to: to };\n\n if (this.options.liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(from, to);\n\n this.showHint(from, to);\n }\n\n _dragEnd() {\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n if (this.hint) {\n this.hint.hide();\n }\n }\n\n readSelection() {\n const { selection: { options: { from, to } }, options: { select } } = this;\n\n select.from = from;\n select.to = to;\n }\n\n filterAxes() {\n const { options: { select = { } }, chart } = this;\n const allAxes = chart.options.categoryAxis;\n const { from, to } = select;\n\n for (let idx = 0; idx < allAxes.length; idx++) {\n const axis = allAxes[idx];\n if (axis.pane !== NAVIGATOR_PANE) {\n axis.min = from;\n axis.max = to;\n }\n }\n }\n\n filter() {\n const { chart, options: { select } } = this;\n\n if (!chart.requiresHandlers([ \"navigatorFilter\" ])) {\n return;\n }\n\n const mainAxis = this.mainAxis();\n const args = {\n from: select.from,\n to: select.to\n };\n\n if (mainAxis.options.type !== 'category') {\n const axisOptions = new DateCategoryAxis(deepExtend({\n baseUnit: \"fit\"\n }, chart.options.categoryAxis[0], {\n categories: [ select.from, select.to ]\n }), chart.chartService).options;\n\n args.from = addDuration(axisOptions.min, -axisOptions.baseUnitStep, axisOptions.baseUnit);\n args.to = addDuration(axisOptions.max, axisOptions.baseUnitStep, axisOptions.baseUnit);\n }\n\n this.chart.trigger(\"navigatorFilter\", args);\n }\n\n _zoom(e) {\n const { chart: { _plotArea: { categoryAxis: axis } }, selection, options: { select, liveDrag } } = this;\n const mainAxis = this.mainAxis();\n let delta = e.delta;\n\n if (!selection) {\n return;\n }\n\n const fromIx = mainAxis.categoryIndex(selection.options.from);\n const toIx = mainAxis.categoryIndex(selection.options.to);\n const coords = this.chart._eventCoordinates(e.originalEvent);\n\n e.originalEvent.preventDefault();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (toIx - fromIx > 1) {\n selection.zoom(delta, coords);\n this.readSelection();\n } else {\n axis.options.min = select.from;\n select.from = axis.scaleRange(-e.delta * this.chart._mousewheelZoomRate(), coords).min;\n }\n\n if (liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(select.from, select.to);\n\n this.showHint(this.options.select.from, this.options.select.to);\n }\n\n _zoomEnd(e) {\n this._dragEnd(e);\n }\n\n showHint(from, to) {\n const plotArea = this.chart._plotArea;\n\n if (this.hint) {\n this.hint.show(from, to, plotArea.backgroundBox());\n }\n }\n\n _selectStart(e) {\n return this.chart._selectStart(e);\n }\n\n _select(e) {\n this.showHint(e.from, e.to);\n\n return this.chart._select(e);\n }\n\n _selectEnd(e) {\n if (this.hint) {\n this.hint.hide();\n }\n\n this.readSelection();\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n return this.chart._selectEnd(e);\n }\n\n mainAxis() {\n const plotArea = this.chart._plotArea;\n\n if (plotArea) {\n return plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n }\n }\n\n select(from, to) {\n const select = this.options.select;\n\n if (from && to) {\n select.from = this.parseDate(from);\n select.to = this.parseDate(to);\n\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n this.selection.set(from, to);\n }\n\n return {\n from: select.from,\n to: select.to\n };\n }\n\n static setup(options = {}, themeOptions = {}) {\n if (options.__navi) {\n return;\n }\n options.__navi = true;\n\n const naviOptions = deepExtend({}, themeOptions.navigator, options.navigator);\n const panes = options.panes = [].concat(options.panes);\n const paneOptions = deepExtend({}, naviOptions.pane, { name: NAVIGATOR_PANE });\n\n if (!naviOptions.visible) {\n paneOptions.visible = false;\n paneOptions.height = 0.1;\n }\n\n panes.push(paneOptions);\n\n Navigator.attachAxes(options, naviOptions);\n Navigator.attachSeries(options, naviOptions, themeOptions);\n }\n\n static attachAxes(options, naviOptions) {\n const series = naviOptions.series || [];\n const categoryAxes = options.categoryAxis = [].concat(options.categoryAxis);\n const valueAxes = options.valueAxis = [].concat(options.valueAxis);\n\n const equallySpacedSeries = filterSeriesByType(series, EQUALLY_SPACED_SERIES);\n const justifyAxis = equallySpacedSeries.length === 0;\n\n const base = deepExtend({\n type: \"date\",\n pane: NAVIGATOR_PANE,\n roundToBaseUnit: !justifyAxis,\n justified: justifyAxis,\n _collapse: false,\n majorTicks: { visible: true },\n tooltip: { visible: false },\n labels: { step: 1 },\n autoBind: naviOptions.autoBindElements,\n autoBaseUnitSteps: {\n minutes: [ 1 ],\n hours: [ 1, 2 ],\n days: [ 1, 2 ],\n weeks: [],\n months: [ 1 ],\n years: [ 1 ]\n }\n });\n const user = naviOptions.categoryAxis;\n\n categoryAxes.push(\n deepExtend({}, base, {\n maxDateGroups: 200\n }, user, {\n name: NAVIGATOR_AXIS,\n title: null,\n baseUnit: \"fit\",\n baseUnitStep: \"auto\",\n labels: { visible: false },\n majorTicks: { visible: false }\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_labels\",\n maxDateGroups: 20,\n baseUnitStep: \"auto\",\n labels: { position: \"\" },\n plotBands: [],\n autoBaseUnitSteps: {\n minutes: []\n },\n _overlap: true\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_ticks\",\n maxDateGroups: 200,\n majorTicks: {\n width: 0.5\n },\n plotBands: [],\n title: null,\n labels: { visible: false, mirror: true },\n _overlap: true\n })\n );\n\n valueAxes.push(deepExtend({\n name: NAVIGATOR_AXIS,\n pane: NAVIGATOR_PANE,\n majorGridLines: {\n visible: false\n },\n visible: false\n }, naviOptions.valueAxis));\n }\n\n static attachSeries(options, naviOptions, themeOptions) {\n const series = options.series = options.series || [];\n const navigatorSeries = [].concat(naviOptions.series || []);\n const seriesColors = themeOptions.seriesColors;\n const defaults = naviOptions.seriesDefaults;\n\n for (let idx = 0; idx < navigatorSeries.length; idx++) {\n series.push(\n deepExtend({\n color: seriesColors[idx % seriesColors.length],\n categoryField: naviOptions.dateField,\n visibleInLegend: false,\n tooltip: {\n visible: false\n }\n }, defaults, navigatorSeries[idx], {\n axis: NAVIGATOR_AXIS,\n categoryAxis: NAVIGATOR_AXIS,\n autoBind: naviOptions.autoBindElements\n })\n );\n }\n }\n}\n\nfunction ClonedObject() { }\nfunction clone(obj) {\n ClonedObject.prototype = obj;\n return new ClonedObject();\n}\n\nexport default Navigator;\n","import { Chart } from '../chart';\n\nimport Navigator from './navigator';\nimport { DEFAULT_WIDTH } from '../common/constants';\nimport { addClass, deepExtend, elementSize, grep, setDefaultOptions } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nconst AUTO_CATEGORY_WIDTH = 28;\n\nclass StockChart extends Chart {\n\n applyDefaults(options, themeOptions) {\n const width = elementSize(this.element).width || DEFAULT_WIDTH;\n let theme = themeOptions;\n\n const stockDefaults = {\n seriesDefaults: {\n categoryField: options.dateField\n },\n axisDefaults: {\n categoryAxis: {\n name: \"default\",\n majorGridLines: {\n visible: false\n },\n labels: {\n step: 2\n },\n majorTicks: {\n visible: false\n },\n maxDateGroups: Math.floor(width / AUTO_CATEGORY_WIDTH)\n }\n }\n };\n\n if (theme) {\n theme = deepExtend({}, theme, stockDefaults);\n }\n\n Navigator.setup(options, theme);\n\n super.applyDefaults(options, theme);\n }\n\n _setElementClass(element) {\n addClass(element, 'k-chart k-stockchart');\n }\n\n setOptions(options) {\n this.destroyNavigator();\n super.setOptions(options);\n }\n\n noTransitionsRedraw() {\n const transitions = this.options.transitions;\n\n this.options.transitions = false;\n this._fullRedraw();\n this.options.transitions = transitions;\n }\n\n _resize() {\n this.noTransitionsRedraw();\n }\n\n _redraw() {\n const navigator = this.navigator;\n\n if (!this._dirty() && navigator && navigator.options.partialRedraw) {\n navigator.redrawSlaves();\n } else {\n this._fullRedraw();\n }\n }\n\n _dirty() {\n const options = this.options;\n const series = [].concat(options.series, options.navigator.series);\n const seriesCount = grep(series, function(s) { return s && s.visible; }).length;\n const dirty = this._seriesCount !== seriesCount;\n this._seriesCount = seriesCount;\n\n return dirty;\n }\n\n _fullRedraw() {\n let navigator = this.navigator;\n\n if (!navigator) {\n navigator = this.navigator = new Navigator(this);\n this.trigger(\"navigatorCreated\", { navigator: navigator });\n }\n\n navigator.clean();\n navigator.setRange();\n\n super._redraw();\n\n navigator.initSelection();\n }\n\n _trackSharedTooltip(coords) {\n const plotArea = this._plotArea;\n const pane = plotArea.paneByPoint(coords);\n\n if (pane && pane.options.name === NAVIGATOR_PANE) {\n this._unsetActivePoint();\n } else {\n super._trackSharedTooltip(coords);\n }\n }\n\n bindCategories() {\n super.bindCategories();\n this.copyNavigatorCategories();\n }\n\n copyNavigatorCategories() {\n const definitions = [].concat(this.options.categoryAxis);\n let categories;\n\n for (let axisIx = 0; axisIx < definitions.length; axisIx++) {\n const axis = definitions[axisIx];\n if (axis.name === NAVIGATOR_AXIS) {\n categories = axis.categories;\n } else if (categories && axis.pane === NAVIGATOR_PANE) {\n axis.categories = categories;\n }\n }\n }\n\n destroyNavigator() {\n if (this.navigator) {\n this.navigator.destroy();\n this.navigator = null;\n }\n }\n\n destroy() {\n this.destroyNavigator();\n super.destroy();\n }\n\n _stopChartHandlers(e) {\n const coords = this._eventCoordinates(e);\n const pane = this._plotArea.paneByPoint(coords);\n\n return super._stopChartHandlers(e) || (pane && pane.options.name === NAVIGATOR_PANE);\n }\n\n _toggleDragZoomEvents() {\n if (!this._dragZoomEnabled) {\n this.element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n }\n}\n\nsetDefaultOptions(StockChart, {\n dateField: \"date\",\n axisDefaults: {\n categoryAxis: {\n type: \"date\",\n baseUnit: \"fit\",\n justified: true\n },\n valueAxis: {\n narrowRange: true,\n labels: {\n format: \"C\"\n }\n }\n },\n navigator: {\n select: {},\n seriesDefaults: {\n markers: {\n visible: false\n },\n tooltip: {\n visible: true\n },\n line: {\n width: 2\n }\n },\n hint: {},\n visible: true\n },\n tooltip: {\n visible: true\n },\n legend: {\n visible: false\n }\n});\n\nexport default StockChart;","import GeometryArc from '../geometry/arc';\nimport Element from './element';\nimport { Path } from './path';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport { defined } from '../util';\n\n\nconst DEFAULT_STROKE = \"#000\";\n\nclass Arc extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Arc\";\n }\n\n constructor(geometry = new GeometryArc(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n rawBBox() {\n return this.geometry().bbox();\n }\n\n toPath() {\n const path = new Path();\n const curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (let i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n\n return path;\n }\n\n _containsPoint(point) {\n return this.geometry().containsPoint(point);\n }\n\n _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n}\n\nexport default Arc;\n","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport GeometryRect from '../geometry/rect';\nimport { defined } from '../util';\n\n\nclass Rect extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Rect\";\n }\n\n constructor(geometry = new GeometryRect(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n rawBBox() {\n return this._geometry.bbox();\n }\n\n _containsPoint(point) {\n return this._geometry.containsPoint(point);\n }\n\n _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n}\n\nexport default Rect;\n","import translateToPoint from './translate-to-point';\nimport alignStart from './align-start';\n\nexport default function alignElements(elements, rect, alignment, axis, sizeField) {\n for (let idx = 0; idx < elements.length; idx++) {\n const bbox = elements[idx].clippedBBox();\n if (bbox) {\n const point = bbox.origin.clone();\n point[axis] = alignStart(bbox.size[sizeField], rect, alignment || \"start\", axis, sizeField);\n translateToPoint(point, bbox, elements[idx]);\n }\n }\n}","\nimport alignElements from './align-elements';\n\nexport default function align(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"x\", \"width\");\n}","import alignElements from './align-elements';\n\nexport default function vAlign(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"y\", \"height\");\n}","import Point from '../geometry/point';\nimport translateToPoint from './translate-to-point';\n\nexport default function stackElements(elements, stackAxis, otherAxis, sizeField) {\n if (elements.length > 1) {\n const origin = new Point();\n let previousBBox = elements[0].bbox;\n\n for (let idx = 1; idx < elements.length; idx++) {\n let element = elements[idx].element;\n let bbox = elements[idx].bbox;\n origin[stackAxis] = previousBBox.origin[stackAxis] + previousBBox.size[sizeField];\n origin[otherAxis] = bbox.origin[otherAxis];\n translateToPoint(origin, bbox, element);\n bbox.origin[stackAxis] = origin[stackAxis];\n previousBBox = bbox;\n }\n }\n}","export default function createStackElements(elements) {\n const stackElements = [];\n\n for (let idx = 0; idx < elements.length; idx++) {\n let element = elements[idx];\n let bbox = element.clippedBBox();\n if (bbox) {\n stackElements.push({\n element: element,\n bbox: bbox\n });\n }\n }\n\n return stackElements;\n}","import stackElements from './stack-elements';\nimport createStackElements from './create-stack-elements';\n\nexport default function stack(elements) {\n stackElements(createStackElements(elements), \"x\", \"y\", \"width\");\n}","import stackElements from './stack-elements';\nimport createStackElements from './create-stack-elements';\n\nexport default function vStack(elements) {\n stackElements(createStackElements(elements), \"y\", \"x\", \"height\");\n}","import translateToPoint from './translate-to-point';\nimport stackElements from './stack-elements';\n\nfunction getStacks(elements, rect, sizeField) {\n const maxSize = rect.size[sizeField];\n const stacks = [];\n let stack = [];\n let stackSize = 0;\n let element, bbox;\n\n const addElementToStack = function() {\n stack.push({\n element: element,\n bbox: bbox\n });\n };\n\n for (let idx = 0; idx < elements.length; idx++) {\n element = elements[idx];\n\n bbox = element.clippedBBox();\n if (bbox) {\n let size = bbox.size[sizeField];\n if (stackSize + size > maxSize) {\n if (stack.length) {\n stacks.push(stack);\n stack = [];\n addElementToStack();\n stackSize = size;\n } else {\n addElementToStack();\n stacks.push(stack);\n stack = [];\n stackSize = 0;\n }\n } else {\n addElementToStack();\n stackSize += size;\n }\n }\n }\n\n if (stack.length) {\n stacks.push(stack);\n }\n\n return stacks;\n}\n\nexport default function wrapElements(elements, rect, axis, otherAxis, sizeField) {\n const stacks = getStacks(elements, rect, sizeField);\n const origin = rect.origin.clone();\n const result = [];\n\n for (let idx = 0; idx < stacks.length; idx++) {\n let stack = stacks[idx];\n let startElement = stack[0];\n origin[otherAxis] = startElement.bbox.origin[otherAxis];\n translateToPoint(origin, startElement.bbox, startElement.element);\n startElement.bbox.origin[axis] = origin[axis];\n stackElements(stack, axis, otherAxis, sizeField);\n result.push([]);\n for (let elementIdx = 0; elementIdx < stack.length; elementIdx++) {\n result[idx].push(stack[elementIdx].element);\n }\n }\n return result;\n}","import wrapElements from './wrap-elements';\n\nexport default function wrap(elements, rect) {\n return wrapElements(elements, rect, \"x\", \"y\", \"width\");\n}","import wrapElements from './wrap-elements';\n\nexport default function vWrap(elements, rect) {\n return wrapElements(elements, rect, \"y\", \"x\", \"height\");\n}","import createTransform from '../geometry/transform';\n\nexport default function fit(element, rect) {\n const bbox = element.clippedBBox();\n if (bbox) {\n const elementSize = bbox.size;\n const rectSize = rect.size;\n if (rectSize.width < elementSize.width || rectSize.height < elementSize.height) {\n const scale = Math.min(rectSize.width / elementSize.width, rectSize.height / elementSize.height);\n const transform = element.transform() || createTransform();\n transform.scale(scale, scale);\n element.transform(transform);\n }\n }\n}","import { Class } from '../common';\nimport { MultiPath } from '../shapes/path';\nimport parsePath from './parse-path';\n\nlet instance;\n\nclass PathParser extends Class {\n static get current() {\n if (!instance) {\n instance = new PathParser();\n }\n\n return instance;\n }\n\n parse(str, options) {\n const multiPath = new MultiPath(options);\n return parsePath(multiPath, str);\n }\n}\n\nexport default PathParser;\n\n","import RootNode from './root-node';\nimport { Group } from '../shapes';\nimport { transform } from '../geometry';\nimport { SVG_NS } from './constants';\n\nexport default function exportGroup(group) {\n const root = new RootNode({\n skipBaseHref: true\n });\n const bbox = group.clippedBBox();\n let rootGroup = group;\n\n if (bbox) {\n const origin = bbox.getOrigin();\n const exportRoot = new Group();\n exportRoot.transform(transform().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n rootGroup = exportRoot;\n }\n\n root.load([ rootGroup ]);\n\n const svg = `${ root.render() }`;\n\n root.destroy();\n\n return svg;\n}","import Surface from './surface';\nimport { transform } from '../geometry';\nimport Group from '../shapes/group';\n\nexport default function exportImage(group, options) {\n const defaults = {\n width: \"800px\", height: \"600px\",\n cors: \"Anonymous\"\n };\n\n let exportRoot = group;\n const bbox = group.clippedBBox();\n\n\n if (bbox) {\n const origin = bbox.getOrigin();\n exportRoot = new Group();\n exportRoot.transform(transform().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n\n const size = bbox.getSize();\n defaults.width = size.width + \"px\";\n defaults.height = size.height + \"px\";\n }\n\n const surfaceOptions = Object.assign(defaults, options);\n\n const container = document.createElement(\"div\");\n const style = container.style;\n\n style.display = \"none\";\n style.width = surfaceOptions.width;\n style.height = surfaceOptions.height;\n document.body.appendChild(container);\n\n const surface = new Surface(container, surfaceOptions);\n surface.suspendTracking();\n surface.draw(exportRoot);\n\n const promise = surface.image();\n const destroy = () => {\n surface.destroy();\n document.body.removeChild(container);\n };\n promise.then(destroy, destroy);\n\n return promise;\n}","import { createPromise, encodeBase64 } from '../util';\nimport exportGroup from './export-group';\n\nexport default function exportSVG(group, options) {\n let svg = exportGroup(group);\n\n if (!options || !options.raw) {\n svg = \"data:image/svg+xml;base64,\" + encodeBase64(svg);\n }\n\n return createPromise().resolve(svg);\n}\n","const ANGULAR_SPEED = 150;\nconst LINEAR_SPEED = 250;\nconst ARROW = \"arrow\";\nconst ARROW_POINTER = \"arrowPointer\";\nconst BAR_POINTER = \"barPointer\";\nconst DEFAULT_HEIGHT = 200;\nconst DEFAULT_LINE_WIDTH = 0.5;\nconst DEFAULT_WIDTH = 200;\nconst DEGREE = Math.PI / 180;\nconst INSIDE = \"inside\";\nconst LINEAR = \"linear\";\nconst OUTSIDE = \"outside\";\nconst RADIAL_POINTER = \"radialPointer\";\nconst RADIAL_RANGE_POINTER = \"radialRangePointer\";\n\nexport {\n ANGULAR_SPEED, LINEAR_SPEED, ARROW, ARROW_POINTER, BAR_POINTER,\n DEFAULT_HEIGHT, DEFAULT_LINE_WIDTH, DEFAULT_WIDTH,\n DEGREE, INSIDE, LINEAR, OUTSIDE, RADIAL_POINTER, RADIAL_RANGE_POINTER\n};","import { getSpacing } from '../../common';\n\nexport default function pad(bbox, value) {\n const origin = bbox.getOrigin();\n const size = bbox.getSize();\n const spacing = getSpacing(value);\n\n bbox.setOrigin([ origin.x - spacing.left, origin.y - spacing.top ]);\n bbox.setSize([ size.width + (spacing.left + spacing.right), size.height + (spacing.top + spacing.bottom) ]);\n\n return bbox;\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport pad from './pad';\n\nconst { Group, Path, Text } = drawing;\n\nexport default function buildLabelElement(label, options) {\n const labelBox = label.box;\n const textBox = label.children[0].box;\n const border = options.border || {};\n const background = options.background || \"\";\n\n const wrapper = Path.fromRect(new geo.Rect([ labelBox.x1, labelBox.y1 ], [ labelBox.width(), labelBox.height() ]), {\n stroke: {}\n });\n\n const text = new Text(label.text, new geo.Point(textBox.x1, textBox.y1), {\n font: options.font,\n fill: { color: options.color }\n });\n\n const styleGeometry = pad(text.bbox().clone(), options.padding);\n\n const styleBox = Path.fromRect(styleGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n opacity: border.opacity,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: background\n }\n });\n\n const elements = new Group();\n elements.append(wrapper);\n elements.append(styleBox);\n elements.append(text);\n\n return elements;\n}","import { defined } from '../../common';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\n\nexport default function getRange(range, min, max) {\n const from = defined(range.from) ? range.from : MIN_VALUE;\n const to = defined(range.to) ? range.to : MAX_VALUE;\n\n range.from = Math.max(Math.min(to, from), min);\n range.to = Math.min(Math.max(to, from), max);\n\n return range;\n}","import { getSpacing } from '../../common';\nimport pad from './pad';\n\nexport default function unpad(bbox, value) {\n const spacing = getSpacing(value);\n\n spacing.left = -spacing.left; spacing.top = -spacing.top;\n spacing.right = -spacing.right; spacing.bottom = -spacing.bottom;\n\n return pad(bbox, spacing);\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { Class, elementSize, setDefaultOptions, deepExtend, isArray, isNumber } from '../common';\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT } from './constants';\nimport { ChartService } from '../services';\nimport { unpad } from './utils';\n\nconst DEFAULT_MARGIN = 5;\nconst { Path, Surface } = drawing;\n\nclass Gauge extends Class {\n\n constructor(element, userOptions, theme, context = {}) {\n super();\n\n this.element = element;\n this.theme = theme;\n this.contextService = new ChartService(this, context);\n this._originalOptions = deepExtend({}, this.options, userOptions);\n this.options = deepExtend({}, this._originalOptions);\n this._initTheme(theme);\n\n this.redraw();\n }\n\n destroy() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n }\n\n delete this.element;\n delete this.surfaceElement;\n }\n\n value(pointerValue) {\n const pointer = this.pointers[0];\n\n if (arguments.length === 0) {\n return pointer.value();\n }\n\n pointer.value(pointerValue);\n this._setValueOptions(pointerValue);\n }\n\n _draw() {\n const surface = this.surface;\n\n surface.clear();\n surface.draw(this._visuals);\n }\n\n exportVisual() {\n return this._visuals;\n }\n\n allValues(values) {\n const pointers = this.pointers;\n const allValues = [];\n\n if (arguments.length === 0) {\n for (let i = 0; i < pointers.length; i++) {\n allValues.push(pointers[i].value());\n }\n\n return allValues;\n }\n\n if (isArray(values)) {\n for (let i = 0; i < values.length; i++) {\n if (isNumber(values[i])) {\n pointers[i].value(values[i]);\n }\n }\n }\n\n this._setValueOptions(values);\n }\n\n _setValueOptions(values) {\n const pointers = [].concat(this.options.pointer);\n const arrayValues = [].concat(values);\n\n for (let i = 0; i < arrayValues.length; i++) {\n pointers[i].value = arrayValues[i];\n }\n }\n\n resize() {\n this.noTransitionsRedraw();\n }\n\n noTransitionsRedraw() {\n const transitions = this.options.transitions;\n\n this._toggleTransitions(false);\n\n this.redraw();\n\n this._toggleTransitions(transitions);\n }\n\n redraw() {\n const size = this._surfaceSize();\n const wrapper = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._initSurface();\n\n this.gaugeArea = this._createGaugeArea();\n\n this._createModel();\n\n const bbox = unpad(wrapper.bbox(), this._gaugeAreaMargin);\n this.reflow(bbox);\n }\n\n setOptions(options, theme) {\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n this._initTheme(theme);\n\n this.redraw();\n }\n\n setDirection(rtl) {\n this.contextService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this.surface.destroy();\n this.surface = null;\n }\n }\n\n setIntlService(intl) {\n this.contextService.intl = intl;\n }\n\n _initTheme(theme) {\n let currentTheme = theme || this.theme || {};\n this.theme = currentTheme;\n\n this.options = deepExtend({}, currentTheme, this.options);\n const options = this.options;\n const pointer = options.pointer;\n\n if (isArray(pointer)) {\n const pointers = [];\n for (let i = 0; i < pointer.length; i++) {\n pointers.push(deepExtend({}, currentTheme.pointer, pointer[i]));\n }\n options.pointer = pointers;\n }\n }\n\n _createGaugeArea() {\n const options = this.options.gaugeArea;\n const size = this.surface.size();\n const border = options.border || {};\n let areaGeometry = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._gaugeAreaMargin = options.margin || DEFAULT_MARGIN;\n\n if (border.width > 0) {\n areaGeometry = unpad(areaGeometry, border.width);\n }\n\n const gaugeArea = Path.fromRect(areaGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: options.background\n }\n });\n\n return gaugeArea;\n }\n\n _initSurface() {\n const { options, surface } = this;\n const element = this._surfaceElement();\n const size = this._surfaceSize();\n\n elementSize(element, size);\n\n if (!surface || surface.options.type !== options.renderAs) {\n if (surface) {\n surface.destroy();\n }\n\n this.surface = Surface.create(element, {\n type: options.renderAs\n });\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n }\n\n _surfaceSize() {\n const options = this.options;\n const size = this._getSize();\n\n if (options.gaugeArea) {\n deepExtend(size, options.gaugeArea);\n }\n\n return size;\n }\n\n _surfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.element.appendChild(this.surfaceElement);\n }\n\n return this.surfaceElement;\n }\n\n getSize() {\n return this._getSize();\n }\n\n _getSize() {\n const element = this.element;\n const defaultSize = this._defaultSize();\n let width = element.offsetWidth;\n let height = element.offsetHeight;\n\n if (!width) {\n width = defaultSize.width;\n }\n\n if (!height) {\n height = defaultSize.height;\n }\n\n return { width: width, height: height };\n }\n\n _defaultSize() {\n return {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT\n };\n }\n\n _toggleTransitions(value) {\n this.options.transitions = value;\n for (let i = 0; i < this.pointers.length; i++) {\n this.pointers[i].options.animation.transitions = value;\n }\n }\n}\n\nsetDefaultOptions(Gauge, {\n plotArea: {},\n theme: \"default\",\n renderAs: \"\",\n pointer: {},\n scale: {},\n gaugeArea: {}\n});\n\nexport default Gauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined } from '../../common';\nimport { BLACK } from '../../common/constants';\nimport { NumericAxis } from '../../core';\nimport { DEFAULT_LINE_WIDTH, INSIDE } from '../constants';\nimport { autoMajorUnit } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nconst { Path, Group } = drawing;\nconst Point = geo.Point;\n\nfunction renderAxisTick(tickRenderOptions, tickOptions) {\n const { position, tickX, tickY } = tickRenderOptions;\n let start, end;\n\n if (tickRenderOptions.vertical) {\n start = new Point(tickX, position);\n end = new Point(tickX + tickOptions.size, position);\n } else {\n start = new Point(position, tickY);\n end = new Point(position, tickY + tickOptions.size);\n }\n\n const tickPath = new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(start).lineTo(end);\n\n return tickPath;\n}\n\nfunction renderTicks(tickGroup, tickPositions, tickRenderOptions, tickOptions) {\n const count = tickPositions.length;\n\n if (tickOptions.visible) {\n const { mirror, lineBox } = tickRenderOptions;\n for (let i = tickOptions.skip; i < count; i += tickOptions.step) {\n if (i % tickOptions.skipUnit === 0) {\n continue;\n }\n\n tickRenderOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickRenderOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickRenderOptions.position = tickPositions[i];\n\n tickGroup.append(renderAxisTick(tickRenderOptions, tickOptions));\n }\n }\n}\n\nclass LinearScale extends NumericAxis {\n constructor(options, service) {\n let scaleOptions = options || {};\n if (!defined(scaleOptions.reverse) && scaleOptions.vertical === false && (service || {}).rtl) {\n scaleOptions = Object.assign({}, scaleOptions, {\n reverse: true\n });\n }\n\n super(0, 1, scaleOptions, service);\n\n this.options.minorUnit = this.options.minorUnit || this.options.majorUnit / 10;\n }\n\n initUserOptions(options) {\n let scaleOptions = deepExtend({}, this.options, options);\n scaleOptions = deepExtend({}, scaleOptions , { labels: { mirror: scaleOptions.mirror } });\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n\n return scaleOptions;\n }\n\n initFields() {\n }\n\n render() {\n const elements = this.elements = new Group();\n const labels = this.renderLabels();\n const scaleLine = this.renderLine();\n const scaleTicks = this.renderTicks();\n const ranges = this.renderRanges();\n\n elements.append(scaleLine, labels, scaleTicks, ranges);\n\n return elements;\n }\n\n renderRanges() {\n const options = this.options;\n const { min, max, vertical, labels: { mirror } } = options;\n const ranges = options.ranges || [];\n const elements = new Group();\n const count = ranges.length;\n const rangeSize = options.rangeSize || options.minorTicks.size / 2;\n\n for (let i = 0; i < count; i++) {\n const range = getRange(ranges[i], min, max);\n const slot = this.getSlot(range.from, range.to);\n const slotX = vertical ? this.lineBox() : slot;\n const slotY = vertical ? slot : this.lineBox();\n if (vertical) {\n slotX.x1 -= rangeSize * (mirror ? -1 : 1);\n } else {\n slotY.y2 += rangeSize * (mirror ? -1 : 1);\n }\n\n elements.append(Path.fromRect(new geo.Rect([ slotX.x1, slotY.y1 ], [ slotX.x2 - slotX.x1, slotY.y2 - slotY.y1 ]), {\n fill: { color: range.color, opacity: range.opacity },\n stroke: { }\n }));\n }\n\n return elements;\n }\n\n renderLabels() {\n const { labels, options } = this;\n const elements = new Group();\n\n for (let i = 0; i < labels.length; i++) {\n elements.append(buildLabelElement(labels[i], options.labels));\n }\n\n return elements;\n }\n\n renderLine() {\n const line = this.options.line;\n const lineBox = this.lineBox();\n const elements = new Group();\n\n if (line.width > 0 && line.visible) {\n const linePath = new Path({\n stroke: {\n color: line.color,\n dashType: line.dashType,\n width: line.width\n }\n });\n\n linePath.moveTo(lineBox.x1, lineBox.y1).lineTo(lineBox.x2, lineBox.y2);\n elements.append(linePath);\n }\n\n return elements;\n }\n\n renderTicks() {\n const ticks = new Group();\n const options = this.options;\n const majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n const tickRenderOptions = {\n vertical: options.vertical,\n mirror: options.labels.mirror,\n lineBox: this.lineBox()\n };\n\n renderTicks(ticks, this.getMajorTickPositions(), tickRenderOptions, options.majorTicks);\n renderTicks(ticks, this.getMinorTickPositions(), tickRenderOptions, deepExtend({}, {\n skipUnit: majorUnit / options.minorUnit\n }, options.minorTicks));\n\n return ticks;\n }\n}\n\nsetDefaultOptions(LinearScale, {\n min: 0,\n max: 50,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n line: {\n width: DEFAULT_LINE_WIDTH\n },\n\n labels: {\n position: INSIDE,\n padding: 2\n },\n mirror: false,\n _alignLines: false\n});\n\nexport default LinearScale;","import { Class, setDefaultOptions, defined, deepExtend, limitValue } from '../common';\nimport { BLACK } from '../common/constants';\n\nclass Pointer extends Class {\n constructor(scale, userOptions) {\n super();\n\n const { min, max } = scale.options;\n const options = this.options = deepExtend({}, this.options, userOptions);\n\n options.fill = options.color;\n\n this.scale = scale;\n\n if (defined(options.value)) {\n options.value = limitValue(options.value, min, max);\n } else {\n options.value = min;\n }\n }\n\n value(newValue) {\n const options = this.options;\n const value = options.value;\n\n if (arguments.length === 0) {\n return value;\n }\n\n const { min, max } = this.scale.options;\n\n options._oldValue = defined(options._oldValue) ? options.value : min;\n options.value = limitValue(newValue, min, max);\n\n if (this.elements) {\n this.repaint();\n }\n }\n}\n\nsetDefaultOptions(Pointer, {\n color: BLACK\n});\n\nexport default Pointer;","import { setDefaultOptions, deepExtend, defined, getSpacing } from '../../common';\nimport { Box } from '../../core';\nimport { BLACK } from '../../common/constants';\nimport { BAR_POINTER } from '../constants';\nimport Pointer from '../pointer';\n\nclass LinearPointer extends Pointer {\n constructor(scale, options) {\n super(scale, options);\n\n this.options = deepExtend({\n track: {\n visible: defined(options.track)\n }\n }, this.options);\n }\n\n reflow() {\n const { options, scale } = this;\n const { mirror, vertical } = scale.options;\n const scaleLine = scale.lineBox();\n const trackSize = options.track.size || options.size;\n const pointerHalfSize = options.size / 2;\n const margin = getSpacing(options.margin);\n let space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n let pointerBox, pointerRangeBox, trackBox;\n\n space = mirror ? -space : space;\n\n if (vertical) {\n trackBox = new Box(\n scaleLine.x1 + space, scaleLine.y1,\n scaleLine.x1 + space, scaleLine.y2);\n\n if (mirror) {\n trackBox.x1 -= trackSize;\n } else {\n trackBox.x2 += trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize,\n scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize\n );\n pointerBox = pointerRangeBox;\n }\n } else {\n trackBox = new Box(\n scaleLine.x1, scaleLine.y1 - space,\n scaleLine.x2, scaleLine.y1 - space);\n\n if (mirror) {\n trackBox.y2 += trackSize;\n } else {\n trackBox.y1 -= trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space,\n scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space\n );\n pointerBox = pointerRangeBox;\n }\n }\n\n this.trackBox = trackBox;\n this.pointerRangeBox = pointerRangeBox;\n this.box = pointerBox || trackBox.clone().pad(options.border.width);\n }\n\n getElementOptions() {\n const options = this.options;\n\n return {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: defined(options.border) ? {\n color: options.border.width ? options.border.color || options.color : \"\",\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: options.opacity\n } : null\n };\n }\n\n _margin() {\n const { scale, options } = this;\n const { mirror, vertical } = scale.options;\n const margin = getSpacing(options.margin);\n\n const space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n\n return space;\n }\n}\n\nsetDefaultOptions(LinearPointer, {\n shape: BAR_POINTER,\n\n track: {\n border: {\n width: 1\n }\n },\n\n color: BLACK,\n border: {\n width: 1\n },\n opacity: 1,\n\n margin: getSpacing(3),\n animation: {\n type: BAR_POINTER\n },\n visible: true\n});\n\nexport default LinearPointer;","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ARROW_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nclass ArrowLinearPointerAnimation extends drawing.Animation {\n\n setup() {\n const options = this.options;\n const { margin, from, to, vertical } = options;\n const axis = vertical ? \"x1\" : \"y1\";\n\n if (options.mirror === vertical) {\n from[axis] -= margin; to[axis] -= margin;\n } else {\n from[axis] += margin; to[axis] += margin;\n }\n\n const fromScale = this.fromScale = new geometry.Point(from.x1, from.y1);\n const toScale = this.toScale = new geometry.Point(to.x1, to.y1);\n\n if (options.duration !== 0) {\n options.duration = Math.max((fromScale.distanceTo(toScale) / options.duration) * 1000, 1);\n }\n }\n\n step(pos) {\n const translateX = interpolateValue(this.fromScale.x, this.toScale.x, pos);\n const translateY = interpolateValue(this.fromScale.y, this.toScale.y, pos);\n\n this.element.transform(geometry.transform().translate(translateX, translateY));\n }\n}\n\nsetDefaultOptions(ArrowLinearPointerAnimation, {\n easing: LINEAR,\n duration: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n\nexport default ArrowLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { ARROW_POINTER } from '../constants';\nimport LinearPointer from './linear-pointer';\nimport ArrowLinearPointerAnimation from './arrow-linear-pointer-animation';\n\nconst Point = geo.Point;\nconst Path = drawing.Path;\n\nclass ArrowLinearPointer extends LinearPointer {\n constructor(scale, options) {\n super(scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.6;\n }\n }\n\n pointerShape() {\n const { scale, options: { size } } = this;\n const halfSize = size / 2;\n const sign = (scale.options.mirror ? -1 : 1);\n let shape;\n\n if (scale.options.vertical) {\n shape = [\n new Point(0, 0 - halfSize), new Point(0 - sign * size, 0), new Point(0, 0 + halfSize)\n ];\n } else {\n shape = [\n new Point(0 - halfSize, 0), new Point(0, 0 + sign * size), new Point(0 + halfSize, 0)\n ];\n }\n\n return shape;\n }\n\n repaint() {\n const { scale, options } = this;\n const animation = new ArrowLinearPointerAnimation(this.elements, deepExtend(options.animation, {\n vertical: scale.options.vertical,\n mirror: scale.options.mirror,\n margin: this._margin(options.margin),\n from: scale.getSlot(options._oldValue),\n to: scale.getSlot(options.value)\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n }\n\n render() {\n const { scale, options } = this;\n const elementOptions = this.getElementOptions();\n const shape = this.pointerShape(options.value);\n\n options.animation.type = ARROW_POINTER;\n\n const elements = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close();\n\n const slot = scale.getSlot(options.value);\n elements.transform(geo.transform().translate(slot.x1, slot.y1));\n\n this.elements = elements;\n\n return elements;\n }\n}\n\nexport default ArrowLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport { BAR_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nclass BarLinearPointerAnimation extends drawing.Animation {\n\n setup() {\n const options = this.options;\n const axis = this.axis = options.vertical ? Y : X;\n const to = this.to = options.newPoints[0][axis];\n const from = this.from = options.oldPoints[0][axis];\n\n if (options.duration !== 0) {\n options.duration = Math.max((Math.abs(to - from) / options.speed) * 1000, 1);\n }\n\n this._set(from);\n }\n\n step(pos) {\n const value = interpolateValue(this.from, this.to, pos);\n this._set(value);\n }\n\n _set(value) {\n const setter = \"set\" + this.axis.toUpperCase();\n const points = this.options.newPoints;\n\n points[0][setter](value);\n points[1][setter](value);\n }\n}\n\nsetDefaultOptions(BarLinearPointerAnimation, {\n easing: LINEAR,\n speed: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n\nexport default BarLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport LinearPointer from './linear-pointer';\nimport BarLinearPointerAnimation from './bar-linear-pointer-animation';\n\nconst { Group, Path } = drawing;\n\nclass BarLinearPointer extends LinearPointer {\n constructor(scale, options) {\n super(scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.3;\n }\n }\n\n pointerShape(value) {\n const { scale, options } = this;\n const { mirror, vertical } = scale.options;\n const dir = mirror === vertical ? -1 : 1;\n const size = options.size * dir;\n const minSlot = scale.getSlot(scale.options.min);\n const slot = scale.getSlot(value);\n const axis = vertical ? Y : X;\n const sizeAxis = vertical ? X : Y;\n const margin = this._margin() * dir;\n\n const p1 = new geo.Point();\n p1[axis] = minSlot[axis + \"1\"];\n p1[sizeAxis] = minSlot[sizeAxis + \"1\"];\n\n const p2 = new geo.Point();\n p2[axis] = slot[axis + \"1\"];\n p2[sizeAxis] = slot[sizeAxis + \"1\"];\n\n if (vertical) {\n p1.translate(margin, 0);\n p2.translate(margin, 0);\n } else {\n p1.translate(0, margin);\n p2.translate(0, margin);\n }\n\n const p3 = p2.clone();\n const p4 = p1.clone();\n\n if (vertical) {\n p3.translate(size, 0);\n p4.translate(size, 0);\n } else {\n p3.translate(0, size);\n p4.translate(0, size);\n }\n\n return [ p1, p2, p3, p4 ];\n }\n\n repaint() {\n const { scale, options } = this;\n const shape = this.pointerShape(options.value);\n const pointerPath = this.pointerPath;\n const oldShape = this.pointerShape(options._oldValue);\n\n pointerPath.moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).lineTo(shape[3]).close();\n\n const animation = new BarLinearPointerAnimation(pointerPath, deepExtend(options.animation, {\n reverse: scale.options.reverse,\n vertical: scale.options.vertical,\n oldPoints: [ oldShape[1], oldShape[2] ],\n newPoints: [ shape[1], shape[2] ]\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n }\n\n render() {\n const group = new Group();\n const elementOptions = this.getElementOptions();\n\n if (this.options.track.visible) {\n group.append(this.renderTrack());\n }\n\n const pointer = this.pointerPath = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n });\n\n group.append(pointer);\n\n this.elements = group;\n\n return group;\n }\n\n renderTrack() {\n const trackOptions = this.options.track;\n const border = trackOptions.border || {};\n const trackBox = this.trackBox.clone().pad(border.width || 0);\n\n return new Path.fromRect(trackBox.toRect(), {\n fill: {\n color: trackOptions.color,\n opacity: trackOptions.opacity\n },\n stroke: {\n color: border.width ? border.color || trackOptions.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n }\n}\n\nexport default BarLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { Box } from '../../core';\nimport { setDefaultOptions, deepExtend, isArray } from '../../common';\nimport { ARROW, DEFAULT_WIDTH, DEFAULT_HEIGHT } from '../constants';\nimport Gauge from '../gauge';\nimport LinearScale from './linear-scale';\nimport ArrowLinearPointer from './arrow-linear-pointer';\nimport BarLinearPointer from './bar-linear-pointer';\n\nconst DEFAULT_MIN_WIDTH = 60;\nconst DEFAULT_MIN_HEIGHT = 60;\n\nconst Group = drawing.Group;\n\nclass LinearGauge extends Gauge {\n\n reflow(bbox) {\n const pointers = this.pointers;\n const bboxX = bbox.origin.x;\n const bboxY = bbox.origin.y;\n\n const box = new Box(bboxX, bboxY, bboxX + bbox.width(), bboxY + bbox.height());\n\n this.scale.reflow(box);\n this._shrinkScaleWidth(box);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow();\n }\n\n this.bbox = this._getBox(box);\n this._alignElements();\n this._shrinkElements();\n this._buildVisual();\n this._draw();\n }\n\n _buildVisual() {\n const visuals = new Group();\n const scaleElements = this.scale.render();\n const pointers = this.pointers;\n\n visuals.append(this.gaugeArea);\n visuals.append(scaleElements);\n\n for (let i = 0; i < pointers.length; i++) {\n const current = pointers[i];\n visuals.append(current.render());\n current.value(current.options.value);\n }\n\n this._visuals = visuals;\n }\n\n _createModel() {\n const options = this.options;\n const scale = this.scale = new LinearScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n let pointers = options.pointer;\n pointers = isArray(pointers) ? pointers : [ pointers ];\n\n for (let i = 0; i < pointers.length; i++) {\n const currentOptions = deepExtend({}, pointers[i], {\n animation: {\n transitions: options.transitions\n }\n });\n const pointerType = currentOptions.shape === ARROW ? ArrowLinearPointer : BarLinearPointer;\n\n this.pointers.push(new pointerType(scale, currentOptions));\n }\n }\n\n _defaultSize() {\n const vertical = this.options.scale.vertical;\n\n return {\n width: vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH,\n height: vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT\n };\n }\n\n _getBox(box) {\n const { scale, pointers } = this;\n const boxCenter = box.center();\n let plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n\n for (let i = 0; i < pointers.length; i++) {\n plotAreaBox.wrap(pointers[i].box.clone());\n }\n\n let size;\n if (scale.options.vertical) {\n size = plotAreaBox.width() / 2;\n plotAreaBox = new Box(\n boxCenter.x - size, box.y1,\n boxCenter.x + size, box.y2\n );\n } else {\n size = plotAreaBox.height() / 2;\n plotAreaBox = new Box(\n box.x1, boxCenter.y - size,\n box.x2, boxCenter.y + size\n );\n }\n\n return plotAreaBox;\n }\n\n _alignElements() {\n const { scale, pointers } = this;\n const scaleBox = scale.box;\n const box = pointers[0].box.clone().wrap(scale.box);\n const plotAreaBox = this.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n box.wrap(pointers[i].box.clone());\n }\n\n let diff;\n if (scale.options.vertical) {\n diff = plotAreaBox.center().x - box.center().x;\n scale.reflow(new Box(\n scaleBox.x1 + diff, plotAreaBox.y1,\n scaleBox.x2 + diff, plotAreaBox.y2\n ));\n } else {\n diff = plotAreaBox.center().y - box.center().y;\n scale.reflow(new Box(\n scaleBox.x1, scaleBox.y1 + diff,\n scaleBox.x2, scaleBox.y2 + diff\n ));\n }\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.bbox);\n }\n }\n\n _shrinkScaleWidth(bbox) {\n const { scale } = this;\n if (!scale.options.vertical) {\n const overflow = scale.contentBox().width() - bbox.width();\n if (overflow > 0) {\n scale.box.shrink(overflow, 0);\n scale.box.alignTo(bbox, 'center');\n scale.reflow(scale.box);\n }\n }\n }\n\n _shrinkElements() {\n const { scale, pointers } = this;\n const scaleBox = scale.box.clone();\n const pos = scale.options.vertical ? \"y\" : \"x\";\n const pointerBox = pointers[0].box;\n\n for (let i = 0; i < pointers.length; i++) {\n pointerBox.wrap(pointers[i].box.clone());\n }\n\n scaleBox[pos + 1] += Math.max(scaleBox[pos + 1] - pointerBox[pos + 1], 0);\n scaleBox[pos + 2] -= Math.max(pointerBox[pos + 2] - scaleBox[pos + 2], 0);\n\n scale.reflow(scaleBox);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.bbox);\n }\n }\n}\n\nsetDefaultOptions(LinearGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n },\n scale: {\n vertical: true\n }\n});\n\nexport default LinearGauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined, round, getSpacing } from '../../common';\nimport { BLACK, COORD_PRECISION } from '../../common/constants';\nimport { autoMajorUnit, Box, NumericAxis } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nimport { DEGREE, DEFAULT_LINE_WIDTH, INSIDE, OUTSIDE } from '../constants';\n\nconst GEO_ARC_ADJUST_ANGLE = 180;\n\nconst { Arc, Path, Group } = drawing;\n\nfunction drawTicks(arc, tickAngles, unit, tickOptions) {\n const ticks = new Group();\n const center = arc.center;\n const radius = arc.getRadiusX();\n\n if (tickOptions.visible) {\n for (let i = 0; i < tickAngles.length; i++) {\n const tickStart = arc.pointAt(tickAngles[i]);\n const tickEnd = new geo.Point(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n\n ticks.append(new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(tickStart).lineTo(tickEnd));\n }\n }\n\n return ticks;\n}\n\nfunction rangeSegment(from, to, color, opacity) {\n return { from: from, to: to, color: color, opacity: opacity };\n}\n\nclass RadialScale extends NumericAxis {\n constructor(options, service) {\n super(0, 1, options, service);\n }\n\n initUserOptions(options) {\n const scaleOptions = deepExtend({}, this.options, options);\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n scaleOptions.minorUnit = scaleOptions.minorUnit || scaleOptions.majorUnit / 10;\n\n return scaleOptions;\n }\n\n initFields() {\n }\n\n render(center, radius) {\n const arc = this.renderArc(center, radius);\n\n this.bbox = arc.bbox();\n this.labelElements = this.renderLabels();\n this.ticks = this.renderTicks();\n this.ranges = this.renderRanges();\n }\n\n reflow(bbox) {\n const center = bbox.center();\n const radius = Math.min(bbox.height(), bbox.width()) / 2;\n\n if (defined(this.bbox)) {\n this.bbox = this.arc.bbox();\n this.radius(this.arc.getRadiusX());\n this.repositionRanges();\n this.renderLabels();\n } else {\n return this.render(center, radius);\n }\n }\n\n slotAngle(value) {\n const { min, max, reverse, startAngle, endAngle } = this.options;\n const angle = endAngle - startAngle;\n let result;\n\n if (reverse) {\n result = endAngle - (value - min) / (max - min) * angle;\n } else {\n result = ((value - min) / (max - min) * angle) + startAngle;\n }\n\n return result + GEO_ARC_ADJUST_ANGLE;\n }\n\n hasRanges() {\n const ranges = this.options.ranges;\n\n return ranges && ranges.length;\n }\n\n ticksSize() {\n const { majorTicks, minorTicks } = this.options;\n let size = 0;\n if (majorTicks.visible) {\n size = majorTicks.size;\n }\n\n if (minorTicks.visible) {\n size = Math.max(minorTicks.size, size);\n }\n\n return size;\n }\n\n labelsCount() {\n let count = super.labelsCount();\n const options = this.options;\n const angle = options.endAngle - options.startAngle;\n\n if (angle >= 360 && (options.max % options.majorUnit === 0)) {\n count -= 1;\n }\n\n return count;\n }\n\n renderLabels() {\n const options = this.options;\n const arc = this.arc.clone();\n let radius = arc.getRadiusX();\n const tickAngles = this.tickAngles(arc, options.majorUnit);\n const rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n const labelsGroup = new Group();\n\n let rangeDistance = radius * 0.05;\n if (defined(options.rangeDistance)) {\n rangeDistance = options.rangeDistance;\n } else {\n options.rangeDistance = rangeDistance;\n }\n\n const labelsOptions = options.labels;\n const isInside = labelsOptions.position === INSIDE;\n const hasLabelElements = defined(this.labelElements);\n\n if (isInside) {\n radius -= this.ticksSize();\n\n if (this.hasRanges() && !hasLabelElements) {\n radius -= rangeSize + rangeDistance;\n }\n arc.setRadiusX(radius).setRadiusY(radius);\n }\n\n const labels = this.labels;\n const count = labels.length;\n const padding = getSpacing(labelsOptions.padding);\n const paddingWidth = (padding.left + padding.right) / 2;\n const paddingHeight = (padding.top + padding.bottom) / 2;\n\n for (let i = 0; i < count; i++) {\n const label = labels[i];\n const halfWidth = label.box.width() / 2;\n const halfHeight = label.box.height() / 2;\n const angle = tickAngles[i];\n const labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n\n const lp = arc.pointAt(angle);\n const cx = lp.x + (Math.cos(labelAngle) * (halfWidth + paddingWidth) * (isInside ? 1 : -1));\n const cy = lp.y + (Math.sin(labelAngle) * (halfHeight + paddingHeight) * (isInside ? 1 : -1));\n\n label.reflow(new Box(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n const labelPos = new geo.Point(label.box.x1, label.box.y1);\n\n let labelElement;\n if (!hasLabelElements) {\n labelElement = buildLabelElement(label, options.labels);\n labelsGroup.append(labelElement);\n } else {\n labelElement = this.labelElements.children[i];\n const prevLabelPos = labelElement.bbox().origin;\n\n const labelTransform = labelElement.transform() || geo.transform();\n labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n labelElement.transform(labelTransform);\n }\n\n this.bbox = geo.Rect.union(this.bbox, labelElement.bbox());\n }\n\n return labelsGroup;\n }\n\n repositionRanges() {\n const ranges = this.ranges.children;\n\n if (ranges.length > 0) {\n const { rangeDistance, rangeSize } = this.options;\n let rangeRadius = this.getRangeRadius();\n\n if (this.options.labels.position === INSIDE) {\n rangeRadius += rangeSize + rangeDistance;\n }\n\n const newRadius = rangeRadius + (rangeSize / 2);\n\n for (let i = 0; i < ranges.length; i++) {\n ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n }\n\n this.bbox = geo.Rect.union(this.bbox, this.ranges.bbox());\n }\n }\n\n renderRanges() {\n const segments = this.rangeSegments();\n const segmentsCount = segments.length;\n const result = new Group();\n\n if (segmentsCount) {\n const { rangeSize, reverse, rangeDistance } = this.options;\n const rangeRadius = this.getRangeRadius();\n\n // move the ticks with a range distance and a range size\n this.radius(this.radius() - rangeSize - rangeDistance);\n\n for (let i = 0; i < segmentsCount; i++) {\n const segment = segments[i];\n const from = this.slotAngle(segment[reverse ? \"to\" : \"from\"]);\n const to = this.slotAngle(segment[!reverse ? \"to\" : \"from\"]);\n\n if (to - from !== 0) {\n result.append(this.createRange(from, to, rangeRadius, segment));\n }\n }\n }\n\n return result;\n }\n\n createRange(startAngle, endAngle, rangeRadius, options) {\n const rangeSize = this.options.rangeSize;\n const rangeGeom = new geo.Arc(this.arc.center, {\n radiusX: rangeRadius + (rangeSize / 2),\n radiusY: rangeRadius + (rangeSize / 2),\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return new Arc(rangeGeom, {\n stroke: {\n width: rangeSize,\n color: options.color,\n opacity: options.opacity,\n lineCap: options.lineCap\n }\n });\n }\n\n rangeSegments() {\n const options = this.options;\n const ranges = options.ranges || [];\n const count = ranges.length;\n const segments = [];\n\n if (count) {\n const { min, max, rangePlaceholderColor: defaultColor } = options;\n segments.push(rangeSegment(min, max, defaultColor));\n\n for (let i = 0; i < count; i++) {\n const range = getRange(ranges[i], min, max);\n const segmentsCount = segments.length;\n\n for (let j = 0; j < segmentsCount; j++) {\n const segment = segments[j];\n\n if (segment.from <= range.from && range.from <= segment.to) {\n segments.push(rangeSegment(range.from, range.to, range.color, range.opacity));\n\n if (segment.from <= range.to && range.to <= segment.to) {\n segments.push(rangeSegment(range.to, segment.to, defaultColor, range.opacity));\n }\n\n segment.to = range.from;\n\n break;\n }\n }\n }\n }\n\n return segments;\n }\n\n getRangeRadius() {\n const { arc, options } = this;\n const { rangeSize, rangeDistance, majorTicks: { size: majorTickSize } } = options;\n let radius;\n\n if (options.labels.position === OUTSIDE) {\n radius = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n } else {\n radius = arc.getRadiusX() - rangeSize;\n }\n\n return radius;\n }\n\n renderArc(center, radius) {\n const options = this.options;\n\n const arc = this.arc = new geo.Arc(center, {\n radiusX: radius,\n radiusY: radius,\n startAngle: options.startAngle + GEO_ARC_ADJUST_ANGLE,\n endAngle: options.endAngle + GEO_ARC_ADJUST_ANGLE\n });\n\n return arc;\n }\n\n renderTicks() {\n const { arc, options } = this;\n const tickArc = arc.clone();\n\n this.majorTickAngles = this.tickAngles(arc, options.majorUnit);\n this.majorTicks = drawTicks(tickArc, this.majorTickAngles, options.majorUnit, options.majorTicks);\n\n const allTicks = new Group();\n allTicks.append(this.majorTicks);\n\n const majorTickSize = options.majorTicks.size;\n const minorTickSize = options.minorTicks.size;\n\n this._tickDifference = majorTickSize - minorTickSize;\n\n if (options.labels.position === OUTSIDE) {\n const radius = tickArc.getRadiusX();\n tickArc.setRadiusX(radius - majorTickSize + minorTickSize)\n .setRadiusY(radius - majorTickSize + minorTickSize);\n }\n\n this.minorTickAngles = this.normalizeTickAngles(this.tickAngles(arc, options.minorUnit));\n this.minorTicks = drawTicks(tickArc, this.minorTickAngles, options.minorUnit, options.minorTicks);\n allTicks.append(this.minorTicks);\n\n return allTicks;\n }\n\n normalizeTickAngles(angles) {\n const options = this.options;\n const skip = options.majorUnit / options.minorUnit;\n\n for (let i = angles.length - 1; i >= 0; i--) {\n if (i % skip === 0) {\n angles.splice(i, 1);\n }\n }\n\n return angles;\n }\n\n tickAngles(ring, stepValue) {\n const options = this.options;\n const reverse = options.reverse;\n const range = options.max - options.min;\n const angle = ring.endAngle - ring.startAngle;\n let tickCount = range / stepValue;\n let pos = ring.startAngle;\n let step = angle / tickCount;\n\n if (reverse) {\n pos += angle;\n step = -step;\n }\n\n if (angle >= 360 && (options.max % stepValue === 0)) {\n tickCount -= 1;\n }\n\n const positions = [];\n for (let i = 0; i < tickCount; i++) {\n positions.push(round(pos, COORD_PRECISION));\n pos += step;\n }\n\n if (round(pos) <= ring.endAngle) {\n positions.push(pos);\n }\n\n return positions;\n }\n\n radius(value) {\n if (value) {\n this.arc.setRadiusX(value).setRadiusY(value);\n this.repositionTicks(this.majorTicks.children, this.majorTickAngles);\n this.repositionTicks(this.minorTicks.children, this.minorTickAngles, true);\n } else {\n return this.arc.getRadiusX();\n }\n }\n\n repositionTicks(ticks, tickAngles, minor) {\n const diff = minor ? (this._tickDifference || 0) : 0;\n let tickArc = this.arc;\n const radius = tickArc.getRadiusX();\n\n if (minor && this.options.labels.position === OUTSIDE && diff !== 0) {\n tickArc = this.arc.clone();\n tickArc.setRadiusX(radius - diff).setRadiusY(radius - diff);\n }\n\n for (let i = 0; i < ticks.length; i++) {\n const newPoint = tickArc.pointAt(tickAngles[i]);\n const segments = ticks[i].segments;\n const xDiff = newPoint.x - segments[0].anchor().x;\n const yDiff = newPoint.y - segments[0].anchor().y;\n\n ticks[i].transform(new geo.transform().translate(xDiff, yDiff));\n }\n }\n}\n\nsetDefaultOptions(RadialScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n startAngle: -30,\n endAngle: 210,\n\n labels: {\n position: INSIDE,\n padding: 2\n }\n});\n\nexport default RadialScale;\n","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_POINTER } from '../constants';\n\nclass RadialPointerAnimation extends drawing.Animation {\n constructor(element, options) {\n super(element, options);\n\n const animationOptions = this.options;\n\n animationOptions.duration = Math.max((Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000, 1);\n }\n\n step(pos) {\n const options = this.options;\n const angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n\n this.element.transform(geometry.transform().rotate(angle, options.center));\n }\n}\n\nsetDefaultOptions(RadialPointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n\nexport default RadialPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\n\nimport { setDefaultOptions, deepExtend, limitValue } from '../../common';\nimport { ANGULAR_SPEED, DEGREE, DEFAULT_LINE_WIDTH, RADIAL_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RadialPointerAnimation from './radial-pointer-animation';\n\nconst CAP_SIZE = 0.05;\nconst { Circle, Group, Path } = drawing;\n\nclass RadialPointer extends Pointer {\n\n setAngle(angle) {\n this.elements.transform(geo.transform().rotate(angle, this.center));\n }\n\n repaint() {\n const { scale, options } = this;\n const oldAngle = scale.slotAngle(options._oldValue);\n const newAngle = scale.slotAngle(options.value);\n\n if (options.animation.transitions === false) {\n this.setAngle(newAngle);\n } else {\n new RadialPointerAnimation(this.elements, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n })).play();\n }\n }\n\n render() {\n const { scale, options } = this;\n const elements = new Group();\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n elements.append(this._renderNeedle(), this._renderCap());\n\n this.elements = elements;\n this.setAngle(DEGREE);\n\n return elements;\n }\n\n reflow(arc) {\n const center = this.center = arc.center;\n const length = limitValue(this.options.length || 1, 0.1, 1.5);\n const radius = this.radius = arc.getRadiusX() * length;\n const capSize = this.capSize = Math.round(radius * this.options.cap.size);\n\n this.bbox = geo.Rect.fromPoints(new geo.Point(center.x - capSize, center.y - capSize),\n new geo.Point(center.x + capSize, center.y + capSize));\n }\n\n _renderNeedle() {\n const minorTickSize = this.scale.options.minorTicks.size;\n const center = this.center;\n const needleColor = this.options.color;\n\n const needlePath = new Path({\n fill: { color: needleColor },\n stroke: { color: needleColor, width: DEFAULT_LINE_WIDTH }\n });\n\n needlePath.moveTo(center.x + this.radius - minorTickSize, center.y)\n .lineTo(center.x, center.y - (this.capSize / 2))\n .lineTo(center.x, center.y + (this.capSize / 2))\n .close();\n\n return needlePath;\n }\n\n _renderCap() {\n const options = this.options;\n const capColor = options.cap.color || options.color;\n const circle = new geo.Circle(this.center, this.capSize);\n\n const cap = new Circle(circle, {\n fill: { color: capColor },\n stroke: { color: capColor }\n });\n\n return cap;\n }\n}\n\nsetDefaultOptions(RadialPointer, {\n cap: {\n size: CAP_SIZE\n },\n arrow: {\n width: 16,\n height: 14\n },\n animation: {\n type: RADIAL_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RadialPointer;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, round, isArray } from '../../common';\nimport { COORD_PRECISION } from '../../common/constants';\nimport Gauge from '../gauge';\nimport RadialScale from './radial-scale';\nimport RadialPointer from './radial-pointer';\n\nconst Group = drawing.Group;\n\nclass RadialGauge extends Gauge {\n\n reflow(bbox) {\n const pointers = this.pointers;\n this.scale.reflow(bbox);\n this._initialPlotArea = this.scale.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.scale.arc);\n this._initialPlotArea = geo.Rect.union(this._initialPlotArea, pointers[i].bbox);\n }\n\n this.fitScale(bbox);\n this.alignScale(bbox);\n this._buildVisual(this.gaugeArea, pointers, this.scale);\n this._draw();\n }\n\n _buildVisual(gaugeArea, pointers, scale) {\n const visuals = this._visuals = new Group();\n\n visuals.append(gaugeArea);\n visuals.append(scale.ticks);\n visuals.append(scale.ranges);\n this._buildPointers(pointers);\n visuals.append(scale.labelElements);\n }\n\n _buildPointers(pointers) {\n for (let i = 0; i < pointers.length; i++) {\n const current = pointers[i];\n current.render();\n this._visuals.append(current.elements);\n\n current.value(current.options.value);\n }\n }\n\n fitScale(bbox) {\n const arc = this.scale.arc;\n const plotAreaBox = this._initialPlotArea;\n const step = Math.abs(this.getDiff(plotAreaBox, bbox));\n let min = round(step, COORD_PRECISION);\n let max = round(-step, COORD_PRECISION);\n let minDiff, midDiff, maxDiff, mid, oldDiff;\n let staleFlag = 0;\n let i = 0;\n\n while (i++ < 100) {\n staleFlag = (oldDiff === maxDiff) ? (staleFlag + 1) : 0;\n\n if (staleFlag > 5) {\n break;\n }\n\n if (min !== mid) {\n minDiff = this.getPlotBox(min, bbox, arc);\n if (0 <= minDiff && minDiff <= 2) {\n break;\n }\n }\n\n if (max !== mid) {\n maxDiff = this.getPlotBox(max, bbox, arc);\n if (0 <= maxDiff && maxDiff <= 2) {\n break;\n }\n }\n\n if (minDiff > 0 && maxDiff > 0) {\n mid = min * 2;\n } else if (minDiff < 0 && maxDiff < 0) {\n mid = max * 2;\n } else {\n mid = round(((min + max) / 2) || 1, COORD_PRECISION);\n }\n\n midDiff = this.getPlotBox(mid, bbox, arc);\n if (0 <= midDiff && midDiff <= 2) {\n break;\n }\n\n oldDiff = maxDiff;\n\n if (midDiff > 0) {\n max = mid;\n maxDiff = midDiff;\n } else {\n min = mid;\n minDiff = midDiff;\n }\n }\n }\n\n getPlotBox(step, bbox, arc) {\n const scale = this.scale;\n const pointers = this.pointers;\n const radius = arc.getRadiusX();\n const scaleArc = arc.clone();\n\n scaleArc.setRadiusX(radius + step).setRadiusY(radius + step);\n\n scale.arc = scaleArc;\n scale.reflow(bbox);\n this.plotBbox = scale.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scaleArc);\n this.plotBbox = geo.Rect.union(this.plotBbox, pointers[i].bbox);\n }\n\n return this.getDiff(this.plotBbox, bbox);\n }\n\n getDiff(plotBox, box) {\n return Math.min(box.width() - plotBox.width(), box.height() - plotBox.height());\n }\n\n alignScale(bbox) {\n const plotBoxCenter = this.plotBbox.center();\n const boxCenter = bbox.center();\n const paddingX = plotBoxCenter.x - boxCenter.x;\n const paddingY = plotBoxCenter.y - boxCenter.y;\n const { scale, pointers } = this;\n\n scale.arc.center.x -= paddingX;\n scale.arc.center.y -= paddingY;\n\n scale.reflow(bbox);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scale.arc);\n this.plotBbox = geo.Rect.union(scale.bbox, pointers[i].bbox);\n }\n }\n\n _createModel() {\n const options = this.options;\n const pointers = options.pointer;\n const scale = this.scale = new RadialScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n const pointersArr = isArray(pointers) ? pointers : [ pointers ];\n for (let i = 0; i < pointersArr.length; i++) {\n const current = new RadialPointer(scale, deepExtend({}, pointersArr[i], {\n animation: {\n transitions: options.transitions\n }\n }));\n\n this.pointers.push(current);\n }\n }\n}\n\nsetDefaultOptions(RadialGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n }\n});\n\nexport default RadialGauge;","import RadialScale from '../radial/radial-scale';\nimport { setDefaultOptions } from '../../common';\n\nclass ArcScale extends RadialScale {\n\n rangeSegments() {\n const { min, max, rangePlaceholderColor, rangeLineCap } = this.options;\n\n return [ { from: min, to: max, color: rangePlaceholderColor, lineCap: rangeLineCap } ];\n }\n\n hasRanges() {\n return true;\n }\n\n placeholderRangeAngle(angle) {\n const geometry = this.ranges.children[0].geometry();\n\n if (this.options.reverse) {\n geometry.setEndAngle(angle);\n } else {\n geometry.setStartAngle(angle);\n }\n }\n\n addRange(from, to, options) {\n const reverse = this.options.reverse;\n\n const startAngle = this.slotAngle(reverse ? to : from);\n const endAngle = this.slotAngle(reverse ? from : to);\n\n const range = this.createRange(startAngle, endAngle, this.getRangeRadius(), options);\n\n this.ranges.append(range);\n\n return range;\n }\n}\n\nsetDefaultOptions(ArcScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n visible: false\n },\n\n minorTicks: {\n visible: false\n },\n\n labels: {\n visible: false\n },\n\n startAngle: 0,\n endAngle: 180,\n rangeLineCap: 'round'\n});\n\nexport default ArcScale;","import { drawing, Color } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions, round, limitValue } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_RANGE_POINTER } from '../constants';\n\nconst MAX_DURATION = 800;\n\nclass RangePointerAnimation extends drawing.Animation {\n constructor(element, options) {\n super(element, options);\n\n const animationOptions = this.options;\n const duration = (Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000;\n animationOptions.duration = limitValue(duration, ANGULAR_SPEED, MAX_DURATION);\n\n const startColor = element.elements.options.get(\"stroke.color\");\n const color = element.currentColor();\n if (startColor !== color) {\n this.startColor = new Color(startColor);\n this.color = new Color(color);\n }\n }\n\n step(pos) {\n const { options, startColor, color } = this;\n const angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n this.element.angle(angle);\n\n if (color) {\n const r = round(interpolateValue(startColor.r, color.r, pos));\n const g = round(interpolateValue(startColor.g, color.g, pos));\n const b = round(interpolateValue(startColor.b, color.b, pos));\n\n this.element.stroke(new Color(r, g, b).toHex());\n }\n }\n}\n\nsetDefaultOptions(RangePointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_RANGE_POINTER, RangePointerAnimation);\n\nexport default RangePointerAnimation;","import { setDefaultOptions, deepExtend, isNumber } from '../../common';\nimport { ANGULAR_SPEED, RADIAL_RANGE_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RangePointerAnimation from './range-pointer-animation';\n\nclass RangePointer extends Pointer {\n\n repaint() {\n const { scale, options } = this;\n const oldAngle = scale.slotAngle(options._oldValue);\n const newAngle = scale.slotAngle(options.value);\n\n if (this.animation) {\n this.animation.abort();\n }\n\n if (options.animation.transitions === false) {\n this.angle(newAngle);\n this.stroke(this.currentColor());\n } else {\n this.animation = new RangePointerAnimation(this, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n }));\n\n this.animation.play();\n }\n }\n\n angle(value) {\n const geometry = this.elements.geometry();\n if (this.scale.options.reverse) {\n geometry.setStartAngle(value);\n } else {\n geometry.setEndAngle(value);\n }\n this.scale.placeholderRangeAngle(value);\n }\n\n stroke(value) {\n this.elements.stroke(value);\n }\n\n render() {\n if (this.elements) {\n return;\n }\n\n const { scale, options } = this;\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n this.elements = scale.addRange(scale.options.min, this.options.value, {\n color: this.currentColor(),\n opacity: options.opacity,\n lineCap: scale.options.rangeLineCap\n });\n }\n\n currentColor() {\n const { min, max } = this.scale.options;\n const { colors, color, value } = this.options;\n const currentValue = isNumber(value) ? value : min;\n\n if (colors) {\n for (let idx = 0; idx < colors.length; idx++) {\n const { color: rangeColor, from = min, to = max } = colors[idx];\n\n if (from <= currentValue && currentValue <= to) {\n return rangeColor;\n }\n }\n }\n\n return color;\n }\n\n reflow() {\n this.render();\n\n this.bbox = this.elements.bbox();\n }\n}\n\nsetDefaultOptions(RangePointer, {\n animation: {\n type: RADIAL_RANGE_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RangePointer;\n","import {\n Class,\n defined,\n setDefaultOptions\n} from '../../common';\n\nconst DEFAULT_QUIET_ZONE_LENGTH = 10;\n\nexport class Encoding extends Class {\n constructor(options) {\n super();\n this.setOptions(options);\n this.initProperties();\n }\n\n initProperties() { }\n\n setOptions(options) {\n this.options = Object.assign({}, this.options, options);\n this.quietZoneLength = this.options.addQuietZone ? 2 * this.options.quietZoneLength : 0;\n }\n\n encode(value, width, height) {\n const convertedValue = defined(value) ? String(value) : value;\n\n this.initValue(convertedValue, width, height);\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n this.addData();\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n return {\n baseUnit: this.baseUnit,\n pattern: this.pattern\n };\n }\n\n initValue() { }\n\n addQuietZone() {\n this.pattern.push(this.options.quietZoneLength || DEFAULT_QUIET_ZONE_LENGTH);\n }\n\n addData() { }\n\n invalidCharacterError(character) {\n throw new Error(`Character \"${character}\" is not valid for symbology ${this.name}.`);\n }\n}\n\nsetDefaultOptions(Encoding, {\n quietZoneLength: DEFAULT_QUIET_ZONE_LENGTH,\n addQuietZone: true,\n addCheckSum: true\n});\n","import { Encoding } from './encoding';\nimport { setDefaultOptions } from '../../common';\n\nconst extend = Object.assign;\n\nexport class Code11 extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 11\",\n characterMap: [\"111121\", \"211121\", \"121121\", \"221111\", \"112121\", \"212111\", \"122111\", \"111221\", \"211211\", \"211111\", \"112111\"],\n cCheckSumTotal: 10,\n kCheckSumTotal: 9,\n kCheckSumMinLength: 10,\n checkSumMod: 11,\n DASH_VALUE: 10,\n DASH: \"-\",\n START: \"112211\",\n STOP: \"11221\"\n });\n }\n\n initValue(value, width) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.totalUnits = 0;\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n }\n\n setBaseUnit() {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n }\n\n addCheckSum() {\n const value = this.value;\n let length = value.length;\n const cValue = this.getWeightedSum(value, length, this.cCheckSumTotal) % this.checkSumMod;\n\n this.checksum = String(cValue);\n this.addPattern(this.characterMap[cValue]);\n\n length++;\n\n if (length >= this.kCheckSumMinLength) {\n let kValue = (cValue + this.getWeightedSum(value, length, this.kCheckSumTotal)) % this.checkSumMod;\n this.checksum += kValue;\n this.addPattern(this.characterMap[kValue]);\n }\n }\n\n getWeightedSum(value, length, total) {\n let weightedSum = 0;\n\n for (let i = 0; i < value.length; i++) {\n weightedSum += this.weightedValue(this.getValue(value.charAt(i)), length, i, total);\n }\n\n return weightedSum;\n }\n\n weightedValue(value, length, index, total) {\n const weight = (length - index) % total || total;\n return weight * value;\n }\n\n getValue(character) {\n if (!isNaN(character)) {\n return parseInt(character, 10);\n } else if (character !== this.DASH) {\n this.invalidCharacterError(character);\n }\n\n return this.DASH_VALUE;\n }\n\n addCharacter(character) {\n const value = this.getValue(character);\n const pattern = this.characterMap[value];\n\n this.addPattern(pattern);\n }\n\n addPattern(pattern) {\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n this.totalUnits += value;\n }\n }\n}\n\nsetDefaultOptions(Code11, {\n addCheckSum: true\n});\n","import { setDefaultOptions } from '../../common';\nimport { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class Code39Base extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n minBaseUnitLength: 0.7\n });\n }\n\n addData() {\n const value = this.value;\n\n this.addStart();\n\n for (let idx = 0; idx < value.length; idx++) {\n this.addCharacter(value.charAt(idx));\n }\n\n if (this.options.addCheckSum) {\n this.pushCheckSum();\n }\n\n this.addStop();\n this.prepareValues();\n }\n\n addCharacter(character) {\n const characterData = this.characterMap[character];\n\n if (!characterData) {\n this.invalidCharacterError(character);\n }\n\n this.addBase(characterData);\n }\n\n addBase() { }\n}\n\nexport class Code39 extends Code39Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 39\",\n checkSumMod: 43,\n minRatio: 2.5,\n maxRatio: 3,\n gapWidth: 1,\n splitCharacter: \"|\",\n patternMappings: {\n \"b\": \"1|\",\n \"w\": \"1|\",\n \"B\": \"ratio|\",\n \"W\": \"ratio|\"\n },\n characterMap: {\n \"0\": { \"pattern\": \"bwbWBwBwb\", \"value\": 0 },\n \"1\": { \"pattern\": \"BwbWbwbwB\", \"value\": 1 },\n \"2\": { \"pattern\": \"bwBWbwbwB\", \"value\": 2 },\n \"3\": { \"pattern\": \"BwBWbwbwb\", \"value\": 3 },\n \"4\": { \"pattern\": \"bwbWBwbwB\", \"value\": 4 },\n \"5\": { \"pattern\": \"BwbWBwbwb\", \"value\": 5 },\n \"6\": { \"pattern\": \"bwBWBwbwb\", \"value\": 6 },\n \"7\": { \"pattern\": \"bwbWbwBwB\", \"value\": 7 },\n \"8\": { \"pattern\": \"BwbWbwBwb\", \"value\": 8 },\n \"9\": { \"pattern\": \"bwBWbwBwb\", \"value\": 9 },\n \"A\": { \"pattern\": \"BwbwbWbwB\", \"value\": 10 },\n \"B\": { \"pattern\": \"bwBwbWbwB\", \"value\": 11 },\n \"C\": { \"pattern\": \"BwBwbWbwb\", \"value\": 12 },\n \"D\": { \"pattern\": \"bwbwBWbwB\", \"value\": 13 },\n \"E\": { \"pattern\": \"BwbwBWbwb\", \"value\": 14 },\n \"F\": { \"pattern\": \"bwBwBWbwb\", \"value\": 15 },\n \"G\": { \"pattern\": \"bwbwbWBwB\", \"value\": 16 },\n \"H\": { \"pattern\": \"BwbwbWBwb\", \"value\": 17 },\n \"I\": { \"pattern\": \"bwBwbWBwb\", \"value\": 18 },\n \"J\": { \"pattern\": \"bwbwBWBwb\", \"value\": 19 },\n \"K\": { \"pattern\": \"BwbwbwbWB\", \"value\": 20 },\n \"L\": { \"pattern\": \"bwBwbwbWB\", \"value\": 21 },\n \"M\": { \"pattern\": \"BwBwbwbWb\", \"value\": 22 },\n \"N\": { \"pattern\": \"bwbwBwbWB\", \"value\": 23 },\n \"O\": { \"pattern\": \"BwbwBwbWb\", \"value\": 24 },\n \"P\": { \"pattern\": \"bwBwBwbWb\", \"value\": 25 },\n \"Q\": { \"pattern\": \"bwbwbwBWB\", \"value\": 26 },\n \"R\": { \"pattern\": \"BwbwbwBWb\", \"value\": 27 },\n \"S\": { \"pattern\": \"bwBwbwBWb\", \"value\": 28 },\n \"T\": { \"pattern\": \"bwbwBwBWb\", \"value\": 29 },\n \"U\": { \"pattern\": \"BWbwbwbwB\", \"value\": 30 },\n \"V\": { \"pattern\": \"bWBwbwbwB\", \"value\": 31 },\n \"W\": { \"pattern\": \"BWBwbwbwb\", \"value\": 32 },\n \"X\": { \"pattern\": \"bWbwBwbwB\", \"value\": 33 },\n \"Y\": { \"pattern\": \"BWbwBwbwb\", \"value\": 34 },\n \"Z\": { \"pattern\": \"bWBwBwbwb\", \"value\": 35 },\n \"-\": { \"pattern\": \"bWbwbwBwB\", \"value\": 36 },\n \".\": { \"pattern\": \"BWbwbwBwb\", \"value\": 37 },\n \" \": { \"pattern\": \"bWBwbwBwb\", \"value\": 38 },\n \"$\": { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n \"/\": { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n \"+\": { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n \"%\": { \"pattern\": \"bwbWbWbWb\", \"value\": 42 },\n START: { pattern: \"bWbwBwBwb\" }\n }\n });\n }\n\n initValue(value, width, height) {\n this.width = width;\n this.height = height;\n this.value = value;\n this.dataLength = value.length;\n this.pattern = [];\n this.patternString = \"\";\n }\n\n prepareValues() {\n const minBaseUnit = this.minBaseUnitLength;\n const minRatio = this.minRatio;\n const minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n let baseUnit;\n let ratio = this.maxRatio;\n\n if (this.height < minHeight) {\n throw new Error(`Insufficient height for Code39 encoding: the current height is ${this.height}px and the minimum height is ${minHeight}px.`);\n }\n\n baseUnit = this.getBaseUnit(ratio);\n\n while (baseUnit < minBaseUnit && ratio > minRatio) {\n ratio = parseFloat((ratio - 0.1).toFixed(1));\n baseUnit = this.getBaseUnit(ratio);\n }\n\n if (baseUnit < minBaseUnit) {\n let minWidth = Math.ceil(this.getBaseWidth(minRatio) * minBaseUnit);\n throw new Error(`Insufficient width for Code39 encoding: the current width is ${this.width}px and the minimum width for value \"${this.value}\" is ${minWidth}px.`);\n }\n\n this.ratio = ratio;\n this.baseUnit = baseUnit;\n this.patternString = this.patternString.substring(0, this.patternString.length - 1);\n this.pattern = this.pattern.concat(this.patternString.replace(/ratio/g, ratio).split(this.splitCharacter));\n }\n\n getBaseUnit(ratio) {\n return this.width / this.getBaseWidth(ratio);\n }\n\n getBaseWidth(ratio) {\n const characterLength = 3 * (ratio + 2);\n return this.quietZoneLength + characterLength * (this.dataLength + 2) + this.gapWidth * (this.dataLength + 1);\n }\n\n addStart() {\n this.addPattern(this.characterMap.START.pattern);\n this.addCharacterGap();\n }\n\n addBase(character) {\n this.addPattern(character.pattern);\n this.addCharacterGap();\n }\n\n addStop() {\n this.addPattern(this.characterMap.START.pattern);\n }\n\n addPattern(pattern) {\n for (let i = 0; i < pattern.length; i++) {\n this.patternString += this.patternMappings[pattern.charAt(i)];\n }\n }\n\n addCharacterGap() {\n this.patternString += this.gapWidth + this.splitCharacter;\n }\n}\n\nsetDefaultOptions(Code39, {\n addCheckSum: false\n});\n","import { Code39 } from './code39';\nimport deepExtend from '../../common/deep-extend';\n\nexport const Code39ExtendedBase = {\n addCharacter(character) {\n if (this.characterMap[character]) {\n this.addBase(this.characterMap[character]);\n } else if (character.charCodeAt(0) > 127) {\n this.invalidCharacterError(character);\n } else {\n this.addExtended(character.charCodeAt(0));\n }\n },\n\n addExtended(code) {\n let patterns;\n\n for (let i = 0; i < this.extendedMappings.length; i++) {\n patterns = this.extendedMappings[i].call(this, code);\n\n if (patterns) {\n for (let patternIndex = 0; patternIndex < patterns.length; patternIndex++) {\n const pattern = patterns[patternIndex];\n this.addBase(pattern);\n }\n\n this.dataLength += patterns.length - 1;\n return;\n }\n }\n },\n\n extendedMappings: [\n function(code) {\n if (97 <= code && code <= 122) {\n return [this.characterMap[this.shiftCharacters[0]], this.characterMap[String.fromCharCode(code - 32)]];\n }\n },\n function(code) {\n if (33 <= code && code <= 58) {\n return [this.characterMap[this.shiftCharacters[1]], this.characterMap[String.fromCharCode(code + 32)]];\n }\n },\n function(code) {\n if (1 <= code && code <= 26) {\n return [this.characterMap[this.shiftCharacters[2]], this.characterMap[String.fromCharCode(code + 64)]];\n }\n },\n function(code) {\n let result;\n let dataCharacter;\n\n if (!this.specialAsciiCodes[code]) {\n dataCharacter = Math.floor(code / 32) * 6 + (code - 27) % 32 + 64;\n result = [this.characterMap[this.shiftCharacters[3]], this.characterMap[String.fromCharCode(dataCharacter)]];\n } else {\n result = [];\n\n for (let i = 0; i < this.specialAsciiCodes[code].length; i++) {\n result.push(this.characterMap[this.shiftCharacters[3]]);\n result.push(this.characterMap[this.specialAsciiCodes[code][i]]);\n }\n }\n\n return result;\n }\n ],\n specialAsciiCodes: {\n \"0\": [\"U\"],\n \"64\": [\"V\"],\n \"96\": [\"W\"],\n \"127\": [\"T\", \"X\", \"Y\", \"Z\"]\n },\n shiftValuesAsciiCodes: {\n \"39\": 36,\n \"40\": 47,\n \"41\": 43,\n \"42\": 37\n },\n characterMap: {\n \"+\": false,\n \"/\": false,\n \"$\": false,\n \"%\": false\n },\n shiftCharacters: [\"SHIFT0\", \"SHIFT1\", \"SHIFT2\", \"SHIFT3\"]\n};\n\nexport class Code39Extended extends Code39 {\n initProperties() {\n super.initProperties();\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 39 extended\",\n characterMap: {\n SHIFT0: { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n SHIFT1: { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n SHIFT2: { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n SHIFT3: { \"pattern\": \"bwbWbWbWb\", \"value\": 42 }\n }\n });\n }\n}\n","import { Code39Base } from './code39';\n\nconst extend = Object.assign;\n\nexport class Code93 extends Code39Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 93\",\n cCheckSumTotal: 20,\n kCheckSumTotal: 15,\n checkSumMod: 47,\n characterMap: {\n \"0\": { \"pattern\": \"131112\", \"value\": 0 },\n \"1\": { \"pattern\": \"111213\", \"value\": 1 },\n \"2\": { \"pattern\": \"111312\", \"value\": 2 },\n \"3\": { \"pattern\": \"111411\", \"value\": 3 },\n \"4\": { \"pattern\": \"121113\", \"value\": 4 },\n \"5\": { \"pattern\": \"121212\", \"value\": 5 },\n \"6\": { \"pattern\": \"121311\", \"value\": 6 },\n \"7\": { \"pattern\": \"111114\", \"value\": 7 },\n \"8\": { \"pattern\": \"131211\", \"value\": 8 },\n \"9\": { \"pattern\": \"141111\", \"value\": 9 },\n \"A\": { \"pattern\": \"211113\", \"value\": 10 },\n \"B\": { \"pattern\": \"211212\", \"value\": 11 },\n \"C\": { \"pattern\": \"211311\", \"value\": 12 },\n \"D\": { \"pattern\": \"221112\", \"value\": 13 },\n \"E\": { \"pattern\": \"221211\", \"value\": 14 },\n \"F\": { \"pattern\": \"231111\", \"value\": 15 },\n \"G\": { \"pattern\": \"112113\", \"value\": 16 },\n \"H\": { \"pattern\": \"112212\", \"value\": 17 },\n \"I\": { \"pattern\": \"112311\", \"value\": 18 },\n \"J\": { \"pattern\": \"122112\", \"value\": 19 },\n \"K\": { \"pattern\": \"132111\", \"value\": 20 },\n \"L\": { \"pattern\": \"111123\", \"value\": 21 },\n \"M\": { \"pattern\": \"111222\", \"value\": 22 },\n \"N\": { \"pattern\": \"111321\", \"value\": 23 },\n \"O\": { \"pattern\": \"121122\", \"value\": 24 },\n \"P\": { \"pattern\": \"131121\", \"value\": 25 },\n \"Q\": { \"pattern\": \"212112\", \"value\": 26 },\n \"R\": { \"pattern\": \"212211\", \"value\": 27 },\n \"S\": { \"pattern\": \"211122\", \"value\": 28 },\n \"T\": { \"pattern\": \"211221\", \"value\": 29 },\n \"U\": { \"pattern\": \"221121\", \"value\": 30 },\n \"V\": { \"pattern\": \"222111\", \"value\": 31 },\n \"W\": { \"pattern\": \"112122\", \"value\": 32 },\n \"X\": { \"pattern\": \"112221\", \"value\": 33 },\n \"Y\": { \"pattern\": \"122121\", \"value\": 34 },\n \"Z\": { \"pattern\": \"123111\", \"value\": 35 },\n \"-\": { \"pattern\": \"121131\", \"value\": 36 },\n \".\": { \"pattern\": \"311112\", \"value\": 37 },\n \" \": { \"pattern\": \"311211\", \"value\": 38 },\n \"$\": { \"pattern\": \"321111\", \"value\": 39 },\n \"/\": { \"pattern\": \"112131\", \"value\": 40 },\n \"+\": { \"pattern\": \"113121\", \"value\": 41 },\n \"%\": { \"pattern\": \"211131\", \"value\": 42 },\n SHIFT0: { \"pattern\": \"122211\", \"value\": 46 },\n SHIFT1: { \"pattern\": \"311121\", \"value\": 45 },\n SHIFT2: { \"pattern\": \"121221\", \"value\": 43 },\n SHIFT3: { \"pattern\": \"312111\", \"value\": 44 },\n START: { \"pattern\": \"111141\" },\n TERMINATION_BAR: \"1\"\n }\n });\n }\n\n initValue(value, width, height) {\n this.value = value;\n this.width = width;\n this.height = height;\n this.pattern = [];\n this.values = [];\n this.dataLength = value.length;\n }\n\n prepareValues() {\n let minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n\n if (this.height < minHeight) {\n throw new Error(`Insufficient height for Code93 encoding: the current height is ${this.height}px, the minimum required height is ${minHeight}px.`);\n }\n\n this.setBaseUnit();\n\n if (this.baseUnit < this.minBaseUnitLength) {\n const minWidth = Math.ceil(this.minBaseUnitLength * (this.width / this.baseUnit));\n throw new Error(`Insufficient width for Code93 encoding: the current width is ${this.width}px and the minimum required width for value \"${this.value}\" is ${minWidth}px.`);\n }\n }\n\n setBaseUnit() {\n const checkSumLength = 2;\n\n this.baseUnit = this.width / (9 * (this.dataLength + 2 + checkSumLength) + this.quietZoneLength + 1);\n }\n\n addStart() {\n let pattern = this.characterMap.START.pattern;\n this.addPattern(pattern);\n }\n\n addStop() {\n this.addStart();\n this.pattern.push(this.characterMap.TERMINATION_BAR);\n }\n\n addBase(charData) {\n this.addPattern(charData.pattern);\n this.values.push(charData.value);\n }\n\n pushCheckSum() {\n const checkValues = this._getCheckValues();\n let charData;\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n charData = this.characterMap[this._findCharacterByValue(checkValues[i])];\n this.addPattern(charData.pattern);\n }\n }\n\n _getCheckValues() {\n const values = this.values;\n const length = values.length;\n let wightedSum = 0;\n let cValue;\n let kValue;\n let idx;\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this.weightedValue(values[idx], length - idx, this.cCheckSumTotal);\n }\n\n cValue = wightedSum % this.checkSumMod;\n\n wightedSum = this.weightedValue(cValue, 1, this.kCheckSumTotal);\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this.weightedValue(values[idx], length - idx + 1, this.kCheckSumTotal);\n }\n\n kValue = wightedSum % this.checkSumMod;\n return [cValue, kValue];\n }\n\n _findCharacterByValue(value) {\n for (let character in this.characterMap) {\n if (this.characterMap[character].value === value) {\n return character;\n }\n }\n }\n\n weightedValue(value, index, total) {\n return (index % total || total) * value;\n }\n\n addPattern(pattern) {\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n }\n }\n}\n","import { Encoding } from './encoding';\nimport inArray from '../../common/in-array';\n\nconst numberRegex = /^\\d+$/;\nconst extend = Object.assign;\n\nexport class Postnet extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Postnet\",\n START: \"2\",\n VALID_CODE_LENGTHS: [5, 9, 11],\n DIGIT_SEPARATOR: \"-\",\n characterMap: [\"22111\", \"11122\", \"11212\", \"11221\", \"12112\", \"12121\", \"12211\", \"21112\", \"21121\", \"21211\"]\n });\n }\n\n initValue(value, width, height) {\n this.height = height;\n this.width = width;\n this.baseHeight = height / 2;\n this.value = value.replace(new RegExp(this.DIGIT_SEPARATOR, \"g\"), \"\");\n this.pattern = [];\n this.validate(this.value);\n this.checkSum = 0;\n this.setBaseUnit();\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.START);\n this.pattern.pop();\n }\n\n addCharacter(character) {\n const pattern = this.characterMap[character];\n this.checkSum += parseInt(character, 10);\n this.addPattern(pattern);\n }\n\n addCheckSum() {\n this.checksum = (10 - (this.checkSum % 10)) % 10;\n this.addCharacter(this.checksum);\n }\n\n setBaseUnit() {\n const startStopLength = 3;\n\n this.baseUnit = this.width / ((this.value.length + 1) * 10 + startStopLength + this.quietZoneLength);\n }\n\n validate(value) {\n if (!numberRegex.test(value)) {\n this.invalidCharacterError(value.match(/[^0-9]/)[0]);\n }\n\n if (!inArray(value.length, this.VALID_CODE_LENGTHS)) {\n throw new Error(\"Invalid value length. Valid lengths for the Postnet symbology are \" + this.VALID_CODE_LENGTHS.join(\",\") + \".\");\n }\n }\n\n addPattern(pattern) {\n let y1;\n\n for (let i = 0; i < pattern.length; i++) {\n y1 = this.height - this.baseHeight * pattern.charAt(i);\n this.pattern.push({ width: 1, y1: y1, y2: this.height });\n this.pattern.push(1);\n }\n }\n}\n","import { Class } from '../../common';\nimport { Encoding } from './encoding';\nimport deepExtend from '../../common/deep-extend';\nimport inArray from '../../common/in-array';\n\nconst numberRegex = /^\\d+$/;\nconst alphanumericRegex = /^[a-z0-9]+$/i;\nconst extend = Object.assign;\n\nexport class State128 extends Class {\n constructor(encoding) {\n super();\n this.encoding = encoding;\n this.initProperties();\n }\n\n initProperties() { }\n\n addStart() { }\n\n is() { }\n\n isCode() {\n return false;\n }\n\n move() { }\n\n pushState() { }\n}\n\nexport class State128AB extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this.states = states;\n this._initMoves(states);\n }\n\n initProperties() {\n super.initProperties();\n\n deepExtend(this, {\n FNC4: \"FNC4\",\n SHIFT: 98\n });\n }\n\n addStart() {\n this.encoding.addPattern(this.START);\n }\n\n is(value, index) {\n let code = value.charCodeAt(index);\n return this.isCode(code);\n }\n\n move(encodingState) {\n let idx = 0;\n\n while (!this._moves[idx].call(this, encodingState) && idx < this._moves.length) {\n idx++;\n }\n }\n\n pushState(encodingState) {\n let states = this.states,\n value = encodingState.value,\n maxLength = value.length,\n code;\n\n if (inArray(\"C\", states)) {\n let numberMatch = value.substr(encodingState.index).match(/\\d{4,}/g);\n\n if (numberMatch) {\n maxLength = value.indexOf(numberMatch[0], encodingState.index);\n }\n }\n\n while ((code = encodingState.value.charCodeAt(encodingState.index)) >= 0 &&\n this.isCode(code) &&\n encodingState.index < maxLength) {\n this.encoding.addPattern(this.getValue(code));\n encodingState.index++;\n }\n }\n\n _initMoves(states) {\n this._moves = [];\n\n if (inArray(this.FNC4, states)) {\n this._moves.push(this._moveFNC);\n }\n\n if (inArray(this.shiftKey, states)) {\n this._moves.push(this._shiftState);\n }\n\n this._moves.push(this._moveState);\n }\n\n _moveFNC(encodingState) {\n if (encodingState.fnc) {\n encodingState.fnc = false;\n return encodingState.previousState === this.key;\n }\n }\n\n _shiftState(encodingState) {\n if (encodingState.previousState === this.shiftKey &&\n (encodingState.index + 1 >= encodingState.value.length ||\n this.encoding[this.shiftKey].is(encodingState.value, encodingState.index + 1))) {\n this.encoding.addPattern(this.SHIFT);\n encodingState.shifted = true;\n return true;\n }\n }\n\n _moveState() {\n this.encoding.addPattern(this.MOVE);\n return true;\n }\n}\n\nconst states128 = {};\n\nstates128.A = class State128A extends State128AB {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"A\",\n shiftKey: \"B\",\n MOVE: 101,\n START: 103\n });\n }\n\n isCode(code) {\n return 0 <= code && code < 96;\n }\n\n getValue(code) {\n if (code < 32) {\n return code + 64;\n }\n\n return code - 32;\n }\n};\n\nstates128.B = class State128B extends State128AB {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"B\",\n shiftKey: \"A\",\n MOVE: 100,\n START: 104\n });\n }\n\n isCode(code) {\n return 32 <= code && code < 128;\n }\n\n getValue(code) {\n return code - 32;\n }\n};\n\nstates128.C = class State128C extends State128 {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"C\",\n MOVE: 99,\n START: 105\n });\n }\n\n addStart() {\n this.encoding.addPattern(this.START);\n }\n\n is(value, index) {\n let next4 = getSubstring(value, index, 4);\n return (index + 4 <= value.length || value.length === 2) && numberRegex.test(next4);\n }\n\n move() {\n this.encoding.addPattern(this.MOVE);\n }\n\n pushState(encodingState) {\n let code;\n\n while ((code = getSubstring(encodingState.value, encodingState.index, 2)) &&\n numberRegex.test(code) && code.length === 2) {\n this.encoding.addPattern(parseInt(code, 10));\n encodingState.index += 2;\n }\n }\n\n getValue(code) {\n return code;\n }\n};\n\nstates128.FNC4 = class State128FNC4 extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this._initSubStates(states);\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"FNC4\",\n dependentStates: [\"A\", \"B\"]\n });\n }\n\n addStart(encodingState) {\n let code = encodingState.value.charCodeAt(0) - 128,\n subState = this._getSubState(code);\n\n this.encoding[subState].addStart();\n }\n\n is(value, index) {\n let code = value.charCodeAt(index);\n return this.isCode(code);\n }\n\n isCode(code) {\n return 128 <= code && code < 256;\n }\n\n pushState(encodingState) {\n let subState = this._initSubState(encodingState),\n encoding = this.encoding,\n length = subState.value.length;\n let code;\n\n encodingState.index += length;\n\n if (length < 3) {\n for (; subState.index < length; subState.index++) {\n code = subState.value.charCodeAt(subState.index);\n subState.state = this._getSubState(code);\n\n if (subState.previousState !== subState.state) {\n subState.previousState = subState.state;\n encoding[subState.state].move(subState);\n }\n\n encoding.addPattern(encoding[subState.state].MOVE);\n encoding.addPattern(encoding[subState.state].getValue(code));\n }\n } else {\n if (subState.state !== subState.previousState) {\n encoding[subState.state].move(subState);\n }\n\n this._pushStart(subState);\n encoding.pushData(subState, this.subStates);\n\n if (encodingState.index < encodingState.value.length) {\n this._pushStart(subState);\n }\n }\n\n encodingState.fnc = true;\n encodingState.state = subState.state;\n }\n\n _pushStart(subState) {\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n }\n\n _initSubState(encodingState) {\n const subState = {\n value: this._getAll(encodingState.value, encodingState.index),\n index: 0\n };\n\n subState.state = this._getSubState(subState.value.charCodeAt(0));\n subState.previousState = encodingState.previousState === this.key ?\n subState.state :\n encodingState.previousState;\n\n return subState;\n }\n\n _initSubStates(states) {\n this.subStates = [];\n\n for (let i = 0; i < states.length; i++) {\n if (inArray(states[i], this.dependentStates)) {\n this.subStates.push(states[i]);\n }\n }\n }\n\n _getSubState(code) {\n for (let i = 0; i < this.subStates.length; i++) {\n if (this.encoding[this.subStates[i]].isCode(code)) {\n return this.subStates[i];\n }\n }\n }\n\n _getAll(value, index) {\n let code;\n let result = \"\";\n let i = index;\n\n while ((code = value.charCodeAt(i++)) && this.isCode(code)) {\n result += String.fromCharCode(code - 128);\n }\n\n return result;\n }\n};\n\nstates128.FNC1 = class States128FNC1 extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this.states = states;\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"FNC1\",\n startState: \"C\",\n startAI: \"(\",\n endAI: \")\",\n dependentStates: [\"C\", \"B\"],\n applicationIdentifiers: {\n \"22\": { max: 29, type: \"alphanumeric\" },\n \"402\": { length: 17 },\n \"7004\": { max: 4, type: \"alphanumeric\" },\n \"242\": { max: 6, type: \"alphanumeric\" },\n \"8020\": { max: 25, type: \"alphanumeric\" },\n \"703\": { min: 3, max: 30, type: \"alphanumeric\" },\n \"8008\": { min: 8, max: 12, type: \"alphanumeric\" },\n \"253\": { min: 13, max: 17, type: \"alphanumeric\" },\n \"8003\": { min: 14, max: 30, type: \"alphanumeric\" },\n multiKey: [{\n ids: [\"15\", \"17\", \"8005\", \"8100\"],\n ranges: [\n [11, 13],\n [310, 316],\n [320, 336],\n [340, 369]\n ],\n type: { length: 6 }\n }, {\n ids: [\"240\", \"241\", \"250\", \"251\", \"400\", \"401\", \"403\", \"7002\", \"8004\", \"8007\", \"8110\"],\n ranges: [[90 - 99]],\n type: { max: 30, type: \"alphanumeric\" }\n }, {\n ids: [\"7001\"],\n ranges: [[410, 414]],\n type: { length: 13 }\n }, {\n ids: [\"10\", \"21\", \"254\", \"420\", \"8002\"],\n type: { max: 20, type: \"alphanumeric\" }\n }, {\n ids: [\"00\", \"8006\", \"8017\", \"8018\"],\n type: { length: 18 }\n }, {\n ids: [\"01\", \"02\", \"8001\"],\n type: { length: 14 }\n }, {\n ids: [\"422\"],\n ranges: [\n [424, 426]\n ],\n type: { length: 3 }\n }, {\n ids: [\"20\", \"8102\"],\n type: { length: 2 }\n }, {\n ids: [\"30\", \"37\"],\n type: { max: 8, type: \"alphanumeric\" }\n }, {\n ids: [\"390\", \"392\"],\n type: { max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"421\", \"423\"],\n type: { min: 3, max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"391\", \"393\"],\n type: { min: 3, max: 18, type: \"alphanumeric\" }\n }, {\n ids: [\"7003\", \"8101\"],\n type: { length: 10 }\n }]\n },\n START: 102\n });\n }\n\n\n addStart() {\n this.encoding[this.startState].addStart();\n }\n\n is() {\n return inArray(this.key, this.states);\n }\n\n pushState(encodingState) {\n let encoding = this.encoding,\n value = encodingState.value.replace(/\\s/g, \"\"),\n regexSeparators = new RegExp(\"[\" + this.startAI + this.endAI + \"]\", \"g\"),\n index = encodingState.index,\n subState = {\n state: this.startState\n },\n current,\n nextStart,\n separatorLength;\n\n encoding.addPattern(this.START);\n\n const trueCondition = true;\n\n while (trueCondition) {\n subState.index = 0;\n\n separatorLength = value.charAt(index) === this.startAI ? 2 : 0;\n current = separatorLength > 0 ? this.getBySeparator(value, index) : this.getByLength(value, index);\n\n if (current.ai.length) {\n nextStart = index + separatorLength + current.id.length + current.ai.length;\n } else {\n nextStart = value.indexOf(this.startAI, index + 1);\n\n if (nextStart < 0) {\n if (index + current.ai.max + current.id.length + separatorLength < value.length) {\n throw new Error(\"Separators are required after variable length identifiers\");\n }\n\n nextStart = value.length;\n }\n }\n\n subState.value = value.substring(index, nextStart).replace(regexSeparators, \"\");\n this.validate(current, subState.value);\n encoding.pushData(subState, this.dependentStates);\n\n if (nextStart >= value.length) {\n break;\n }\n\n index = nextStart;\n\n if (subState.state !== this.startState) {\n encoding[this.startState].move(subState);\n subState.state = this.startState;\n }\n\n if (!current.ai.length) {\n encoding.addPattern(this.START);\n }\n }\n\n encodingState.index = encodingState.value.length;\n }\n\n validate(current, value) {\n let code = value.substr(current.id.length),\n ai = current.ai;\n\n if (!ai.type && !numberRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is numeric only but contains non numeric character(s).\");\n }\n\n if (ai.type === \"alphanumeric\" && !alphanumericRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is alphanumeric only but contains non alphanumeric character(s).\");\n }\n\n if (ai.length && ai.length !== code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be \" + ai.length + \" characters long.\");\n }\n\n if (ai.min && ai.min > code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at least \" + ai.min + \" characters long.\");\n }\n\n if (ai.max && ai.max < code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at most \" + ai.max + \" characters long.\");\n }\n }\n\n getByLength(value, index) {\n let id;\n let applicationIdentifier;\n\n for (let i = 2; i <= 4; i++) {\n id = getSubstring(value, index, i);\n applicationIdentifier = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substring(0, id.length - 1));\n if (applicationIdentifier) {\n return {\n id: id,\n ai: applicationIdentifier\n };\n }\n }\n this.unsupportedAIError(id);\n }\n\n unsupportedAIError(id) {\n throw new Error(\"'\" + id + \"' is not a supported Application Identifier\");\n }\n\n getBySeparator(value, index) {\n let start = value.indexOf(this.startAI, index),\n end = value.indexOf(this.endAI, start),\n id = value.substring(start + 1, end),\n ai = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substr(id.length - 1));\n\n if (!ai) {\n this.unsupportedAIError(id);\n }\n\n return {\n ai: ai,\n id: id\n };\n }\n\n getApplicationIdentifier(id) {\n let applicationIdentifier = this.applicationIdentifiers,\n multiKey = applicationIdentifier.multiKey;\n\n if (applicationIdentifier[id]) {\n return applicationIdentifier[id];\n }\n\n for (let i = 0; i < multiKey.length; i++) {\n if (multiKey[i].ids && inArray(id, multiKey[i].ids)) {\n return multiKey[i].type;\n } else if (multiKey[i].ranges) {\n let ranges = multiKey[i].ranges;\n\n for (let j = 0; j < ranges.length; j++) {\n if (ranges[j][0] <= id && id <= ranges[j][1]) {\n return multiKey[i].type;\n }\n }\n }\n }\n }\n};\n\nexport class Code128Base extends Encoding {\n constructor(options) {\n super(options);\n this._initStates();\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characterMap: [\n 212222, 222122, 222221, 121223, 121322, 131222, 122213, 122312, 132212, 221213,\n 221312, 231212, 112232, 122132, 122231, 113222, 123122, 123221, 223211, 221132,\n 221231, 213212, 223112, 312131, 311222, 321122, 321221, 312212, 322112, 322211,\n 212123, 212321, 232121, 111323, 131123, 131321, 112313, 132113, 132311, 211313,\n 231113, 231311, 112133, 112331, 132131, 113123, 113321, 133121, 313121, 211331,\n 231131, 213113, 213311, 213131, 311123, 311321, 331121, 312113, 312311, 332111,\n 314111, 221411, 431111, 111224, 111422, 121124, 121421, 141122, 141221, 112214,\n 112412, 122114, 122411, 142112, 142211, 241211, 221114, 413111, 241112, 134111,\n 111242, 121142, 121241, 114212, 124112, 124211, 411212, 421112, 421211, 212141,\n 214121, 412121, 111143, 111341, 131141, 114113, 114311, 411113, 411311, 113141,\n 114131, 311141, 411131, 211412, 211214, 211232, 2331112\n ],\n STOP: 106\n });\n }\n\n _initStates() {\n for (let i = 0; i < this.states.length; i++) {\n this[this.states[i]] = new states128[this.states[i]](this, this.states);\n }\n }\n\n initValue(value, width, height) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.height = height;\n this.checkSum = 0;\n this.totalUnits = 0;\n this.index = 0;\n this.position = 1;\n }\n\n addData() {\n let encodingState = {\n value: this.value,\n index: 0,\n state: \"\"\n };\n\n if (this.value.length === 0) {\n return;\n }\n\n encodingState.state =\n encodingState.previousState = this.getNextState(encodingState, this.states);\n\n this.addStart(encodingState);\n\n this.pushData(encodingState, this.states);\n\n this.addCheckSum();\n this.addStop();\n this.setBaseUnit();\n }\n\n pushData(encodingState, states) {\n const trueCondition = true;\n\n while (trueCondition) {\n this[encodingState.state].pushState(encodingState);\n\n if (encodingState.index >= encodingState.value.length) {\n break;\n }\n\n if (!encodingState.shifted) {\n encodingState.previousState = encodingState.state;\n encodingState.state = this.getNextState(encodingState, states);\n this[encodingState.state].move(encodingState);\n } else {\n let temp = encodingState.state;\n encodingState.state = encodingState.previousState;\n encodingState.previousState = temp;\n encodingState.shifted = false;\n }\n }\n }\n\n addStart(encodingState) {\n this[encodingState.state].addStart(encodingState);\n this.position = 1;\n }\n\n addCheckSum() {\n this.checksum = this.checkSum % 103;\n this.addPattern(this.checksum);\n }\n\n addStop() {\n this.addPattern(this.STOP);\n }\n\n setBaseUnit() {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n }\n\n addPattern(code) {\n const pattern = this.characterMap[code].toString();\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n this.totalUnits += value;\n }\n this.checkSum += code * this.position++;\n }\n\n getNextState(encodingState, states) {\n for (let i = 0; i < states.length; i++) {\n if (this[states[i]].is(encodingState.value, encodingState.index)) {\n return states[i];\n }\n }\n\n this.invalidCharacterError(encodingState.value.charAt(encodingState.index));\n }\n}\n\nexport class Code128a extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 A\",\n states: [\"A\"]\n });\n }\n}\n\nexport class Code128b extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 B\",\n states: [\"B\"]\n });\n }\n}\n\nexport class Code128c extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 C\",\n states: [\"C\"]\n });\n }\n}\n\nexport class Code128 extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128\",\n states: [\"C\", \"B\", \"A\", \"FNC4\"]\n });\n }\n}\n\nexport class CodeGS1128 extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code GS1-128\",\n states: [\"FNC1\", \"C\", \"B\"]\n });\n }\n}\n\nfunction getSubstring(value, index, count) {\n return value.substring(index, index + count);\n}\n","import { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class MsiBase extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characterMap: [\n \"12121212\",\n \"12121221\",\n \"12122112\",\n \"12122121\",\n \"12211212\",\n \"12211221\",\n \"12212112\",\n \"12212121\",\n \"21121212\",\n \"21121221\"\n ],\n START: \"21\",\n STOP: \"121\",\n checkSumType: \"\",\n checkSums: checkSums\n });\n }\n\n initValue(value, width) {\n this.pattern = [];\n this.value = value;\n this.checkSumLength = 0;\n this.width = width;\n }\n\n setBaseUnit() {\n const startStopLength = 7;\n\n this.baseUnit = this.width /\n (12 * (this.value.length + this.checkSumLength) + this.quietZoneLength + startStopLength);\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n }\n\n addCharacter(character) {\n const pattern = this.characterMap[character];\n\n if (!pattern) {\n this.invalidCharacterError(character);\n }\n\n this.addPattern(pattern);\n }\n\n addPattern(pattern) {\n for (let i = 0; i < pattern.length; i++) {\n this.pattern.push(parseInt(pattern.charAt(i), 10));\n }\n }\n\n addCheckSum() {\n const checkSumFunction = this.checkSums[this.checkSumType];\n const checkValues = checkSumFunction.call(this.checkSums, this.value);\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n this.checkSumLength++;\n this.addPattern(this.characterMap[checkValues[i]]);\n }\n }\n}\n\nexport class MsiMod10 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo10\",\n checkSumType: \"Modulo10\"\n });\n }\n}\n\nexport class MsiMod11 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo11\",\n checkSumType: \"Modulo11\"\n });\n }\n}\n\nexport class MsiMod1010 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo10 Modulo10\",\n checkSumType: \"Modulo10Modulo10\"\n });\n }\n}\n\nexport class MsiMod1110 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo11 Modulo10\",\n checkSumType: \"Modulo11Modulo10\"\n });\n }\n}\n\nconst checkSums = {\n Modulo10(value) {\n let checkValues = [0, \"\"],\n odd = value.length % 2,\n idx,\n evenSum,\n oddSum;\n\n for (idx = 0; idx < value.length; idx++) {\n checkValues[(idx + odd) % 2] += parseInt(value.charAt(idx), 10);\n }\n\n oddSum = checkValues[0];\n evenSum = (checkValues[1] * 2).toString();\n\n for (idx = 0; idx < evenSum.length; idx++) {\n oddSum += parseInt(evenSum.charAt(idx), 10);\n }\n\n return [(10 - (oddSum % 10)) % 10];\n },\n Modulo11(value) {\n let weightedSum = 0,\n mod = 11,\n length = value.length,\n weight,\n checkValue;\n\n for (let i = 0; i < length; i++) {\n weight = ((length - i) % 6 || 6) + 1;\n weightedSum += weight * value.charAt(i);\n }\n\n checkValue = (mod - weightedSum % mod) % mod;\n\n if (checkValue !== 10) {\n return [checkValue];\n }\n\n return [1, 0];\n },\n Modulo11Modulo10(value) {\n let checkValues = this.Modulo11(value),\n mod11Value;\n mod11Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod11Value));\n },\n Modulo10Modulo10(value) {\n let checkValues = this.Modulo10(value),\n mod10Value;\n mod10Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod10Value));\n }\n};\n","import { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class Ean13 extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"EAN 13\",\n keyTable: [\n '000000',\n '001011',\n '001101',\n '001110',\n '010011',\n '011001',\n '011100',\n '010101',\n '010110',\n '011010'\n ],\n characterMap: {\n digits: [\n [3, 2, 1, 1],\n [2, 2, 2, 1],\n [2, 1, 2, 2],\n [1, 4, 1, 1],\n [1, 1, 3, 2],\n [1, 2, 3, 1],\n [1, 1, 1, 4],\n [1, 3, 1, 2],\n [1, 2, 1, 3],\n [3, 1, 1, 2]\n ],\n start: [1, 1, 1],\n middle: [1, 1, 1, 1, 1]\n }\n });\n }\n\n initValue(value, width, height) {\n const valueAsString = String(value);\n\n if (valueAsString.length !== 12 || /\\D/.test(valueAsString)) {\n throw new Error('The value of the \"EAN13\" encoding should be 12 symbols');\n }\n\n this.pattern = [];\n this.options.height = height;\n this.baseUnit = width / (95 + this.quietZoneLength);\n this.value = valueAsString;\n this.checksum = this.calculateChecksum();\n this.leftKey = valueAsString[0];\n this.leftPart = valueAsString.substr(1, 6);\n this.rightPart = valueAsString.substr(7) + this.checksum;\n }\n\n addData() {\n this.addPieces(this.characterMap.start);\n this.addSide(this.leftPart, this.leftKey);\n this.addPieces(this.characterMap.middle);\n this.addSide(this.rightPart);\n this.addPieces(this.characterMap.start);\n }\n\n addSide(leftPart, key) {\n for (let i = 0; i < leftPart.length; i++) {\n if (key && parseInt(this.keyTable[key].charAt(i), 10)) {\n this.addPieces(Array.prototype.slice.call(this.characterMap.digits[leftPart.charAt(i)]).reverse(), true);\n } else {\n this.addPieces(this.characterMap.digits[leftPart.charAt(i)], true);\n }\n }\n }\n\n addPieces(arrToAdd, limitedHeight) {\n for (let i = 0; i < arrToAdd.length; i++) {\n if (limitedHeight) {\n this.pattern.push({\n y1: 0,\n y2: this.options.height * 0.95,\n width: arrToAdd[i]\n });\n } else {\n this.pattern.push(arrToAdd[i]);\n }\n }\n }\n\n calculateChecksum() {\n let odd = 0,\n even = 0,\n value = this.value.split(\"\").reverse().join(\"\");\n\n for (let i = 0; i < value.length; i++) {\n if (i % 2) {\n even += parseInt(value.charAt(i), 10);\n } else {\n odd += parseInt(value.charAt(i), 10);\n }\n }\n\n let checksum = (10 - ((3 * odd + even) % 10)) % 10;\n\n return checksum;\n }\n}\n","import { Ean13 } from './ean13';\n\nconst extend = Object.assign;\n\nexport class Ean8 extends Ean13 {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"EAN 8\"\n });\n }\n\n initValue(value, width, height) {\n if (value.length !== 7 || /\\D/.test(value)) {\n throw new Error('Invalid value provided');\n }\n\n this.value = value;\n this.options.height = height;\n this.checksum = this.calculateChecksum(this.value);\n this.leftPart = this.value.substr(0, 4);\n this.rightPart = this.value.substr(4) + this.checksum;\n this.pattern = [];\n this.baseUnit = width / (67 + this.quietZoneLength);\n }\n}\n","import { Code11 } from './code11';\nimport { Code39 } from './code39';\nimport { Code39Extended } from './code39-extended';\nimport { Code93 } from './code93';\nimport { Code93Extended } from './code93-extended';\nimport { Postnet } from './postnet';\n\nimport {\n Code128,\n Code128a,\n Code128b,\n Code128c,\n CodeGS1128\n} from './code128';\n\nimport {\n MsiMod10,\n MsiMod11,\n MsiMod1010,\n MsiMod1110\n} from './msi';\n\nimport { Ean8 } from './ean8';\nimport { Ean13 } from './ean13';\n\nexport const Encodings = {\n code11: Code11,\n\n code39: Code39,\n code39extended: Code39Extended,\n\n code93: Code93,\n code93extended: Code93Extended,\n\n code128: Code128,\n code128a: Code128a,\n code128b: Code128b,\n code128c: Code128c,\n [\"gs1-128\"]: CodeGS1128,\n\n msimod10: MsiMod10,\n msimod11: MsiMod11,\n msimod1010: MsiMod1010,\n msimod1110: MsiMod1110,\n\n postnet: Postnet,\n\n ean8: Ean8,\n ean13: Ean13\n};\n","import { Code93 } from './code93';\nimport { Code39ExtendedBase } from './code39-extended';\nimport deepExtend from '../../common/deep-extend';\n\nexport class Code93Extended extends Code93 {\n initProperties() {\n super.initProperties();\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 93 extended\",\n pushCheckSum: function() {\n const checkValues = this._getCheckValues();\n let value;\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n value = checkValues[i];\n\n if (this.shiftValuesAsciiCodes[value]) {\n this.addExtended(this.shiftValuesAsciiCodes[value]);\n } else {\n const characterByValue = this._findCharacterByValue(value);\n this.addPattern(this.characterMap[characterByValue].pattern);\n }\n }\n }\n });\n }\n}\n","export function surfaceSize(element, surfaceType) {\n const display = element.style.display;\n if (surfaceType === 'canvas') {\n // The Canvas default size is different from SVG for\n // inline-block containers such as the Barcode and QR Code.\n //\n // Switch to display: block to get same dimensions.\n element.style.display = 'block';\n }\n\n const size = {\n width: element.clientWidth,\n height: element.clientHeight\n };\n\n element.style.display = display;\n\n return size;\n}\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n addClass,\n setDefaultOptions,\n deepExtend,\n getSpacing,\n isObject,\n defaultErrorHandler\n} from '../common';\n\nimport {\n Box,\n TextBox\n} from '../core';\n\nimport { Encodings } from './encodings/main';\nimport { surfaceSize } from './surface-size';\n\nconst DEFAULT_BARCODE_WIDTH = 300;\nconst DEFAULT_BARCODE_HEIGHT = 100;\n\nclass Barcode extends Class {\n constructor(element, options, errorHandler = defaultErrorHandler) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n this._setOptions(options);\n\n if (options && defined(options.value)) {\n this.redraw();\n }\n }\n\n destroy() {\n this._destroySurface();\n }\n\n _initElement() {\n addClass(this.element, \"k-barcode\");\n }\n\n _initSurface() {\n const { options, surface } = this;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n }\n\n _createSurface() {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n }\n\n _destroySurface() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n }\n\n _initSurfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = 'relative';\n this.element.appendChild(this.surfaceElement);\n }\n }\n\n _destroySurfaceElement() {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n }\n\n setOptions(options) {\n this._setOptions(options);\n this._initSurface();\n this.redraw();\n }\n\n redraw() {\n let size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size.width,\n height: size.height\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n }\n\n getSize() {\n return {\n width: this.element.offsetWidth,\n height: this.element.offsetHeight\n };\n }\n\n _resize() {\n this.redraw();\n }\n\n createVisual() {\n this.visual = this._render();\n }\n\n _render() {\n const options = this.options;\n const value = options.value;\n const textOptions = options.text;\n const textMargin = getSpacing(textOptions.margin);\n const size = this._getSize();\n const border = options.border || {};\n const encoding = this.encoding;\n const contentBox = new Box(0, 0, size.width, size.height).unpad(border.width).unpad(options.padding);\n let barHeight = contentBox.height();\n let encodedValue;\n let textToDisplay;\n let textHeight;\n const visual = new draw.Group();\n\n this.contentBox = contentBox;\n visual.append(this._getBackground(size));\n\n if (textOptions.visible) {\n textHeight = draw.util.measureText(value, { font: textOptions.font }).height;\n barHeight -= textHeight + textMargin.top + textMargin.bottom;\n }\n\n try {\n encodedValue = encoding.encode(value, contentBox.width(), barHeight);\n } catch (error) {\n this.onError(error);\n return visual;\n }\n\n if (textOptions.visible) {\n textToDisplay = value;\n\n if (options.checksum && defined(encoding.checksum)) {\n textToDisplay += \" \" + encoding.checksum;\n }\n\n visual.append(this._getText(textToDisplay));\n }\n\n this.barHeight = barHeight;\n this._bandsGroup = this._getBands(encodedValue.pattern, encodedValue.baseUnit);\n visual.append(this._bandsGroup);\n\n return visual;\n }\n\n exportVisual() {\n return this._render();\n }\n\n _getSize() {\n const element = this.element;\n const elementSize = surfaceSize(element, this.options.renderAs);\n const size = new geom.Size(DEFAULT_BARCODE_WIDTH, DEFAULT_BARCODE_HEIGHT);\n\n if (elementSize.width > 0) {\n size.width = elementSize.width;\n }\n\n if (elementSize.height > 0) {\n size.height = elementSize.height;\n }\n\n if (this.options.width) {\n size.width = this.options.width;\n }\n\n if (this.options.height) {\n size.height = this.options.height;\n }\n\n return size;\n }\n\n value(value) {\n if (!defined(value)) {\n return this.options.value;\n }\n\n this.options.value = String(value);\n this.redraw();\n }\n\n _getBands(pattern, baseUnit) {\n const contentBox = this.contentBox;\n let offsetX = contentBox.x1;\n let stepX;\n let patternItem;\n const group = new draw.Group();\n\n for (let i = 0; i < pattern.length; i++) {\n patternItem = isObject(pattern[i]) ? pattern[i] : {\n width: pattern[i],\n y1: 0,\n y2: this.barHeight\n };\n\n stepX = patternItem.width * baseUnit;\n\n if (i % 2) {\n const rect = geom.Rect.fromPoints(\n new geom.Point(offsetX, patternItem.y1 + contentBox.y1),\n new geom.Point(offsetX + stepX, patternItem.y2 + contentBox.y1)\n );\n\n const path = draw.Path.fromRect(rect, {\n fill: {\n color: this.options.color\n },\n stroke: null\n });\n\n group.append(path);\n }\n\n offsetX += stepX;\n }\n\n return group;\n }\n\n _getBackground(size) {\n const options = this.options;\n const border = options.border || {};\n const box = new Box(0, 0, size.width, size.height).unpad(border.width / 2);\n const path = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: options.background\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n\n return path;\n }\n\n _getText(value) {\n const textOptions = this.options.text;\n const text = this._textbox = new TextBox(value, {\n font: textOptions.font,\n color: textOptions.color,\n align: \"center\",\n vAlign: \"bottom\",\n margin: textOptions.margin\n });\n\n text.reflow(this.contentBox);\n text.renderVisual();\n\n return text.visual;\n }\n\n _setOptions(options) {\n this.type = (options.type || this.options.type).toLowerCase();\n\n if (this.type === \"upca\") {\n this.type = \"ean13\";\n options.value = '0' + options.value;\n }\n\n if (this.type === \"upce\") {\n this.type = \"ean8\";\n options.value = '0' + options.value;\n }\n\n if (!Encodings[this.type]) {\n throw new Error(`Encoding '${this.type}' is not supported.`);\n }\n\n this.encoding = new Encodings[this.type]();\n\n this.options = deepExtend({}, this.options, options);\n }\n}\n\nsetDefaultOptions(Barcode, {\n name: \"Barcode\",\n renderAs: \"svg\",\n value: \"\",\n type: \"code39\",\n checksum: false,\n width: 0,\n height: 0,\n color: \"black\",\n background: \"white\",\n text: {\n visible: true,\n font: \"16px Consolas, Monaco, Sans Mono, monospace, sans-serif\",\n color: \"black\",\n margin: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n },\n border: {\n width: 0,\n dashType: \"solid\",\n color: \"black\"\n },\n padding: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n});\n\nexport default Barcode;\n","import { Encodings } from './encodings/main';\n\nconst validate = (encoding, size, prefix) => (value) => {\n try {\n encoding.encode(\n prefix + value,\n size.width,\n size.height\n );\n } catch (error) {\n return {\n valid: false,\n error\n };\n }\n\n return {\n valid: true\n };\n};\n\n// A default size for encodings, so the validator can check only the value if no size is provided.\nconst fallbackSize = { width: 500, height: 100 };\n\nfunction barcodeValidator(type, size = fallbackSize) {\n if (!type) {\n throw new Error(`Please specify barcode type to validate.`);\n }\n\n let resolvedType = type.toLowerCase();\n let prefix = '';\n if (resolvedType === 'upca') {\n resolvedType = 'ean13';\n prefix = '0';\n } else if (resolvedType === 'upce') {\n resolvedType = 'ean8';\n prefix = '0';\n }\n\n if (!Encodings[resolvedType]) {\n throw new Error(`Encoding '${type}' is not supported.`);\n }\n\n const encoding = new Encodings[resolvedType]();\n return validate(encoding, size, prefix);\n}\n\nexport default barcodeValidator;\n","export const extend = Object.assign;\n\nexport function splitInto(str, chunkLength) {\n let result = [];\n let idx = 0;\n\n while (idx < str.length) {\n result.push(str.substring(idx, idx + chunkLength));\n idx += chunkLength;\n }\n\n return result;\n}\n\nexport function toBitsString(value, length) {\n let bitString = Number(value).toString(2);\n\n if (bitString.length < length) {\n bitString = new Array(length - bitString.length + 1).join(0) + bitString;\n }\n\n return bitString;\n}\n\nexport function toDecimal(value) {\n return parseInt(value, 2);\n}\n\n","import { Class } from '../../common';\n\nexport class FreeCellVisitor extends Class {\n constructor(matrix) {\n super();\n\n this.matrix = matrix;\n this.row = matrix.length - 1;\n this.column = matrix.length - 1;\n this.startColumn = this.column;\n this.dir = -1;\n this.c = 0;\n }\n\n move() {\n this.row += this.dir * this.c;\n this.c ^= 1;\n this.column = this.startColumn - this.c;\n }\n\n getNextCell() {\n while (this.matrix[this.row][this.column] !== undefined) {\n this.move();\n\n if (this.row < 0 || this.row >= this.matrix.length) {\n this.dir = -this.dir;\n this.startColumn -= this.startColumn !== 8 ? 2 : 3;\n this.column = this.startColumn;\n this.row = this.dir < 0 ? this.matrix.length - 1 : 0;\n }\n }\n\n return {\n row: this.row,\n column: this.column\n };\n }\n\n getNextRemainderCell() {\n this.move();\n\n if (this.matrix[this.row][this.column] === undefined) {\n return {\n row: this.row,\n column: this.column\n };\n }\n }\n}\n","import { Class } from '../../common';\n\nexport class EncodingResult extends Class {\n constructor(dataString, version) {\n super();\n\n this.dataString = dataString;\n this.version = version;\n }\n}\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport {\n getModes,\n getVersion,\n getDataCodewordsCount,\n getDataString\n} from '../encoding';\n\nexport class IsoEncoder extends Class {\n getEncodingResult(inputString, errorCorrectionLevel) {\n let modes = getModes(inputString),\n dataCodewordsCount = getDataCodewordsCount(modes),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = getDataString(modes, version);\n\n return new EncodingResult(dataString, version);\n }\n}\n","import {\n toBitsString,\n toDecimal\n} from '../utils';\nimport { FreeCellVisitor } from './free-cell-visitor';\nimport { IsoEncoder } from './encoders/iso-encoder';\nimport { Utf8Encoder } from './encoders/utf8-encoder';\nimport { VersionsCodewordsInformation } from './version-codewords';\nimport { DataModeInstances } from './data-modes/data-mode-instances';\n\nlet terminator = \"0000\",\n NUMERIC = \"numeric\",\n ALPHA_NUMERIC = \"alphanumeric\",\n BYTE = \"byte\",\n powersOfTwo = { \"1\": 0 },\n powersOfTwoResult = { \"0\": 1 },\n irregularAlignmentPatternsStartDistance = {\n 15: 20, 16: 20, 18: 24, 19: 24, 22: 20,\n 24: 22, 26: 24, 28: 20, 30: 20, 31: 24,\n 32: 28, 33: 24, 36: 18, 37: 22, 39: 20, 40: 24\n },\n finderPattern = [1, 0, 1, 1, 1],\n alignmentPattern = [1, 0, 1],\n errorCorrectionPatterns = { L: \"01\", M: \"00\", Q: \"11\", H: \"10\" },\n formatMaskPattern = \"101010000010010\",\n formatGeneratorPolynomial = \"10100110111\",\n versionGeneratorPolynomial = \"1111100100101\",\n paddingCodewords = [\"11101100\", \"00010001\"],\n finderPatternValue = 93,\n /* eslint-disable arrow-body-style */\n /* eslint-disable no-unused-vars */\n maskPatternConditions = [\n (row, column) => { return (row + column) % 2 === 0; },\n (row, column) => { return row % 2 === 0; },\n (row, column) => { return column % 3 === 0; },\n (row, column) => { return (row + column) % 3 === 0; },\n (row, column) => { return (Math.floor(row / 2) + Math.floor(column / 3)) % 2 === 0; },\n (row, column) => { return ((row * column) % 2) + ((row * column) % 3) === 0; },\n (row, column) => { return (((row * column) % 2) + ((row * column) % 3)) % 2 === 0; },\n (row, column) => { return (((row + column) % 2) + ((row * column) % 3)) % 2 === 0; }\n ],\n /* eslint-enable no-unused-vars */\n /* eslint-enable arrow-body-style */\n numberRegex = /^\\d+/,\n alphaPattern = \"A-Z0-9 $%*+./:-\",\n alphaExclusiveSet = \"A-Z $%*+./:-\",\n alphaRegex = new RegExp(\"^[\" + alphaExclusiveSet + \"]+\"),\n alphaNumericRegex = new RegExp(\"^[\" + alphaPattern + \"]+\"),\n byteRegex = new RegExp(\"^[^\" + alphaPattern + \"]+\"),\n initMinNumericBeforeAlpha = 8,\n initMinNumericBeforeByte = 5,\n initMinAlphaBeforeByte = 8,\n minNumericBeforeAlpha = 17,\n minNumericBeforeByte = 9,\n minAlphaBeforeByte = 16;\n\nexport const generatorPolynomials = [[1, 0], [1, 25, 0]];\n\nexport function fillFunctionCell(matrices, bit, x, y) {\n for (let i = 0; i < matrices.length; i++) {\n matrices[i][x][y] = bit;\n }\n}\n\nexport function fillDataCell(matrices, bit, x, y) {\n for (let i = 0; i < maskPatternConditions.length; i++) {\n matrices[i][x][y] = maskPatternConditions[i](x, y) ? bit ^ 1 : parseInt(bit, 10);\n }\n}\n\nexport function fillData(matrices, blocks) {\n let cellVisitor = new FreeCellVisitor(matrices[0]),\n block,\n codewordIdx,\n cell;\n\n for (let blockIdx = 0; blockIdx < blocks.length; blockIdx++) {\n block = blocks[blockIdx];\n codewordIdx = 0;\n\n while (block.length > 0) {\n for (let i = 0; i < block.length; i++) {\n for (let j = 0; j < 8; j++) {\n cell = cellVisitor.getNextCell();\n fillDataCell(matrices, block[i][codewordIdx].charAt(j), cell.row, cell.column);\n }\n }\n\n codewordIdx++;\n\n while (block[0] && codewordIdx === block[0].length) {\n block.splice(0, 1);\n }\n }\n }\n\n while ((cell = cellVisitor.getNextRemainderCell())) {\n fillDataCell(matrices, 0, cell.row, cell.column);\n }\n}\n\nexport function padDataString(initialDataString, totalDataCodewords) {\n let dataBitsCount = totalDataCodewords * 8,\n terminatorIndex = 0,\n paddingCodewordIndex = 0;\n let dataString = initialDataString;\n\n while (dataString.length < dataBitsCount && terminatorIndex < terminator.length) {\n dataString += terminator.charAt(terminatorIndex++);\n }\n\n if (dataString.length % 8 !== 0) {\n dataString += new Array(9 - dataString.length % 8).join(\"0\");\n }\n\n while (dataString.length < dataBitsCount) {\n dataString += paddingCodewords[paddingCodewordIndex];\n paddingCodewordIndex ^= 1;\n }\n\n return dataString;\n}\n\nexport function generatePowersOfTwo() {\n let result;\n let power;\n\n for (power = 1; power < 255; power++) {\n result = powersOfTwoResult[power - 1] * 2;\n if (result > 255) {\n result = result ^ 285;\n }\n\n powersOfTwoResult[power] = result;\n powersOfTwo[result] = power;\n }\n\n result = (powersOfTwoResult[power - 1] * 2) ^ 285;\n powersOfTwoResult[power] = result;\n powersOfTwoResult[-1] = 0;\n}\n\nexport function xorPolynomials(x, y) {\n let result = [],\n idx = x.length - 2;\n\n for (let i = idx; i >= 0; i--) {\n result[i] = x[i] ^ y[i];\n }\n\n return result;\n}\n\nexport function multiplyPolynomials(x, y) {\n let result = [];\n\n for (let i = 0; i < x.length; i++) {\n for (let j = 0; j < y.length; j++) {\n if (result[i + j] === undefined) {\n result[i + j] = (x[i] + (y[j] >= 0 ? y[j] : 0)) % 255;\n } else {\n result[i + j] = powersOfTwo[powersOfTwoResult[result[i + j]] ^ powersOfTwoResult[(x[i] + y[j]) % 255]];\n }\n }\n }\n\n return result;\n}\n\nexport function generateGeneratorPolynomials() {\n let maxErrorCorrectionCodeWordsCount = 68;\n\n for (let idx = 2; idx <= maxErrorCorrectionCodeWordsCount; idx++) {\n let firstPolynomial = generatorPolynomials[idx - 1],\n secondPolynomial = [idx, 0];\n\n generatorPolynomials[idx] = multiplyPolynomials(firstPolynomial, secondPolynomial);\n }\n}\n\n//possibly generate on demand\ngeneratePowersOfTwo();\ngenerateGeneratorPolynomials();\n\nexport function multiplyByConstant(polynomial, power) {\n let result = [],\n idx = polynomial.length - 1;\n\n do {\n result[idx] = powersOfTwoResult[(polynomial[idx] + power) % 255];\n idx--;\n }\n while (polynomial[idx] !== undefined);\n\n return result;\n}\n\nexport function generateErrorCodewords(data, errorCodewordsCount) {\n let generator = generatorPolynomials[errorCodewordsCount - 1],\n result = new Array(errorCodewordsCount).concat(data),\n generatorPolynomial = new Array(result.length - generator.length).concat(generator),\n steps = data.length,\n errorCodewords = [],\n divisor,\n idx;\n\n for (idx = 0; idx < steps; idx++) {\n divisor = multiplyByConstant(generatorPolynomial, powersOfTwo[result[result.length - 1]]);\n generatorPolynomial.splice(0, 1);\n\n result = xorPolynomials(divisor, result);\n }\n\n for (idx = result.length - 1; idx >= 0; idx--) {\n errorCodewords[errorCodewordsCount - 1 - idx] = toBitsString(result[idx], 8);\n }\n\n return errorCodewords;\n}\n\nexport function getBlocks(dataStream, versionCodewordsInformation) {\n let codewordStart = 0,\n dataBlocks = [],\n errorBlocks = [],\n dataBlock,\n versionGroups = versionCodewordsInformation.groups,\n blockCodewordsCount,\n groupBlocksCount,\n messagePolynomial,\n codeword;\n\n for (let groupIdx = 0; groupIdx < versionGroups.length; groupIdx++) {\n groupBlocksCount = versionGroups[groupIdx][0];\n\n for (let blockIdx = 0; blockIdx < groupBlocksCount; blockIdx++) {\n blockCodewordsCount = versionGroups[groupIdx][1];\n dataBlock = [];\n messagePolynomial = [];\n\n for (let codewordIdx = 1; codewordIdx <= blockCodewordsCount; codewordIdx++) {\n codeword = dataStream.substring(codewordStart, codewordStart + 8);\n dataBlock.push(codeword);\n messagePolynomial[blockCodewordsCount - codewordIdx] = toDecimal(codeword);\n codewordStart += 8;\n }\n\n dataBlocks.push(dataBlock);\n errorBlocks.push(generateErrorCodewords(messagePolynomial,\n versionCodewordsInformation.errorCodewordsPerBlock));\n }\n }\n return [dataBlocks, errorBlocks];\n}\n\nexport function chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode) {\n let numeric = numberRegex.exec(str),\n numericMatch = numeric ? numeric[0] : \"\",\n alpha = alphaRegex.exec(str),\n alphaMatch = alpha ? alpha[0] : \"\",\n alphaNumeric = alphaNumericRegex.exec(str),\n alphaNumericMatch = alphaNumeric ? alphaNumeric[0] : \"\",\n mode,\n modeString;\n\n if (numericMatch &&\n (numericMatch.length >= minNumericBeforeAlpha || str.length === numericMatch.length ||\n (numericMatch.length >= minNumericBeforeByte && !alphaNumericRegex.test(str.charAt(numericMatch.length))))) {\n mode = NUMERIC;\n modeString = numericMatch;\n } else if (alphaNumericMatch && (str.length === alphaNumericMatch.length ||\n alphaNumericMatch.length >= minAlphaBeforeByte || previousMode === ALPHA_NUMERIC)) {\n mode = ALPHA_NUMERIC;\n modeString = numericMatch || alphaMatch;\n } else {\n mode = BYTE;\n\n if (alphaNumericMatch) {\n modeString = alphaNumericMatch + byteRegex.exec(str.substring(alphaNumericMatch.length))[0];\n } else {\n modeString = byteRegex.exec(str)[0];\n }\n }\n\n return {\n mode: mode,\n modeString: modeString\n };\n}\n\nexport function getModes(inputString) {\n let modes = [],\n previousMode,\n idx = 0;\n let str = inputString;\n\n modes.push(chooseMode(str, initMinNumericBeforeAlpha, initMinNumericBeforeByte, initMinAlphaBeforeByte, previousMode));\n previousMode = modes[0].mode;\n str = str.substr(modes[0].modeString.length);\n\n while (str.length > 0) {\n let nextMode = chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode);\n\n if (nextMode.mode !== previousMode) {\n previousMode = nextMode.mode;\n modes.push(nextMode);\n idx++;\n } else {\n modes[idx].modeString += nextMode.modeString;\n }\n\n str = str.substr(nextMode.modeString.length);\n }\n\n return modes;\n}\n\nexport function getDataCodewordsCount(modes) {\n let length = 0,\n mode;\n\n for (let i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n length += mode.getStringBitsLength(modes[i].modeString.length);\n }\n\n return Math.ceil(length / 8);\n}\n\nexport function getVersion(dataCodewordsCount, errorCorrectionLevel) {\n let x = 0,\n y = VersionsCodewordsInformation.length - 1,\n version = Math.floor(VersionsCodewordsInformation.length / 2);\n\n do {\n if (dataCodewordsCount < VersionsCodewordsInformation[version][errorCorrectionLevel].totalDataCodewords) {\n y = version;\n } else {\n x = version;\n }\n\n version = x + Math.floor((y - x) / 2);\n } while (y - x > 1);\n\n if (dataCodewordsCount <= VersionsCodewordsInformation[x][errorCorrectionLevel].totalDataCodewords) {\n return version + 1;\n }\n\n return y + 1;\n}\n\nexport function getDataString(modes, version) {\n let dataString = \"\",\n mode;\n\n for (let i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n dataString += mode.encode(modes[i].modeString, version);\n }\n\n return dataString;\n}\n\n//fix case all zeros\nexport function encodeFormatInformation(format) {\n let formatNumber = toDecimal(format),\n encodedString,\n result = \"\";\n\n if (formatNumber === 0) {\n return \"101010000010010\";\n }\n\n encodedString = encodeBCH(toDecimal(format), formatGeneratorPolynomial, 15);\n\n for (let i = 0; i < encodedString.length; i++) {\n result += encodedString.charAt(i) ^ formatMaskPattern.charAt(i);\n }\n\n return result;\n}\n\nexport function encodeBCH(value, generatorPolynomial, codeLength) {\n let generatorNumber = toDecimal(generatorPolynomial),\n polynomialLength = generatorPolynomial.length - 1,\n valueNumber = value << polynomialLength,\n length = codeLength - polynomialLength,\n valueString = toBitsString(value, length),\n result = dividePolynomials(valueNumber, generatorNumber);\n\n result = valueString + toBitsString(result, polynomialLength);\n\n return result;\n}\n\nexport function dividePolynomials(numberX, numberY) {\n let yLength = numberY.toString(2).length,\n xLength = numberX.toString(2).length;\n let x = numberX;\n\n do {\n x ^= numberY << xLength - yLength;\n xLength = x.toString(2).length;\n }\n while (xLength >= yLength);\n\n return x;\n}\n\nexport function getNumberAt(str, idx) {\n return parseInt(str.charAt(idx), 10);\n}\n\nexport function initMatrices(version) {\n let matrices = [],\n modules = 17 + 4 * version;\n\n for (let i = 0; i < maskPatternConditions.length; i++) {\n matrices[i] = new Array(modules);\n\n for (let j = 0; j < modules; j++) {\n matrices[i][j] = new Array(modules);\n }\n }\n\n return matrices;\n}\n\nexport function addFormatInformation(matrices, formatString) {\n let matrix = matrices[0],\n x,\n y,\n idx = 0,\n length = formatString.length;\n\n for (x = 0, y = 8; x <= 8; x++) {\n if (x !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n for (x = 8, y = 7; y >= 0; y--) {\n if (y !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n idx = 0;\n\n for (y = matrix.length - 1, x = 8; y >= matrix.length - 8; y--) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n\n fillFunctionCell(matrices, 1, matrix.length - 8, 8);\n\n for (x = matrix.length - 7, y = 8; x < matrix.length; x++) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n}\n\nexport function encodeVersionInformation(version) {\n return encodeBCH(version, versionGeneratorPolynomial, 18);\n}\n\nexport function addVersionInformation(matrices, dataString) {\n let matrix = matrices[0],\n modules = matrix.length,\n x1 = 0,\n y1 = modules - 11,\n x2 = modules - 11,\n y2 = 0,\n quotient,\n mod,\n value;\n\n for (let idx = 0; idx < dataString.length; idx++) {\n quotient = Math.floor(idx / 3);\n mod = idx % 3;\n value = getNumberAt(dataString, dataString.length - idx - 1);\n\n fillFunctionCell(matrices, value, x1 + quotient, y1 + mod);\n fillFunctionCell(matrices, value, x2 + mod, y2 + quotient);\n }\n}\n\nexport function addCentricPattern(matrices, pattern, x, y) {\n let size = pattern.length + 2,\n length = pattern.length + 1,\n value;\n\n for (let i = 0; i < pattern.length; i++) {\n for (let j = i; j < size - i; j++) {\n value = pattern[i];\n\n fillFunctionCell(matrices, value, x + j, y + i);\n fillFunctionCell(matrices, value, x + i, y + j);\n fillFunctionCell(matrices, value, x + length - j, y + length - i);\n fillFunctionCell(matrices, value, x + length - i, y + length - j);\n }\n }\n}\n\nexport function addFinderSeparator(matrices, direction, x, y) {\n let nextX = x,\n nextY = y,\n matrix = matrices[0];\n\n do {\n fillFunctionCell(matrices, 0, nextX, y);\n fillFunctionCell(matrices, 0, x, nextY);\n nextX += direction[0];\n nextY += direction[1];\n }\n while (nextX >= 0 && nextX < matrix.length);\n}\n\nexport function addFinderPatterns(matrices) {\n let modules = matrices[0].length;\n\n addCentricPattern(matrices, finderPattern, 0, 0);\n addFinderSeparator(matrices, [-1, -1], 7, 7);\n addCentricPattern(matrices, finderPattern, modules - 7, 0);\n addFinderSeparator(matrices, [1, -1], modules - 8, 7);\n addCentricPattern(matrices, finderPattern, 0, modules - 7);\n addFinderSeparator(matrices, [-1, 1], 7, modules - 8);\n}\n\nexport function addAlignmentPatterns(matrices, version) {\n if (version < 2) {\n return;\n }\n\n let matrix = matrices[0],\n modules = matrix.length,\n pointsCount = Math.floor(version / 7),\n points = [6],\n startDistance,\n distance,\n idx = 0;\n\n if ((startDistance = irregularAlignmentPatternsStartDistance[version])) {\n distance = (modules - 13 - startDistance) / pointsCount;\n } else {\n startDistance = distance = (modules - 13) / (pointsCount + 1);\n }\n\n points.push(points[idx++] + startDistance);\n\n while ((points[idx] + distance) < modules) {\n points.push(points[idx++] + distance);\n }\n\n for (let i = 0; i < points.length; i++) {\n for (let j = 0; j < points.length; j++) {\n if (matrix[points[i]][points[j]] === undefined) {\n addCentricPattern(matrices, alignmentPattern, points[i] - 2, points[j] - 2);\n }\n }\n }\n}\n\nexport function addTimingFunctions(matrices) {\n let row = 6,\n column = 6,\n value = 1,\n modules = matrices[0].length;\n\n for (let i = 8; i < modules - 8; i++) {\n fillFunctionCell(matrices, value, row, i);\n fillFunctionCell(matrices, value, i, column);\n value ^= 1;\n }\n}\n\nexport function scoreMaskMatrixes(matrices) {\n let scores = [],\n previousBits = [],\n darkModules = [],\n patterns = [],\n adjacentSameBits = [],\n matrix,\n i,\n row = 0,\n column = 1,\n modulesLength = matrices[0].length;\n\n for (i = 0; i < matrices.length; i++) {\n scores[i] = 0;\n darkModules[i] = 0;\n adjacentSameBits[i] = [0, 0];\n patterns[i] = [0, 0];\n previousBits[i] = [];\n }\n\n for (let rowIndex = 0; rowIndex < modulesLength; rowIndex++) {\n for (let columnIndex = 0; columnIndex < modulesLength; columnIndex++) {\n for (let matrixIndex = 0; matrixIndex < matrices.length; matrixIndex++) {\n matrix = matrices[matrixIndex];\n darkModules[matrixIndex] += parseInt(matrix[rowIndex][columnIndex], 10);\n\n if (previousBits[matrixIndex][row] === matrix[rowIndex][columnIndex] &&\n rowIndex + 1 < modulesLength &&\n columnIndex - 1 >= 0 &&\n matrix[rowIndex + 1][columnIndex] === previousBits[matrixIndex][row] &&\n matrix[rowIndex + 1][columnIndex - 1] === previousBits[matrixIndex][row]) {\n scores[matrixIndex] += 3;\n }\n\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, row, matrix[rowIndex][columnIndex]);\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, column, matrix[columnIndex][rowIndex]);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[rowIndex][columnIndex], adjacentSameBits, row);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[columnIndex][rowIndex], adjacentSameBits, column);\n }\n }\n }\n\n let total = modulesLength * modulesLength,\n minIdx,\n min = Number.MAX_VALUE;\n\n for (i = 0; i < scores.length; i++) {\n scores[i] += calculateDarkModulesRatioScore(darkModules[i], total);\n\n if (scores[i] < min) {\n min = scores[i];\n minIdx = i;\n }\n }\n\n return minIdx;\n}\n\nexport function scoreFinderPatternOccurance(idx, patterns, scores, rowColumn, bit) {\n patterns[idx][rowColumn] = ((patterns[idx][rowColumn] << 1) ^ bit) % 128;\n\n if (patterns[idx][rowColumn] === finderPatternValue) {\n scores[idx] += 40;\n }\n}\n\nexport function scoreAdjacentSameBits(idx, scores, previousBits, bit, adjacentBits, rowColumn) {\n if (previousBits[idx][rowColumn] === bit) {\n adjacentBits[idx][rowColumn]++;\n } else {\n previousBits[idx][rowColumn] = bit;\n\n if (adjacentBits[idx][rowColumn] >= 5) {\n scores[idx] += 3 + adjacentBits[idx][rowColumn] - 5;\n }\n\n adjacentBits[idx][rowColumn] = 1;\n }\n}\n\nexport function calculateDarkModulesRatioScore(darkModules, total) {\n let percent = Math.floor((darkModules / total) * 100),\n mod5 = percent % 5,\n previous = Math.abs(percent - mod5 - 50),\n next = Math.abs(percent + 5 - mod5 - 50),\n score = 10 * Math.min(previous / 5, next / 5);\n\n return score;\n}\n\nexport function createQRCodeDataEncoder(encoding) {\n if (encoding && encoding.toLowerCase().indexOf(\"utf_8\") >= 0) {\n return new Utf8Encoder();\n }\n\n return new IsoEncoder();\n}\n\nexport function encodeData(inputString, errorCorrectionLevel, encoding) {\n let encoder = createQRCodeDataEncoder(encoding),\n encodingResult = encoder.getEncodingResult(inputString, errorCorrectionLevel),\n version = encodingResult.version,\n versionInformation = VersionsCodewordsInformation[version - 1][errorCorrectionLevel],\n dataString = padDataString(encodingResult.dataString, versionInformation.totalDataCodewords),\n blocks = getBlocks(dataString, versionInformation),\n matrices = initMatrices(version);\n\n addFinderPatterns(matrices);\n addAlignmentPatterns(matrices, version);\n addTimingFunctions(matrices);\n\n if (version >= 7) {\n addVersionInformation(matrices, toBitsString(0, 18));\n }\n\n addFormatInformation(matrices, toBitsString(0, 15));\n fillData(matrices, blocks);\n\n let minIdx = scoreMaskMatrixes(matrices),\n optimalMatrix = matrices[minIdx];\n\n if (version >= 7) {\n addVersionInformation([optimalMatrix], encodeVersionInformation(version));\n }\n\n let formatString = errorCorrectionPatterns[errorCorrectionLevel] + toBitsString(minIdx, 3);\n addFormatInformation([optimalMatrix], encodeFormatInformation(formatString));\n\n return optimalMatrix;\n}\n","import { Class } from '../../../common';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport class QRDataMode extends Class {\n constructor() {\n super();\n\n this.initProperties();\n }\n\n initProperties() {\n extend(this, {\n modeIndicator: \"\",\n bitsInCharacterCount: []\n });\n }\n\n getVersionIndex(version) {\n if (version < 10) {\n return 0;\n } else if (version > 26) {\n return 2;\n }\n\n return 1;\n }\n\n getBitsCharacterCount(version) {\n return this.bitsInCharacterCount[this.getVersionIndex(version || 40)];\n }\n\n getModeCountString(length, version) {\n return this.modeIndicator + toBitsString(length, this.getBitsCharacterCount(version));\n }\n\n encode() { }\n\n getStringBitsLength() { }\n\n getValue() { }\n}\n","import { NumericQRDataMode } from './numeric-data-mode';\nimport { AlphaNumericQRDataMode } from './alpha-numeric-data-mode';\nimport { ByteQRDataMode } from './byte-data-mode';\n\nconst NUMERIC = \"numeric\";\nconst ALPHA_NUMERIC = \"alphanumeric\";\nconst BYTE = \"byte\";\n\nexport let DataModeInstances = {\n [NUMERIC]: new NumericQRDataMode(),\n [ALPHA_NUMERIC]: new AlphaNumericQRDataMode(),\n [BYTE]: new ByteQRDataMode()\n};\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport class NumericQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n bitsInCharacterCount: [10, 12, 14],\n modeIndicator: \"0001\"\n });\n }\n\n getValue(character) {\n return parseInt(character, 10);\n }\n\n encode(str, version) {\n let mode = this,\n parts = splitInto(str, 3),\n result = mode.getModeCountString(str.length, version);\n let i;\n\n for (i = 0; i < parts.length - 1; i++) {\n result += toBitsString(parts[i], 10);\n }\n\n return result + toBitsString(parts[i], 1 + 3 * parts[i].length);\n }\n\n getStringBitsLength(inputLength, version) {\n let mod3 = inputLength % 3;\n return 4 + this.getBitsCharacterCount(version) + 10 * Math.floor(inputLength / 3) + 3 * mod3 + (mod3 === 0 ? 0 : 1);\n }\n}\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport class AlphaNumericQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characters: {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"A\": 10,\n \"B\": 11,\n \"C\": 12,\n \"D\": 13,\n \"E\": 14,\n \"F\": 15,\n \"G\": 16,\n \"H\": 17,\n \"I\": 18,\n \"J\": 19,\n \"K\": 20,\n \"L\": 21,\n \"M\": 22,\n \"N\": 23,\n \"O\": 24,\n \"P\": 25,\n \"Q\": 26,\n \"R\": 27,\n \"S\": 28,\n \"T\": 29,\n \"U\": 30,\n \"V\": 31,\n \"W\": 32,\n \"X\": 33,\n \"Y\": 34,\n \"Z\": 35,\n \" \": 36,\n \"$\": 37,\n \"%\": 38,\n \"*\": 39,\n \"+\": 40,\n \"-\": 41,\n \".\": 42,\n \"/\": 43,\n \":\": 44\n },\n bitsInCharacterCount: [9, 11, 13],\n modeIndicator: \"0010\"\n });\n }\n\n getValue(character) {\n return this.characters[character];\n }\n\n encode(str, version) {\n let\n parts = splitInto(str, 2),\n result = this.getModeCountString(str.length, version),\n value;\n let i;\n\n for (i = 0; i < parts.length - 1; i++) {\n value = 45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1));\n result += toBitsString(value, 11);\n }\n\n value = parts[i].length === 2 ?\n 45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1)) :\n this.getValue(parts[i].charAt(0));\n\n return result + toBitsString(value, 1 + 5 * parts[i].length);\n }\n\n getStringBitsLength(inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 11 * Math.floor(inputLength / 2) + 6 * (inputLength % 2);\n }\n}\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport class ByteQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n bitsInCharacterCount: [8, 16, 16],\n modeIndicator: \"0100\"\n });\n }\n\n getValue(character) {\n let code = character.charCodeAt(0);\n\n if (code <= 127 || (160 <= code && code <= 255)) {\n return code;\n }\n\n throw new Error(`Unsupported character in QR Code: \"${character}\".`);\n }\n\n encode(str, version) {\n let mode = this,\n result = mode.getModeCountString(str.length, version);\n\n for (let i = 0; i < str.length; i++) {\n result += toBitsString(mode.getValue(str.charAt(i)), 8);\n }\n\n return result;\n }\n\n getStringBitsLength(inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 8 * inputLength;\n }\n}\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport { DataModeInstances } from '../data-modes/data-mode-instances';\nimport { extend } from '../../utils';\nimport { toBitsString } from '../../utils';\nimport { getVersion } from '../encoding';\n\nconst BYTE = \"byte\";\n\nexport class Utf8Encoder extends Class {\n constructor() {\n super();\n\n this.initProperties();\n\n this.mode = DataModeInstances[this.encodingMode];\n }\n\n initProperties() {\n extend(this, {\n encodingMode: BYTE,\n utfBOM: \"111011111011101110111111\",\n initialModeCountStringLength: 20,\n ranges: [128, 2048, 65536, 2097152, 67108864]\n });\n }\n\n getEncodingResult(inputString, errorCorrectionLevel) {\n let data = this.encode(inputString),\n dataCodewordsCount = this.getDataCodewordsCount(data),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = this.mode.getModeCountString(data.length / 8, version) + data;\n\n return new EncodingResult(dataString, version);\n }\n\n getDataCodewordsCount(data) {\n let dataLength = data.length,\n dataCodewordsCount = Math.ceil((this.initialModeCountStringLength + dataLength) / 8);\n\n return dataCodewordsCount;\n }\n\n encode(str) {\n let result = this.utfBOM;\n\n for (let i = 0; i < str.length; i++) {\n result += this.encodeCharacter(str.charCodeAt(i));\n }\n\n return result;\n }\n\n encodeCharacter(code) {\n let bytesCount = this.getBytesCount(code),\n bc = bytesCount - 1,\n result = \"\";\n\n if (bytesCount === 1) {\n result = toBitsString(code, 8);\n } else {\n let significantOnes = 8 - bytesCount;\n\n for (let i = 0; i < bc; i++) {\n result = toBitsString(code >> (i * 6) & 63 | 128, 8) + result;\n }\n\n result = ((code >> bc * 6) | ((255 >> significantOnes) << significantOnes)).toString(2) + result;\n }\n\n return result;\n }\n\n getBytesCount(code) {\n let ranges = this.ranges;\n\n for (let i = 0; i < ranges.length; i++) {\n if (code < ranges[i]) {\n return i + 1;\n }\n }\n }\n}\n","export const VersionsCodewordsInformation = [{\n L: {\n groups: [\n [1, 19]\n ],\n totalDataCodewords: 19,\n errorCodewordsPerBlock: 7\n },\n M: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 10\n },\n Q: {\n groups: [\n [1, 13]\n ],\n totalDataCodewords: 13,\n errorCodewordsPerBlock: 13\n },\n H: {\n groups: [\n [1, 9]\n ],\n totalDataCodewords: 9,\n errorCodewordsPerBlock: 17\n }\n}, {\n L: {\n groups: [\n [1, 34]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 10\n },\n M: {\n groups: [\n [1, 28]\n ],\n totalDataCodewords: 28,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [1, 22]\n ],\n totalDataCodewords: 22,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [1, 55]\n ],\n totalDataCodewords: 55,\n errorCodewordsPerBlock: 15\n },\n M: {\n groups: [\n [1, 44]\n ],\n totalDataCodewords: 44,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [2, 17]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 13]\n ],\n totalDataCodewords: 26,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [1, 80]\n ],\n totalDataCodewords: 80,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [2, 32]\n ],\n totalDataCodewords: 64,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 24]\n ],\n totalDataCodewords: 48,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [4, 9]\n ],\n totalDataCodewords: 36,\n errorCodewordsPerBlock: 16\n }\n}, {\n L: {\n groups: [\n [1, 108]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [2, 43]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [2, 15],\n [2, 16]\n ],\n totalDataCodewords: 62,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 11],\n [2, 12]\n ],\n totalDataCodewords: 46,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [2, 68]\n ],\n totalDataCodewords: 136,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 27]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [4, 19]\n ],\n totalDataCodewords: 76,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [4, 15]\n ],\n totalDataCodewords: 60,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [2, 78]\n ],\n totalDataCodewords: 156,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [4, 31]\n ],\n totalDataCodewords: 124,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 14],\n [4, 15]\n ],\n totalDataCodewords: 88,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [4, 13],\n [1, 14]\n ],\n totalDataCodewords: 66,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 97]\n ],\n totalDataCodewords: 194,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [2, 38],\n [2, 39]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 18],\n [2, 19]\n ],\n totalDataCodewords: 110,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [4, 14],\n [2, 15]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 116]\n ],\n totalDataCodewords: 232,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 36],\n [2, 37]\n ],\n totalDataCodewords: 182,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 16],\n [4, 17]\n ],\n totalDataCodewords: 132,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [4, 12],\n [4, 13]\n ],\n totalDataCodewords: 100,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 68],\n [2, 69]\n ],\n totalDataCodewords: 274,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 43],\n [1, 44]\n ],\n totalDataCodewords: 216,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [6, 19],\n [2, 20]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [6, 15],\n [2, 16]\n ],\n totalDataCodewords: 122,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 81]\n ],\n totalDataCodewords: 324,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [1, 50],\n [4, 51]\n ],\n totalDataCodewords: 254,\n errorCodewordsPerBlock: 30\n },\n Q: {\n groups: [\n [4, 22],\n [4, 23]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [3, 12],\n [8, 13]\n ],\n totalDataCodewords: 140,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 92],\n [2, 93]\n ],\n totalDataCodewords: 370,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [6, 36],\n [2, 37]\n ],\n totalDataCodewords: 290,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 20],\n [6, 21]\n ],\n totalDataCodewords: 206,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [7, 14],\n [4, 15]\n ],\n totalDataCodewords: 158,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 107]\n ],\n totalDataCodewords: 428,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 37],\n [1, 38]\n ],\n totalDataCodewords: 334,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [8, 20],\n [4, 21]\n ],\n totalDataCodewords: 244,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [12, 11],\n [4, 12]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [3, 115],\n [1, 116]\n ],\n totalDataCodewords: 461,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 40],\n [5, 41]\n ],\n totalDataCodewords: 365,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [11, 16],\n [5, 17]\n ],\n totalDataCodewords: 261,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [11, 12],\n [5, 13]\n ],\n totalDataCodewords: 197,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 87],\n [1, 88]\n ],\n totalDataCodewords: 523,\n errorCodewordsPerBlock: 22\n },\n M: {\n groups: [\n [5, 41],\n [5, 42]\n ],\n totalDataCodewords: 415,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [5, 24],\n [7, 25]\n ],\n totalDataCodewords: 295,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 12],\n [7, 13]\n ],\n totalDataCodewords: 223,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 98],\n [1, 99]\n ],\n totalDataCodewords: 589,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [7, 45],\n [3, 46]\n ],\n totalDataCodewords: 453,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 19],\n [2, 20]\n ],\n totalDataCodewords: 325,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [3, 15],\n [13, 16]\n ],\n totalDataCodewords: 253,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [1, 107],\n [5, 108]\n ],\n totalDataCodewords: 647,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [10, 46],\n [1, 47]\n ],\n totalDataCodewords: 507,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 22],\n [15, 23]\n ],\n totalDataCodewords: 367,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [17, 15]\n ],\n totalDataCodewords: 283,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [5, 120],\n [1, 121]\n ],\n totalDataCodewords: 721,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [9, 43],\n [4, 44]\n ],\n totalDataCodewords: 563,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [1, 23]\n ],\n totalDataCodewords: 397,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [19, 15]\n ],\n totalDataCodewords: 313,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [3, 113],\n [4, 114]\n ],\n totalDataCodewords: 795,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 44],\n [11, 45]\n ],\n totalDataCodewords: 627,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 21],\n [4, 22]\n ],\n totalDataCodewords: 445,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [9, 13],\n [16, 14]\n ],\n totalDataCodewords: 341,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [3, 107],\n [5, 108]\n ],\n totalDataCodewords: 861,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 41],\n [13, 42]\n ],\n totalDataCodewords: 669,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [15, 24],\n [5, 25]\n ],\n totalDataCodewords: 485,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [15, 15],\n [10, 16]\n ],\n totalDataCodewords: 385,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 116],\n [4, 117]\n ],\n totalDataCodewords: 932,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 42]\n ],\n totalDataCodewords: 714,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [6, 23]\n ],\n totalDataCodewords: 512,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [19, 16],\n [6, 17]\n ],\n totalDataCodewords: 406,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [2, 111],\n [7, 112]\n ],\n totalDataCodewords: 1006,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 46]\n ],\n totalDataCodewords: 782,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [16, 25]\n ],\n totalDataCodewords: 568,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [34, 13]\n ],\n totalDataCodewords: 442,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [4, 121],\n [5, 122]\n ],\n totalDataCodewords: 1094,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 47],\n [14, 48]\n ],\n totalDataCodewords: 860,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [14, 25]\n ],\n totalDataCodewords: 614,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [16, 15],\n [14, 16]\n ],\n totalDataCodewords: 464,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 117],\n [4, 118]\n ],\n totalDataCodewords: 1174,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 45],\n [14, 46]\n ],\n totalDataCodewords: 914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [16, 25]\n ],\n totalDataCodewords: 664,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [30, 16],\n [2, 17]\n ],\n totalDataCodewords: 514,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 106],\n [4, 107]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 47],\n [13, 48]\n ],\n totalDataCodewords: 1000,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [22, 25]\n ],\n totalDataCodewords: 718,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [13, 16]\n ],\n totalDataCodewords: 538,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [10, 114],\n [2, 115]\n ],\n totalDataCodewords: 1370,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [19, 46],\n [4, 47]\n ],\n totalDataCodewords: 1062,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [28, 22],\n [6, 23]\n ],\n totalDataCodewords: 754,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [33, 16],\n [4, 17]\n ],\n totalDataCodewords: 596,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 122],\n [4, 123]\n ],\n totalDataCodewords: 1468,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [22, 45],\n [3, 46]\n ],\n totalDataCodewords: 1128,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [8, 23],\n [26, 24]\n ],\n totalDataCodewords: 808,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [12, 15],\n [28, 16]\n ],\n totalDataCodewords: 628,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [3, 117],\n [10, 118]\n ],\n totalDataCodewords: 1531,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 45],\n [23, 46]\n ],\n totalDataCodewords: 1193,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [4, 24],\n [31, 25]\n ],\n totalDataCodewords: 871,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [31, 16]\n ],\n totalDataCodewords: 661,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [7, 116],\n [7, 117]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [21, 45],\n [7, 46]\n ],\n totalDataCodewords: 1267,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 23],\n [37, 24]\n ],\n totalDataCodewords: 911,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [26, 16]\n ],\n totalDataCodewords: 701,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [5, 115],\n [10, 116]\n ],\n totalDataCodewords: 1735,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [19, 47],\n [10, 48]\n ],\n totalDataCodewords: 1373,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 24],\n [25, 25]\n ],\n totalDataCodewords: 985,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [25, 16]\n ],\n totalDataCodewords: 745,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [3, 116]\n ],\n totalDataCodewords: 1843,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [2, 46],\n [29, 47]\n ],\n totalDataCodewords: 1455,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [42, 24],\n [1, 25]\n ],\n totalDataCodewords: 1033,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [28, 16]\n ],\n totalDataCodewords: 793,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115]\n ],\n totalDataCodewords: 1955,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [10, 46],\n [23, 47]\n ],\n totalDataCodewords: 1541,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [10, 24],\n [35, 25]\n ],\n totalDataCodewords: 1115,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [35, 16]\n ],\n totalDataCodewords: 845,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115],\n [1, 116]\n ],\n totalDataCodewords: 2071,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [21, 47]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [29, 24],\n [19, 25]\n ],\n totalDataCodewords: 1171,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [46, 16]\n ],\n totalDataCodewords: 901,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [6, 116]\n ],\n totalDataCodewords: 2191,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [23, 47]\n ],\n totalDataCodewords: 1725,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [44, 24],\n [7, 25]\n ],\n totalDataCodewords: 1231,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [59, 16],\n [1, 17]\n ],\n totalDataCodewords: 961,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [12, 121],\n [7, 122]\n ],\n totalDataCodewords: 2306,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [12, 47],\n [26, 48]\n ],\n totalDataCodewords: 1812,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [39, 24],\n [14, 25]\n ],\n totalDataCodewords: 1286,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [41, 16]\n ],\n totalDataCodewords: 986,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 121],\n [14, 122]\n ],\n totalDataCodewords: 2434,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 47],\n [34, 48]\n ],\n totalDataCodewords: 1914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [46, 24],\n [10, 25]\n ],\n totalDataCodewords: 1354,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [2, 15],\n [64, 16]\n ],\n totalDataCodewords: 1054,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 122],\n [4, 123]\n ],\n totalDataCodewords: 2566,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [29, 46],\n [14, 47]\n ],\n totalDataCodewords: 1992,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [49, 24],\n [10, 25]\n ],\n totalDataCodewords: 1426,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [24, 15],\n [46, 16]\n ],\n totalDataCodewords: 1096,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [4, 122],\n [18, 123]\n ],\n totalDataCodewords: 2702,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [13, 46],\n [32, 47]\n ],\n totalDataCodewords: 2102,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [48, 24],\n [14, 25]\n ],\n totalDataCodewords: 1502,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [42, 15],\n [32, 16]\n ],\n totalDataCodewords: 1142,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [20, 117],\n [4, 118]\n ],\n totalDataCodewords: 2812,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [40, 47],\n [7, 48]\n ],\n totalDataCodewords: 2216,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [43, 24],\n [22, 25]\n ],\n totalDataCodewords: 1582,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [10, 15],\n [67, 16]\n ],\n totalDataCodewords: 1222,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [19, 118],\n [6, 119]\n ],\n totalDataCodewords: 2956,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [18, 47],\n [31, 48]\n ],\n totalDataCodewords: 2334,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [34, 24],\n [34, 25]\n ],\n totalDataCodewords: 1666,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [20, 15],\n [61, 16]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 30\n }\n}];\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n addClass,\n setDefaultOptions,\n deepExtend,\n defaultErrorHandler\n} from '../common';\n\nimport { Box } from '../core';\nimport { encodeData } from './encodings/encoding';\nimport { extend } from './utils';\n\nimport { surfaceSize } from '../barcode/surface-size';\n\nconst round = Math.round;\nconst crossPattern = [[0, 1], [1, 1], [1, 2], [2, 2], [2, 1], [3, 1], [3, 0], [2, 0], [2, -1], [1, -1], [1, 0]];\nconst squarePattern = [[0, 1], [1, 1], [1, 0]];\n\nconst QRCodeDefaults = {\n DEFAULT_SIZE: 200,\n QUIET_ZONE_LENGTH: 4,\n DEFAULT_ERROR_CORRECTION_LEVEL: \"L\",\n DEFAULT_BACKGROUND: \"#fff\",\n DEFAULT_DARK_MODULE_COLOR: \"#000\",\n MIN_BASE_UNIT_SIZE: 1,\n DEFAULT_LOGO_SIZE: 7\n};\n\nclass QRCode extends Class {\n constructor(element, options, errorHandler = defaultErrorHandler) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.wrapper = this.element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n\n this.setOptions(options);\n }\n\n destroy() {\n this._destroySurface();\n }\n\n _initElement() {\n addClass(this.element, \"k-qrcode\");\n }\n\n _initSurface() {\n const { options, surface } = this;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n }\n\n _createSurface() {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n }\n\n _destroySurface() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n }\n\n _initSurfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = \"relative\";\n this.element.appendChild(this.surfaceElement);\n }\n }\n\n _destroySurfaceElement() {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n }\n\n redraw() {\n let size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size,\n height: size\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n }\n\n getSize() {\n const element = this.element;\n const elementWidth = element.clientWidth;\n const elementHeight = element.clientHeight;\n const size = { width: 0, height: 0 };\n\n if (elementWidth > 0) {\n size.width = elementWidth;\n }\n\n if (elementHeight) {\n size.height = elementHeight;\n }\n\n return size;\n }\n\n _resize() {\n this.redraw();\n }\n\n createVisual() {\n this.visual = this._render();\n }\n\n exportVisual() {\n return this._render();\n }\n\n _render() {\n let value = this._value,\n baseUnit,\n border = this.options.border || {},\n padding = this.options.padding || 0,\n borderWidth = border.width || 0,\n quietZoneSize,\n matrix,\n size,\n dataSize,\n contentSize;\n\n border.width = borderWidth;\n\n let visual = new draw.Group();\n\n try {\n if (value) {\n matrix = encodeData(value, this.options.errorCorrection, this.options.encoding);\n size = this._getSize();\n contentSize = size - 2 * (borderWidth + padding);\n baseUnit = this._calculateBaseUnit(contentSize, matrix.length);\n dataSize = matrix.length * baseUnit;\n quietZoneSize = borderWidth + padding + (contentSize - dataSize) / 2;\n\n visual.append(this._renderBackground(size, border));\n visual.append(this._renderMatrix(matrix, baseUnit, quietZoneSize));\n\n if (this._hasCustomLogo()) {\n visual.append(this._renderLogo(size, baseUnit));\n } else if (this._isSwiss()) {\n visual.append(this._renderSwissCode(size, baseUnit));\n }\n }\n } catch (error) {\n this.onError(error);\n }\n\n return visual;\n }\n\n _renderLogo(qrSize, baseUnit) {\n let image;\n let imageRect;\n let center = round(qrSize / 2);\n let logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n let logoUrl = this.options.overlay.imageUrl;\n let position = {\n x: center - logoSize.width / 2,\n y: center - logoSize.height / 2\n };\n\n imageRect = new geom.Rect(\n new geom.Point(position.x, position.y),\n new geom.Size(logoSize.width, logoSize.height)\n );\n\n image = new draw.Image(logoUrl, imageRect);\n\n return image;\n }\n\n _renderSwissCode(qrSize, baseUnit) {\n let logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n logoSize = Math.max(logoSize.width, logoSize.height);\n let crossSize = logoSize / 4;\n let crossOffset = crossSize / 2;\n let center = qrSize / 2;\n let start = {};\n let visual = new draw.Group();\n\n start.x = start.y = Math.ceil(center - baseUnit - logoSize / 2);\n visual.append(this._renderShape(start, Math.ceil(logoSize + baseUnit * 2), squarePattern, \"#fff\"));\n\n start.x = start.y = center - logoSize / 2;\n visual.append(this._renderShape(start, logoSize, squarePattern, this.options.color));\n\n start.x = center + crossOffset - logoSize / 2;\n start.y = center + crossOffset + crossSize - logoSize / 2;\n visual.append(this._renderShape(start, crossSize, crossPattern, \"#fff\"));\n\n return visual;\n }\n\n _renderShape(start, step, pattern, color) {\n let path = new draw.MultiPath({\n fill: {\n color: color\n },\n stroke: null\n });\n\n path.moveTo(start.x, start.y);\n\n for (let i = 0; i < pattern.length; i++) {\n path.lineTo(start.x + step * pattern[i][0], start.y + step * pattern[i][1]);\n }\n\n path.close();\n\n return path;\n }\n\n _getSize() {\n let size;\n\n if (this.options.size) {\n size = parseInt(this.options.size, 10);\n } else {\n const element = this.element;\n const elementSize = surfaceSize(element, this.options.renderAs);\n const min = Math.min(elementSize.width, elementSize.height);\n\n if (min > 0) {\n size = min;\n } else {\n size = QRCodeDefaults.DEFAULT_SIZE;\n }\n }\n\n return size;\n }\n\n _calculateBaseUnit(size, matrixSize) {\n let baseUnit = Math.floor(size / matrixSize);\n\n if (baseUnit < QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n const minSize = Math.ceil(matrixSize * QRCodeDefaults.MIN_BASE_UNIT_SIZE);\n this.onError(new Error(\n `Insufficient size for QR Code: the current size is ${size}px and the minimum size is ${minSize}px.`\n ));\n } else if (baseUnit * matrixSize >= size &&\n baseUnit - 1 >= QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n baseUnit--;\n }\n\n return baseUnit;\n }\n\n _renderMatrix(matrix, baseUnit, quietZoneSize) {\n let path = new draw.MultiPath({\n fill: {\n color: this.options.color\n },\n stroke: null\n });\n\n for (let row = 0; row < matrix.length; row++) {\n let y = quietZoneSize + row * baseUnit;\n let column = 0;\n\n while (column < matrix.length) {\n while (matrix[row][column] === 0 && column < matrix.length) {\n column++;\n }\n\n if (column < matrix.length) {\n let x = column;\n while (matrix[row][column] === 1) {\n column++;\n }\n\n let x1 = round(quietZoneSize + x * baseUnit);\n let y1 = round(y);\n let x2 = round(quietZoneSize + column * baseUnit);\n let y2 = round(y + baseUnit);\n\n path.moveTo(x1, y1)\n .lineTo(x1, y2)\n .lineTo(x2, y2)\n .lineTo(x2, y1)\n .close();\n }\n }\n }\n\n return path;\n }\n\n _renderBackground(size, border) {\n const box = new Box(0, 0, size, size).unpad(border.width / 2);\n const background = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: this.options.background\n },\n stroke: {\n color: border.color,\n width: border.width\n }\n });\n\n return background;\n }\n\n setOptions(options) {\n let newOptions = options || {};\n this.options = extend(this.options, newOptions);\n\n if (options.value !== undefined) {\n this._value = String(this.options.value);\n }\n\n this._initSurface();\n this.redraw();\n }\n\n value(value) {\n if (value === undefined) {\n return this._value;\n }\n\n this._value = String(value);\n\n this.redraw();\n }\n\n _hasCustomLogo() {\n return Boolean(this.options.overlay.imageUrl);\n }\n\n _isSwiss() {\n return this.options.overlay.type === \"swiss\";\n }\n\n _getLogoSize(defautLogoSize) {\n let width = this.options.overlay.width;\n let height = this.options.overlay.height;\n\n if (!width && !height) {\n width = height = defautLogoSize;\n } else if (width && !height) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n return {\n width: width,\n height: height\n };\n }\n}\n\nsetDefaultOptions(QRCode, {\n name: \"QRCode\",\n renderAs: \"svg\",\n encoding: \"ISO_8859_1\",\n value: \"\",\n errorCorrection: QRCodeDefaults.DEFAULT_ERROR_CORRECTION_LEVEL,\n background: QRCodeDefaults.DEFAULT_BACKGROUND,\n color: QRCodeDefaults.DEFAULT_DARK_MODULE_COLOR,\n size: \"\",\n padding: 0,\n border: {\n color: \"\",\n width: 0\n },\n overlay: {\n type: \"image\",\n imageUrl: \"\",\n width: 0,\n height: 0\n }\n});\n\nexport default QRCode;\n","import { encodeData } from './encodings/encoding';\n\nconst ISO = 'ISO_8859_1';\n\nfunction qrcodeValidator(encoding = ISO) {\n return function(value) {\n try {\n encodeData(value, 'L', encoding);\n } catch (error) {\n return {\n valid: false,\n error\n };\n }\n\n return {\n valid: true\n };\n };\n}\n\nexport default qrcodeValidator;\n","// Coordinate reference system\n// World Geodetic System of 1984\nconst WGS84 = {\n a: 6378137, // Semi-major radius\n b: 6356752.314245179, // Semi-minor radius\n f: 0.0033528106647474805, // Flattening\n e: 0.08181919084262149 // Eccentricity\n};\n\n// Geographic coordinate systems use a spheroid to calculate positions on the earth.\n// A datum defines the position of the spheroid relative to the center of the earth\n// it provides a frame of reference for measuring locations on the surface of the earth\n// and defines the origin and orientation of latitude and longitude lines.\nexport const datums = {\n WGS84\n};\n","import {\n Class,\n deepExtend,\n deg,\n rad,\n round,\n defined\n} from '../common';\n\nimport {\n datums\n} from './datums';\n\nfunction toSquare(value) {\n return value * value;\n}\n\n\nlet math = Math,\n abs = math.abs,\n atan = math.atan,\n atan2 = math.atan2,\n cos = math.cos,\n sin = math.sin,\n tan = math.tan;\n\nexport class Location extends Class {\n constructor(lat, lng) {\n super();\n\n this.initProperties();\n\n if (arguments.length === 1) {\n this.lat = lat[0];\n this.lng = lat[1];\n } else {\n this.lat = lat;\n this.lng = lng;\n }\n }\n\n initProperties() {\n deepExtend(this, {\n DISTANCE_ITERATIONS: 100,\n DISTANCE_CONVERGENCE: 1e-12,\n DISTANCE_PRECISION: 2,\n FORMAT: '{0:N6}{1:N6}'\n });\n }\n\n toArray() {\n return [\n this.lat,\n this.lng\n ];\n }\n\n equals(loc) {\n return loc && loc.lat === this.lat && loc.lng === this.lng;\n }\n\n clone() {\n return new Location(this.lat, this.lng);\n }\n\n round(precision) {\n this.lng = round(this.lng, precision);\n this.lat = round(this.lat, precision);\n return this;\n }\n\n wrap() {\n this.lng = this.lng % 180;\n this.lat = this.lat % 90;\n return this;\n }\n\n distanceTo(dest, datum) {\n return this.greatCircleTo(dest, datum).distance;\n }\n\n destination(distance, initialBearing, initialDatum) {\n let bearing = rad(initialBearing);\n let datum = initialDatum || datums.WGS84;\n let fromLat = rad(this.lat);\n let fromLng = rad(this.lng);\n let dToR = distance / datum.a;\n let lat = math.asin(sin(fromLat) * cos(dToR) + cos(fromLat) * sin(dToR) * cos(bearing));\n let lng = fromLng + atan2(sin(bearing) * sin(dToR) * cos(fromLat), cos(dToR) - sin(fromLat) * sin(lat));\n\n return new Location(deg(lat), deg(lng));\n }\n\n greatCircleTo(initialDest, initialDatum) {\n let dest = Location.create(dest);\n let datum = initialDatum || datums.WGS84;\n\n if (!dest || this.clone().round(8).equals(dest.clone().round(8))) {\n return {\n distance: 0,\n azimuthFrom: 0,\n azimuthTo: 0\n };\n }\n\n // See http://en.wikipedia.org/wiki/Vincenty's_formulae#Notation\n // o == sigma\n // A == alpha\n\n let a = datum.a;\n let b = datum.b;\n let f = datum.f;\n let L = rad(dest.lng - this.lng);\n let U1 = atan((1 - f) * tan(rad(this.lat)));\n let sinU1 = sin(U1);\n let cosU1 = cos(U1);\n let U2 = atan((1 - f) * tan(rad(dest.lat)));\n let sinU2 = sin(U2);\n let cosU2 = cos(U2);\n let lambda = L;\n let prevLambda;\n let i = this.DISTANCE_ITERATIONS;\n let converged = false;\n let sinLambda;\n let cosLambda;\n let sino;\n let cosA2;\n let coso;\n let cos2om;\n let sigma;\n\n while (!converged && i-- > 0) {\n sinLambda = sin(lambda);\n cosLambda = cos(lambda);\n sino = math.sqrt(toSquare(cosU2 * sinLambda) + toSquare(cosU1 * sinU2 - sinU1 * cosU2 * cosLambda));\n coso = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;\n sigma = atan2(sino, coso);\n\n let sinA = cosU1 * cosU2 * sinLambda / sino;\n cosA2 = 1 - toSquare(sinA);\n cos2om = 0;\n\n if (cosA2 !== 0) {\n cos2om = coso - 2 * sinU1 * sinU2 / cosA2;\n }\n\n prevLambda = lambda;\n let C = f / 16 * cosA2 * (4 + f * (4 - 3 * cosA2));\n lambda = L + (1 - C) * f * sinA * (sigma + C * sino * (cos2om + C * coso * (-1 + 2 * toSquare(cos2om))));\n converged = abs(lambda - prevLambda) <= this.DISTANCE_CONVERGENCE;\n }\n\n let u2 = cosA2 * (toSquare(a) - toSquare(b)) / toSquare(b);\n let A = 1 + u2 / 16384 * (4096 + u2 * (-768 + u2 * (320 - 175 * u2)));\n let B = u2 / 1024 * (256 + u2 * (-128 + u2 * (74 - 47 * u2)));\n let deltao = B * sino * (cos2om + B / 4 * (coso * (-1 + 2 * toSquare(cos2om)) - B / 6 * cos2om * (-3 + 4 * toSquare(sino)) * (-3 + 4 * toSquare(cos2om))));\n\n let azimuthFrom = atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);\n let azimuthTo = atan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda);\n\n return {\n distance: round(b * A * (sigma - deltao), this.DISTANCE_PRECISION),\n azimuthFrom: deg(azimuthFrom),\n azimuthTo: deg(azimuthTo)\n };\n }\n\n // IE < 9 doesn't allow to override toString on definition\n toString() {\n // return kendo.format(this.FORMAT, this.lat, this.lng);\n return String(this.lat) + \",\" + String(this.lng);\n }\n\n static fromLngLat(lngAndLat) {\n return new Location(lngAndLat[1], lngAndLat[0]);\n }\n\n static fromLatLng(lngAndLat) {\n return new Location(lngAndLat[0], lngAndLat[1]);\n }\n\n static create(a, b) {\n if (defined(a)) {\n if (a instanceof Location) {\n return a.clone();\n } else if (arguments.length === 1 && a.length === 2) {\n return Location.fromLatLng(a);\n }\n\n return new Location(a, b);\n }\n }\n}\n","import {\n geometry as g\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n setDefaultOptions,\n limitValue,\n rad,\n deg,\n deepExtend\n} from '../common';\n\nimport {\n Location\n} from './location';\n\nimport {\n datums\n} from './datums';\n\n\nlet math = Math,\n atan = math.atan,\n exp = math.exp,\n pow = math.pow,\n sin = math.sin,\n log = math.log,\n tan = math.tan,\n Point = g.Point;\n\nlet PI = math.PI,\n PI_DIV_2 = PI / 2,\n PI_DIV_4 = PI / 4,\n DEG_TO_RAD = PI / 180;\n\nlet WGS84 = datums.WGS84;\n\n// WGS 84 / World Mercator\nexport class Mercator extends Class {\n constructor(options) {\n super();\n this.initProperties();\n this._initOptions(options);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n initProperties() {\n // super.initProperties();\n\n deepExtend(this, {\n MAX_LNG: 180,\n MAX_LAT: 85.0840590501,\n INVERSE_ITERATIONS: 15,\n INVERSE_CONVERGENCE: 1e-12\n });\n }\n\n forward(loc, clamp) {\n let proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lat = limitValue(loc.lat, -proj.MAX_LAT, proj.MAX_LAT),\n lng = clamp ? limitValue(loc.lng, -proj.MAX_LNG, proj.MAX_LNG) : loc.lng,\n x = rad(lng - lng0) * r,\n y = proj._projectLat(lat);\n return new Point(x, y);\n }\n _projectLat(lat) {\n let datum = this.options.datum,\n ecc = datum.e,\n r = datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2),\n con = ecc * sin(y),\n p = pow((1 - con) / (1 + con), ecc / 2);\n\n // See: http://en.wikipedia.org/wiki/Mercator_projection#Generalization_to_the_ellipsoid\n return r * log(ts * p);\n }\n inverse(point, clamp) {\n let proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lng = point.x / (DEG_TO_RAD * r) + lng0,\n lat = limitValue(proj._inverseY(point.y), -proj.MAX_LAT, proj.MAX_LAT);\n if (clamp) {\n lng = limitValue(lng, -proj.MAX_LNG, proj.MAX_LNG);\n }\n return new Location(lat, lng);\n }\n _inverseY(y) {\n let proj = this,\n datum = proj.options.datum,\n r = datum.a,\n ecc = datum.e,\n ecch = ecc / 2,\n ts = exp(-y / r),\n phi = PI_DIV_2 - 2 * atan(ts),\n i;\n for (i = 0; i <= proj.INVERSE_ITERATIONS; i++) {\n let con = ecc * sin(phi),\n p = pow((1 - con) / (1 + con), ecch),\n dphi = PI_DIV_2 - 2 * atan(ts * p) - phi;\n phi += dphi;\n if (math.abs(dphi) <= proj.INVERSE_CONVERGENCE) {\n break;\n }\n }\n return deg(phi);\n }\n}\n\nsetDefaultOptions(Mercator, {\n centralMeridian: 0,\n datum: WGS84\n});\n\n\n// WGS 84 / Pseudo-Mercator\n// Used by Google Maps, Bing, OSM, etc.\n// Spherical projection of ellipsoidal coordinates.\nexport class SphericalMercator extends Mercator {\n initProperties() {\n super.initProperties();\n\n deepExtend(this, {\n MAX_LAT: 85.0511287798\n });\n }\n\n _projectLat(lat) {\n let r = this.options.datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2);\n return r * log(ts);\n }\n\n _inverseY(y) {\n let r = this.options.datum.a,\n ts = exp(-y / r);\n return deg(PI_DIV_2 - 2 * atan(ts));\n }\n}\n\nexport class Equirectangular extends Class {\n forward(loc) {\n return new Point(loc.lng, loc.lat);\n }\n inverse(point) {\n return new Location(point.y, point.x);\n }\n}\n\n// This is the projected coordinate system used for rendering maps in Google Maps, OpenStreetMap, etc\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Certain Web mapping and visualisation applications. It is not a recognised geodetic system: for that see ellipsoidal Mercator CRS code 3395 (WGS 84 / World Mercator).\n// Remarks: Uses spherical development of ellipsoidal coordinates. Relative to WGS 84 / World Mercator (CRS code 3395) errors of 0.7 percent in scale and differences in northing of up to 43km in the map (equivalent to 21km on the ground) may arise.\n// Area of use: World between 85.06°S and 85.06°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (X,Y). Orientations: east, north. UoM: m.\n// https://epsg.io/3857\nexport class EPSG3857 extends Class {\n constructor() {\n super();\n let crs = this,\n proj = crs._proj = new SphericalMercator();\n let c = this.c = 2 * PI * proj.options.datum.a;\n\n // transfrom matrix\n // Scale circumference to 1, mirror Y and shift origin to top left\n this._tm = g.transform().translate(0.5, 0.5).scale(1 / c, -1 / c);\n\n // Inverse transform matrix\n this._itm = g.transform().scale(c, -c).translate(-0.5, -0.5);\n }\n\n // Location <-> Point (screen coordinates for a given scale)\n toPoint(loc, scale, clamp) {\n let point = this._proj.forward(loc, clamp);\n return point.transform(this._tm).scale(scale || 1);\n }\n toLocation(point, scale, clamp) {\n let newPoint = point.clone().scale(1 / (scale || 1)).transform(this._itm);\n return this._proj.inverse(newPoint, clamp);\n }\n}\n\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Very small scale mapping.\n// Remarks: Euro-centric view of world excluding polar areas.\n// Area of use: World between 80°S and 84°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (E,N). Orientations: east, north. UoM: m.\n// https://epsg.io/3395\nexport class EPSG3395 extends Class {\n constructor() {\n super();\n this._proj = new Mercator();\n }\n toPoint(loc) {\n return this._proj.forward(loc);\n }\n toLocation(point) {\n return this._proj.inverse(point);\n }\n}\n\n// Unit: degree\n// Geodetic CRS: WGS 84\n// Scope: Horizontal component of 3D system. Used by the GPS satellite navigation system and for NATO military geodetic surveying.\n// Area of use: World.\n// Coordinate system: Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: degree\n// https://epsg.io/4326\nexport class EPSG4326 extends Class {\n constructor() {\n super();\n this._proj = new Equirectangular();\n }\n toPoint(loc) {\n return this._proj.forward(loc);\n }\n toLocation(point) {\n return this._proj.inverse(point);\n }\n}\n","import {\n isFunction,\n isArray\n} from '../common';\n\n/* eslint-disable arrow-body-style */\n\nconst defineProperty = Object.defineProperty;\n\nexport const extend = Object.assign;\n\nexport let convertToHtml = (html) => {\n const div = document.createElement(\"div\");\n div.innerHTML = html;\n return div.firstChild;\n};\n\nexport let appendHtml = (html, element) => {\n const div = document.createElement('div');\n div.innerHTML = html;\n\n // use childNodes instead of children\n // to cover text nodes as well\n while (div.childNodes.length > 0) {\n element.appendChild(div.childNodes[0]);\n }\n};\n\nexport let removeChildren = (element) => {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n};\n\nexport let prepend = (element, originElement) => {\n originElement.insertBefore(element, originElement.firstChild);\n};\n\nexport let wrapInner = (parent, wrapper) => {\n parent.appendChild(wrapper);\n\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n};\n\nexport let toHyphens = (str) => {\n const result = str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n\n return result;\n};\n\nexport let toPixels = (value) => {\n let result;\n\n if (value && String(value).endsWith(\"px\")) {\n result = value;\n } else {\n result = String(value) + \"px\";\n }\n\n return result;\n};\n\nconst detectOS = (ua) => {\n let os = false, minorVersion, match = [],\n // notAndroidPhone = !/mobile safari/i.test(ua),\n agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n },\n osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n },\n formFactorRxs = {\n tablet: /playbook|ipad|fire/i\n },\n browserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n };\n\n for (let agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent === \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\n\n os = {};\n os.device = agent;\n os.tablet = testRegex(agent, formFactorRxs, false);\n os.browser = testRegex(ua, browserRxs, \"default\");\n os.name = testRegex(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = (match[3] || \"0\").replace(\"_\", \".\");\n minorVersion = os.minorVersion.replace(\".\", \"\").substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join(\"0\"));\n\n\n break;\n }\n }\n }\n\n return os;\n};\n\nfunction testRegex(agent, regexes, dflt) {\n for (let regex in regexes) {\n if (regexes.hasOwnProperty(regex) && regexes[regex].test(agent)) {\n return regex;\n }\n }\n return dflt !== undefined ? dflt : agent;\n}\n\nexport let hasNativeScrolling = (userAgent) => {\n const os = detectOS(userAgent);\n return os.ios || os.android;\n};\n\nconst detectBrowser = (userAgent) => {\n let browser = false,\n match = [],\n browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n\n for (let agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = userAgent.match(browserRxs[agent]);\n\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n};\n\nexport let getEventMap = () => {\n let eventMap = {\n down: \"touchstart mousedown\",\n move: \"mousemove touchmove\",\n up: \"mouseup touchend touchcancel\",\n cancel: \"mouseleave touchcancel\"\n };\n\n const support = getSupportedFeatures();\n\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n eventMap = {\n down: \"touchstart\",\n move: \"touchmove\",\n up: \"touchend touchcancel\",\n cancel: \"touchcancel\"\n };\n } else if (support.pointers) {\n eventMap = {\n down: \"pointerdown\",\n move: \"pointermove\",\n up: \"pointerup\",\n cancel: \"pointercancel pointerleave\"\n };\n } else if (support.msPointers) {\n eventMap = {\n down: \"MSPointerDown\",\n move: \"MSPointerMove\",\n up: \"MSPointerUp\",\n cancel: \"MSPointerCancel MSPointerLeave\"\n };\n }\n\n return eventMap;\n};\n\nexport const getSupportedFeatures = () => {\n const os = detectOS(navigator.userAgent);\n const browser = detectBrowser(navigator.userAgent);\n\n let chrome = browser.chrome,\n mobileChrome = browser.crios,\n mozilla = browser.mozilla,\n safari = browser.safari;\n\n const support = {};\n\n support.mobileOS = os;\n support.touch = \"ontouchstart\" in window;\n support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n support.eventCapture = document.documentElement.addEventListener;\n\n let table = document.createElement(\"table\");\n\n let transitions = support.transitions = false,\n transforms = support.transforms = false;\n\n const STRING = \"string\";\n\n [\"Moz\", \"webkit\", \"O\", \"ms\"].forEach(function(prefix) {\n let hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\n\n if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\n let lowPrefix = prefix.toLowerCase();\n\n transforms = {\n css: (lowPrefix !== \"ms\") ? \"-\" + lowPrefix + \"-\" : \"\",\n prefix: prefix,\n event: (lowPrefix === \"o\" || lowPrefix === \"webkit\") ? lowPrefix : \"\"\n };\n\n if (hasTransitions) {\n transitions = transforms;\n transitions.event = transitions.event ? transitions.event + \"TransitionEnd\" : \"transitionend\";\n }\n\n return false;\n }\n });\n\n table = null;\n\n support.transforms = transforms;\n support.transitions = transitions;\n\n support.delayedClick = function() {\n // only the mobile devices with touch events do this.\n if (support.touch) {\n // All iOS devices so far (by the time I am writing this, iOS 9.0.2 is the latest),\n // delay their click events.\n if (support.mobileOS.ios) {\n return true;\n }\n\n if (support.mobileOS.android) {\n\n if (!support.browser.chrome) { // older webkits and webviews delay the click\n return true;\n }\n\n // from here on, we deal with Chrome on Android.\n if (support.browser.version < 32) {\n return false;\n }\n\n // Chrome 32+ does conditional fast clicks if the view port is not user scalable.\n const meta = document.querySelector(\"meta[name=viewport]\");\n const contentAttr = meta ? meta.getAttribute(\"content\") : \"\";\n return !contentAttr.match(/user-scalable=no/i);\n }\n }\n\n return false;\n };\n\n return support;\n};\n\nexport const ownsElement = (parent, element) => {\n if (!element) {\n return false;\n }\n\n let node = element.parentNode;\n\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n\n node = node.parentNode;\n }\n\n return false;\n};\n\nexport const contains = (parent, element) => {\n return parent === element || ownsElement(parent, element);\n};\n\nexport const proxy = (method, context) => {\n return method.bind(context);\n};\n\nfunction isString(value) {\n return typeof(value) === \"string\";\n}\n\nexport const on = (element, events, filter, handler, useCapture) => {\n addEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport const addEventListeners = (element, events, filter, handler, useCapture) => {\n const eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n addEventListener(element, eventName, filter, handler, useCapture);\n });\n};\n\nexport const addEventListener = (element, event, filter, handler, useCapture) => {\n let eventHandler = handler;\n let eventFilter;\n\n if (filter && isFunction(filter) && !handler) {\n eventHandler = filter;\n } else if (filter && isString(filter) && isFunction(eventHandler)) {\n eventFilter = filter;\n }\n\n element.addEventListener(event, function(e) {\n const closestMatchingTarget = e.target ? e.target.closest(eventFilter) : null;\n\n if (!eventFilter ||\n (eventFilter && e.target && closestMatchingTarget)) {\n const currentTarget = eventFilter ? closestMatchingTarget : e.currentTarget;\n\n // reassign the property as it is a getters only\n defineProperty(e, \"currentTarget\", { value: currentTarget });\n // keep a reference to the top-level target\n defineProperty(e, \"delegateTarget\", { value: element });\n\n eventHandler(e);\n }\n }, Boolean(useCapture));\n};\n\nexport const off = (element, events, filter, handler, useCapture) => {\n removeEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport const removeEventListeners = (element, events, handler, useCapture) => {\n const eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n removeEventListener(element, eventName, handler, useCapture);\n });\n};\n\nexport const removeEventListener = (element, event, handler, useCapture) => {\n element.removeEventListener(event, handler, Boolean(useCapture));\n};\n\nexport const applyEventMap = (events) => {\n const eventMap = getEventMap(navigator.userAgent);\n function queryEventMap(e) {\n return eventMap[e] || e;\n }\n\n const eventRegEx = /([^ ]+)/g;\n const appliedEvents = events.replace(eventRegEx, queryEventMap);\n\n return appliedEvents;\n};\n\nexport const setDefaultEvents = (type, events) => {\n const proto = type.prototype;\n\n if (proto.events) {\n events.forEach(event => {\n if (proto.events.indexOf(event) < 0) {\n proto.events.push(event);\n }\n });\n } else {\n proto.events = events;\n }\n};\n\nexport const wheelDeltaY = (jQueryEvent) => {\n const e = jQueryEvent.originalEvent || jQueryEvent;\n const deltaY = e.wheelDeltaY;\n let delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\n delta = (-e.detail) * 10;\n }\n\n return delta;\n};\n\nexport const guid = () => {\n let id = \"\";\n let i;\n let random;\n\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16); // eslint-disable-line no-nested-ternary\n }\n\n return id;\n};\n\nexport const now = () => {\n return Number(new Date());\n};\n\nexport const noop = () => {};\n\n/* eslint-enable arrow-body-style */\n","import {\n Class\n} from '../../common';\n\nconst STRING = \"string\";\nconst FUNCTION = \"function\";\n\nlet preventDefault = function() {\n this._defaultPrevented = true;\n};\n\nlet isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n};\n\nexport class Observable extends Class {\n constructor() {\n super();\n this._events = {};\n }\n\n destroy() {\n this.unbind();\n }\n\n bind(event, handlers, one) {\n let that = this,\n idx,\n eventNames = typeof event === STRING ? [event] : event || [],\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined) {\n for (idx in event) {\n that.bind(idx, event[idx]);\n }\n\n return that;\n }\n\n /* eslint-disable no-loop-func */\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n let eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n\n handler.original = original;\n }\n\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n /* eslint-enable no-loop-func */\n\n return that;\n }\n\n one(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n }\n\n first(eventName, handlers) {\n let that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n let eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n events = that._events[eventName] = that._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n }\n\n trigger(eventName, eventArgs) {\n let that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n let e = eventArgs || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n }\n\n unbind(eventName, handler) {\n let that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n }\n\n _setEvents(options) {\n const length = (this.events || []).length;\n\n for (let idx = 0; idx < length; idx ++) {\n let e = this.events[idx];\n\n if (this.options[e] && options[e]) {\n this.unbind(e, this.options[e]);\n\n if (this._events && this._events[e]) {\n delete this._events[e];\n }\n }\n }\n\n this.bind(this.events, options);\n }\n}\n","import {\n addClass,\n defined,\n valueOrDefault,\n deepExtend,\n setDefaultOptions\n} from '../common';\n\nimport {\n appendHtml,\n removeChildren\n} from './utils';\n\nimport { Observable } from './scroller/observable';\n\nexport class Attribution extends Observable {\n constructor(element, options) {\n super();\n this.element = element;\n\n this._initOptions(options);\n this.items = [];\n\n addClass(this.element, 'k-widget k-attribution');\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n filter(extent, zoom) {\n this._extent = extent;\n this._zoom = zoom;\n this._render();\n }\n\n add(item) {\n let newItem = item;\n\n if (defined(item)) {\n if (typeof item === 'string') {\n newItem = {\n text: item\n };\n }\n\n this.items.push(newItem);\n this._render();\n }\n }\n\n remove(text) {\n let result = [];\n\n for (let i = 0; i < this.items.length; i++) {\n let item = this.items[i];\n\n if (item.text !== text) {\n result.push(item);\n }\n }\n\n this.items = result;\n this._render();\n }\n\n clear() {\n this.items = [];\n removeChildren(this.element);\n }\n\n _render() {\n let result = [];\n\n for (let i = 0; i < this.items.length; i++) {\n let item = this.items[i];\n let text = this._itemText(item);\n\n if (text !== '') {\n result.push(text);\n }\n }\n\n if (result.length > 0) {\n removeChildren(this.element);\n\n const html = result.join(this.options.separator);\n appendHtml(html, this.element);\n\n this.showElement();\n } else {\n this.hideElement();\n }\n }\n\n hideElement() {\n this.element.style.display = \"none\";\n }\n\n showElement() {\n this.element.style.display = \"\";\n }\n\n _itemText(item) {\n let text = '';\n let inZoomLevel = this._inZoomLevel(item.minZoom, item.maxZoom);\n let inArea = this._inArea(item.extent);\n\n if (inZoomLevel && inArea) {\n text += item.text;\n }\n\n return text;\n }\n\n _inZoomLevel(min, max) {\n let result = true;\n let newMin = valueOrDefault(min, -Number.MAX_VALUE);\n let newMax = valueOrDefault(max, Number.MAX_VALUE);\n\n result = this._zoom > newMin && this._zoom < newMax;\n return result;\n }\n\n _inArea(area) {\n let result = true;\n\n if (area) {\n result = area.contains(this._extent);\n }\n\n return result;\n }\n}\n\nsetDefaultOptions(Attribution, {\n name: 'Attribution',\n separator: ' | '\n});\n","import {\n deepExtend,\n addClass,\n keys,\n setDefaultOptions\n} from '../common';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport {\n proxy,\n on,\n off,\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nconst PAN = \"pan\";\n\nconst directionsMap = {\n up: {\n className: \"k-navigator-n\",\n iconClass: \"k-i-caret-alt-up\"\n },\n down: {\n className: \"k-navigator-s\",\n iconClass: \"k-i-caret-alt-down\"\n },\n right: {\n className: \"k-navigator-e\",\n iconClass: \"k-i-caret-alt-right\"\n },\n left: {\n className: \"k-navigator-w\",\n iconClass: \"k-i-caret-alt-left\"\n }\n};\n\nfunction createButton(direction) {\n const html =\n '';\n\n return convertToHtml(html);\n}\n\nexport class Navigator extends Observable {\n constructor(element, options) {\n super();\n\n this.element = element;\n this._initOptions(options);\n\n const navigateUpButton = createButton(\"up\");\n const navigateRightlButton = createButton(\"right\");\n const navigateDownButton = createButton(\"down\");\n const navigateLeftButton = createButton(\"left\");\n\n this.element.appendChild(navigateUpButton);\n this.element.appendChild(navigateRightlButton);\n this.element.appendChild(navigateDownButton);\n this.element.appendChild(navigateLeftButton);\n\n addClass(this.element, 'k-widget k-navigator');\n\n on(this.element, \"click\", \".k-button\", proxy(this._click, this));\n\n let parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n this._tabindex(this._keyroot);\n\n this._keydownHandler = proxy(this._keydown, this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n destroy() {\n this.dispose();\n }\n\n // originates from the kendo.jquery version\n dispose() {\n off(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n _tabindex(target) {\n const targetElement = target || this.wrapper || this.element;\n\n let element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _pan(x, y) {\n let panStep = this.options.panStep;\n\n this.trigger(PAN, {\n x: x * panStep,\n y: y * panStep\n });\n }\n\n _click(e) {\n let x = 0;\n let y = 0;\n let button = e.currentTarget;\n\n if (button.matches('.k-navigator-n')) {\n y = 1;\n } else if (button.matches('.k-navigator-s')) {\n y = -1;\n } else if (button.matches('.k-navigator-e')) {\n x = 1;\n } else if (button.matches('.k-navigator-w')) {\n x = -1;\n }\n\n this._pan(x, y);\n\n e.preventDefault();\n }\n\n /* eslint-disable indent */\n _keydown(e) {\n switch (e.which) {\n case keys.UP:\n this._pan(0, 1);\n e.preventDefault();\n break;\n case keys.DOWN:\n this._pan(0, -1);\n e.preventDefault();\n break;\n case keys.RIGHT:\n this._pan(1, 0);\n e.preventDefault();\n break;\n case keys.LEFT:\n this._pan(-1, 0);\n e.preventDefault();\n break;\n default:\n break;\n }\n }\n /* eslint-enable indent */\n}\n\nsetDefaultOptions(Navigator, {\n name: 'Navigator',\n panStep: 1\n});\n\n\nsetDefaultEvents(Navigator, [\n PAN\n]);\n","import {\n deepExtend,\n addClass,\n keys,\n hasClasses,\n setDefaultOptions\n} from '../common';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport {\n on,\n off,\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nfunction createButton(direction, iconClass) {\n const html =\n '';\n\n return convertToHtml(html);\n}\n\nlet PLUS = 187;\nlet MINUS = 189;\nlet FF_PLUS = 61;\nlet FF_MINUS = 173;\nconst CHANGE = \"change\";\n\nexport class ZoomControl extends Observable {\n constructor(element, options) {\n super();\n this.element = element;\n this._initOptions(options);\n\n const zoomInButton = createButton('in', 'k-i-plus');\n const zoomOutButton = createButton('out', 'k-i-minus');\n\n this.element.appendChild(zoomInButton);\n this.element.appendChild(zoomOutButton);\n\n addClass(this.element, 'k-widget k-zoom-control k-button-group k-group-horizontal');\n\n this._clickHandler = this._click.bind(this);\n on(this.element, \"click\", \".k-button\", this._clickHandler);\n\n let parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n\n this._tabindex(this._keyroot);\n\n this._keydownHandler = this._keydown.bind(this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n destroy() {\n if (this.element) {\n off(this.element, \"click\", this._clickHandler);\n }\n\n if (this._keyroot) {\n off(this._keyroot, 'keydown', this._keydownHandler);\n }\n }\n\n _tabindex(target) {\n const targetElement = target || this.wrapper || this.element;\n\n let element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _change(direction) {\n let zoomStep = this.options.zoomStep;\n this.trigger(CHANGE, { delta: direction * zoomStep });\n }\n\n _click(e) {\n let button = e.currentTarget;\n let direction = 1;\n\n if (hasClasses(button, 'k-zoom-out')) {\n direction = -1;\n }\n\n this._change(direction);\n e.preventDefault();\n }\n\n /* eslint-disable indent */\n _keydown(e) {\n switch (e.which) {\n case keys.NUMPAD_PLUS:\n case PLUS:\n case FF_PLUS:\n this._change(1);\n break;\n case keys.NUMPAD_MINUS:\n case MINUS:\n case FF_MINUS:\n this._change(-1);\n break;\n default:\n break;\n }\n }\n /* eslint-enable indent */\n}\n\nsetDefaultOptions(ZoomControl, {\n name: 'ZoomControl',\n zoomStep: 1\n});\n\nsetDefaultEvents(ZoomControl, [\n CHANGE\n]);\n","import {\n Class,\n valueOrDefault\n} from '../common';\n\nimport { Location } from './location';\n\nlet math = Math,\n max = math.max,\n min = math.min;\n\nexport class Extent extends Class {\n constructor(initialNw, initialSe) {\n super();\n let nw = Location.create(initialNw);\n let se = Location.create(initialSe);\n\n if (nw.lng + 180 > se.lng + 180 && nw.lat + 90 < se.lat + 90) {\n this.se = nw;\n this.nw = se;\n } else {\n this.se = se;\n this.nw = nw;\n }\n }\n\n contains(loc) {\n let nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n return loc &&\n lng + 180 >= nw.lng + 180 && lng + 180 <= se.lng + 180 &&\n lat + 90 >= se.lat + 90 && lat + 90 <= nw.lat + 90;\n }\n\n center() {\n let nw = this.nw;\n let se = this.se;\n let lng = nw.lng + (se.lng - nw.lng) / 2;\n let lat = nw.lat + (se.lat - nw.lat) / 2;\n\n return new Location(lat, lng);\n }\n\n containsAny(locs) {\n let result = false;\n\n for (let i = 0; i < locs.length; i++) {\n result = result || this.contains(locs[i]);\n }\n\n return result;\n }\n\n include(loc) {\n let nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n nw.lng = min(nw.lng, lng);\n nw.lat = max(nw.lat, lat);\n se.lng = max(se.lng, lng);\n se.lat = min(se.lat, lat);\n }\n\n includeAll(locs) {\n for (let i = 0; i < locs.length; i++) {\n this.include(locs[i]);\n }\n }\n\n edges() {\n let nw = this.nw, se = this.se;\n\n return {\n nw: this.nw,\n ne: new Location(nw.lat, se.lng),\n se: this.se,\n sw: new Location(se.lat, nw.lng)\n };\n }\n\n toArray() {\n let nw = this.nw, se = this.se;\n\n return [\n nw,\n new Location(nw.lat, se.lng),\n se,\n new Location(se.lat, nw.lng)\n ];\n }\n\n overlaps(extent) {\n return this.containsAny(extent.toArray()) ||\n extent.containsAny(this.toArray());\n }\n\n static create(a, b) {\n if (a instanceof Extent) {\n return a;\n } else if (a && b) {\n return new Extent(a, b);\n } else if (a && a.length === 4 && !b) {\n return new Extent([\n a[0],\n a[1]\n ], [\n a[2],\n a[3]\n ]);\n }\n }\n\n static get World() {\n return new Extent([ 90, -180 ], [ -90, 180 ]);\n }\n}\n","export const SHOW_TOOLTIP = 'showTooltip';\nexport const HIDE_TOOLTIP = 'hideTooltip';\nexport const CENTER_CHANGE = 'centerChange';\nexport const ZOOM_CHANGE = 'zoomChange';\nexport const INIT = 'init';\n","import { Class, deepExtend, setDefaultOptions } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nexport class Tooltip extends Class {\n constructor(widgetService, options) {\n super();\n\n this.widgetService = widgetService;\n this.options = deepExtend({}, this.options, options);\n this.offset = { x: 0, y: 0 };\n }\n\n show(anchor, args) {\n if (this.location === args.location) {\n return;\n }\n\n this.anchor = anchor;\n this.location = args.location;\n\n this.widgetService.notify(SHOW_TOOLTIP,\n Object.assign({ anchor: this.anchor }, args)\n );\n\n this.visible = true;\n }\n\n hide() {\n if (this.widgetService) {\n this.widgetService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n this.location = null;\n }\n\n get anchor() {\n return this._anchor;\n }\n\n set anchor(anchor) {\n const documentPoint = this.widgetService.widget._toDocumentCoordinates({\n x: anchor.left - this.offset.x,\n y: anchor.top - this.offset.y\n });\n\n this._anchor = {\n left: documentPoint.left,\n top: documentPoint.top\n };\n }\n\n destroy() {\n this.widgetService = null;\n }\n}\n\nsetDefaultOptions(Tooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n","import {\n Class,\n addClass,\n deepExtend,\n defined\n} from '../../common';\n\nimport {\n Extent\n} from './../extent';\n\nimport {\n getSupportedFeatures\n} from '../utils';\n\nexport class Layer extends Class {\n constructor(map, options) {\n super();\n\n this.support = getSupportedFeatures();\n\n this._initOptions(options);\n this.map = map;\n\n let element = document.createElement(\"div\");\n addClass(element, \"k-layer\");\n element.style.zIndex = this.options.zIndex;\n element.style.opacity = this.options.opacity;\n\n this.element = element;\n\n map.scrollElement.appendChild(this.element);\n\n this._beforeReset = this._beforeReset.bind(this);\n this._reset = this._reset.bind(this);\n this._resize = this._resize.bind(this);\n this._panEnd = this._panEnd.bind(this);\n\n this._activate();\n this._updateAttribution();\n }\n\n destroy() {\n this._deactivate();\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n show() {\n this.reset();\n this._activate();\n this._applyExtent(true);\n }\n\n hide() {\n this._deactivate();\n this._setVisibility(false);\n }\n\n reset() {\n this._beforeReset();\n this._reset();\n }\n\n _reset() {\n this._applyExtent();\n }\n\n _beforeReset() {\n\n }\n\n _resize() {\n\n }\n\n _panEnd() {\n this._applyExtent();\n }\n\n _applyExtent() {\n let options = this.options;\n let zoom = this.map.zoom();\n let matchMinZoom = !defined(options.minZoom) || zoom >= options.minZoom;\n let matchMaxZoom = !defined(options.maxZoom) || zoom <= options.maxZoom;\n let extent = Extent.create(options.extent);\n let inside = !extent || extent.overlaps(this.map.extent());\n\n this._setVisibility(matchMinZoom && matchMaxZoom && inside);\n }\n\n _setVisibility(visible) {\n this.element.style.display = visible ? '' : 'none';\n }\n\n _activate() {\n let map = this.map;\n\n this._deactivate();\n\n map.bind('beforeReset', this._beforeReset);\n map.bind('reset', this._reset);\n map.bind('resize', this._resize);\n map.bind('panEnd', this._panEnd);\n }\n\n _deactivate() {\n let map = this.map;\n\n map.unbind('beforeReset', this._beforeReset);\n map.unbind('reset', this._reset);\n map.unbind('resize', this._resize);\n map.unbind('panEnd', this._panEnd);\n }\n\n _updateAttribution() {\n const attribution = this.map.attribution;\n\n if (attribution) {\n attribution.add(this.options.attribution);\n }\n }\n\n _readData() {\n const data = this.options.data || [];\n return data;\n }\n\n _hasData() {\n return this._data && this._data.length > 0;\n }\n\n _layerIndex() {\n const layers = this.map.layers || [];\n return layers.indexOf(this);\n }\n}\n","import {\n geometry as g,\n throttle\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n deepExtend,\n round,\n limitValue,\n hashKey,\n setDefaultOptions,\n isFunction\n} from '../../common';\n\nimport { removeChildren } from '../utils';\n\nimport { Layer } from './layer';\n\nimport TemplateService from '../../services/template-service';\n\nlet math = Math,\n Point = g.Point;\n\nfunction compileTemplate(template) {\n if (isFunction(template)) {\n return template;\n }\n\n return TemplateService.compile(template);\n}\n\nfunction roundPoint(point) {\n return new Point(round(point.x), round(point.y));\n}\n\nfunction renderSize(size) {\n let newSize = size;\n\n if (typeof(size) !== \"string\") {\n newSize += \"px\";\n }\n\n return newSize;\n}\n\nexport class TileLayer extends Layer {\n constructor(map, options) {\n super(map, options);\n\n if (typeof this.options.subdomains === 'string') {\n this.options.subdomains = this.options.subdomains.split('');\n }\n\n let viewType = this._viewType();\n this._view = new viewType(this.element, this.options);\n }\n\n destroy() {\n super.destroy();\n this._view.destroy();\n this._view = null;\n }\n\n _beforeReset() {\n let map = this.map;\n let origin = map.locationToLayer(map.extent().nw).round();\n this._view.viewOrigin(origin);\n }\n\n _reset() {\n super._reset();\n this._updateView();\n this._view.reset();\n }\n\n _viewType() {\n return TileView;\n }\n\n _activate() {\n super._activate();\n\n if (!this.support.mobileOS) {\n if (!this._pan) {\n this._pan = throttle(this._render.bind(this), 100);\n }\n\n this.map.bind('pan', this._pan);\n }\n }\n\n _deactivate() {\n super._deactivate();\n\n if (this._pan) {\n this.map.unbind('pan', this._pan);\n }\n }\n\n _updateView() {\n let view = this._view,\n map = this.map,\n extent = map.extent(),\n extentToPoint = {\n nw: map.locationToLayer(extent.nw).round(),\n se: map.locationToLayer(extent.se).round()\n };\n\n view.center(map.locationToLayer(map.center()));\n view.extent(extentToPoint);\n view.zoom(map.zoom());\n }\n\n _resize() {\n this._render();\n }\n\n _panEnd(e) {\n super._panEnd(e);\n this._render();\n }\n\n _render() {\n this._updateView();\n this._view.render();\n }\n}\n\nsetDefaultOptions(TileLayer, {\n tileSize: 256,\n subdomains: ['a', 'b', 'c'],\n urlTemplate: '',\n zIndex: 1\n});\n\nexport class TileView extends Class {\n constructor(element, options) {\n super();\n this.element = element;\n this._initOptions(options);\n this.pool = new TilePool();\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n center(center) {\n this._center = center;\n }\n\n extent(extent) {\n this._extent = extent;\n }\n\n viewOrigin(origin) {\n this._viewOrigin = origin;\n }\n\n zoom(zoom) {\n this._zoom = zoom;\n }\n\n pointToTileIndex(point) {\n return new Point(math.floor(point.x / this.options.tileSize), math.floor(point.y / this.options.tileSize));\n }\n\n tileCount() {\n let size = this.size(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n nw = this._extent.nw,\n point = this.indexToPoint(firstTileIndex).translate(-nw.x, -nw.y);\n\n return {\n x: math.ceil((math.abs(point.x) + size.width) / this.options.tileSize),\n y: math.ceil((math.abs(point.y) + size.height) / this.options.tileSize)\n };\n }\n\n size() {\n let nw = this._extent.nw,\n se = this._extent.se,\n diff = se.clone().translate(-nw.x, -nw.y);\n\n return {\n width: diff.x,\n height: diff.y\n };\n }\n\n indexToPoint(index) {\n let x = index.x,\n y = index.y;\n\n return new Point(x * this.options.tileSize, y * this.options.tileSize);\n }\n\n subdomainText() {\n let subdomains = this.options.subdomains;\n return subdomains[this.subdomainIndex++ % subdomains.length];\n }\n\n destroy() {\n removeChildren(this.element);\n this.pool.empty();\n }\n\n reset() {\n this.pool.reset();\n this.subdomainIndex = 0;\n this.render();\n }\n\n render() {\n let size = this.tileCount(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n tile, x, y;\n\n for (x = 0; x < size.x; x++) {\n for (y = 0; y < size.y; y++) {\n tile = this.createTile({\n x: firstTileIndex.x + x,\n y: firstTileIndex.y + y\n });\n\n if (!tile.visible) {\n tile.show();\n }\n }\n }\n }\n\n createTile(currentIndex) {\n let options = this.tileOptions(currentIndex);\n let tile = this.pool.get(this._center, options);\n\n if (!tile.element.parentNode) {\n this.element.append(tile.element);\n }\n\n return tile;\n }\n\n tileOptions(currentIndex) {\n let index = this.wrapIndex(currentIndex),\n point = this.indexToPoint(currentIndex),\n origin = this._viewOrigin,\n offset = point.clone().translate(-origin.x, -origin.y);\n\n return {\n index: index,\n currentIndex: currentIndex,\n point: point,\n offset: roundPoint(offset),\n zoom: this._zoom,\n size: this.options.tileSize,\n subdomain: this.subdomainText(),\n urlTemplate: this.options.urlTemplate,\n errorUrlTemplate: this.options.errorUrlTemplate\n };\n }\n\n wrapIndex(index) {\n let boundary = math.pow(2, this._zoom);\n\n return {\n x: this.wrapValue(index.x, boundary),\n y: limitValue(index.y, 0, boundary - 1)\n };\n }\n\n wrapValue(value, boundary) {\n let remainder = math.abs(value) % boundary;\n let wrappedValue = value;\n\n if (value >= 0) {\n wrappedValue = remainder;\n } else {\n wrappedValue = boundary - (remainder === 0 ? boundary : remainder);\n }\n\n return wrappedValue;\n }\n}\n\nexport class ImageTile extends Class {\n constructor(id, options) {\n super();\n this.id = id;\n this.visible = true;\n this._initOptions(options);\n this.createElement();\n this.show();\n }\n\n destroy() {\n const element = this.element;\n const parentNode = element ? element.parentNode : null;\n\n if (element) {\n if (parentNode) {\n parentNode.removeChild(element);\n }\n\n this.element = null;\n }\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n createElement() {\n let el = document.createElement(\"img\");\n const size = this.options.size + \"px\";\n el.style.position = \"absolute\";\n el.style.display = \"block\";\n el.style.width = el.style.maxWidth = size;\n el.style.height = el.style.maxHeight = size;\n\n this.element = el;\n\n // todo\n // add on error handler\n\n // this.element =\n // $('\\'\\'')\n // .css({\n // width: this.options.size,\n // height: this.options.size\n // })\n // .on('error', proxy(function(e) {\n // if (this.errorUrl()) {\n // e.target.setAttribute('src', this.errorUrl());\n // } else {\n // e.target.removeAttribute('src');\n // }\n // }, this));\n }\n\n show() {\n let element = this.element;\n element.style.top = renderSize(this.options.offset.y);\n element.style.left = renderSize(this.options.offset.x);\n\n let url = this.url();\n\n if (url) {\n element.setAttribute('src', url);\n }\n\n element.style.visibility = 'visible';\n this.visible = true;\n }\n\n hide() {\n this.element.style.visibility = 'hidden';\n this.visible = false;\n }\n\n url() {\n let urlResult = compileTemplate(this.options.urlTemplate);\n return urlResult(this.urlOptions());\n }\n\n errorUrl() {\n let urlResult = compileTemplate(this.options.errorUrlTemplate);\n return urlResult(this.urlOptions());\n }\n\n urlOptions() {\n let options = this.options;\n\n return {\n zoom: options.zoom,\n subdomain: options.subdomain,\n z: options.zoom,\n x: options.index.x,\n y: options.index.y,\n s: options.subdomain,\n quadkey: options.quadkey,\n q: options.quadkey,\n culture: options.culture,\n c: options.culture\n };\n }\n}\n\nsetDefaultOptions(ImageTile, {\n urlTemplate: '',\n errorUrlTemplate: ''\n});\n\nexport class TilePool extends Class {\n constructor() {\n super();\n this._items = [];\n }\n\n get(center, options) {\n if (this._items.length >= this.options.maxSize) {\n this._remove(center);\n }\n\n return this._create(options);\n }\n\n empty() {\n let items = this._items;\n\n for (let i = 0; i < items.length; i++) {\n items[i].destroy();\n }\n\n this._items = [];\n }\n\n reset() {\n let items = this._items;\n\n for (let i = 0; i < items.length; i++) {\n items[i].hide();\n }\n }\n\n _create(options) {\n let items = this._items;\n let tile;\n let id = hashKey(options.point.toString() + options.offset.toString() + options.zoom + options.urlTemplate);\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].id === id) {\n tile = items[i];\n break;\n }\n }\n\n if (tile) {\n tile.show();\n } else {\n tile = new ImageTile(id, options);\n this._items.push(tile);\n }\n\n return tile;\n }\n\n _remove(center) {\n let items = this._items;\n let maxDist = -1;\n let index = -1;\n\n for (let i = 0; i < items.length; i++) {\n let dist = items[i].options.point.distanceTo(center);\n\n if (dist > maxDist && !items[i].visible) {\n index = i;\n maxDist = dist;\n }\n }\n\n if (index !== -1) {\n items[index].destroy();\n items.splice(index, 1);\n }\n }\n}\n\nsetDefaultOptions(TilePool, {\n maxSize: 100\n});\n","import {\n Class,\n elementOffset\n} from '../../common';\n\nimport {\n Observable\n} from './observable';\n\nimport {\n getEventMap,\n proxy,\n getSupportedFeatures\n} from '../utils';\n\nconst extend = Object.assign;\n\nconst CHANGE = 'change';\n\nexport class TapCapture extends Observable {\n constructor(element, options) {\n super();\n let that = this,\n domElement = element[0] || element;\n\n that.capture = false;\n\n const eventMap = getEventMap(navigator.userAgent);\n\n if (domElement.addEventListener) {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._press, that), true);\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._release, that), true);\n });\n } else {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._press, that));\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._release, that));\n });\n }\n\n that.bind([\n 'press',\n 'release'\n ], options || {});\n }\n\n captureNext() {\n this.capture = true;\n }\n\n cancelCapture() {\n this.capture = false;\n }\n\n _press(e) {\n let that = this;\n\n that.trigger('press');\n\n if (that.capture) {\n e.preventDefault();\n }\n }\n\n _release(e) {\n let that = this;\n\n that.trigger('release');\n\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n }\n}\n\nexport class PaneDimension extends Observable {\n constructor(options) {\n super();\n let that = this;\n that.forcedEnabled = false;\n extend(that, options);\n that.scale = 1;\n\n if (that.horizontal) {\n that.measure = 'offsetWidth';\n that.scrollSize = 'scrollWidth';\n that.axis = 'x';\n } else {\n that.measure = 'offsetHeight';\n that.scrollSize = 'scrollHeight';\n that.axis = 'y';\n }\n }\n\n makeVirtual() {\n extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n }\n\n virtualSize(min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n }\n\n outOfBounds(offset) {\n return offset > this.max || offset < this.min;\n }\n\n forceEnabled() {\n this.forcedEnabled = true;\n }\n\n getSize() {\n return this.container[this.measure];\n }\n\n getTotal() {\n return this.element[this.scrollSize];\n }\n\n rescale(scale) {\n this.scale = scale;\n }\n\n update(silent) {\n let that = this,\n total = that.virtual ? that._virtualMax : that.getTotal(),\n scaledTotal = total * that.scale,\n size = that.getSize();\n\n if (total === 0 && !that.forcedEnabled) {\n return;\n }\n\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n that.enabled = that.forcedEnabled || scaledTotal > size;\n\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n }\n}\n\nexport class PaneDimensions extends Observable {\n constructor(options) {\n super();\n let that = this;\n\n that.x = new PaneDimension(extend({\n horizontal: true\n }, options));\n\n that.y = new PaneDimension(extend({\n horizontal: false\n }, options));\n\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n that.bind(CHANGE, options);\n }\n\n rescale(newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n }\n\n centerCoordinates() {\n return {\n x: Math.min(0, -this.x.centerOffset),\n y: Math.min(0, -this.y.centerOffset)\n };\n }\n\n refresh() {\n let that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n }\n}\n\nexport class PaneAxis extends Observable {\n constructor(options) {\n super();\n extend(this, options);\n }\n\n outOfBounds() {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n }\n\n dragMove(delta) {\n let that = this,\n dimension = that.dimension,\n axis = that.axis,\n movable = that.movable,\n position = movable[axis] + delta;\n\n if (!dimension.enabled) {\n return;\n }\n\n let dragDelta = delta;\n\n if (position < dimension.min && delta < 0 || position > dimension.max && delta > 0) {\n dragDelta *= that.resistance;\n }\n\n movable.translateAxis(axis, dragDelta);\n that.trigger(CHANGE, that);\n }\n}\n\nexport class Pane extends Class {\n constructor(options) {\n super();\n\n let that = this,\n x, y,\n resistance,\n movable;\n\n extend(that, {\n elastic: true\n }, options);\n\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n\n that.x = x = new PaneAxis({\n axis: 'x',\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n\n that.y = y = new PaneAxis({\n axis: 'y',\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n\n that.userEvents.bind([\n 'press',\n 'move',\n 'end',\n 'gesturestart',\n 'gesturechange'\n ], {\n gesturestart(e) {\n that.gesture = e;\n\n that.offset = elementOffset(that.dimensions.container);\n },\n press(e) {\n const closestAnchor = e.event.target.closest('a');\n\n if (closestAnchor && closestAnchor.matches('[data-navigate-on-press=true]')) {\n e.sender.cancel();\n }\n },\n gesturechange(e) {\n let previousGesture = that.gesture,\n previousCenter = previousGesture.center,\n center = e.center,\n scaleDelta = e.distance / previousGesture.distance,\n minScale = that.dimensions.minScale,\n maxScale = that.dimensions.maxScale,\n coordinates;\n if (movable.scale <= minScale && scaleDelta < 1) {\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n\n let offsetX = movable.x + that.offset.left,\n offsetY = movable.y + that.offset.top;\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n\n movable.scaleWith(scaleDelta);\n\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n\n e.preventDefault();\n },\n move(e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n end(e) {\n e.preventDefault();\n }\n });\n }\n}\n\nlet translate = function(x, y, scale) {\n return 'translate3d(' + x + 'px,' + y + 'px,0) scale(' + scale + ')';\n};\n\nexport class Movable extends Observable {\n constructor(element) {\n super();\n\n let that = this;\n\n that.support = getSupportedFeatures();\n this.transformStyle = this.support.transitions.prefix + 'Transform';\n that.element = element;\n that.element.style.webkitTransformOrigin = 'left top';\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n\n const coordinates = translate(that.x, that.y, that.scale);\n that.element.style[this.transformStyle] = coordinates;\n\n that._saveCoordinates(coordinates);\n }\n\n translateAxis(axis, by) {\n this[axis] += by;\n this.refresh();\n }\n\n scaleTo(scale) {\n this.scale = scale;\n this.refresh();\n }\n\n scaleWith(scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n }\n\n translate(coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n }\n\n moveAxis(axis, value) {\n this[axis] = value;\n this.refresh();\n }\n\n moveTo(coordinates) {\n extend(this, coordinates);\n this.refresh();\n }\n\n refresh() {\n let that = this,\n x = that.x,\n y = that.y,\n newCoordinates;\n\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n\n newCoordinates = translate(x, y, that.scale);\n\n if (newCoordinates !== that.coordinates) {\n that.element.style[this.transformStyle] = newCoordinates;\n\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n }\n\n _saveCoordinates(coordinates) {\n this.coordinates = coordinates;\n }\n}\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n last,\n setDefaultOptions\n} from '../../common';\n\nimport {\n proxy\n} from '../utils';\n\nimport {\n Layer\n} from './layer';\n\nimport {\n Movable\n} from '../scroller/draggable';\n\nimport {\n Location\n} from '../location';\n\nconst Group = d.Group;\n\nexport class ShapeLayer extends Layer {\n constructor(map, options) {\n super(map, options);\n\n this._pan = proxy(this._pan, this);\n\n this.surface = d.Surface.create(this.element, {\n width: map.scrollElement.clientWidth,\n height: map.scrollElement.clientHeight\n });\n\n this._initRoot();\n this.movable = new Movable(this.surface.element);\n this._markers = [];\n\n this._click = this._handler('shapeClick');\n this.surface.bind('click', this._click);\n this._mouseleave = this._handler('shapeMouseLeave');\n this.surface.bind('mouseleave', this._mouseleave);\n this.surface.bind('mouseenter', this._mouseenter.bind(this));\n }\n\n destroy() {\n super.destroy();\n\n this.surface.destroy();\n }\n\n _reset() {\n super._reset();\n\n this._translateSurface();\n\n this._data = this._readData();\n\n if (this._hasData()) {\n this._load(this._data);\n }\n }\n\n _initRoot() {\n this._root = new Group();\n this.surface.draw(this._root);\n }\n\n _beforeReset() {\n this.surface.clear();\n this._initRoot();\n }\n\n _resize() {\n this.surface.size(this.map.size());\n }\n\n _readData() {\n const data = super._readData();\n\n if (data.type === \"FeatureCollection\") {\n return data.features;\n }\n\n if (data.type === \"GeometryCollection\") {\n return data.geometries;\n }\n\n return data;\n }\n\n _load(data) {\n this._data = data;\n this._clearMarkers();\n\n if (!this._loader) {\n this._loader = new GeoJsonLoader(this.map, this.options.style, this);\n }\n\n let container = new Group();\n\n for (let i = 0; i < data.length; i++) {\n let shape = this._loader.parse(data[i]);\n\n if (shape) {\n container.append(shape);\n }\n }\n\n this._root.clear();\n this._root.append(container);\n }\n\n shapeCreated(shape) {\n let cancelled = false;\n\n // the GeoJSON loader builds \"Point\" type as a circle\n // use the circle shape type as and indicator for rendering a marker\n // keep the behavior under a setting as this is supported by kendo jQuery Map\n // but we opted out of this in blazor\n if (shape instanceof d.Circle && this.map.options.renderPointsAsMarkers) {\n cancelled = defined(this._createMarker(shape));\n }\n\n if (!cancelled) {\n let args = {\n layer: this,\n shape: shape\n };\n\n cancelled = this.map.trigger('shapeCreated', args);\n }\n\n return cancelled;\n }\n\n featureCreated(e) {\n e.layer = this;\n this.map.trigger('shapeFeatureCreated', e);\n }\n\n _createMarker(shape) {\n let marker = this.map.markers.bind({\n location: shape.location\n }, shape.dataItem);\n\n if (marker) {\n this._markers.push(marker);\n }\n\n return marker;\n }\n\n _clearMarkers() {\n for (let i = 0; i < this._markers.length; i++) {\n this.map.markers.remove(this._markers[i]);\n }\n\n this._markers = [];\n }\n\n _pan() {\n if (!this._panning) {\n this._panning = true;\n this.surface.suspendTracking();\n }\n }\n\n _panEnd(e) {\n super._panEnd(e);\n this._translateSurface();\n this.surface.resumeTracking();\n this._panning = false;\n }\n\n _translateSurface() {\n let map = this.map;\n let nw = map.locationToView(map.extent().nw);\n\n if (this.surface.translate) {\n this.surface.translate(nw);\n this.movable.moveTo({\n x: nw.x,\n y: nw.y\n });\n }\n }\n\n _eventArgs(e) {\n return {\n layer: this,\n layerIndex: this._layerIndex(),\n shape: e.element,\n shapeIndex: (this._data || []).indexOf(e.element.dataItem),\n originalEvent: e.originalEvent\n };\n }\n\n _handler(eventName) {\n return (e) => {\n if (e.element) {\n this.map.trigger(eventName, this._eventArgs(e));\n }\n };\n }\n\n _mouseenter(e) {\n if (!e.element) {\n return;\n }\n\n this.map.trigger('shapeMouseEnter', this._eventArgs(e));\n\n const shape = e.element;\n const anchor = this._tooltipAnchor(e);\n this.map._tooltip.show(anchor, this._tooltipContext(shape));\n }\n\n _tooltipContext(shape) {\n return {\n type: 'shape',\n layerIndex: this._layerIndex,\n className: 'k-map-shape-tooltip',\n dataItem: shape.dataItem,\n location: shape.location\n };\n }\n\n _tooltipAnchor(e) {\n const cursor = this.map.eventOffset(e.originalEvent);\n return {\n top: cursor.y,\n left: cursor.x\n };\n }\n\n _activate() {\n super._activate();\n this._panHandler = proxy(this._pan, this);\n this.map.bind('pan', this.panHandler);\n }\n\n _deactivate() {\n super._deactivate();\n this.map.unbind('pan', this._panHandler);\n }\n}\n\nsetDefaultOptions(ShapeLayer, {\n autoBind: true,\n zIndex: 100\n});\n\nclass GeoJsonLoader extends Class {\n constructor(locator, defaultStyle, observer) {\n super();\n this.observer = observer;\n this.locator = locator;\n this.style = defaultStyle;\n }\n\n parse(item) {\n let root = new Group();\n let unwrap = true;\n\n if (item.type === 'Feature') {\n unwrap = false;\n this._loadGeometryTo(root, item.geometry, item);\n this._featureCreated(root, item);\n } else {\n this._loadGeometryTo(root, item, item);\n }\n\n if (unwrap && root.children.length < 2) {\n root = root.children[0];\n }\n\n return root;\n }\n\n _shapeCreated(shape) {\n let cancelled = false;\n\n if (this.observer && this.observer.shapeCreated) {\n cancelled = this.observer.shapeCreated(shape);\n }\n\n return cancelled;\n }\n\n _featureCreated(group, dataItem) {\n if (this.observer && this.observer.featureCreated) {\n this.observer.featureCreated({\n group: group,\n dataItem: dataItem,\n properties: dataItem.properties\n });\n }\n }\n\n /* eslint-disable indent */\n _loadGeometryTo(container, geometry, dataItem) {\n let coords = geometry.coordinates;\n let i;\n let path;\n\n switch (geometry.type) {\n case 'LineString':\n path = this._loadPolygon(container, [coords], dataItem);\n this._setLineFill(path);\n break;\n case 'MultiLineString':\n for (i = 0; i < coords.length; i++) {\n path = this._loadPolygon(container, [coords[i]], dataItem);\n this._setLineFill(path);\n }\n break;\n case 'Polygon':\n this._loadPolygon(container, coords, dataItem);\n break;\n case 'MultiPolygon':\n for (i = 0; i < coords.length; i++) {\n this._loadPolygon(container, coords[i], dataItem);\n }\n break;\n case 'Point':\n this._loadPoint(container, coords, dataItem);\n break;\n case 'MultiPoint':\n for (i = 0; i < coords.length; i++) {\n this._loadPoint(container, coords[i], dataItem);\n }\n break;\n default:\n break;\n }\n }\n /* eslint-disable indent */\n\n _setLineFill(path) {\n let segments = path.segments;\n\n if (segments.length < 4 || !segments[0].anchor().equals(last(segments).anchor())) {\n path.options.fill = null;\n }\n }\n\n _loadShape(container, shape) {\n if (!this._shapeCreated(shape)) {\n container.append(shape);\n }\n\n return shape;\n }\n\n _loadPolygon(container, rings, dataItem) {\n let shape = this._buildPolygon(rings);\n shape.dataItem = dataItem;\n shape.location = this.locator.viewToLocation(shape.bbox().center());\n return this._loadShape(container, shape);\n }\n\n _buildPolygon(rings) {\n let type = rings.length > 1 ? d.MultiPath : d.Path;\n let path = new type(this.style);\n\n for (let i = 0; i < rings.length; i++) {\n for (let j = 0; j < rings[i].length; j++) {\n let point = this.locator.locationToView(Location.fromLngLat(rings[i][j]));\n if (j === 0) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n }\n }\n\n return path;\n }\n\n _loadPoint(container, coords, dataItem) {\n let location = Location.fromLngLat(coords);\n let point = this.locator.locationToView(location);\n let circle = new g.Circle(point, 10);\n let shape = new d.Circle(circle, this.style);\n\n shape.dataItem = dataItem;\n shape.location = location;\n\n return this._loadShape(container, shape);\n }\n}\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n isFunction,\n getter,\n setDefaultOptions\n} from '../../common';\n\nimport {\n ShapeLayer\n} from './shape';\n\nimport {\n Location\n} from '../location';\n\nexport class BubbleLayer extends ShapeLayer {\n _readData() {\n const data = this.options.data || [];\n return data;\n }\n\n _load(data) {\n this._data = data;\n this.surface.clear();\n\n if (data.length === 0) {\n return;\n }\n\n let options = this.options;\n let getValue = getter(options.valueField);\n\n let newData = data.slice(0);\n newData.sort(function(a, b) {\n return getValue(b) - getValue(a);\n });\n\n let scaleType = this._scaleType();\n let scale;\n let getLocation = getter(this.options.locationField);\n\n for (let i = 0; i < newData.length; i++) {\n let dataItem = newData[i];\n let location = getLocation(dataItem);\n let value = getValue(dataItem);\n\n if (defined(location) && defined(value)) {\n if (!scale) {\n scale = new scaleType([\n 0,\n value\n ], [\n options.minSize,\n options.maxSize\n ]);\n }\n\n location = Location.create(location);\n\n let center = this.map.locationToView(location);\n let size = scale.map(value);\n let symbol = this._createSymbol({\n center: center,\n size: size,\n style: options.style,\n dataItem: dataItem,\n location: location\n });\n\n symbol.dataItem = dataItem;\n symbol.location = location;\n symbol.value = value;\n\n this._drawSymbol(symbol);\n }\n }\n }\n\n _scaleType() {\n let scale = this.options.scale;\n\n if (isFunction(scale)) {\n return scale;\n }\n\n return Scales[scale];\n }\n\n _createSymbol(args) {\n let symbol = this.options.symbol;\n\n if (!isFunction(symbol)) {\n symbol = Symbols[symbol];\n }\n\n return symbol(args);\n }\n\n _drawSymbol(shape) {\n let args = {\n layer: this,\n shape: shape\n };\n\n let cancelled = this.map.trigger('shapeCreated', args);\n\n if (!cancelled) {\n this.surface.draw(shape);\n }\n }\n\n _tooltipContext(shape) {\n return {\n type: 'bubble',\n layerIndex: this._layerIndex(),\n className: 'k-map-bubble-tooltip',\n dataItem: shape.dataItem,\n location: shape.location,\n value: shape.value\n };\n }\n\n _tooltipAnchor(e) {\n const shape = e.element;\n const center = shape.bbox().center();\n\n return {\n top: center.y,\n left: center.x\n };\n }\n}\n\nsetDefaultOptions(BubbleLayer, {\n // autoBind: true,\n locationField: 'location',\n valueField: 'value',\n minSize: 0,\n maxSize: 100,\n scale: 'sqrt',\n symbol: 'circle',\n // ensure bubble layers are displayed over tile and shape layers\n zIndex: 200\n});\n\nclass SqrtScale extends Class {\n constructor(domain, range) {\n super();\n\n this._domain = domain;\n this._range = range;\n\n let domainRange = Math.sqrt(domain[1]) - Math.sqrt(domain[0]);\n let outputRange = range[1] - range[0];\n\n this._ratio = outputRange / domainRange;\n }\n\n map(value) {\n let rel = (Math.sqrt(value) - Math.sqrt(this._domain[0])) * this._ratio;\n return this._range[0] + rel;\n }\n}\n\nlet Scales = {\n sqrt: SqrtScale\n};\n\nlet Symbols = {\n circle: function(args) {\n let geo = new g.Circle(args.center, args.size / 2);\n return new d.Circle(geo, args.style);\n },\n\n square: function(args) {\n let path = new d.Path(args.style);\n let halfSize = args.size / 2;\n let center = args.center;\n path.moveTo(center.x - halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y + halfSize).lineTo(center.x - halfSize, center.y + halfSize).close();\n return path;\n }\n};\n","import {\n Class,\n addClass,\n isArray,\n getter,\n deepExtend,\n setDefaultOptions\n} from '../../common';\n\nimport { Layer } from './layer';\nimport { Location } from '../location';\n\nimport {\n proxy,\n on,\n off,\n toHyphens,\n toPixels\n} from '../utils';\n\nconst CLICK = \"click\";\nconst MOUSE_ENTER = \"mouseenter\";\nconst MOUSE_LEAVE = \"mouseleave\";\n\nconst extend = Object.assign;\nconst MARKER_CLASS = \".k-marker\";\n\nexport class MarkerLayer extends Layer {\n constructor(map, options) {\n super(map, options);\n\n this._markerClickHandler = proxy(this._markerClick, this);\n on(this.element, CLICK, MARKER_CLASS, this._markerClickHandler);\n\n this.items = [];\n\n this._load(this._readData());\n }\n\n destroy() {\n super.destroy();\n off(this.element, CLICK, this._markerClickHandler);\n this.clear();\n }\n\n add(args) {\n if (isArray(args)) {\n for (let i = 0; i < args.length; i++) {\n this._addOne(args[i]);\n }\n } else {\n return this._addOne(args);\n }\n }\n\n remove(marker) {\n marker.destroy();\n let index = (this.items || []).indexOf(marker);\n\n if (index > -1) {\n this.items.splice(index, 1);\n }\n }\n\n clear() {\n for (let i = 0; i < this.items.length; i++) {\n this.items[i].destroy();\n }\n\n this.items = [];\n }\n\n update(marker) {\n let location = marker.location();\n\n if (location) {\n marker.showAt(this.map.locationToView(location));\n\n let args = {\n marker: marker,\n layer: this\n };\n\n this.map.trigger('markerActivate', args);\n }\n }\n\n _reset() {\n super._reset();\n\n let items = this.items;\n\n for (let i = 0; i < items.length; i++) {\n this.update(items[i]);\n }\n }\n\n bind(options, dataItem) {\n let marker = Marker.create(options, this.options);\n marker.dataItem = dataItem;\n\n let args = {\n marker: marker,\n layer: this\n };\n\n let cancelled = this.map.trigger('markerCreated', args);\n\n if (!cancelled) {\n this.add(marker);\n return marker;\n }\n }\n\n _addOne(arg) {\n let marker = Marker.create(arg, this.options);\n marker.addTo(this);\n return marker;\n }\n\n _readData() {\n const data = this.options.data || [];\n return data;\n }\n\n _load(data) {\n this._data = data;\n this.clear();\n\n let getLocation = getter(this.options.locationField);\n let getTitle = getter(this.options.titleField);\n\n for (let i = 0; i < data.length; i++) {\n let dataItem = data[i];\n\n this.bind({\n location: getLocation(dataItem),\n title: getTitle(dataItem)\n }, dataItem);\n }\n }\n\n _markerClick(e) {\n const marker = e.target._kendoNode;\n\n let args = {\n // marker: $(e.target).data('kendoMarker'),\n // marker: e.target.getAttribute(\"data-kendoMarker\"),\n layer: this,\n layerIndex: this._layerIndex(),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker),\n originalEvent: e\n };\n\n this.map.trigger('markerClick', args);\n }\n\n _markerMouseEnter(e) {\n const args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseEnter\", args);\n }\n\n _markerMouseLeave(e) {\n const args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseLeave\", args);\n }\n\n _createMarkerEventArgs(e) {\n const marker = e.marker;\n\n let args = extend({}, {\n layer: this,\n layerIndex: this._layerIndex(),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker)\n }, e);\n\n return args;\n }\n}\n\nsetDefaultOptions(MarkerLayer, {\n zIndex: 1000,\n autoBind: true,\n locationField: 'location',\n titleField: 'title'\n});\n\nexport class Marker extends Class {\n constructor(options) {\n super();\n this.options = options || {};\n }\n\n destroy() {\n this.layer = null;\n this.unbindEvents();\n this.hide();\n }\n\n addTo(parent) {\n this.layer = parent.markers || parent;\n this.layer.items.push(this);\n this.layer.update(this);\n }\n\n location(value) {\n if (value) {\n this.options.location = Location.create(value).toArray();\n\n if (this.layer) {\n this.layer.update(this);\n }\n\n return this;\n }\n\n return Location.create(this.options.location);\n }\n\n showAt(point) {\n this.render();\n\n this._anchor = { left: Math.round(point.x), top: Math.round(point.y) };\n this.element.style.left = toPixels(this._anchor.left);\n this.element.style.top = toPixels(this._anchor.top);\n }\n\n hide() {\n if (this.element) {\n this.element.remove();\n this.element = null;\n }\n }\n\n bindEvents() {\n if (!this.element) {\n return;\n }\n\n this._mouseEnterHandler = proxy(this._mouseEnter, this);\n on(this.element, MOUSE_ENTER, MARKER_CLASS, this._mouseEnterHandler);\n this._mouseLeaveHandler = proxy(this._mouseLeave, this);\n on(this.element, MOUSE_LEAVE, MARKER_CLASS, this._mouseLeaveHandler);\n }\n\n unbindEvents() {\n if (!this.element) {\n return;\n }\n\n off(this.element, MOUSE_ENTER, this._mouseEnterHandler);\n off(this.element, MOUSE_LEAVE, this._mouseLeaveHandler);\n }\n\n render() {\n if (!this.element) {\n let options = this.options;\n let layer = this.layer;\n\n const element = document.createElement('span');\n addClass(element, 'k-marker k-icon k-i-marker-' + toHyphens(options.shape || 'pin'));\n\n if (options.title) {\n element.setAttribute(\"title\", options.title);\n }\n\n const attributes = options.attributes || {};\n Object.keys(attributes).forEach(function(key) {\n element.setAttribute(key, attributes[key]);\n });\n\n element._kendoNode = this;\n element.style.zIndex = options.zIndex;\n\n this.element = element;\n\n if (layer) {\n layer.element.appendChild(this.element);\n }\n\n this.bindEvents();\n }\n }\n\n _mouseEnter(e) {\n const args = this._createEventArgs(e);\n this.layer._markerMouseEnter(args);\n\n this.layer.map._tooltip.show({\n top: this._anchor.top - this.element.offsetHeight,\n left: this._anchor.left\n }, this._tooltipContext());\n }\n\n _tooltipContext() {\n return {\n type: 'marker',\n layerIndex: this.layer._layerIndex(),\n className: 'k-map-marker-tooltip',\n dataItem: this.dataItem,\n title: this.options.title,\n location: this.location()\n };\n }\n\n _mouseLeave(e) {\n const args = this._createEventArgs(e);\n this.layer._markerMouseLeave(args);\n }\n\n _createEventArgs(e) {\n let args = {\n marker: this,\n originalEvent: e\n };\n\n return args;\n }\n\n static create(arg, defaults) {\n if (arg instanceof Marker) {\n return arg;\n }\n\n return new Marker(deepExtend({}, defaults, arg));\n }\n}\n","import {\n Class\n} from '../../common';\n\nimport {\n proxy,\n now\n} from '../utils';\n\nconst extend = Object.assign;\n\nfunction animationFrame(callback) {\n window.requestAnimationFrame(callback);\n}\n\nexport class Animation extends Class {\n constructor() {\n super();\n let that = this;\n\n that._tickProxy = proxy(that._tick, that);\n that._started = false;\n }\n\n tick() { }\n done() { }\n onEnd() { }\n onCancel() { }\n\n start() {\n if (!this.enabled()) {\n return;\n }\n\n if (!this.done()) {\n this._started = true;\n animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n }\n\n enabled() {\n return true;\n }\n\n cancel() {\n this._started = false;\n this.onCancel();\n }\n\n _tick() {\n let that = this;\n\n if (!that._started) {\n return;\n }\n\n that.tick();\n\n if (!that.done()) {\n animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n }\n}\n\nexport class Transition extends Animation {\n constructor(options) {\n super();\n extend(this, options);\n }\n\n done() {\n return this.timePassed() >= this.duration;\n }\n\n timePassed() {\n return Math.min(this.duration, now() - this.startDate);\n }\n\n moveTo(options) {\n let that = this,\n movable = that.movable;\n\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n that.duration = typeof options.duration === 'number' ? options.duration : 300;\n that.tick = that._easeProxy(options.ease);\n that.startDate = now();\n that.start();\n }\n\n _easeProxy(ease) {\n let that = this;\n\n return function() {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n }\n\n static easeOutExpo(t, b, c, d) {\n return t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n\n // static easeOutBack(t, b, c, d) {\n // let s = 1.70158;\n // return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n // }\n}\n","import {\n Class,\n grep\n} from '../../common';\n\nimport {\n proxy,\n noop,\n applyEventMap,\n getEventMap,\n on,\n off,\n now,\n getSupportedFeatures\n} from '../utils';\n\nimport {\n Observable\n} from './observable';\n\nconst extend = Object.assign;\n\nconst preventDefault = (e) => {\n e.preventDefault();\n};\n\nlet\n DEFAULT_MIN_HOLD = 800,\n CLICK_DELAY = 300,\n // DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0,\n DEFAULT_THRESHOLD = 0,\n PRESS = 'press',\n HOLD = 'hold',\n SELECT = 'select',\n START = 'start',\n MOVE = 'move',\n END = 'end',\n CANCEL = 'cancel',\n TAP = 'tap',\n DOUBLETAP = 'doubleTap',\n RELEASE = 'release',\n GESTURESTART = 'gesturestart',\n GESTURECHANGE = 'gesturechange',\n GESTUREEND = 'gestureend',\n GESTURETAP = 'gesturetap';\n\nlet THRESHOLD = {\n 'api': 0,\n 'touch': 0,\n 'mouse': 9,\n 'pointer': 9\n};\n\nfunction touchDelta(touch1, touch2) {\n let x1 = touch1.x.location,\n y1 = touch1.y.location,\n x2 = touch2.x.location,\n y2 = touch2.y.location,\n dx = x1 - x2,\n dy = y1 - y2;\n\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n}\n\nfunction getTouches(e) {\n const support = getSupportedFeatures();\n let touches = [],\n originalEvent = e.originalEvent || e,\n currentTarget = e.currentTarget,\n idx = 0,\n length, changedTouches, touch;\n\n if (e.api) {\n touches.push({\n id: 2,\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: 'api'\n });\n } else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\n\n for (length = changedTouches.length; idx < length; idx++) {\n touch = changedTouches[idx];\n touches.push({\n location: touch,\n event: e,\n target: touch.target,\n currentTarget: currentTarget,\n id: touch.identifier,\n type: 'touch'\n });\n }\n } else if (support.pointers || support.msPointers) {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: 'pointer'\n });\n } else {\n touches.push({\n id: 1,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: 'mouse'\n });\n }\n\n return touches;\n}\nexport class TouchAxis extends Class {\n constructor(axis, location) {\n super();\n let that = this;\n\n that.support = getSupportedFeatures();\n that.invalidZeroEvents = this.support.mobileOS && this.support.mobileOS.android;\n that.axis = axis;\n that._updateLocationData(location);\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n }\n\n move(location) {\n let that = this,\n offset = location['page' + that.axis],\n timeStamp = now(),\n timeDelta = timeStamp - that.timeStamp || 1;\n\n if (!offset && this.invalidZeroEvents) {\n return;\n }\n\n that.delta = offset - that.location;\n that._updateLocationData(location);\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n }\n\n _updateLocationData(location) {\n let that = this,\n axis = that.axis;\n\n that.location = location['page' + axis];\n that.client = location['client' + axis];\n that.screen = location['screen' + axis];\n }\n}\n\nexport class Touch extends Class {\n constructor(userEvents, target, touchInfo) {\n super();\n\n extend(this, {\n x: new TouchAxis('X', touchInfo.location),\n y: new TouchAxis('Y', touchInfo.location),\n type: touchInfo.type,\n useClickAsTap: userEvents.useClickAsTap,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _clicks: userEvents._clicks,\n supportDoubleTap: userEvents.supportDoubleTap,\n _moved: false,\n _finished: false\n });\n }\n\n press() {\n // this._holdTimeout = setTimeout($.proxy(this, '_hold'), this.userEvents.minHold);\n this._holdTimeout = setTimeout(proxy(this._hold, this), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n }\n\n _tap(touchInfo) {\n let that = this;\n\n that.userEvents._clicks++;\n\n if (that.userEvents._clicks === 1) {\n that._clickTimeout = setTimeout(function() {\n if (that.userEvents._clicks === 1) {\n that._trigger(TAP, touchInfo);\n } else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n }\n\n _hold() {\n this._trigger(HOLD, this.pressEvent);\n }\n\n /* eslint-disable consistent-return */\n move(touchInfo) {\n let that = this;\n let preventMove = touchInfo.type !== 'api' && that.userEvents._shouldNotMove;\n\n if (that._finished || preventMove) {\n return;\n }\n\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n }\n /* eslint-enable consistent-return */\n\n end(touchInfo) {\n this.endTime = now();\n\n if (this._finished) {\n return;\n }\n\n this._finished = true;\n this._trigger(RELEASE, touchInfo);\n\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (!this.useClickAsTap) {\n if (this.supportDoubleTap) {\n this._tap(touchInfo);\n } else {\n this._trigger(TAP, touchInfo);\n }\n }\n }\n\n clearTimeout(this._holdTimeout);\n this.dispose();\n }\n\n dispose() {\n let userEvents = this.userEvents,\n activeTouches = userEvents.touches || [];\n\n this._finished = true;\n this.pressEvent = null;\n\n clearTimeout(this._holdTimeout);\n // activeTouches.splice($.inArray(this, activeTouches), 1);\n const activeTouchIndex = activeTouches.indexOf(this);\n activeTouches.splice(activeTouchIndex, 1);\n }\n\n skip() {\n this.dispose();\n }\n\n cancel() {\n this.dispose();\n }\n\n isMoved() {\n return this._moved;\n }\n\n _start(touchInfo) {\n clearTimeout(this._holdTimeout);\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n }\n\n _trigger(name, touchInfo) {\n let that = this,\n jQueryEvent = touchInfo.event,\n data = {\n touch: that,\n x: that.x,\n y: that.y,\n target: that.target,\n event: jQueryEvent\n };\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n }\n\n _withinIgnoreThreshold() {\n let xDelta = this.x.initialDelta,\n yDelta = this.y.initialDelta;\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n }\n}\n\nfunction withEachUpEvent(callback) {\n const eventMap = getEventMap(navigator.userAgent);\n let downEvents = eventMap.up.split(' '),\n idx = 0,\n length = downEvents.length;\n\n for (; idx < length; idx++) {\n callback(downEvents[idx]);\n }\n}\n\nexport class UserEvents extends Observable {\n constructor(element, options) {\n super();\n let that = this;\n let filter;\n\n const support = getSupportedFeatures();\n this.support = support;\n\n /* eslint-disable no-param-reassign */\n options = options || {};\n /* eslint-enable no-param-reassign */\n this.options = options;\n\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that.useClickAsTap = !options.fastTap && !support.delayedClick();\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n\n const enableGlobalSurface = !support.touch || support.mouseAndTouchPresent;\n\n extend(that, {\n element: element,\n surface: options.global && enableGlobalSurface ?\n element.ownerDocument.documentElement :\n options.surface || element,\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n this._surfaceMoveHandler = proxy(this._move, this);\n on(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n\n this._surfaceEndHandler = proxy(this._end, this);\n on(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n this._elementStartHandler = proxy(this._start, this);\n on(element, applyEventMap('down'), filter, this._elementStartHandler);\n\n if (that.useClickAsTap) {\n this._elementClickHandler = proxy(this._click, this);\n on(element, applyEventMap('click'), filter, this._elementClickHandler);\n }\n\n if (support.pointers || support.msPointers) {\n if (support.browser.version < 11) {\n let defaultAction = 'pinch-zoom double-tap-zoom';\n\n element.style['-ms-touch-action'] =\n options.touchAction && options.touchAction !== 'none' ?\n defaultAction + ' ' + options.touchAction :\n defaultAction;\n\n } else {\n element.style['touch-action'] = options.touchAction || 'none';\n }\n }\n if (options.preventDragEvent) {\n this._elementDragStartHandler = preventDefault;\n on(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n // element.on(kendo.applyEventMap('mousedown'), filter, {\n // root: element\n // } '_select');\n\n // todo: use root\n this._elementSelectHandler = proxy(this._select, this);\n on(element, applyEventMap('mousedown'), filter, this._elementSelectHandler);\n\n if (that.captureUpIfMoved && support.eventCapture) {\n let surfaceElement = that.surface,\n preventIfMovingProxy = proxy(that.preventIfMoving, that);\n\n withEachUpEvent(function(eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n\n that.bind([\n PRESS,\n HOLD,\n TAP,\n DOUBLETAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n }\n\n preventIfMoving(e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n }\n\n destroy() {\n let that = this;\n const options = this.options;\n const element = this.element;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n if (that.captureUpIfMoved && this.support.eventCapture) {\n let surfaceElement = that.surface;\n withEachUpEvent(function(eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n\n off(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n off(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n off(element, applyEventMap('down'), this._elementStartHandler);\n\n if (that.useClickAsTap) {\n off(element, applyEventMap('click'), this._elementClickHandler);\n }\n\n if (options.preventDragEvent) {\n off(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n off(element, applyEventMap('mousedown'), this._elementSelectHandler);\n\n that._disposeAll();\n that.unbind();\n\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n }\n\n capture() {\n UserEvents.current = this;\n }\n\n cancel() {\n this._disposeAll();\n this.trigger(CANCEL);\n }\n\n /* eslint-disable indent */\n notify(event, data) {\n let that = this,\n touches = that.touches;\n let eventName = event;\n\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n default:\n break;\n }\n\n extend(data, {\n touches: touches\n }, touchDelta(touches[0], touches[1]));\n }\n\n return this.trigger(eventName, extend(data, {\n type: eventName\n }));\n }\n /* eslint-enable indent */\n\n press(x, y, target) {\n this._apiCall('_start', x, y, target);\n }\n\n move(x, y) {\n this._apiCall('_move', x, y);\n }\n\n end(x, y) {\n this._apiCall('_end', x, y);\n }\n\n _isMultiTouch() {\n return this.touches.length > 1;\n }\n\n _maxTouchesReached() {\n return this.touches.length >= this._maxTouches;\n }\n\n _disposeAll() {\n let touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n }\n\n _isMoved() {\n return grep(this.touches, function(touch) {\n return touch.isMoved();\n }).length;\n }\n\n _select(e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n }\n\n _start(e) {\n let that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if (which && which > 1 || that._maxTouchesReached()) {\n return;\n }\n\n UserEvents.current = null;\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = touch.currentTarget;\n } else {\n target = that.element;\n }\n\n if (target && target.length === 0) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n\n if (that._isMultiTouch()) {\n that.notify('gesturestart', {});\n }\n }\n }\n\n _move(e) {\n this._eachTouch('move', e);\n }\n\n _end(e) {\n this._eachTouch('end', e);\n }\n\n _click(e) {\n let data = {\n touch: {\n initialTouch: e.target,\n target: e.currentTarget,\n endTime: now(),\n x: {\n location: e.pageX,\n client: e.clientX\n },\n y: {\n location: e.pageY,\n client: e.clientY\n }\n },\n x: e.pageX,\n y: e.pageY,\n target: e.currentTarget,\n event: e,\n type: 'tap'\n };\n\n if (this.trigger('tap', data)) {\n e.preventDefault();\n }\n }\n\n _eachTouch(methodName, e) {\n let that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch[methodName](touchInfo);\n }\n }\n }\n\n _apiCall(type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: target || this.element,\n stopPropagation: noop,\n preventDefault: noop\n });\n }\n\n static defaultThreshold(value) {\n DEFAULT_THRESHOLD = value;\n }\n\n static minHold(value) {\n DEFAULT_MIN_HOLD = value;\n }\n}\n","// todo: extract to a separate place\n\nimport {\n Class,\n deepExtend,\n addClass,\n isFunction,\n setDefaultOptions\n} from '../../common';\n\nimport {\n convertToHtml,\n prepend,\n wrapInner,\n contains,\n hasNativeScrolling,\n on,\n off,\n proxy,\n wheelDeltaY,\n setDefaultEvents\n} from '../utils';\n\nimport {\n Transition,\n Animation\n} from './fx';\n\nimport {\n Pane,\n PaneDimensions,\n Movable,\n TapCapture\n} from './draggable';\n\nimport {\n UserEvents\n} from './user-events';\n\nimport {\n Observable\n} from './observable';\n\nlet\n extend = Object.assign,\n abs = Math.abs,\n SNAPBACK_DURATION = 500,\n SCROLLBAR_OPACITY = 0.7,\n FRICTION = 0.96,\n VELOCITY_MULTIPLIER = 10,\n MAX_VELOCITY = 55,\n OUT_OF_BOUNDS_FRICTION = 0.5,\n ANIMATED_SCROLLER_PRECISION = 5,\n // SCROLLER_RELEASE_CLASS = 'km-scroller-release',\n // SCROLLER_REFRESH_CLASS = 'km-scroller-refresh',\n PULL = 'pull',\n CHANGE = 'change',\n RESIZE = 'resize',\n SCROLL = 'scroll',\n MOUSE_WHEEL_ID = 2;\n\nclass ZoomSnapBack extends Animation {\n constructor(options) {\n super(options);\n let that = this;\n extend(that, options);\n that.userEvents.bind('gestureend', that.start.bind(this));\n that.tapCapture.bind('press', that.cancel.bind(this));\n }\n\n enabled() {\n return this.movable.scale < this.dimensions.minScale;\n }\n\n done() {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n }\n\n tick() {\n let movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n }\n\n onEnd() {\n let movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n }\n}\n\nclass DragInertia extends Animation {\n constructor(options) {\n super();\n let that = this;\n\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd() {\n that._end();\n }\n })\n });\n\n that.tapCapture.bind('press', function() {\n that.cancel();\n });\n\n that.userEvents.bind('end', proxy(that.start, that));\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.userEvents.bind('tap', proxy(that.onEnd, that));\n }\n\n onCancel() {\n this.transition.cancel();\n }\n\n freeze(location) {\n let that = this;\n that.cancel();\n that._moveTo(location);\n }\n\n onEnd() {\n let that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n }\n\n done() {\n return abs(this.velocity) < 1;\n }\n\n start(e) {\n let that = this,\n velocity;\n if (!that.dimension.enabled) {\n return;\n }\n if (that.paneAxis.outOfBounds()) {\n if (that.transition._started) {\n that.transition.cancel();\n that.velocity = Math.min(e.touch[that.axis].velocity * that.velocityMultiplier, MAX_VELOCITY);\n super.start();\n } else {\n that._snapBack();\n }\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n that.tapCapture.captureNext();\n super.start();\n }\n }\n\n tick() {\n let that = this,\n dimension = that.dimension,\n friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction,\n delta = that.velocity *= friction,\n location = that.movable[that.axis] + delta;\n\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n\n that.movable.moveAxis(that.axis, location);\n }\n\n _end() {\n this.tapCapture.cancelCapture();\n this.end();\n }\n\n _snapBack() {\n let that = this,\n dimension = that.dimension,\n snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n\n that._moveTo(snapBack);\n }\n\n _moveTo(location) {\n this.transition.moveTo({\n location: location,\n duration: SNAPBACK_DURATION,\n ease: Transition.easeOutExpo\n });\n }\n}\n\nclass AnimatedScroller extends Animation {\n constructor(options) {\n super(options);\n let that = this;\n\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n }\n\n tick() {\n this._updateCoordinates();\n this.moveTo(this.origin);\n }\n\n done() {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n }\n\n onEnd() {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n }\n\n setCoordinates(from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n }\n\n /* eslint-disable no-param-reassign */\n setCallback(callback) {\n if (callback && isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined;\n }\n }\n /* eslint-enable no-param-reassign */\n\n _updateCoordinates() {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n }\n}\n\nclass ScrollBar extends Class {\n constructor(options) {\n super();\n let that = this,\n horizontal = options.axis === 'x';\n\n const orientation = (horizontal ? 'horizontal' : 'vertical');\n const element = convertToHtml('
');\n\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? 'width' : 'height'\n });\n\n that.scrollMovable.bind(CHANGE, that.refresh.bind(that));\n\n that.container.appendChild(element);\n\n if (options.alwaysVisible) {\n that.show();\n }\n }\n\n refresh() {\n let that = this,\n axis = that.axis,\n dimension = that.dimension,\n paneSize = dimension.size,\n scrollMovable = that.scrollMovable,\n sizeRatio = paneSize / dimension.total,\n position = Math.round(-scrollMovable[axis] * sizeRatio),\n size = Math.round(paneSize * sizeRatio);\n if (sizeRatio >= 1) {\n this.element.style.display = \"none\";\n } else {\n this.element.style.display = \"\";\n }\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n if (that.elementSize !== size) {\n that.element.style[that.size] = size + 'px';\n that.elementSize = size;\n }\n that.movable.moveAxis(axis, position);\n }\n\n show() {\n this.element.style.opacity = SCROLLBAR_OPACITY;\n this.element.style.visibility = \"visible\";\n }\n\n hide() {\n if (!this.alwaysVisible) {\n this.element.style.opacity = 0;\n }\n }\n}\n\n// export class Scroller extends Class {\nexport class Scroller extends Observable {\n constructor(element, options) {\n super();\n let that = this;\n this.element = element;\n\n this._initOptions(options);\n\n const hasScrolling = hasNativeScrolling(navigator.userAgent);\n that._native = that.options.useNative && hasScrolling;\n const scrollHeader = convertToHtml('
');\n\n if (that._native) {\n addClass(element, 'km-native-scroller');\n prepend(scrollHeader, element);\n\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children[0]\n });\n\n return;\n }\n\n element.style.overflow = \"hidden\";\n addClass(element, 'km-scroll-wrapper');\n\n const scrollContainer = convertToHtml('
');\n wrapInner(element, scrollContainer);\n prepend(scrollHeader, element);\n\n let inner = element.children[1],\n tapCapture = new TapCapture(element),\n movable = new Movable(inner),\n\n dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }),\n avoidScrolling = this.options.avoidScrolling,\n\n userEvents = new UserEvents(element, {\n touchAction: 'pan-y',\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n supportDoubleTap: that.options.supportDoubleTap,\n start(e) {\n dimensions.refresh();\n let velocityX = abs(e.x.velocity),\n velocityY = abs(e.y.velocity),\n horizontalSwipe = velocityX * 2 >= velocityY,\n originatedFromFixedContainer = contains(that.fixedContainer, e.event.target),\n verticalSwipe = velocityY * 2 >= velocityX;\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }),\n\n pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }),\n\n zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }),\n\n animatedScroller = new AnimatedScroller({\n moveTo(coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n\n movable.bind(CHANGE, function() {\n that.scrollTop = -movable.y;\n that.scrollLeft = -movable.x;\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n\n if (that.options.mousewheelScrolling) {\n this._wheelScrollHandler = this._wheelScroll.bind(this);\n on(element, 'DOMMouseScroll mousewheel', this._wheelScrollHandler);\n }\n\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children[0]\n });\n\n that._initAxis('x');\n that._initAxis('y');\n\n that._wheelEnd = function() {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n\n dimensions.refresh();\n\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _wheelScroll(e) {\n if (e.ctrlKey) {\n return;\n }\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n let delta = wheelDeltaY(e);\n\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n\n e.preventDefault();\n }\n\n makeVirtual() {\n this.dimensions.y.makeVirtual();\n }\n\n virtualSize(min, max) {\n this.dimensions.y.virtualSize(min, max);\n }\n\n height() {\n return this.dimensions.y.size;\n }\n\n scrollHeight() {\n return this.scrollElement.scrollHeight;\n }\n\n scrollWidth() {\n return this.scrollElement.scrollWidth;\n }\n\n _resize() {\n if (!this._native) {\n this.contentResized();\n }\n }\n\n setOptions(options) {\n let that = this;\n\n this._initOptions(options);\n\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n }\n\n reset() {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({\n x: 0,\n y: 0\n });\n this._scale(1);\n }\n }\n\n contentResized() {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis('x', this.dimensions.x.min);\n }\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis('y', this.dimensions.y.min);\n }\n }\n\n zoomOut() {\n let dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n }\n\n enable() {\n this.enabled = true;\n }\n\n disable() {\n this.enabled = false;\n }\n\n scrollTo(x, y) {\n if (this._native) {\n this.scrollElement.scrollLeft(abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({\n x: x,\n y: y\n });\n }\n }\n\n animatedScrollTo(x, y, callback) {\n let from, to;\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = {\n x: this.movable.x,\n y: this.movable.y\n };\n to = {\n x: x,\n y: y\n };\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n }\n\n // kept for API compatibility, not used\n pullHandled() {\n // let that = this;\n\n // removeClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n // that.hintContainer.innerHTML = that.pullTemplate({}));\n\n // that.yinertia.onEnd();\n // that.xinertia.onEnd();\n // that.userEvents.cancel();\n }\n\n destroy() {\n const element = this.element;\n\n off(element, 'DOMMouseScroll mousewheel', this._wheelScrollHandler);\n\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n }\n\n _scale(scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n }\n\n _initPullToRefresh() {\n }\n\n // kept for API compatibility, not used\n _dragEnd() {\n // let that = this;\n\n // if (!that.pulled) {\n // return;\n // }\n\n // that.pulled = false;\n\n // removeClass(that.refreshHint, SCROLLER_RELEASE_CLASS);\n // addClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n\n // that.hintContainer.innerHTML = that.refreshTemplate({});\n\n // that.yinertia.freeze(that.options.pullOffset / 2);\n // that.trigger('pull');\n }\n\n // kept for API compatibility, not used\n _paneChange() {\n // let that = this;\n // if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n // if (!that.pulled) {\n // that.pulled = true;\n // that.refreshHint.removeClass(SCROLLER_REFRESH_CLASS).addClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.releaseTemplate({}));\n // that.hintContainer.html(that.releaseTemplate({}));\n // }\n // } else if (that.pulled) {\n // that.pulled = false;\n // that.refreshHint.removeClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.pullTemplate({}));\n // }\n }\n\n _initAxis(axis) {\n let that = this,\n movable = that.movable,\n dimension = that.dimensions[axis],\n tapCapture = that.tapCapture,\n paneAxis = that.pane[axis],\n scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints\n });\n\n dimension.bind(CHANGE, function() {\n scrollBar.refresh();\n });\n\n paneAxis.bind(CHANGE, function() {\n scrollBar.show();\n });\n\n that[axis + 'inertia'] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end() {\n scrollBar.hide();\n that.trigger('scrollEnd', {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n }\n}\n\nsetDefaultOptions(Scroller, {\n name: 'Scroller',\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling() {\n return false;\n },\n pullToRefresh: false,\n messages: {\n pullTemplate: 'Pull to refresh',\n releaseTemplate: 'Release to refresh',\n refreshTemplate: 'Refreshing'\n }\n});\n\nsetDefaultEvents(Scroller, [\n PULL,\n SCROLL,\n RESIZE\n]);\n\n","class MapService {\n constructor(widget, context = {}) {\n this.sender = context.sender || widget;\n this.widget = widget;\n this.rtl = Boolean(context.rtl);\n }\n\n notify(name, args) {\n if (this.widget) {\n this.widget.trigger(name, args);\n }\n }\n}\n\nexport default MapService;\n","import {\n geometry as g\n} from '@progress/kendo-drawing';\n\nimport {\n addClass,\n setDefaultOptions,\n valueOrDefault,\n defined,\n mousewheelDelta,\n limitValue,\n deepExtend,\n elementOffset,\n isArray,\n round\n} from '../common';\n\nimport {\n EPSG3857\n} from './crs';\n\nimport {\n Attribution\n} from './attribution';\n\nimport {\n Navigator\n} from './navigator';\n\nimport {\n ZoomControl\n} from './zoom';\n\nimport {\n Location\n} from './location';\n\nimport {\n Extent\n} from './extent';\n\nimport { Tooltip } from './tooltip/tooltip';\n\nimport {\n TileLayer\n} from './layers/tile';\n\nimport {\n BubbleLayer\n} from './layers/bubble';\n\nimport {\n ShapeLayer\n} from './layers/shape';\n\nimport {\n MarkerLayer\n} from './layers/marker';\n\nimport {\n removeChildren,\n setDefaultEvents,\n toHyphens,\n proxy,\n now,\n on,\n off,\n getSupportedFeatures,\n convertToHtml\n} from './utils';\n\nimport {\n Scroller\n} from './scroller/scroller';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport MapService from './../services/map-service';\n\nimport { CENTER_CHANGE, INIT, ZOOM_CHANGE } from './constants';\n\nlet math = Math,\n min = math.min,\n pow = math.pow,\n Point = g.Point,\n MARKER = \"marker\",\n LOCATION = \"location\",\n FRICTION = 0.9,\n FRICTION_MOBILE = 0.93,\n MOUSEWHEEL = 'DOMMouseScroll mousewheel',\n VELOCITY_MULTIPLIER = 5,\n DEFAULT_ZOOM_RATE = 1;\n\nconst layersMap = {\n bubble: BubbleLayer,\n shape: ShapeLayer,\n tile: TileLayer,\n [MARKER]: MarkerLayer\n};\n\nfunction renderPos(pos) {\n let result = [];\n\n if (pos) {\n let parts = toHyphens(pos).split(\"-\");\n\n for (let i = 0; i < parts.length; i++) {\n result.push(\"k-pos-\" + parts[i]);\n }\n }\n\n return result.join(\" \");\n}\n\nclass Map extends Observable {\n constructor(element, options = {}, themeOptions = {}, context = {}) {\n super();\n\n this._init(element, options, themeOptions, context);\n }\n\n destroy() {\n this.scroller.destroy();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this.navigator) {\n this.navigator.destroy();\n }\n if (this.attribution) {\n this.attribution.destroy();\n }\n if (this.zoomControl) {\n this.zoomControl.destroy();\n }\n\n if (isArray(this.markers)) {\n this.markers.forEach(markerLayer => {\n markerLayer.destroy();\n });\n } else {\n this.markers.destroy();\n }\n\n for (let i = 0; i < this.layers.length; i++) {\n this.layers[i].destroy();\n }\n\n off(this.element, MOUSEWHEEL, this._mousewheelHandler);\n\n super.destroy();\n }\n\n _init(element, options = {}, themeOptions = {}, context = {}) {\n this.support = getSupportedFeatures();\n this.context = context;\n\n this.initObserver(context);\n this.initServices(context);\n this._notifyObserver(INIT);\n\n this._initOptions(options);\n this._setEvents(options);\n this.crs = new EPSG3857();\n\n this._initElement(element);\n\n this._viewOrigin = this._getOrigin();\n\n this._tooltip = this._createTooltip();\n this._initScroller();\n this._initMarkers();\n this._initControls();\n this._initLayers();\n this._reset();\n\n this._mousewheelHandler = this._mousewheel.bind(this);\n on(this.element, MOUSEWHEEL, this._mousewheelHandler);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _initElement(element) {\n this.element = element;\n\n addClass(element, \"k-map\");\n element.style.position = \"relative\";\n element.setAttribute(\"data-role\", \"map\");\n removeChildren(element);\n\n const div = convertToHtml(\"
\");\n this.element.appendChild(div);\n }\n\n initServices(context = {}) {\n this.widgetService = new MapService(this, context);\n }\n\n initObserver(context = {}) {\n this.observers = [];\n this.addObserver(context.observer);\n }\n\n addObserver(observer) {\n if (observer) {\n this.observers.push(observer);\n }\n }\n\n removeObserver(observer) {\n const index = this.observers.indexOf(observer);\n\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n }\n\n requiresHandlers(eventNames) {\n const observers = this.observers;\n\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n }\n\n trigger(name, args = {}) {\n args.sender = this;\n\n const observers = this.observers;\n let isDefaultPrevented = false;\n\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n if (!isDefaultPrevented) {\n super.trigger(name, args);\n }\n\n return isDefaultPrevented;\n }\n\n _notifyObserver(name, args = {}) {\n args.sender = this;\n\n const observers = this.observers;\n let isDefaultPrevented = false;\n\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n }\n\n zoom(level) {\n let options = this.options;\n let result;\n\n if (defined(level)) {\n const zoomLevel = math.round(limitValue(level, options.minZoom, options.maxZoom));\n\n if (options.zoom !== zoomLevel) {\n options.zoom = zoomLevel;\n this.widgetService.notify(ZOOM_CHANGE, { zoom: options.zoom });\n\n this._reset();\n }\n result = this;\n } else {\n result = options.zoom;\n }\n\n return result;\n }\n\n center(center) {\n let result;\n\n if (center) {\n const current = Location.create(center);\n const previous = Location.create(this.options.center);\n if (!current.equals(previous)) {\n this.options.center = current.toArray();\n this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n this._reset();\n }\n\n result = this;\n } else {\n result = Location.create(this.options.center);\n }\n\n return result;\n }\n\n extent(extent) {\n let result;\n\n if (extent) {\n this._setExtent(extent);\n result = this;\n } else {\n result = this._getExtent();\n }\n\n return result;\n }\n\n setOptions(options = {}) {\n const element = this.element;\n\n this.destroy();\n removeChildren(element);\n this._init(element, options, {}, this.context);\n\n this._reset();\n }\n\n locationToLayer(location, zoom) {\n let clamp = !this.options.wraparound;\n const locationObject = Location.create(location);\n\n return this.crs.toPoint(locationObject, this._layerSize(zoom), clamp);\n }\n\n layerToLocation(point, zoom) {\n let clamp = !this.options.wraparound;\n const pointObject = Point.create(point);\n\n return this.crs.toLocation(pointObject, this._layerSize(zoom), clamp);\n }\n\n locationToView(location) {\n const locationObject = Location.create(location);\n let origin = this.locationToLayer(this._viewOrigin);\n let point = this.locationToLayer(locationObject);\n\n return point.translateWith(origin.scale(-1));\n }\n\n viewToLocation(point, zoom) {\n const origin = this.locationToLayer(this._getOrigin(), zoom);\n const pointObject = Point.create(point);\n const pointResult = pointObject.clone().translateWith(origin);\n\n return this.layerToLocation(pointResult, zoom);\n }\n\n eventOffset(e) {\n let x;\n let y;\n let offset = elementOffset(this.element);\n\n if ((e.x && e.x[LOCATION]) || (e.y && e.y[LOCATION])) {\n x = e.x[LOCATION] - offset.left;\n y = e.y[LOCATION] - offset.top;\n } else {\n let event = e.originalEvent || e;\n x = valueOrDefault(event.pageX, event.clientX) - offset.left;\n y = valueOrDefault(event.pageY, event.clientY) - offset.top;\n }\n\n const point = new g.Point(x, y);\n\n return point;\n }\n\n eventToView(e) {\n let cursor = this.eventOffset(e);\n return this.locationToView(this.viewToLocation(cursor));\n }\n\n eventToLayer(e) {\n return this.locationToLayer(this.eventToLocation(e));\n }\n\n eventToLocation(e) {\n let cursor = this.eventOffset(e);\n return this.viewToLocation(cursor);\n }\n\n viewSize() {\n let element = this.element;\n let scale = this._layerSize();\n let width = element.clientWidth;\n\n if (!this.options.wraparound) {\n width = min(scale, width);\n }\n\n return {\n width: width,\n height: min(scale, element.clientHeight)\n };\n }\n\n exportVisual() {\n this._reset();\n return false;\n }\n\n hideTooltip() {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n }\n\n _setOrigin(origin, zoom) {\n let size = this.viewSize(),\n topLeft;\n\n const originLocation = this._origin = Location.create(origin);\n topLeft = this.locationToLayer(originLocation, zoom);\n topLeft.x += size.width / 2;\n topLeft.y += size.height / 2;\n this.options.center = this.layerToLocation(topLeft, zoom).toArray();\n this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n\n return this;\n }\n\n _getOrigin(invalidate) {\n let size = this.viewSize(),\n topLeft;\n\n if (invalidate || !this._origin) {\n topLeft = this.locationToLayer(this.center());\n topLeft.x -= size.width / 2;\n topLeft.y -= size.height / 2;\n this._origin = this.layerToLocation(topLeft);\n }\n\n return this._origin;\n }\n\n _setExtent(newExtent) {\n let raw = Extent.create(newExtent);\n let se = raw.se.clone();\n\n if (this.options.wraparound && se.lng < 0 && newExtent.nw.lng > 0) {\n se.lng = 180 + (180 + se.lng);\n }\n\n const extent = new Extent(raw.nw, se);\n this.center(extent.center());\n let width = this.element.clientWidth;\n let height = this.element.clientHeight;\n let zoom;\n\n for (zoom = this.options.maxZoom; zoom >= this.options.minZoom; zoom--) {\n let topLeft = this.locationToLayer(extent.nw, zoom);\n let bottomRight = this.locationToLayer(extent.se, zoom);\n let layerWidth = math.abs(bottomRight.x - topLeft.x);\n let layerHeight = math.abs(bottomRight.y - topLeft.y);\n\n if (layerWidth <= width && layerHeight <= height) {\n break;\n }\n }\n\n this.zoom(zoom);\n }\n\n _getExtent() {\n let nw = this._getOrigin();\n let bottomRight = this.locationToLayer(nw);\n let size = this.viewSize();\n\n bottomRight.x += size.width;\n bottomRight.y += size.height;\n\n let se = this.layerToLocation(bottomRight);\n\n return new Extent(nw, se);\n }\n\n _zoomAround(pivot, level) {\n this._setOrigin(this.layerToLocation(pivot, level), level);\n this.zoom(level);\n }\n\n _initControls() {\n let controls = this.options.controls;\n if (controls.attribution) {\n this._createAttribution(controls.attribution);\n }\n\n if (!this.support.mobileOS) {\n if (controls.navigator) {\n this._createNavigator(controls.navigator);\n }\n\n if (controls.zoom) {\n this._createZoomControl(controls.zoom);\n }\n }\n }\n\n _createControlElement(options, defaultPosition) {\n let pos = options.position || defaultPosition;\n let posSelector = '.' + renderPos(pos).replace(' ', '.');\n let wrap = this.element.querySelector('.k-map-controls' + posSelector) || [];\n\n if (wrap.length === 0) {\n let div = document.createElement(\"div\");\n addClass(div, 'k-map-controls ' + renderPos(pos));\n wrap = div;\n this.element.appendChild(wrap);\n }\n\n let div = document.createElement(\"div\");\n\n wrap.appendChild(div);\n\n return div;\n }\n\n _createAttribution(options) {\n let element = this._createControlElement(options, 'bottomRight');\n this.attribution = new Attribution(element, options);\n }\n\n _createNavigator(options) {\n let element = this._createControlElement(options, 'topLeft');\n let navigator = this.navigator = new Navigator(element, options);\n\n this._navigatorPan = this._navigatorPan.bind(this);\n navigator.bind('pan', this._navigatorPan);\n\n this._navigatorCenter = this._navigatorCenter.bind(this);\n navigator.bind('center', this._navigatorCenter);\n }\n\n _navigatorPan(e) {\n let scroller = this.scroller;\n let x = scroller.scrollLeft + e.x;\n let y = scroller.scrollTop - e.y;\n let bounds = this._virtualSize;\n let width = this.element.clientWidth;\n let height = this.element.clientHeight;\n\n // TODO: Move limits to scroller\n x = limitValue(x, bounds.x.min, bounds.x.max - width);\n y = limitValue(y, bounds.y.min, bounds.y.max - height);\n\n this.scroller.one('scroll', proxy(this._scrollEnd, this));\n\n this.scroller.scrollTo(-x, -y);\n }\n\n _navigatorCenter() {\n this.center(this.options.center);\n }\n\n _createZoomControl(options) {\n let element = this._createControlElement(options, 'topLeft');\n let zoomControl = this.zoomControl = new ZoomControl(element, options);\n\n this._zoomControlChange = this._zoomControlChange.bind(this);\n zoomControl.bind('change', this._zoomControlChange);\n }\n\n _zoomControlChange(e) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n this.zoom(this.zoom() + e.delta);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n\n _initScroller() {\n let friction = this.support.mobileOS ? FRICTION_MOBILE : FRICTION;\n let zoomable = this.options.zoomable !== false;\n let scroller = this.scroller = new Scroller(this.element.children[0], {\n friction: friction,\n velocityMultiplier: VELOCITY_MULTIPLIER,\n zoom: zoomable,\n mousewheelScrolling: false,\n supportDoubleTap: true\n });\n\n scroller.bind('scroll', proxy(this._scroll, this));\n scroller.bind('scrollEnd', proxy(this._scrollEnd, this));\n\n scroller.userEvents.bind('gesturestart', proxy(this._scaleStart, this));\n scroller.userEvents.bind('gestureend', proxy(this._scale, this));\n scroller.userEvents.bind('doubleTap', proxy(this._doubleTap, this));\n scroller.userEvents.bind('tap', proxy(this._tap, this));\n\n this.scrollElement = scroller.scrollElement;\n }\n\n _initLayers() {\n let defs = this.options.layers,\n layers = this.layers = [];\n\n for (let i = 0; i < defs.length; i++) {\n let options = defs[i];\n\n const layer = this._createLayer(options);\n layers.push(layer);\n }\n }\n\n _createLayer(options) {\n let type = options.type || 'shape';\n let layerDefaults = this.options.layerDefaults[type];\n let layerOptions = type === MARKER ?\n deepExtend({}, this.options.markerDefaults, options) :\n deepExtend({}, layerDefaults, options);\n\n let layerConstructor = layersMap[type];\n let layer = new layerConstructor(this, layerOptions);\n\n if (type === MARKER) {\n this.markers = layer;\n }\n\n return layer;\n }\n\n _createTooltip() {\n return new Tooltip(this.widgetService, this.options.tooltip);\n }\n\n /* eslint-disable arrow-body-style */\n _initMarkers() {\n const markerLayers = (this.options.layers || []).filter(x => {\n return x && x.type === MARKER;\n });\n\n if (markerLayers.length > 0) {\n // render the markers from options.layers\n // instead of options.markers\n return;\n }\n\n this.markers = new MarkerLayer(this, this.options.markerDefaults);\n this.markers.add(this.options.markers);\n }\n /* eslint-enable arrow-body-style */\n\n _scroll(e) {\n let origin = this.locationToLayer(this._viewOrigin).round();\n let movable = e.sender.movable;\n let offset = new g.Point(movable.x, movable.y).scale(-1).scale(1 / movable.scale);\n\n origin.x += offset.x;\n origin.y += offset.y;\n this._scrollOffset = offset;\n\n this._tooltip.offset = offset;\n this.hideTooltip();\n\n this._setOrigin(this.layerToLocation(origin));\n\n this.trigger('pan', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n }\n\n _scrollEnd(e) {\n if (!this._scrollOffset || !this._panComplete()) {\n return;\n }\n\n this._scrollOffset = null;\n this._panEndTimestamp = now();\n\n this.trigger('panEnd', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n }\n\n _panComplete() {\n return now() - (this._panEndTimestamp || 0) > 50;\n }\n\n _scaleStart(e) {\n if (this.trigger('zoomStart', { originalEvent: e })) {\n let touch = e.touches[1];\n\n if (touch) {\n touch.cancel();\n }\n }\n }\n\n _scale(e) {\n let scale = this.scroller.movable.scale;\n let zoom = this._scaleToZoom(scale);\n let gestureCenter = new g.Point(e.center.x, e.center.y);\n let centerLocation = this.viewToLocation(gestureCenter, zoom);\n let centerPoint = this.locationToLayer(centerLocation, zoom);\n let originPoint = centerPoint.translate(-gestureCenter.x, -gestureCenter.y);\n\n this._zoomAround(originPoint, zoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n\n _scaleToZoom(scaleDelta) {\n let scale = this._layerSize() * scaleDelta;\n let tiles = scale / this.options.minSize;\n let zoom = math.log(tiles) / math.log(2);\n\n return math.round(zoom);\n }\n\n _reset() {\n if (this.attribution) {\n this.attribution.filter(this.center(), this.zoom());\n }\n\n this._viewOrigin = this._getOrigin(true);\n\n this._resetScroller();\n this.hideTooltip();\n\n this.trigger('beforeReset');\n this.trigger('reset');\n }\n\n _resetScroller() {\n let scroller = this.scroller;\n let x = scroller.dimensions.x;\n let y = scroller.dimensions.y;\n let scale = this._layerSize();\n let nw = this.extent().nw;\n let topLeft = this.locationToLayer(nw).round();\n\n scroller.movable.round = true;\n scroller.reset();\n scroller.userEvents.cancel();\n\n let zoom = this.zoom();\n\n scroller.dimensions.forcedMinScale = pow(2, this.options.minZoom - zoom);\n scroller.dimensions.maxScale = pow(2, this.options.maxZoom - zoom);\n\n let xBounds = {\n min: -topLeft.x,\n max: scale - topLeft.x\n };\n\n let yBounds = {\n min: -topLeft.y,\n max: scale - topLeft.y\n };\n\n if (this.options.wraparound) {\n xBounds.max = 20 * scale;\n xBounds.min = -xBounds.max;\n }\n\n if (this.options.pannable === false) {\n let viewSize = this.viewSize();\n xBounds.min = yBounds.min = 0;\n xBounds.max = viewSize.width;\n yBounds.max = viewSize.height;\n }\n\n x.makeVirtual();\n y.makeVirtual();\n\n x.virtualSize(xBounds.min, xBounds.max);\n y.virtualSize(yBounds.min, yBounds.max);\n\n this._virtualSize = {\n x: xBounds,\n y: yBounds\n };\n }\n\n // kept for API compatibility, not used\n _renderLayers() {\n }\n\n _layerSize(zoom) {\n const newZoom = valueOrDefault(zoom, this.options.zoom);\n return this.options.minSize * pow(2, newZoom);\n }\n\n _tap(e) {\n if (!this._panComplete()) {\n return;\n }\n\n let cursor = this.eventOffset(e);\n this.hideTooltip();\n\n this.trigger('click', {\n originalEvent: e,\n location: this.viewToLocation(cursor)\n });\n }\n\n _doubleTap(e) {\n let options = this.options;\n\n if (options.zoomable !== false) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n let toZoom = this.zoom() + DEFAULT_ZOOM_RATE;\n let cursor = this.eventOffset(e);\n let location = this.viewToLocation(cursor);\n let postZoom = this.locationToLayer(location, toZoom);\n let origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n }\n\n _mousewheel(e) {\n e.preventDefault();\n let delta = mousewheelDelta(e) > 0 ? -1 : 1;\n let options = this.options;\n let fromZoom = this.zoom();\n let toZoom = limitValue(fromZoom + delta, options.minZoom, options.maxZoom);\n\n if (options.zoomable !== false && toZoom !== fromZoom) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n let cursor = this.eventOffset(e);\n let location = this.viewToLocation(cursor);\n let postZoom = this.locationToLayer(location, toZoom);\n let origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n }\n\n _toDocumentCoordinates(point) {\n const offset = elementOffset(this.element);\n\n return {\n left: round(point.x + offset.left),\n top: round(point.y + offset.top)\n };\n }\n}\n\nsetDefaultOptions(Map, {\n name: 'Map',\n controls: {\n attribution: true,\n navigator: {\n panStep: 100\n },\n zoom: true\n },\n layers: [],\n layerDefaults: {\n shape: {\n style: {\n fill: {\n color: '#fff'\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n bubble: {\n style: {\n fill: {\n color: '#fff',\n opacity: 0.5\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n marker: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n }\n },\n center: [\n 0,\n 0\n ],\n zoom: 3,\n minSize: 256,\n minZoom: 1,\n maxZoom: 19,\n markers: [],\n markerDefaults: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n },\n wraparound: true,\n // If set to true, GeoJSON layer \"Point\" features will be rendered as markers.\n // Otherwise, the points will be rendered as circles.\n // Defaults to `true` for KUI/jQuery, `false` everywhere else.\n renderPointsAsMarkers: false\n});\n\nsetDefaultEvents(Map, [\n 'beforeReset',\n 'click',\n 'markerActivate',\n 'markerClick',\n 'markerCreated',\n\n // Events for implementing custom tooltips.\n 'markerMouseEnter',\n 'markerMouseLeave',\n\n 'pan',\n 'panEnd',\n 'reset',\n 'shapeClick',\n 'shapeCreated',\n 'shapeFeatureCreated',\n 'shapeMouseEnter',\n 'shapeMouseLeave',\n 'zoomEnd',\n 'zoomStart'\n]);\n\nexport default Map;\n","const BAR_GAP = 1.5;\nconst BAR_SPACING = 0.4;\nconst BLACK = '#000';\nconst SANS = 'Arial, Helvetica, sans-serif';\nconst SANS11 = \"11px \" + SANS;\nconst SANS12 = '12px ' + SANS;\nconst SANS16 = '16px ' + SANS;\nconst TRANSPARENT = 'transparent';\nconst WHITE = '#fff';\n\nconst notes = () => ({\n icon: {\n border: {\n width: 1\n }\n },\n label: {\n font: SANS12,\n padding: 3\n },\n line: {\n length: 10,\n width: 2\n },\n visible: true\n});\n\nconst axisDefaults = () => ({\n labels: {\n font: SANS12\n },\n notes: notes(),\n title: {\n font: SANS16,\n margin: 5\n }\n});\n\nconst areaSeries = () => ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n});\n\nconst rangeAreaSeries = () => ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n});\n\nconst barSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst boxPlotSeries = () => ({\n outliersField: \"\",\n meanField: \"\",\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n whiskers: {\n width: 3\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n }\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n },\n spacing: 0.3,\n whiskers: {\n width: 2\n }\n});\n\nconst bubbleSeries = () => ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\n opacity: 0.6\n});\n\nconst bulletSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n target: {\n color: \"#ff0000\"\n }\n});\n\nconst candlestickSeries = () => ({\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n line: {\n width: 2\n }\n },\n line: {\n color: BLACK,\n width: 1\n },\n spacing: 0.3\n});\n\nconst columnSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst donutSeries = () => ({\n margin: 1\n});\n\nconst lineSeries = () => ({\n width: 2\n});\n\nconst ohlcSeries = () => ({\n gap: 1,\n highlight: {\n line: {\n opacity: 1,\n width: 3\n }\n },\n line: {\n width: 1\n },\n spacing: 0.3\n});\n\nconst radarAreaSeries = () => ({\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.5\n});\n\nconst radarLineSeries = () => ({\n markers: {\n visible: false\n },\n width: 2\n});\n\nconst rangeBarSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst rangeColumnSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n});\n\nconst scatterLineSeries = () => ({\n width: 1\n});\n\nconst waterfallSeries = () => ({\n gap: 0.5,\n line: {\n color: BLACK,\n width: 1\n },\n spacing: BAR_SPACING\n});\n\nconst pieSeries = () => ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n});\n\nconst funnelSeries = () => ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n});\n\nconst heatmapSeries = () => ({\n labels: {\n color: '',\n background: TRANSPARENT,\n visible: true\n },\n highlight: {\n border: {\n width: 0\n }\n }\n});\n\nconst seriesDefaults = (options) => ({\n visible: true,\n labels: {\n font: SANS11\n },\n overlay: options.gradients ? {} : {\n gradient: \"none\"\n },\n area: areaSeries(),\n rangeArea: rangeAreaSeries(),\n verticalRangeArea: rangeAreaSeries(),\n bar: barSeries(),\n boxPlot: boxPlotSeries(),\n bubble: bubbleSeries(),\n bullet: bulletSeries(),\n candlestick: candlestickSeries(),\n column: columnSeries(),\n heatmap: heatmapSeries(),\n pie: pieSeries(),\n donut: donutSeries(),\n funnel: funnelSeries(),\n horizontalWaterfall: waterfallSeries(),\n line: lineSeries(),\n notes: notes(),\n ohlc: ohlcSeries(),\n radarArea: radarAreaSeries(),\n radarLine: radarLineSeries(),\n polarArea: radarAreaSeries(),\n polarLine: radarLineSeries(),\n rangeBar: rangeBarSeries(),\n rangeColumn: rangeColumnSeries(),\n scatterLine: scatterLineSeries(),\n verticalArea: areaSeries(),\n verticalBoxPlot: boxPlotSeries(),\n verticalBullet: bulletSeries(),\n verticalLine: lineSeries(),\n waterfall: waterfallSeries()\n});\n\nconst title = () => ({\n font: SANS16\n});\n\nconst legend = () => ({\n labels: {\n font: SANS12\n }\n});\n\nexport const baseTheme = (options = {}) => ({\n axisDefaults: axisDefaults(),\n categoryAxis: {\n majorGridLines: {\n visible: true\n }\n },\n navigator: {\n pane: {\n height: 90,\n margin: {\n top: 10\n }\n }\n },\n seriesDefaults: seriesDefaults(options),\n title: title(),\n legend: legend()\n});\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { isDevMode, Directive, Optional, Injectable, SimpleChange, TemplateRef, Component, ChangeDetectionStrategy, Input, ContentChild, ElementRef, ViewChild, ViewChildren, EventEmitter, Output, ContentChildren, LOCALE_ID, Inject, InjectionToken, NgModule } from '@angular/core';\nimport * as i8 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport * as i4 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { DateCategoryAxis, DateValueAxis, DomEventsBuilder as DomEventsBuilder$1, InstanceObserver, chartBaseTheme, Chart, StockChart, Sparkline } from '@progress/kendo-charts';\nimport { exportImage, exportSVG } from '@progress/kendo-drawing';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { Subject, BehaviorSubject, combineLatest } from 'rxjs';\nimport { auditTime, tap } from 'rxjs/operators';\nimport * as i1 from '@progress/kendo-angular-popup';\nimport { PopupService, POPUP_CONTAINER, PopupModule } from '@progress/kendo-angular-popup';\nimport * as i4$1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from '@progress/kendo-angular-intl';\n\nconst getTouch = (domEvent) => {\n return {\n x: {\n location: domEvent.pageX\n },\n y: {\n location: domEvent.pageY\n }\n };\n};\nconst eventArgs = (e, previousArgs) => {\n const pointers = e.pointers;\n const pointer = pointers[0];\n const xLocation = pointer.pageX;\n const yLocation = pointer.pageY;\n let distance = 0;\n if (pointers.length > 1) {\n const pointer1 = pointers[0];\n const pointer2 = pointers[1];\n distance = Math.sqrt(Math.pow(pointer1.pageX - pointer2.pageX, 2) + Math.pow(pointer1.pageY - pointer2.pageY, 2));\n }\n return {\n distance: distance,\n event: e.srcEvent,\n preventDefault: function () {\n e.preventDefault();\n },\n target: e.target,\n touches: pointers.map(getTouch),\n type: e.type,\n x: {\n delta: previousArgs ? xLocation - previousArgs.x.location : 0,\n initialDelta: e.deltaX,\n location: xLocation,\n startLocation: xLocation - e.deltaX\n },\n y: {\n delta: previousArgs ? yLocation - previousArgs.y.location : 0,\n initialDelta: e.deltaY,\n location: yLocation,\n startLocation: yLocation - e.deltaY\n }\n };\n};\nfunction shouldBindGroup(groupNames, events) {\n for (let idx = 0; idx < groupNames.length; idx++) {\n if (events[groupNames[idx]]) {\n return true;\n }\n }\n return false;\n}\nconst eventGroups = [{\n end: 'panend',\n move: 'panmove',\n start: 'panstart'\n }, {\n gesturechange: 'pinchmove',\n gestureend: 'pinchend',\n gesturestart: 'pinchstart'\n }, {\n press: 'press'\n }, {\n tap: 'tap'\n }];\n/**\n * @hidden\n */\nclass DomEvents {\n constructor(hammerInstance, events) {\n this.hammerInstance = hammerInstance;\n this.eventHandlers = {};\n this.tap = this.tap.bind(this);\n this.press = this.press.bind(this);\n this.panstart = this.panstart.bind(this);\n this.panmove = this.panmove.bind(this);\n this.panend = this.panend.bind(this);\n this.pinchstart = this.pinchstart.bind(this);\n this.pinchmove = this.pinchmove.bind(this);\n this.pinchend = this.pinchend.bind(this);\n if (events) {\n this.bind(events);\n }\n }\n tap(e) {\n this.trigger('tap', e);\n }\n press(e) {\n this.trigger('press', e);\n }\n panstart(e) {\n delete this.previous;\n this.previous = this.trigger('start', e);\n }\n panmove(e) {\n this.previous = this.trigger('move', e);\n }\n panend(e) {\n this.trigger('end', e);\n delete this.previous;\n }\n pinchstart(e) {\n this.trigger('gesturestart', e);\n }\n pinchmove(e) {\n this.trigger('gesturechange', e);\n }\n pinchend(e) {\n this.trigger('gestureend', e);\n }\n trigger(name, e) {\n const args = eventArgs(e, this.previous);\n if (this.eventHandlers[name]) {\n this.eventHandlers[name](args);\n }\n return args;\n }\n bind(events = {}) {\n this.unbind();\n this.eventHandlers = events;\n for (let idx = 0; idx < eventGroups.length; idx++) {\n const eventGroup = eventGroups[idx];\n const groupNames = Object.keys(eventGroup);\n if (shouldBindGroup(groupNames, events)) {\n for (let nameIdx = 0; nameIdx < groupNames.length; nameIdx++) {\n const name = eventGroup[groupNames[nameIdx]];\n this.hammerInstance.on(name, this[name]);\n }\n }\n }\n }\n unbind() {\n if (this.hammerInstance) {\n this.hammerInstance.off();\n }\n this.eventHandlers = {};\n }\n destroy() {\n if (this.hammerInstance) {\n this.hammerInstance.destroy();\n delete this.hammerInstance;\n }\n delete this.eventHandlers;\n }\n toggleDrag(enable) {\n this.toggle('pan', enable);\n }\n toggleZoom(enable) {\n this.toggle('pinch', enable);\n }\n toggle(recognizer, enable) {\n if (this.hammerInstance) {\n const instanceRecognizer = this.hammerInstance.get(recognizer);\n instanceRecognizer.set({\n enable: enable\n });\n }\n }\n}\n\nconst MISSING_HAMMER_MESSAGE = 'Hammerjs is not loaded.' +\n 'Solution: http://www.telerik.com/kendo-angular-ui/components/charts/troubleshooting/#toc-hammerjs-is-not-loaded';\n/**\n * @hidden\n */\nclass DomEventsBuilder {\n static create(element, events) {\n if (typeof window !== 'undefined') {\n const HAMMER = window.Hammer;\n if (!HAMMER) {\n if (isDevMode()) {\n throw new Error(MISSING_HAMMER_MESSAGE);\n }\n return;\n }\n const hammerInstance = new HAMMER(element, {\n recognizers: [\n [HAMMER.Tap],\n [HAMMER.Pan],\n [HAMMER.Pinch],\n [HAMMER.Press, { time: 0 }]\n ]\n });\n return new DomEvents(hammerInstance, events);\n }\n }\n}\n\nconst dateCategoryAxisFormats = DateCategoryAxis.prototype.options.labels.dateFormats;\nconst dateValueAxisFormats = DateValueAxis.prototype.options.labels.dateFormats;\nconst dateFormats = {\n milliseconds: \"HH:mm:ss.SSS\",\n seconds: { time: 'medium' },\n minutes: { time: 'short' },\n hours: { time: 'short' },\n days: { skeleton: 'Md' },\n weeks: { skeleton: 'Md' },\n months: { skeleton: 'yyMMM' },\n years: { skeleton: 'y' }\n};\nObject.assign(dateCategoryAxisFormats, dateFormats);\nObject.assign(dateValueAxisFormats, dateFormats);\nDomEventsBuilder$1.register(DomEventsBuilder);\n\n/**\n * A directive which selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component for the\n * [Donut center template]({% slug donut_seriestypes_charts %}).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

22.5%

\n * of which renewables\n *
\n * \n * \n * \n * \n * \n *
\n * `\n * })\n * export class AppComponent {\n * public data: any[] = [{\n * kind: 'Hydroelectric', share: 0.175\n * }, {\n * kind: 'Nuclear', share: 0.238\n * }, {\n * kind: 'Coal', share: 0.118\n * }, {\n * kind: 'Solar', share: 0.052\n * }, {\n * kind: 'Wind', share: 0.225\n * }, {\n * kind: 'Other', share: 0.192\n * }];\n * }\n *\n * ```\n */\nclass DonutCenterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDonutCenterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DonutCenterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDonutCenterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DonutCenterTemplateDirective, selector: \"[kendoChartDonutCenterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DonutCenterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoChartDonutCenterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ItemChange {\n constructor(sender, options) {\n this.sender = sender;\n this.options = options;\n }\n}\n/**\n * @hidden\n */\nclass CollectionService {\n constructor() {\n this.source = new Subject();\n this.onItemChange$ = this.source.asObservable();\n }\n notify(change) {\n this.source.next(change);\n }\n}\nCollectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCollectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * @hidden\n */\nfunction copyChanges(changes, options) {\n for (const propertyName in changes) {\n if (!changes.hasOwnProperty(propertyName)) {\n continue;\n }\n const value = changes[propertyName].currentValue;\n if (value === undefined) {\n delete options[propertyName];\n }\n else {\n options[propertyName] = value;\n }\n }\n}\n\n/**\n * @hidden\n */\nfunction toSimpleChanges(changes) {\n const result = {};\n for (const propertyName in changes) {\n if (!changes.hasOwnProperty(propertyName)) {\n continue;\n }\n result[propertyName] = new SimpleChange(null, changes[propertyName], false);\n }\n return result;\n}\n\n/**\n * @hidden\n */\nconst THROTTLE_MS = 1000 / 60;\n/**\n * @hidden\n */\nclass Change {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n }\n}\n/**\n * @hidden\n */\nclass ConfigurationService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.store = {};\n this.source = new BehaviorSubject({});\n this.initSource();\n }\n initSource() {\n this.onFastChange$ = this.source.asObservable();\n this.onChange$ = this.onFastChange$.pipe(auditTime(THROTTLE_MS));\n }\n push(store) {\n this.store = store;\n this.next();\n }\n notify(change) {\n this.set(change.key, change.value);\n this.next();\n }\n set(field, value) {\n let store = this.store;\n const parts = field.split('.');\n let key = parts.shift();\n while (parts.length > 0) {\n store = store[key] = store[key] || {};\n key = parts.shift();\n }\n store[key] = value;\n }\n next() {\n this.ngZone.runOutsideAngular(() => {\n this.source.next(this.store);\n });\n }\n}\nConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ConfigurationService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ConfigurationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ConfigurationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nclass CollectionItemComponent {\n constructor(configurationService, collectionService) {\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.options = {};\n this.subscription = configurationService.onFastChange$.subscribe(store => {\n this.options = store;\n this.notify();\n });\n }\n ngOnChanges(changes) {\n const store = this.configurationService.store;\n copyChanges(changes, store);\n this.configurationService.push(store);\n }\n /**\n * Updates the component fields with the specified values and refreshes the Chart.\n *\n * Use this method when the configuration values cannot be set through the template.\n *\n * @example\n * ```ts-no-run\n * item.notifyChanges({ visible: true });\n * ```\n *\n * @param changes An object containing the updated input fields.\n */\n notifyChanges(changes) {\n this.ngOnChanges(toSimpleChanges(changes));\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n notify() {\n if (!this.collectionService) {\n return;\n }\n this.collectionService.notify(new ItemChange(this, this.options));\n }\n}\nCollectionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Directive });\nCollectionItemComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CollectionItemComponent, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionItemComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; } });\n\n/**\n * @hidden\n */\nclass SettingsComponent {\n constructor(configKey, configurationService) {\n this.configKey = configKey;\n this.configurationService = configurationService;\n this.store = {};\n if (configKey === undefined) {\n throw new Error('Configuration key not set');\n }\n }\n ngOnDestroy() {\n this.store = undefined;\n this.notify();\n }\n ngOnChanges(changes) {\n copyChanges(changes, this.store);\n this.notify();\n }\n /**\n * Updates the component fields with the specified values and refreshes the Chart.\n *\n * Use this method when the configuration values cannot be set through the template.\n *\n * @example\n * ```ts-no-run\n * item.notifyChanges({ visible: true });\n * ```\n *\n * @param changes An object containing the updated input fields.\n */\n notifyChanges(changes) {\n this.ngOnChanges(toSimpleChanges(changes));\n }\n markAsVisible() {\n this.store.visible = true;\n this.notify();\n }\n notify() {\n this.configurationService.notify(new Change(this.configKey, this.store));\n }\n}\nSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SettingsComponent, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\nSettingsComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SettingsComponent, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SettingsComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: undefined }, { type: ConfigurationService }]; } });\n\n/**\n * The configuration options of the Chart series tooltip\n * ([see example]({% slug tooltips_chart_charts %})).\n */\nclass SeriesTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n get seriesTooltipTemplateRef() {\n return this.seriesTooltipTemplate;\n }\n}\nSeriesTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesTooltipComponent, selector: \"kendo-chart-series-item-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, queries: [{ propertyName: \"seriesTooltipTemplate\", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: [TemplateRef, { static: false }]\n }] } });\n\nconst toggle = (flag) => flag === undefined ? false : !flag;\n/**\n * The configuration component for a series item.\n */\nclass SeriesItemComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n /**\n * Toggles the series visibility and updates the parent Chart\n * without animated transitions.\n */\n toggleVisibility() {\n this.options.visible = toggle(this.options.visible);\n this.notify();\n }\n /**\n * Toggles the visibility of a point with the given index.\n * Applicable for the Pie, Donut, and Funnel series.\n *\n * @param pointIndex - The zero-based index of the point to toggle.\n */\n togglePointVisibility(pointIndex) {\n const pv = this.options.pointVisibility = this.options.pointVisibility || {};\n pv[pointIndex] = toggle(pv[pointIndex]);\n this.notify();\n }\n get seriesTooltipTemplateRef() {\n if (this.seriesTooltip) {\n return this.seriesTooltip.seriesTooltipTemplateRef;\n }\n }\n}\nSeriesItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesItemComponent, selector: \"kendo-chart-series-item\", inputs: { aggregate: \"aggregate\", autoFit: \"autoFit\", axis: \"axis\", border: \"border\", categoryAxis: \"categoryAxis\", categoryField: \"categoryField\", closeField: \"closeField\", color: \"color\", colorField: \"colorField\", connectors: \"connectors\", currentField: \"currentField\", dashType: \"dashType\", data: \"data\", downColor: \"downColor\", downColorField: \"downColorField\", dynamicHeight: \"dynamicHeight\", dynamicSlope: \"dynamicSlope\", errorHighField: \"errorHighField\", errorLowField: \"errorLowField\", explodeField: \"explodeField\", field: \"field\", fromField: \"fromField\", gap: \"gap\", highField: \"highField\", holeSize: \"holeSize\", line: \"line\", lowField: \"lowField\", lowerField: \"lowerField\", margin: \"margin\", maxSize: \"maxSize\", mean: \"mean\", meanField: \"meanField\", median: \"median\", medianField: \"medianField\", minSize: \"minSize\", missingValues: \"missingValues\", name: \"name\", neckRatio: \"neckRatio\", negativeColor: \"negativeColor\", negativeValues: \"negativeValues\", noteTextField: \"noteTextField\", opacity: \"opacity\", openField: \"openField\", outliersField: \"outliersField\", overlay: \"overlay\", padding: \"padding\", q1Field: \"q1Field\", q3Field: \"q3Field\", segmentSpacing: \"segmentSpacing\", size: \"size\", sizeField: \"sizeField\", spacing: \"spacing\", stack: \"stack\", startAngle: \"startAngle\", style: \"style\", summaryField: \"summaryField\", target: \"target\", toField: \"toField\", type: \"type\", upperField: \"upperField\", visible: \"visible\", visibleInLegend: \"visibleInLegend\", visibleInLegendField: \"visibleInLegendField\", visual: \"visual\", width: \"width\", whiskers: \"whiskers\", xAxis: \"xAxis\", xErrorHighField: \"xErrorHighField\", xErrorLowField: \"xErrorLowField\", xField: \"xField\", yAxis: \"yAxis\", yErrorHighField: \"yErrorHighField\", yErrorLowField: \"yErrorLowField\", yField: \"yField\", zIndex: \"zIndex\", errorBars: \"errorBars\", extremes: \"extremes\", highlight: \"highlight\", labels: \"labels\", markers: \"markers\", notes: \"notes\", outliers: \"outliers\", tooltip: \"tooltip\" }, providers: [ConfigurationService], queries: [{ propertyName: \"seriesTooltip\", first: true, predicate: SeriesTooltipComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-series-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { aggregate: [{\n type: Input\n }], autoFit: [{\n type: Input\n }], axis: [{\n type: Input\n }], border: [{\n type: Input\n }], categoryAxis: [{\n type: Input\n }], categoryField: [{\n type: Input\n }], closeField: [{\n type: Input\n }], color: [{\n type: Input\n }], colorField: [{\n type: Input\n }], connectors: [{\n type: Input\n }], currentField: [{\n type: Input\n }], dashType: [{\n type: Input\n }], data: [{\n type: Input\n }], downColor: [{\n type: Input\n }], downColorField: [{\n type: Input\n }], dynamicHeight: [{\n type: Input\n }], dynamicSlope: [{\n type: Input\n }], errorHighField: [{\n type: Input\n }], errorLowField: [{\n type: Input\n }], explodeField: [{\n type: Input\n }], field: [{\n type: Input\n }], fromField: [{\n type: Input\n }], gap: [{\n type: Input\n }], highField: [{\n type: Input\n }], holeSize: [{\n type: Input\n }], line: [{\n type: Input\n }], lowField: [{\n type: Input\n }], lowerField: [{\n type: Input\n }], margin: [{\n type: Input\n }], maxSize: [{\n type: Input\n }], mean: [{\n type: Input\n }], meanField: [{\n type: Input\n }], median: [{\n type: Input\n }], medianField: [{\n type: Input\n }], minSize: [{\n type: Input\n }], missingValues: [{\n type: Input\n }], name: [{\n type: Input\n }], neckRatio: [{\n type: Input\n }], negativeColor: [{\n type: Input\n }], negativeValues: [{\n type: Input\n }], noteTextField: [{\n type: Input\n }], opacity: [{\n type: Input\n }], openField: [{\n type: Input\n }], outliersField: [{\n type: Input\n }], overlay: [{\n type: Input\n }], padding: [{\n type: Input\n }], q1Field: [{\n type: Input\n }], q3Field: [{\n type: Input\n }], segmentSpacing: [{\n type: Input\n }], size: [{\n type: Input\n }], sizeField: [{\n type: Input\n }], spacing: [{\n type: Input\n }], stack: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], style: [{\n type: Input\n }], summaryField: [{\n type: Input\n }], target: [{\n type: Input\n }], toField: [{\n type: Input\n }], type: [{\n type: Input\n }], upperField: [{\n type: Input\n }], visible: [{\n type: Input\n }], visibleInLegend: [{\n type: Input\n }], visibleInLegendField: [{\n type: Input\n }], visual: [{\n type: Input\n }], width: [{\n type: Input\n }], whiskers: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], xErrorHighField: [{\n type: Input\n }], xErrorLowField: [{\n type: Input\n }], xField: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], yErrorHighField: [{\n type: Input\n }], yErrorLowField: [{\n type: Input\n }], yField: [{\n type: Input\n }], zIndex: [{\n type: Input\n }], errorBars: [{\n type: Input\n }], extremes: [{\n type: Input\n }], highlight: [{\n type: Input\n }], labels: [{\n type: Input\n }], markers: [{\n type: Input\n }], notes: [{\n type: Input\n }], outliers: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], seriesTooltip: [{\n type: ContentChild,\n args: [SeriesTooltipComponent, { static: false }]\n }] } });\n\nconst POSITION_MODE = 'absolute';\nconst COLLISION = { horizontal: \"fit\", vertical: \"fit\" };\n/**\n * @hidden\n */\nclass BaseTooltip {\n constructor(popupService, localizationService) {\n this.popupService = popupService;\n this.localizationService = localizationService;\n this.style = {};\n this.popupRef = null;\n }\n get active() {\n return this.popupRef !== null;\n }\n show(e) {\n const align = e.anchor.align;\n const offset = this.position(e.anchor.point);\n this.style = e.style;\n if (!this.popupRef) {\n this.popupRef = this.popupService.open(Object.assign({\n offset: offset,\n popupAlign: align,\n animate: this.animate,\n content: this.templateRef,\n collision: COLLISION,\n positionMode: POSITION_MODE\n }, this.popupSettings));\n if (this.localizationService.rtl) {\n this.popupRef.popupElement.setAttribute('dir', 'rtl');\n }\n this.onInit();\n }\n else {\n const popup = this.popupRef.popup.instance;\n popup.offset = offset;\n popup.popupAlign = align;\n }\n }\n hide() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n onInit() {\n }\n ngOnDestroy() {\n this.hide();\n }\n position(offset) {\n if (!this.popupSettings || !this.popupSettings.appendTo) {\n return offset;\n }\n const appendTo = this.popupSettings.appendTo.element.nativeElement;\n const bbox = appendTo.getBoundingClientRect();\n const { scrollLeft, scrollTop } = this.scrollOffset(appendTo);\n return {\n left: offset.left - bbox.left - scrollLeft,\n top: offset.top - bbox.top - scrollTop\n };\n }\n scrollOffset(element) {\n if (!element) {\n return null;\n }\n let scrollLeft = element.scrollLeft;\n let scrollTop = element.scrollTop;\n let parent = element.parentElement;\n while (parent) {\n scrollLeft += parent.scrollLeft;\n scrollTop += parent.scrollTop;\n parent = parent.parentElement;\n }\n return { scrollLeft, scrollTop };\n }\n}\nBaseTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseTooltip, deps: [{ token: i1.PopupService }, { token: i4.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nBaseTooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseTooltip, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseTooltip, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i1.PopupService }, { type: i4.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nfunction bodyFactory() {\n if (isDocumentAvailable()) {\n return new ElementRef(document.body);\n }\n}\n\n/**\n * @hidden\n */\nclass CrosshairTooltipComponent extends BaseTooltip {\n constructor(popupService, localizationService) {\n super(popupService, localizationService);\n this.animate = false;\n }\n show(e) {\n super.show(e);\n this.value = e.value;\n this.popupRef.popup.changeDetectorRef.detectChanges();\n }\n}\nCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CrosshairTooltipComponent, deps: [{ token: i1.PopupService }, { token: i4.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CrosshairTooltipComponent, selector: \"kendo-chart-crosshair-tooltip\", inputs: { key: \"key\", popupSettings: \"popupSettings\" }, providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }], viewQueries: [{ propertyName: \"templateRef\", first: true, predicate: [\"content\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n
\n {{ value }}\n
\n
\n `, isInline: true, directives: [{ type: i4$1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }],\n selector: 'kendo-chart-crosshair-tooltip',\n template: `\n \n
\n {{ value }}\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.PopupService }, { type: i4.LocalizationService }]; }, propDecorators: { templateRef: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], key: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }] } });\n\nconst AXES = [\"categoryAxis\", \"valueAxis\", \"xAxis\", \"yAxis\"];\n/**\n * @hidden\n */\nclass CrosshairTooltipsContainerComponent {\n constructor() {\n this.tooltipKeys = [];\n this.tooltipsMap = {};\n }\n show(e) {\n const tooltipComponents = this.crossahirTooltipComponents.toArray();\n const axisName = e.axisName;\n const axisIndex = e.axisIndex;\n for (let idx = 0; idx < tooltipComponents.length; idx++) {\n if (tooltipComponents[idx].key === axisName + axisIndex) {\n tooltipComponents[idx].show(e);\n break;\n }\n }\n }\n hide() {\n const tooltipComponents = this.crossahirTooltipComponents.toArray();\n for (let idx = 0; idx < tooltipComponents.length; idx++) {\n tooltipComponents[idx].hide();\n }\n }\n get active() {\n return this.tooltipKeys.length > 0;\n }\n createCrosshairTooltips(options) {\n const newMap = this.mapTooltips(options);\n const map = this.tooltipsMap;\n for (let key in map) {\n if (!newMap[key]) {\n this.removeTooltip(key);\n delete map[key];\n }\n }\n for (let key in newMap) {\n if (!map[key]) {\n map[key] = newMap[key];\n this.tooltipKeys.push(key);\n }\n }\n }\n removeTooltip(key) {\n const keys = this.tooltipKeys;\n for (let idx = 0; idx < keys.length; idx++) {\n if (keys[idx] === key) {\n keys.splice(idx, 1);\n break;\n }\n }\n }\n mapTooltips(options) {\n const map = {};\n for (let idx = 0; idx < AXES.length; idx++) {\n const tooltips = this.axesCrosshairTooltipOptions(options, AXES[idx]);\n for (let tooltipIdx = 0; tooltipIdx < tooltips.length; tooltipIdx++) {\n const tooltip = tooltips[tooltipIdx];\n map[tooltip.name + tooltip.index] = tooltip;\n }\n }\n return map;\n }\n axesCrosshairTooltipOptions(options, name) {\n const result = [];\n if (options[name]) {\n const axes = [].concat(options[name]);\n for (let idx = 0; idx < axes.length; idx++) {\n const tooltip = (axes[idx].crosshair || {}).tooltip;\n if (tooltip && tooltip.visible) {\n result.push({\n index: idx,\n name: name\n });\n }\n }\n }\n return result;\n }\n}\nCrosshairTooltipsContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CrosshairTooltipsContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCrosshairTooltipsContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CrosshairTooltipsContainerComponent, selector: \"kendo-chart-crosshair-tooltips-container\", inputs: { popupSettings: \"popupSettings\" }, viewQueries: [{ propertyName: \"crossahirTooltipComponents\", predicate: CrosshairTooltipComponent, descendants: true }], ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: CrosshairTooltipComponent, selector: \"kendo-chart-crosshair-tooltip\", inputs: [\"key\", \"popupSettings\"] }], directives: [{ type: i4$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CrosshairTooltipsContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-chart-crosshair-tooltips-container',\n template: `\n \n \n `\n }]\n }], propDecorators: { popupSettings: [{\n type: Input\n }], crossahirTooltipComponents: [{\n type: ViewChildren,\n args: [CrosshairTooltipComponent]\n }] } });\n\n/**\n * A directive that selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component for the\n * [series tooltip]({% slug tooltips_chart_charts %}#toc-series-tooltip).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Value is {{value}}\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nclass SeriesTooltipTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nSeriesTooltipTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesTooltipTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nSeriesTooltipTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesTooltipTemplateDirective, selector: \"[kendoChartSeriesTooltipTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesTooltipTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoChartSeriesTooltipTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * A directive that selects a [template]({{ site.data.urls.angular['templatesyntax'] }})\n * within the `` component for the\n * [shared series tooltip]({% slug tooltips_chart_charts %}#toc-shared-tooltip).\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *
{{ category }}
\n *
\n * {{ point.series.name }} : {{ point.value }}\n *
\n *
\n *
\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
\n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nclass SharedTooltipTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nSharedTooltipTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedTooltipTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nSharedTooltipTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SharedTooltipTemplateDirective, selector: \"[kendoChartSharedTooltipTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedTooltipTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoChartSharedTooltipTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * The point that is passed to the tooltip template.\n */\nclass TooltipTemplatePoint {\n /**\n * @hidden\n */\n constructor(point, format, template) {\n this.value = point.value;\n this.category = point.category;\n this.categoryIndex = point.categoryIx;\n this.series = point.series;\n this.dataItem = point.dataItem;\n this.percentage = point.percentage;\n this.runningTotal = point.runningTotal;\n this.total = point.total;\n this.low = point.low;\n this.high = point.high;\n this.xLow = point.xLow;\n this.xHigh = point.xHigh;\n this.yLow = point.yLow;\n this.yHigh = point.yHigh;\n this.template = template;\n this.point = point;\n this.format = format;\n }\n /**\n * @hidden\n */\n get formattedValue() {\n return this.format ? this.point.formatValue(this.format) : String(this.value);\n }\n}\n\n/**\n * @hidden\n */\nfunction hasParent(element, parent) {\n let current = element;\n while (current && current !== parent) {\n current = current.parentNode;\n }\n return current ? true : false;\n}\n\n/**\n * @hidden\n */\nclass TooltipTemplateService {\n setTemplate(template) {\n this.template = template;\n }\n getTemplate(seriesIndex) {\n if (this.seriesTemplates && this.seriesTemplates[seriesIndex]) {\n return this.seriesTemplates[seriesIndex];\n }\n return this.template;\n }\n setSeriesTemplates(seriesTemplates) {\n this.seriesTemplates = seriesTemplates;\n }\n setSharedTemplate(sharedTemplate) {\n this.sharedTemplate = sharedTemplate;\n }\n getSharedTemplate() {\n return this.sharedTemplate;\n }\n}\nTooltipTemplateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipTemplateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTooltipTemplateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipTemplateService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipTemplateService, decorators: [{\n type: Injectable\n }] });\n\nconst SHARED_TOOLTIP_CLASS = 'k-chart-shared-tooltip';\nconst TOOLTIP_CLASS = \"k-chart-tooltip\";\n/**\n * @hidden\n */\nclass TooltipPopupComponent extends BaseTooltip {\n constructor(popupService, templateService, localizationService, ngZone) {\n super(popupService, localizationService);\n this.popupService = popupService;\n this.templateService = templateService;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.seriesTooltipContext = {};\n this.seriesSharedTooltipContext = {};\n this.animate = true;\n this.wrapperClass = 'k-chart-tooltip-wrapper';\n this.leave = new EventEmitter();\n this.popupClasses = {};\n }\n show(e) {\n this.shared = e.shared;\n this.popupClasses = Object.assign({\n [SHARED_TOOLTIP_CLASS]: e.shared,\n [TOOLTIP_CLASS]: true,\n [e.className]: !!e.className\n }, this.classNames);\n if (!e.shared) {\n this.seriesTooltipContext = new TooltipTemplatePoint(e.point, e.format);\n this.seriesTooltipTemplateRef = this.pointTemplateRef(e.point);\n }\n else {\n this.seriesSharedTooltipTemplateRef = this.templateService.getSharedTemplate()\n || this.defaultSharedTooltipTemplate.templateRef;\n this.seriesSharedTooltipContext = this.sharedTemplateContext(e);\n }\n super.show(e);\n }\n containsElement(element) {\n if (this.popupRef) {\n return hasParent(element, this.popupRef.popupElement);\n }\n }\n sharedTemplateContext(e) {\n const points = e.points;\n const nameColumn = points.filter((point) => typeof point.series.name !== 'undefined').length > 0;\n const colorMarker = e.series.length > 1;\n let colspan = 1;\n if (nameColumn) {\n colspan++;\n }\n if (colorMarker) {\n colspan++;\n }\n return {\n category: e.category,\n categoryText: e.categoryText,\n colorMarker: colorMarker,\n colspan: colspan,\n nameColumn: nameColumn,\n points: this.wrapPoints(e.points, e.format)\n };\n }\n pointTemplateRef(point) {\n return this.templateService.getTemplate(point.series.index) || this.defaultSeriesTooltipTemplate.templateRef;\n }\n wrapPoints(points, format) {\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n const template = this.pointTemplateRef(point);\n const pointFormat = ((point.options || {}).tooltip || {}).format || format;\n result.push(new TooltipTemplatePoint(point, pointFormat, template));\n }\n return result;\n }\n onInit() {\n this.ngZone.runOutsideAngular(() => {\n this.mouseleaveSubscription = this.popupRef.popupElement.addEventListener('mouseleave', (args) => {\n this.leave.emit(args);\n });\n });\n this.popupRef.popupElement.className += ` ${this.wrapperClass}`;\n }\n hide() {\n if (this.mouseleaveSubscription) {\n this.mouseleaveSubscription();\n this.mouseleaveSubscription = null;\n }\n super.hide();\n }\n}\nTooltipPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipPopupComponent, deps: [{ token: i1.PopupService }, { token: TooltipTemplateService }, { token: i4.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nTooltipPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TooltipPopupComponent, selector: \"kendo-chart-tooltip-popup\", inputs: { animate: \"animate\", classNames: \"classNames\", popupSettings: \"popupSettings\", wrapperClass: \"wrapperClass\" }, outputs: { leave: \"leave\" }, providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }], viewQueries: [{ propertyName: \"defaultSeriesTooltipTemplate\", first: true, predicate: SeriesTooltipTemplateDirective, descendants: true }, { propertyName: \"defaultSharedTooltipTemplate\", first: true, predicate: SharedTooltipTemplateDirective, descendants: true }, { propertyName: \"templateRef\", first: true, predicate: [\"content\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n
\n \n \n \n \n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n
{{ categoryText }}
\n {{ point.series.name }}\n  \n \n \n \n
\n
\n `, isInline: true, directives: [{ type: i4$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4$1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i4$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: SeriesTooltipTemplateDirective, selector: \"[kendoChartSeriesTooltipTemplate]\" }, { type: SharedTooltipTemplateDirective, selector: \"[kendoChartSharedTooltipTemplate]\" }, { type: i4$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipPopupComponent, decorators: [{\n type: Component,\n args: [{\n providers: [PopupService, {\n provide: POPUP_CONTAINER,\n useFactory: bodyFactory\n }],\n selector: 'kendo-chart-tooltip-popup',\n template: `\n \n
\n \n \n \n \n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n
{{ categoryText }}
\n {{ point.series.name }}\n  \n \n \n \n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.PopupService }, { type: TooltipTemplateService }, { type: i4.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { defaultSeriesTooltipTemplate: [{\n type: ViewChild,\n args: [SeriesTooltipTemplateDirective, { static: false }]\n }], defaultSharedTooltipTemplate: [{\n type: ViewChild,\n args: [SharedTooltipTemplateDirective, { static: false }]\n }], templateRef: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], animate: [{\n type: Input\n }], classNames: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], wrapperClass: [{\n type: Input\n }], leave: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass ChartInstanceObserver extends InstanceObserver {\n constructor(instance) {\n super(instance);\n this.handlerMap = {\n hideTooltip: 'onHideTooltip',\n legendItemClick: 'onLegendItemClick',\n render: 'onRender',\n showTooltip: 'onShowTooltip',\n init: 'onInit'\n };\n }\n}\n\n/**\n * @hidden\n */\nclass BaseEvent {\n /**\n * @hidden\n */\n constructor(sender) {\n this.sender = sender;\n }\n}\nBaseEvent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseEvent, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\nBaseEvent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseEvent, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseEvent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: undefined }]; } });\n\n/**\n * Arguments for the `axisLabelClick` event.\n */\nclass AxisLabelClickEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.dataItem = e.dataItem;\n this.index = e.index;\n this.text = e.text;\n this.value = e.value;\n }\n}\n\n/**\n * @hidden\n */\nclass PreventableEvent extends BaseEvent {\n constructor() {\n super(...arguments);\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\nPreventableEvent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PreventableEvent, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nPreventableEvent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PreventableEvent, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PreventableEvent, decorators: [{\n type: Directive\n }] });\n\n/**\n * Arguments for the `drag` event.\n */\nclass DragEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `dragEnd` event.\n */\nclass DragEndEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `dragStart` event.\n */\nclass DragStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * @hidden\n */\nclass LegendEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.series = e.series;\n this.seriesIndex = e.seriesIndex;\n this.pointIndex = e.pointIndex;\n this.text = e.text;\n }\n}\n\n/**\n * Arguments for the `legendItemHover` event.\n */\nclass LegendItemHoverEvent extends LegendEvent {\n /**\n * If called, the series highlight is not shown as a result of hovering over the legend item.\n */\n preventDefault() {\n super.preventDefault();\n }\n}\n\n/* eslint-disable no-empty */\n/**\n * Arguments for the `legendItemLeave` event.\n */\nclass LegendItemLeaveEvent extends LegendEvent {\n /**\n * @hidden\n */\n preventDefault() {\n }\n /**\n * @hidden\n */\n isDefaultPrevented() {\n return false;\n }\n}\n\n/**\n * @hidden\n */\nclass NoteEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.dataItem = e.dataItem;\n this.series = e.series;\n this.value = e.value;\n this.visual = e.visual;\n }\n}\n\n/**\n * Arguments for the `noteClick` event.\n */\nclass NoteClickEvent extends NoteEvent {\n}\n\n/**\n * Arguments for the `noteHover` event.\n */\nclass NoteHoverEvent extends NoteEvent {\n}\n\n/**\n * Arguments for the `noteLeave` event.\n */\nclass NoteLeaveEvent extends NoteEvent {\n}\n\n/**\n * Arguments for the `paneRender` event.\n */\nclass PaneRenderEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(args, sender) {\n super(sender);\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `plotAreaClick` event.\n */\nclass PlotAreaClickEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.originalEvent = e.originalEvent;\n this.value = e.value;\n this.x = e.x;\n this.y = e.y;\n }\n}\n\n/**\n * Arguments for the `plotAreaHover` event.\n */\nclass PlotAreaHoverEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.originalEvent = e.originalEvent;\n this.value = e.value;\n this.x = e.x;\n this.y = e.y;\n }\n}\n\nclass PlotAreaLeaveEvent extends BaseEvent {\n}\n\n/**\n * Arguments for the `render` event.\n */\nclass RenderEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(_e, sender) {\n super(sender);\n }\n}\n\n/**\n * Arguments for the `select` event.\n */\nclass SelectEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n/**\n * Arguments for the `selectEnd` event.\n */\nclass SelectEndEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n/**\n * Arguments for the `selectStart` event.\n */\nclass SelectStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axis = e.axis;\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n/**\n * Arguments for the `seriesClick` event.\n */\nclass SeriesClickEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.dataItem = e.dataItem;\n this.originalEvent = e.originalEvent;\n this.percentage = e.percentage;\n this.point = e.point;\n this.series = e.series;\n this.stackValue = e.stackValue;\n this.value = e.value;\n }\n}\n\n/**\n * @hidden\n */\nclass SeriesEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.category = e.category;\n this.dataItem = e.dataItem;\n this.originalEvent = e.originalEvent;\n this.percentage = e.percentage;\n this.point = e.point;\n this.series = e.series;\n this.stackValue = e.stackValue;\n this.value = e.value;\n }\n}\n\n/**\n * Arguments for the `seriesHover` event.\n */\nclass SeriesHoverEvent extends SeriesEvent {\n}\n\n/**\n * Arguments for the `seriesOver` event.\n */\nclass SeriesOverEvent extends SeriesEvent {\n}\n\n/**\n * Arguments for the `seriesLeave` event.\n */\nclass SeriesLeaveEvent extends SeriesEvent {\n}\n\n/**\n * Arguments for the `zoom` event.\n */\nclass ZoomEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.delta = e.delta;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `zoomEnd` event.\n */\nclass ZoomEndEvent extends BaseEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\n/**\n * Arguments for the `zoomStart` event.\n */\nclass ZoomStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(e, sender) {\n super(sender);\n this.axisRanges = e.axisRanges;\n this.originalEvent = e.originalEvent;\n }\n}\n\nconst EVENT_MAP$1 = {\n axisLabelClick: AxisLabelClickEvent,\n drag: DragEvent,\n dragEnd: DragEndEvent,\n dragStart: DragStartEvent,\n legendItemHover: LegendItemHoverEvent,\n legendItemLeave: LegendItemLeaveEvent,\n noteClick: NoteClickEvent,\n noteHover: NoteHoverEvent,\n noteLeave: NoteLeaveEvent,\n paneRender: PaneRenderEvent,\n plotAreaClick: PlotAreaClickEvent,\n plotAreaHover: PlotAreaHoverEvent,\n plotAreaLeave: PlotAreaLeaveEvent,\n render: RenderEvent,\n select: SelectEvent,\n selectEnd: SelectEndEvent,\n selectStart: SelectStartEvent,\n seriesClick: SeriesClickEvent,\n seriesHover: SeriesHoverEvent,\n seriesOver: SeriesOverEvent,\n seriesLeave: SeriesLeaveEvent,\n zoom: ZoomEvent,\n zoomEnd: ZoomEndEvent,\n zoomStart: ZoomStartEvent\n};\n/**\n * @hidden\n */\nclass InstanceEventService {\n create(name, args, sender) {\n if (EVENT_MAP$1[name]) {\n return new EVENT_MAP$1[name](args, sender);\n }\n }\n}\n\n/**\n * Arguments for the `legendItemClick` event.\n */\nclass LegendItemClickEvent extends LegendEvent {\n /**\n * If called, the series visibility is not toggled as a result of clicking the legend item.\n */\n preventDefault() {\n super.preventDefault();\n }\n}\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-charts',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1657258836,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Fallback theme in case the Theme Service fails\n * to read the variables from the main theme.\n *\n * @hidden\n */\nconst chartDefaultTheme = () => Object.assign({}, chartBaseTheme(), {\n axisDefaults: {\n crosshair: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n labels: {\n color: 'rgb(101, 101, 101)',\n font: '12px serif'\n },\n line: {\n color: 'rgba(0, 0, 0, 0.08)'\n },\n majorGridLines: {\n color: 'rgba(0, 0, 0, 0.08)'\n },\n minorGridLines: {\n color: 'rgba(0, 0, 0, 0.04)'\n },\n notes: {\n icon: {\n background: 'rgba(0, 0, 0, 0.5)',\n border: {\n color: 'rgba(0, 0, 0, 0.5)'\n }\n },\n line: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n label: {\n font: '14px serif'\n }\n },\n title: {\n color: 'rgb(101, 101, 101)',\n font: '14px serif'\n }\n },\n chartArea: {\n background: 'rgb(255, 255, 255)'\n },\n legend: {\n inactiveItems: {\n labels: {\n color: 'rgba(102, 102, 102, 0.5)'\n },\n markers: {\n color: 'rgba(102, 102, 102, 0.5)'\n }\n },\n labels: {\n color: 'rgb(101, 101, 101)',\n font: '14px serif'\n }\n },\n seriesDefaults: {\n boxPlot: {\n downColor: 'rgba(0, 0, 0, 0.08)',\n mean: {\n color: 'rgb(246, 246, 246)'\n },\n median: {\n color: 'rgb(246, 246, 246)'\n },\n whiskers: {\n color: 'rgb(255, 99, 88)'\n }\n },\n bullet: {\n target: {\n color: 'rgb(101, 101, 101)'\n }\n },\n candlestick: {\n downColor: 'rgb(101, 101, 101)',\n line: {\n color: 'rgb(101, 101, 101)'\n }\n },\n errorBars: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n horizontalWaterfall: {\n line: {\n color: 'rgba(0, 0, 0, 0.08)'\n }\n },\n icon: {\n border: {\n color: 'rgba(0, 0, 0, 0.08)'\n }\n },\n labels: {\n background: 'rgb(255, 255, 255)',\n color: 'rgb(101, 101, 101)',\n opacity: 0.8,\n font: '12px serif'\n },\n notes: {\n icon: {\n background: 'rgba(0, 0, 0, 0.5)',\n border: {\n color: 'rgba(0, 0, 0, 0.5)'\n }\n },\n line: {\n color: 'rgba(0, 0, 0, 0.5)'\n },\n label: {\n font: '14px serif'\n }\n },\n overlay: {\n gradient: \"none\"\n },\n verticalBoxPlot: {\n downColor: 'rgba(0, 0, 0, 0.08)',\n mean: {\n color: 'rgb(246, 246, 246)'\n },\n median: {\n color: 'rgb(246, 246, 246)'\n },\n whiskers: {\n color: 'rgb(255, 99, 88)'\n }\n },\n verticalBullet: {\n target: {\n color: 'rgb(101, 101, 101)'\n }\n },\n waterfall: {\n line: {\n color: 'rgba(0, 0, 0, 0.08)'\n }\n },\n area: {\n opacity: 0.8\n }\n },\n title: {\n color: 'rgb(101, 101, 101)',\n font: '16px serif'\n },\n seriesColors: [\n 'rgb(255, 99, 88)',\n 'rgb(255, 210, 70)',\n 'rgb(120, 210, 55)',\n 'rgb(40, 180, 200)',\n 'rgb(45, 115, 245)',\n 'rgb(170, 70, 190)'\n ]\n});\n\nconst font = (style) => `${style.fontWeight} ${style.fontSize} ${style.fontFamily}`;\nconst computedBackgroundColor = (element) => window.getComputedStyle(element).backgroundColor;\nconst letterPos = (letter) => letter.toLowerCase().charCodeAt(0) - 'a'.charCodeAt(0);\nconst seriesPos = (name) => {\n const alpha = name.match(/series-([a-z])$/);\n if (alpha !== null) {\n return letterPos(alpha[1]);\n }\n const num = name.split('--series-')[1];\n return parseInt(num, 10) - 1;\n};\nconst SERIES_COLORS = 30;\nconst seriesTemplate = () => {\n let template = `\n
\n
\n
\n
\n
\n
\n `;\n for (let i = 0; i < SERIES_COLORS; i++) {\n template += `\n
`;\n }\n return template;\n};\nconst template = () => `\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n\n
\n
\n ${seriesTemplate()}\n
\n`;\n/**\n * @hidden\n */\nclass ThemeService extends ConfigurationService {\n constructor(ngZone) {\n super(ngZone);\n this.loaded = false;\n }\n loadTheme() {\n if (this.loaded || !isDocumentAvailable()) {\n return;\n }\n if (!this.readTheme()) {\n this.readDefaultTheme();\n }\n this.loaded = true;\n this.next();\n }\n readTheme() {\n this.createElement();\n const available = this.queryColor('accent') !==\n this.queryColor('accent-contrast');\n try {\n if (available) {\n this.push(chartBaseTheme());\n this.setColors();\n this.setFonts();\n this.setSeriesColors();\n }\n }\n finally {\n this.destroyElement();\n }\n return available;\n }\n readDefaultTheme() {\n this.push(chartDefaultTheme());\n }\n createElement() {\n const container = this.element = document.createElement('div');\n container.style.display = 'none';\n container.innerHTML = template();\n document.body.appendChild(container);\n }\n destroyElement() {\n if (this.element) {\n document.body.removeChild(this.element);\n this.element = undefined;\n }\n }\n setStyle(key, value) {\n this.set(key, value);\n }\n setColors() {\n this.mapColor('axisDefaults.crosshair.color', 'chart-crosshair-background');\n this.mapColor('axisDefaults.labels.color', 'normal-text-color');\n this.mapColor('axisDefaults.line.color', 'chart-major-lines');\n this.mapColor('axisDefaults.majorGridLines.color', 'chart-major-lines');\n this.mapColor('axisDefaults.minorGridLines.color', 'chart-minor-lines');\n this.mapColor('axisDefaults.notes.icon.background', 'chart-notes-background');\n this.mapColor('axisDefaults.notes.icon.border.color', 'chart-notes-border');\n this.mapColor('axisDefaults.notes.line.color', 'chart-notes-lines');\n this.mapColor('axisDefaults.title.color', 'normal-text-color');\n this.mapColor('chartArea.background', 'background');\n this.mapColor('legend.inactiveItems.labels.color', 'chart-inactive');\n this.mapColor('legend.inactiveItems.markers.color', 'chart-inactive');\n this.mapColor('legend.labels.color', 'normal-text-color');\n this.mapColor('seriesDefaults.boxPlot.downColor', 'chart-major-lines');\n this.mapColor('seriesDefaults.boxPlot.mean.color', 'base');\n this.mapColor('seriesDefaults.boxPlot.median.color', 'base');\n this.mapColor('seriesDefaults.boxPlot.whiskers.color', 'accent');\n this.mapColor('seriesDefaults.bullet.target.color', 'normal-text-color');\n this.mapColor('seriesDefaults.candlestick.downColor', 'normal-text-color');\n this.mapColor('seriesDefaults.candlestick.line.color', 'normal-text-color');\n this.mapColor('seriesDefaults.errorBars.color', 'chart-error-bars-background');\n this.mapColor('seriesDefaults.horizontalWaterfall.line.color', 'chart-major-lines');\n this.mapColor('seriesDefaults.icon.border.color', 'chart-major-lines');\n this.mapColor('seriesDefaults.labels.background', 'background');\n this.mapColor('seriesDefaults.labels.color', 'normal-text-color');\n this.mapColor('seriesDefaults.notes.icon.background', 'chart-notes-background');\n this.mapColor('seriesDefaults.notes.icon.border.color', 'chart-notes-border');\n this.mapColor('seriesDefaults.notes.line.color', 'chart-notes-lines');\n this.mapColor('seriesDefaults.verticalBoxPlot.downColor', 'chart-major-lines');\n this.mapColor('seriesDefaults.verticalBoxPlot.mean.color', 'base');\n this.mapColor('seriesDefaults.verticalBoxPlot.median.color', 'base');\n this.mapColor('seriesDefaults.verticalBoxPlot.whiskers.color', 'accent');\n this.mapColor('seriesDefaults.verticalBullet.target.color', 'normal-text-color');\n this.mapColor('seriesDefaults.waterfall.line.color', 'chart-major-lines');\n this.mapColor('title.color', 'normal-text-color');\n const opacity = parseFloat(this.queryStyle('chart-area-opacity').opacity);\n if (!isNaN(opacity)) {\n this.setStyle('seriesDefaults.area.opacity', opacity);\n this.setStyle('seriesDefaults.radarArea.opacity', opacity);\n this.setStyle('seriesDefaults.verticalArea.opacity', opacity);\n this.setStyle('seriesDefaults.labels.opacity', opacity);\n }\n this.setInactiveOpacity(['area', 'verticalArea'], 'chart-area-inactive-opacity');\n this.setInactiveOpacity(['line', 'verticalLine'], 'chart-line-inactive-opacity');\n }\n setInactiveOpacity(seriesTypes, selector) {\n const inactiveOpacity = parseFloat(this.queryStyle(selector).opacity);\n if (!isNaN(inactiveOpacity) && inactiveOpacity < 1) {\n seriesTypes.forEach(type => this.setStyle(`seriesDefaults.${type}.highlight.inactiveOpacity`, inactiveOpacity));\n }\n }\n setFonts() {\n const defaultFont = font(this.queryStyle('chart-font'));\n const titleFont = font(this.queryStyle('chart-title-font'));\n const paneTitleFont = font(this.queryStyle('chart-pane-title-font'));\n const labelFont = font(this.queryStyle('chart-label-font'));\n this.setStyle('axisDefaults.labels.font', labelFont);\n this.setStyle('axisDefaults.notes.label.font', defaultFont);\n this.setStyle('axisDefaults.title.font', defaultFont);\n this.setStyle('legend.labels.font', defaultFont);\n this.setStyle('seriesDefaults.labels.font', labelFont);\n this.setStyle('seriesDefaults.notes.label.font', defaultFont);\n this.setStyle('title.font', titleFont);\n this.setStyle('paneDefaults.title.font', paneTitleFont);\n }\n setSeriesColors() {\n const element = this.element;\n const series = [].slice.call(element.querySelectorAll('.k-var--series div'));\n const unsetColor = computedBackgroundColor(element.querySelector('.k-var--series-unset'));\n const seriesColors = series.reduce((arr, el) => {\n const pos = seriesPos(el.className);\n const color = computedBackgroundColor(el);\n if (color !== unsetColor) {\n arr[pos] = color;\n }\n return arr;\n }, [] // Will populate the series colors in this array\n );\n this.setStyle('seriesColors', seriesColors);\n }\n mapColor(key, varName) {\n this.setStyle(key, this.queryColor(varName));\n }\n queryColor(varName) {\n return this.queryStyle(varName).backgroundColor;\n }\n queryStyle(varName) {\n const element = this.element.querySelector(`.k-var--${varName}`);\n return window.getComputedStyle(element);\n }\n}\nThemeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ThemeService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nThemeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ThemeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ThemeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\nfunction hasObservers(emitter) {\n return emitter.observers.length > 0;\n}\n/**\n * The root Chart component.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public legendVisible: boolean = true;\n * public seriesVisible: boolean = true;\n *\n * public toggleSeries(): void {\n * this.seriesVisible = !this.seriesVisible;\n * }\n *\n * public toggleLegend(): void {\n * this.legendVisible = !this.legendVisible;\n * }\n * }\n *\n * ```\n */\nclass ChartComponent {\n constructor(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer) {\n this.configurationService = configurationService;\n this.themeService = themeService;\n this.element = element;\n this.intl = intl;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.instanceEventService = instanceEventService;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n /**\n * Fires when the user clicks an axis label ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.axisLabelClick = new EventEmitter();\n /**\n * Fires as long as the user is dragging the Chart with the mouse or through swipe gestures.\n */\n this.drag = new EventEmitter();\n /**\n * Fires when the user stops dragging the Chart.\n */\n this.dragEnd = new EventEmitter();\n /**\n * Fires when the user starts dragging the Chart.\n */\n this.dragStart = new EventEmitter();\n /**\n * Fires when the user hovers over a legend item ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.legendItemHover = new EventEmitter();\n /**\n * Fires when the cursor leaves a legend item.\n */\n this.legendItemLeave = new EventEmitter();\n /**\n * Fires when the user clicks a note.\n */\n this.noteClick = new EventEmitter();\n /**\n * Fires when the user hovers over a note.\n */\n this.noteHover = new EventEmitter();\n /**\n * Fires when the cursor leaves a note.\n */\n this.noteLeave = new EventEmitter();\n /**\n * Fires when a pane is rendered because the Chart:\n * * Is rendered.\n * * Performs panning or zooming.\n * * Is exported with different options.\n * The event is used to render custom visuals in the panes.\n */\n this.paneRender = new EventEmitter();\n /**\n * Fires when the user clicks the plot area ([see example]({% slug overview_chart_charts %}#toc-events)).\n * The `click` event is triggered by the `tap` and `contextmenu` events.\n * To distinguish between the original events, inspect the `e.originalEvent.type` field.\n */\n this.plotAreaClick = new EventEmitter();\n /**\n * Fires when the user hovers the plot area ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.plotAreaHover = new EventEmitter();\n /**\n * Fires when the cursor leaves the plot area.\n */\n this.plotAreaLeave = new EventEmitter();\n /**\n * Fires when the Chart is ready to render on screen ([see example]({% slug overview_chart_charts %}#toc-events)).\n * For example, you can use it to remove loading indicators.\n * Any changes made to the options are ignored.\n */\n this.render = new EventEmitter();\n /**\n * Fires when the user modifies the selection.\n *\n * The range units are:\n * - Generic axis—Category index (0-based).\n * - Date axis—Date instance.\n */\n this.select = new EventEmitter();\n /**\n * Fires when the user completes the modification of the selection.\n *\n * The range units are:\n * - Generic axis—Category index (0-based).\n * - Date axis—Date instance.\n */\n this.selectEnd = new EventEmitter();\n /**\n * Fires when the user starts modifying the axis selection.\n *\n * The range units are:\n * - Generic axis—Category index (0-based).\n * - Date axis—Date instance.\n */\n this.selectStart = new EventEmitter();\n /**\n * Fires when the user clicks the Chart series.\n *\n * The `click` event will be triggered by the `tap` and `contextmenu` events ([see example]({% slug overview_chart_charts %}#toc-events)).\n * To distinguish between the original events, inspect the `e.originalEvent.type` field.\n */\n this.seriesClick = new EventEmitter();\n /**\n * Fires when the user hovers the Chart series ([see example]({% slug overview_chart_charts %}#toc-events)).\n */\n this.seriesHover = new EventEmitter();\n /**\n * Fires when the cursor enters a series.\n */\n this.seriesOver = new EventEmitter();\n /**\n * Fires when the cursor leaves a series.\n */\n this.seriesLeave = new EventEmitter();\n /**\n * Fires as long as the user is zooming the Chart by using the mousewheel operation.\n */\n this.zoom = new EventEmitter();\n /**\n * Fires when the user stops zooming the Chart.\n */\n this.zoomEnd = new EventEmitter();\n /**\n * Fires when the user uses the mousewheel to zoom the Chart.\n */\n this.zoomStart = new EventEmitter();\n /**\n * Fires when a legend item is clicked before the selected series visibility is toggled.\n * Can be prevented.\n */\n this.legendItemClick = new EventEmitter();\n /**\n * Limits the automatic resizing of the Chart. Sets the maximum number of times per second\n * that the component redraws its content when the size of its container changes.\n * Defaults to `10`. To disable the automatic resizing, set it to `0`.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * seriesData: number[] = [1, 2, 3, 5];\n * }\n * ```\n */\n this.resizeRateLimit = 10;\n this.theme = null;\n this.suppressTransitions = false;\n this.rtl = false;\n this.hostClasses = ['k-chart', 'k-widget'];\n validatePackage(packageMetadata);\n this.themeService.loadTheme();\n this.refreshWait();\n }\n ngOnInit() {\n if (this.element) {\n this.hostClasses.forEach(name => {\n this.renderer.addClass(this.element.nativeElement, name);\n });\n this.renderer.setStyle(this.element.nativeElement, 'position', 'relative');\n }\n }\n ngAfterViewInit() {\n if (this.canRender) {\n this.ngZone.runOutsideAngular(() => {\n const chartMouseleave = this.renderer.listen(this.surfaceElement.nativeElement, 'mouseleave', this.chartMouseleave.bind(this));\n this.domSubscriptions = () => {\n chartMouseleave();\n };\n });\n }\n this.setDirection();\n this.subscriptions = this.intl.changes.subscribe(this.intlChange.bind(this));\n this.subscriptions.add(this.localizationService.changes.subscribe(this.rtlChange.bind(this)));\n }\n ngAfterViewChecked() {\n if (this.instance && this.autoResize) {\n this.ngZone.runOutsideAngular(() => {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.resize();\n }, 0);\n });\n }\n }\n ngOnChanges(changes) {\n const store = this.configurationService.store;\n copyChanges(changes, store);\n store.popupSettings = null;\n this.configurationService.push(store);\n }\n /**\n * Updates the component fields with the specified values and refreshes the Chart.\n *\n * Use this method when the configuration values cannot be set through the template.\n *\n * @example\n * ```ts-no-run\n * chart.notifyChanges({ title: { text: 'New Title' } });\n * ```\n *\n * @param changes An object containing the updated input fields.\n */\n notifyChanges(changes) {\n this.ngOnChanges(toSimpleChanges(changes));\n }\n ngOnDestroy() {\n this.destroyed = true;\n if (this.optionsChange) {\n this.optionsChange.unsubscribe();\n }\n if (this.domSubscriptions) {\n this.domSubscriptions();\n this.domSubscriptions = null;\n }\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n }\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n clearTimeout(this.resizeTimeout);\n clearTimeout(this.redrawTimeout);\n }\n createInstance(element, observer) {\n this.instance = new Chart(element, this.options, this.theme, {\n intlService: this.intl,\n observer: observer,\n rtl: this.rtl,\n sender: this\n });\n }\n /**\n * Exports the Chart as an image. The export operation is asynchronous and returns a promise.\n *\n * @param {ImageExportOptions} options - The parameters for the exported image.\n * @returns {Promise} - A promise that will be resolved with a PNG image encoded as a Data URI.\n */\n exportImage(options = {}) {\n return exportImage(this.exportVisual(options), options);\n }\n /**\n * Exports the Chart as an SVG document. The export operation is asynchronous and returns a promise.\n *\n * @param options - The parameters for the exported file.\n * @returns - A promise that will be resolved with an SVG document that is encoded as a Data URI.\n */\n exportSVG(options = {}) {\n return exportSVG(this.exportVisual(options), options);\n }\n /**\n * Exports the Chart as a Drawing `Scene`.\n *\n * @param options - The parameters for the export operation.\n * @returns - The root Group of the scene.\n */\n exportVisual(options = {}) {\n return this.instance.exportVisual(options);\n }\n /**\n * Returns the axis with the specified name.\n *\n * @param {string} name - The axis name.\n * @returns {ChartAxis} - The axis with a corresponding name.\n */\n findAxisByName(name) {\n if (this.instance) {\n return this.instance.findAxisByName(name);\n }\n }\n /**\n * Returns the pane at the specified index.\n *\n * @param {number} index - The pane index.\n * @returns {ChartPane} - The pane at the specified index.\n */\n findPaneByIndex(index) {\n if (this.instance) {\n return this.instance.findPaneByIndex(index);\n }\n }\n /**\n * Returns the pane with the specified name.\n *\n * @param {string} name - The name of the pane.\n * @returns {ChartPane} - The pane with the provided name.\n */\n findPaneByName(name) {\n if (this.instance) {\n return this.instance.findPaneByName(name);\n }\n }\n /**\n * Returns the plot area of the Chart.\n * @returns {ChartPlotArea} - The plot area of the Chart.\n */\n getPlotArea() {\n if (this.instance) {\n return this.instance.plotArea();\n }\n }\n /**\n * Highlights the series points or the segments of a Pie, Donut, or Funnel charts.\n *\n * See [Series Highlight]({% slug serieshighlight_chart_charts %}) for more details.\n *\n * In the following example, the callback is evaluated for each data point.\n * If the function returns `true`, the point is highlighted.\n *\n * {% meta height:500 %}\n * {% embed_file elements/highlight/api/app.component.ts preview %}\n * {% embed_file shared/app.module.ts hidden %}\n * {% embed_file shared/main.ts hidden %}\n * {% endmeta %}\n *\n * @param show - A Boolean value that indicates whether the highlight is shown or hidden.\n * @param filter - A string that represents the series or category name, an object with the series and category name, or a function which will be called for each point. The function should return `true` for the points for which the highlight is toggled.\n */\n toggleHighlight(show, filter) {\n if (this.instance) {\n this.instance.toggleHighlight(show, filter);\n }\n }\n /**\n * Hides the tooltip of the Chart.\n */\n hideTooltip() {\n if (this.instance) {\n this.instance.hideTooltip();\n }\n }\n /**\n * Shows the Chart tooltip of a specific point or the shared tooltip of a specific category.\n *\n * @param filter - The category for a shared tooltip or a function which will be called for each point until the function returns `true`.\n */\n showTooltip(filter) {\n if (this.instance) {\n this.instance.showTooltip(filter);\n }\n }\n init() {\n if (!this.canRender) {\n return;\n }\n const element = this.surfaceElement.nativeElement;\n const instanceObserver = new ChartInstanceObserver(this);\n this.createInstance(element, instanceObserver);\n }\n /**\n * Detects the size of the container and redraws the Chart.\n * Resizing is automatic unless you set the `resizeRateLimit` option to `0`.\n */\n resize() {\n if (this.instance) {\n this.instance.resize();\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.autoResize) {\n this.resize();\n }\n }\n onLegendItemClick(e) {\n this.run(() => {\n const args = new LegendItemClickEvent(e, this);\n this.legendItemClick.emit(args);\n if (!args.isDefaultPrevented()) {\n const series = this.seriesComponents.toArray()[e.series.index];\n if (!series) {\n return;\n }\n if (e.pointIndex === undefined) {\n series.toggleVisibility();\n }\n else {\n series.togglePointVisibility(e.pointIndex);\n }\n this.suppressTransitions = true;\n }\n }, hasObservers(this.legendItemClick), this.seriesComponents.length > 0);\n }\n onInit(e) {\n this.instance = e.sender;\n }\n onRender(e) {\n const donutCenterStyle = this.getDonutCenterStyle();\n this.run(() => {\n const args = new RenderEvent(e, this);\n this.surface = e.sender.surface;\n this.render.emit(args);\n this.donutCenterStyle = donutCenterStyle;\n }, hasObservers(this.render), this.donutCenterStyle !== donutCenterStyle);\n }\n onShowTooltip(e) {\n this.run(() => {\n if (!e.crosshair) {\n this.tooltipInstance.show(e);\n }\n else {\n this.crossahirTooltips.show(e);\n }\n }, !e.crosshair, true);\n }\n onHideTooltip(e) {\n if (!e.crosshair) {\n if (this.tooltipInstance.active) {\n this.tooltipInstance.hide();\n this.detectChanges();\n }\n }\n else if (this.crossahirTooltips.active) {\n this.crossahirTooltips.hide();\n this.detectChanges();\n }\n }\n trigger(name, e) {\n if (name === 'resize') {\n return;\n }\n const emitter = this.activeEmitter(name);\n if (emitter) {\n const args = this.instanceEventService.create(name, e, this);\n this.run(() => {\n emitter.emit(args);\n });\n return args.isDefaultPrevented && args.isDefaultPrevented();\n }\n }\n requiresHandlers(names) {\n for (let idx = 0; idx < names.length; idx++) {\n if (this.activeEmitter(names[idx])) {\n return true;\n }\n }\n return false;\n }\n refresh() {\n clearTimeout(this.redrawTimeout);\n this.updateDirection();\n this.crossahirTooltips.createCrosshairTooltips(this.options);\n this.setChartAreaSize();\n if (!this.instance) {\n this.init();\n return;\n }\n const transitions = this.options.transitions;\n if (this.suppressTransitions) {\n this.options.transitions = false;\n }\n this.updateOptions();\n if (this.suppressTransitions) {\n this.options.transitions = transitions;\n this.suppressTransitions = false;\n }\n }\n setChartAreaSize() {\n if (!this.element) {\n return;\n }\n const element = this.element.nativeElement;\n const chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n element.style.width = `${chartArea.width}px`;\n }\n if (chartArea.height) {\n element.style.height = `${chartArea.height}px`;\n }\n }\n updateOptions() {\n this.instance.setOptions(this.options);\n }\n /**\n * @hidden\n */\n tooltipMouseleave(e) {\n const relatedTarget = e.relatedTarget;\n const chartElement = this.element.nativeElement;\n if (this.instance && (!relatedTarget || !hasParent(relatedTarget, chartElement))) {\n this.instance.hideElements();\n }\n }\n /**\n * @hidden\n */\n chartMouseleave(e) {\n const relatedTarget = e.relatedTarget;\n const chartElement = this.element.nativeElement;\n if (this.instance && (!relatedTarget || !(this.tooltipInstance.containsElement(relatedTarget) || hasParent(relatedTarget, chartElement))) &&\n !this.instance.handlingTap) {\n this.instance.hideElements();\n }\n }\n get canRender() {\n return isDocumentAvailable() && Boolean(this.surfaceElement);\n }\n get autoResize() {\n return this.resizeRateLimit > 0;\n }\n activeEmitter(name) {\n const emitter = this[name];\n if (emitter && emitter.emit && hasObservers(emitter)) {\n return emitter;\n }\n }\n getDonutCenterStyle() {\n if (!this.instance || !this.options || !this.options.series) {\n return;\n }\n const firstSeries = this.options.series[0];\n const charts = this.instance._plotArea.charts;\n if (!firstSeries || firstSeries.type !== 'donut' || !charts || charts[0].points.length === 0) {\n return;\n }\n const firstPoint = charts[0].points[0];\n const center = firstPoint.box.center();\n const radius = firstPoint.sector.innerRadius;\n const top = center.y - radius;\n const left = center.x - radius;\n const size = radius * 2;\n return {\n height: size + 'px',\n left: left + 'px',\n top: top + 'px',\n width: size + 'px'\n };\n }\n refreshWait() {\n this.ngZone.runOutsideAngular(() => {\n this.optionsChange = combineLatest(this.configurationService.onChange$, this.themeService.onChange$).pipe(tap((result) => {\n this.options = result[0];\n this.theme = result[1];\n }), auditTime(THROTTLE_MS))\n .subscribe(() => {\n this.refresh();\n });\n });\n }\n run(callback, inZone = true, detectChanges) {\n if (inZone) {\n if (detectChanges) {\n this.changeDetector.markForCheck();\n }\n this.ngZone.run(callback);\n }\n else {\n callback();\n if (detectChanges) {\n this.detectChanges();\n }\n }\n }\n detectChanges() {\n if (!this.destroyed) {\n this.changeDetector.detectChanges();\n }\n }\n intlChange() {\n if (this.instance) {\n this.deferredRedraw();\n }\n }\n rtlChange() {\n if (this.instance && this.rtl !== this.isRTL) {\n this.deferredRedraw();\n }\n }\n deferredRedraw() {\n this.ngZone.runOutsideAngular(() => {\n clearTimeout(this.redrawTimeout);\n this.redrawTimeout = setTimeout(() => {\n this.updateDirection();\n this.instance.noTransitionsRedraw();\n }, 0);\n });\n }\n updateDirection() {\n const current = this.isRTL;\n if (this.rtl !== current) {\n this.setDirection();\n if (this.instance) {\n this.instance.setDirection(current);\n }\n }\n }\n setDirection() {\n this.rtl = this.isRTL;\n if (this.element) {\n this.renderer.setAttribute(this.element.nativeElement, 'dir', this.rtl ? 'rtl' : 'ltr');\n }\n }\n get isRTL() {\n return Boolean(this.localizationService.rtl);\n }\n}\nChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartComponent, deps: [{ token: ConfigurationService }, { token: ThemeService }, { token: i0.ElementRef }, { token: i3.IntlService }, { token: i4.LocalizationService }, { token: i0.NgZone }, { token: InstanceEventService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ChartComponent, selector: \"kendo-chart\", inputs: { pannable: \"pannable\", renderAs: \"renderAs\", seriesColors: \"seriesColors\", title: \"title\", transitions: \"transitions\", zoomable: \"zoomable\", axisDefaults: \"axisDefaults\", categoryAxis: \"categoryAxis\", chartArea: \"chartArea\", legend: \"legend\", panes: \"panes\", paneDefaults: \"paneDefaults\", plotArea: \"plotArea\", series: \"series\", seriesDefaults: \"seriesDefaults\", tooltip: \"tooltip\", valueAxis: \"valueAxis\", xAxis: \"xAxis\", yAxis: \"yAxis\", resizeRateLimit: \"resizeRateLimit\", popupSettings: \"popupSettings\" }, outputs: { axisLabelClick: \"axisLabelClick\", drag: \"drag\", dragEnd: \"dragEnd\", dragStart: \"dragStart\", legendItemHover: \"legendItemHover\", legendItemLeave: \"legendItemLeave\", noteClick: \"noteClick\", noteHover: \"noteHover\", noteLeave: \"noteLeave\", paneRender: \"paneRender\", plotAreaClick: \"plotAreaClick\", plotAreaHover: \"plotAreaHover\", plotAreaLeave: \"plotAreaLeave\", render: \"render\", select: \"select\", selectEnd: \"selectEnd\", selectStart: \"selectStart\", seriesClick: \"seriesClick\", seriesHover: \"seriesHover\", seriesOver: \"seriesOver\", seriesLeave: \"seriesLeave\", zoom: \"zoom\", zoomEnd: \"zoomEnd\", zoomStart: \"zoomStart\", legendItemClick: \"legendItemClick\" }, providers: [\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ], queries: [{ propertyName: \"donutCenterTemplate\", first: true, predicate: DonutCenterTemplateDirective, descendants: true }, { propertyName: \"seriesComponents\", predicate: SeriesItemComponent, descendants: true }], viewQueries: [{ propertyName: \"tooltipInstance\", first: true, predicate: TooltipPopupComponent, descendants: true, static: true }, { propertyName: \"crossahirTooltips\", first: true, predicate: CrosshairTooltipsContainerComponent, descendants: true, static: true }, { propertyName: \"surfaceElement\", first: true, predicate: [\"surface\"], descendants: true, static: true }], exportAs: [\"kendoChart\"], usesOnChanges: true, ngImport: i0, template: `\n
\n \n \n \n \n \n
\n \n
\n `, isInline: true, components: [{ type: CrosshairTooltipsContainerComponent, selector: \"kendo-chart-crosshair-tooltips-container\", inputs: [\"popupSettings\"] }, { type: TooltipPopupComponent, selector: \"kendo-chart-tooltip-popup\", inputs: [\"animate\", \"classNames\", \"popupSettings\", \"wrapperClass\"], outputs: [\"leave\"] }, { type: i8.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i4$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4$1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i4$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoChart',\n providers: [\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ],\n selector: 'kendo-chart',\n template: `\n
\n \n \n \n \n \n
\n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: i0.ElementRef }, { type: i3.IntlService }, { type: i4.LocalizationService }, { type: i0.NgZone }, { type: InstanceEventService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { pannable: [{\n type: Input\n }], renderAs: [{\n type: Input\n }], seriesColors: [{\n type: Input\n }], title: [{\n type: Input\n }], transitions: [{\n type: Input\n }], zoomable: [{\n type: Input\n }], axisDefaults: [{\n type: Input\n }], categoryAxis: [{\n type: Input\n }], chartArea: [{\n type: Input\n }], legend: [{\n type: Input\n }], panes: [{\n type: Input\n }], paneDefaults: [{\n type: Input\n }], plotArea: [{\n type: Input\n }], series: [{\n type: Input\n }], seriesDefaults: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], valueAxis: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], axisLabelClick: [{\n type: Output\n }], drag: [{\n type: Output\n }], dragEnd: [{\n type: Output\n }], dragStart: [{\n type: Output\n }], legendItemHover: [{\n type: Output\n }], legendItemLeave: [{\n type: Output\n }], noteClick: [{\n type: Output\n }], noteHover: [{\n type: Output\n }], noteLeave: [{\n type: Output\n }], paneRender: [{\n type: Output\n }], plotAreaClick: [{\n type: Output\n }], plotAreaHover: [{\n type: Output\n }], plotAreaLeave: [{\n type: Output\n }], render: [{\n type: Output\n }], select: [{\n type: Output\n }], selectEnd: [{\n type: Output\n }], selectStart: [{\n type: Output\n }], seriesClick: [{\n type: Output\n }], seriesHover: [{\n type: Output\n }], seriesOver: [{\n type: Output\n }], seriesLeave: [{\n type: Output\n }], zoom: [{\n type: Output\n }], zoomEnd: [{\n type: Output\n }], zoomStart: [{\n type: Output\n }], legendItemClick: [{\n type: Output\n }], resizeRateLimit: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], seriesComponents: [{\n type: ContentChildren,\n args: [SeriesItemComponent, { descendants: true }]\n }], donutCenterTemplate: [{\n type: ContentChild,\n args: [DonutCenterTemplateDirective, { static: false }]\n }], tooltipInstance: [{\n type: ViewChild,\n args: [TooltipPopupComponent, { static: true }]\n }], crossahirTooltips: [{\n type: ViewChild,\n args: [CrosshairTooltipsContainerComponent, { static: true }]\n }], surfaceElement: [{\n type: ViewChild,\n args: ['surface', { static: true }]\n }] } });\n\n/**\n * The default options for all Chart axes.\n * Accepts the options which are supported by [`categoryAxis`]({% slug api_charts_categoryaxisitemcomponent %}),\n * [`valueAxis`]({% slug api_charts_valueaxisitemcomponent %}),\n * [`xAxis`]({% slug api_charts_xaxisitemcomponent %}),\n * and [`yAxis`]({% slug api_charts_yaxisitemcomponent %}).\n *\n * @example\n * ```ts-preview\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *
\n * `\n * })\n * export class AppComponent {\n * public series: any[] = [{\n * name: \"India\",\n * data: [4, 8, 8, 9, 9, 9, 3, 8, 9, 6]\n * }, {\n * name: \"Russian Federation\",\n * data: [4, 7, 7, 6, 8, 8, 5, 8, 4, 4]\n * }, {\n * name: \"Germany\",\n * data: [0, 0, 1, 1, 4, 3, 1, 5, 4, 3]\n * },{\n * name: \"World\",\n * data: [2, 3, 4, 4, 4, 4, 1, 2, 4, 3]\n * }];\n *\n * public categories: number[] = [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011];\n *\n * public background = 'white';\n * // public color = 'cyan'; // will override the line.color option\n * public crosshair = {\n * visible: true\n * };\n * public labels = {\n * font: 'bold 12px/30px Helvetica, Arial, sans-serif',\n * color: '#4CAF50',\n * padding: 5,\n * rotation: 45,\n * background: 'white',\n * border: {\n * color: '#4CAF50',\n * width: 2\n * },\n * };\n * public line = {\n * color: 'black',\n * width: 3\n * };\n *\n * public majorGridLines = {\n * color: 'black',\n * visible: true\n * }\n *\n * public minorGridLines = {\n * color: 'lightgray',\n * visible: true\n * }\n *\n * public majorTicks = {\n * color: 'black',\n * size: 15\n * }\n *\n * public minorTicks = {\n * color: 'lightgray',\n * size: 10\n * }\n *\n * public title = {\n * text: 'Default Axis Title',\n * color: 'black',\n * background: 'white',\n * border: {\n * color: 'black',\n * width: 2\n * },\n * padding: 10\n * }\n * }\n * ```\n */\nclass AxisDefaultsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults', configurationService);\n this.configurationService = configurationService;\n }\n}\nAxisDefaultsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nAxisDefaultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AxisDefaultsComponent, selector: \"kendo-chart-axis-defaults\", inputs: { background: \"background\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", startAngle: \"startAngle\", visible: \"visible\", crosshair: \"crosshair\", labels: \"labels\", title: \"title\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], color: [{\n type: Input\n }], line: [{\n type: Input\n }], majorGridLines: [{\n type: Input\n }], majorTicks: [{\n type: Input\n }], minorGridLines: [{\n type: Input\n }], minorTicks: [{\n type: Input\n }], narrowRange: [{\n type: Input\n }], pane: [{\n type: Input\n }], plotBands: [{\n type: Input\n }], reverse: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], visible: [{\n type: Input\n }], crosshair: [{\n type: Input\n }], labels: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * The crosshair configuration options ([see example]({% slug api_charts_axisdefaultscomponent %})).\n */\nclass AxisDefaultsCrosshairComponent extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.crosshair', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nAxisDefaultsCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nAxisDefaultsCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AxisDefaultsCrosshairComponent, selector: \"kendo-chart-axis-defaults-crosshair\", inputs: { color: \"color\", dashType: \"dashType\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], dashType: [{\n type: Input\n }], opacity: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The options of the crosshair tooltip ([see example]({% slug crosshairs_chart_charts %})).\n * The crosshair tooltip is displayed when the [`axisDefaults.crosshair.tooltip.visible`]({% slug api_charts_axisdefaultscrosshairtooltipcomponent %}#toc-visible)\n * option is set to `true`.\n */\nclass AxisDefaultsCrosshairTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nAxisDefaultsCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nAxisDefaultsCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AxisDefaultsCrosshairTooltipComponent, selector: \"kendo-chart-axis-defaults-crosshair-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the axis labels ([see example]({% slug api_charts_axisdefaultscomponent %})).\n */\nclass AxisDefaultsLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nAxisDefaultsLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nAxisDefaultsLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AxisDefaultsLabelsComponent, selector: \"kendo-chart-axis-defaults-labels\", inputs: { content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], mirror: [{\n type: Input\n }], padding: [{\n type: Input\n }], rotation: [{\n type: Input\n }], skip: [{\n type: Input\n }], step: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the axis title ([see example]({% slug api_charts_axisdefaultscomponent %})).\n */\nclass AxisDefaultsTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('axisDefaults.title', configurationService);\n this.configurationService = configurationService;\n }\n}\nAxisDefaultsTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nAxisDefaultsTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AxisDefaultsTitleComponent, selector: \"kendo-chart-axis-defaults-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AxisDefaultsTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-axis-defaults-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass CollectionComponent {\n constructor(configKey, configurationService, collectionService) {\n this.configKey = configKey;\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.items = [];\n this.subscription = collectionService.onItemChange$.subscribe(changes => this.processChanges(changes));\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n ngAfterContentInit() {\n this.readItems();\n this.children.changes.subscribe(() => this.readItems());\n }\n processChanges(changes) {\n if (!this.children) {\n return;\n }\n const index = this.children.toArray().indexOf(changes.sender);\n if (index < 0) {\n return;\n }\n this.items[index] = changes.options;\n this.change();\n }\n readItems() {\n this.items = this.children.map(s => s.options);\n this.change();\n }\n change() {\n this.configurationService.notify(new Change(this.configKey, this.items.length === 0 ? undefined : this.items));\n }\n}\nCollectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionComponent, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\nCollectionComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CollectionComponent, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CollectionComponent, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: undefined }, { type: ConfigurationService }, { type: CollectionService }]; } });\n\n/**\n * The configuration component for a category axis ([see example]({% slug axes_chart_charts %})).\n */\nclass CategoryAxisItemComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService, intl, localeId) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.notifyChanges({ weekStartDay: intl.firstDay(localeId) });\n }\n}\nCategoryAxisItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }, { token: i3.IntlService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisItemComponent, selector: \"kendo-chart-category-axis-item\", inputs: { autoBaseUnitSteps: \"autoBaseUnitSteps\", axisCrossingValue: \"axisCrossingValue\", background: \"background\", baseUnit: \"baseUnit\", baseUnitStep: \"baseUnitStep\", categories: \"categories\", color: \"color\", justified: \"justified\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", max: \"max\", maxDateGroups: \"maxDateGroups\", maxDivisions: \"maxDivisions\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", name: \"name\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", roundToBaseUnit: \"roundToBaseUnit\", startAngle: \"startAngle\", type: \"type\", visible: \"visible\", weekStartDay: \"weekStartDay\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", select: \"select\", title: \"title\", rangeLabels: \"rangeLabels\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-category-axis-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: i3.IntlService }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, propDecorators: { autoBaseUnitSteps: [{\n type: Input\n }], axisCrossingValue: [{\n type: Input\n }], background: [{\n type: Input\n }], baseUnit: [{\n type: Input\n }], baseUnitStep: [{\n type: Input\n }], categories: [{\n type: Input\n }], color: [{\n type: Input\n }], justified: [{\n type: Input\n }], line: [{\n type: Input\n }], majorGridLines: [{\n type: Input\n }], majorTicks: [{\n type: Input\n }], max: [{\n type: Input\n }], maxDateGroups: [{\n type: Input\n }], maxDivisions: [{\n type: Input\n }], min: [{\n type: Input\n }], minorGridLines: [{\n type: Input\n }], minorTicks: [{\n type: Input\n }], name: [{\n type: Input\n }], pane: [{\n type: Input\n }], plotBands: [{\n type: Input\n }], reverse: [{\n type: Input\n }], roundToBaseUnit: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }], weekStartDay: [{\n type: Input\n }], crosshair: [{\n type: Input\n }], labels: [{\n type: Input\n }], notes: [{\n type: Input\n }], select: [{\n type: Input\n }], title: [{\n type: Input\n }], rangeLabels: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more category axis items.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n * ```\n */\nclass CategoryAxisComponent extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('categoryAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nCategoryAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisComponent, selector: \"kendo-chart-category-axis\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: CategoryAxisItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-category-axis',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [CategoryAxisItemComponent]\n }] } });\n\n/**\n * The crosshair configuration options ([see example]({% slug crosshairs_chart_charts %})).\n */\nclass CategoryAxisCrosshairComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nCategoryAxisCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisCrosshairComponent, selector: \"kendo-chart-category-axis-item-crosshair\", inputs: { color: \"color\", dashType: \"dashType\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], dashType: [{\n type: Input\n }], opacity: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The options of the crosshair tooltip ([see example]({% slug crosshairs_chart_charts %})).\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nclass CategoryAxisCrosshairTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nCategoryAxisCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisCrosshairTooltipComponent, selector: \"kendo-chart-category-axis-item-crosshair-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the axis labels ([see example]({% slug labels_chart_charts %})).\n */\nclass CategoryAxisLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisLabelsComponent, selector: \"kendo-chart-category-axis-item-labels\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", culture: \"culture\", dateFormats: \"dateFormats\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], culture: [{\n type: Input\n }], dateFormats: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], mirror: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], skip: [{\n type: Input\n }], step: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the axis date range labels ([see example]({% slug labels_chart_charts %})).\n */\nclass CategoryAxisRangeLabelsComponent extends CategoryAxisLabelsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.configKey = 'rangeLabels';\n this.markAsVisible();\n }\n}\nCategoryAxisRangeLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisRangeLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisRangeLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisRangeLabelsComponent, selector: \"kendo-chart-category-axis-item-range-labels\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisRangeLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-range-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration of the category axis notes ([see example]({% slug notes_chart_charts %}#toc-axis-notes)).\n */\nclass CategoryAxisNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisNotesComponent, selector: \"kendo-chart-category-axis-item-notes\", inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { data: [{\n type: Input\n }], line: [{\n type: Input\n }], position: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass CategoryAxisNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisNotesIconComponent, selector: \"kendo-chart-category-axis-item-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass CategoryAxisNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisNotesLabelComponent, selector: \"kendo-chart-category-axis-item-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The selected axis range. If set, the axis selection is enabled. The range is index-based and starts from zero.\n * Categories with indexes in the\n * ([`select.from`]({% slug api_charts_categoryaxisselectcomponent %}#toc-from)\n * —[`select.to`]({% slug api_charts_categoryaxisselectcomponent %}#toc-to)) range will be selected.\n * This means that the last category in the range will not be included in the selection.\n * If the categories are dates, the range has to be also specified with date values.\n */\nclass CategoryAxisSelectComponent extends SettingsComponent {\n constructor(configurationService) {\n super('select', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisSelectComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisSelectComponent, selector: \"kendo-chart-category-axis-item-select\", inputs: { from: \"from\", max: \"max\", min: \"min\", mousewheel: \"mousewheel\", to: \"to\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisSelectComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-select',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { from: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], mousewheel: [{\n type: Input\n }], to: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the category axis title.\n */\nclass CategoryAxisTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nCategoryAxisTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nCategoryAxisTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CategoryAxisTitleComponent, selector: \"kendo-chart-category-axis-item-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CategoryAxisTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-category-axis-item-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the Chart area.\n * Represents the entire visible area of the Chart\n * ([see example]({% slug chartarea_chart_charts %})).\n */\nclass ChartAreaComponent extends SettingsComponent {\n constructor(configurationService) {\n super('chartArea', configurationService);\n this.configurationService = configurationService;\n }\n}\nChartAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartAreaComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nChartAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ChartAreaComponent, selector: \"kendo-chart-area\", inputs: { background: \"background\", border: \"border\", height: \"height\", margin: \"margin\", opacity: \"opacity\", width: \"width\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartAreaComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-area',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], opacity: [{\n type: Input\n }], width: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the Chart legend\n * ([see example]({% slug legend_chart_charts %})).\n */\nclass LegendComponent extends SettingsComponent {\n constructor(configurationService) {\n super('legend', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LegendComponent, selector: \"kendo-chart-legend\", inputs: { align: \"align\", background: \"background\", border: \"border\", height: \"height\", labels: \"labels\", margin: \"margin\", offsetX: \"offsetX\", offsetY: \"offsetY\", orientation: \"orientation\", padding: \"padding\", position: \"position\", reverse: \"reverse\", visible: \"visible\", width: \"width\", markers: \"markers\", spacing: \"spacing\", inactiveItems: \"inactiveItems\", item: \"item\", title: \"title\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-legend',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { align: [{\n type: Input\n }], background: [{\n type: Input\n }], border: [{\n type: Input\n }], height: [{\n type: Input\n }], labels: [{\n type: Input\n }], margin: [{\n type: Input\n }], offsetX: [{\n type: Input\n }], offsetY: [{\n type: Input\n }], orientation: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], reverse: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], markers: [{\n type: Input\n }], spacing: [{\n type: Input\n }], inactiveItems: [{\n type: Input\n }], item: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the inactive Chart legend items.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * ```\n */\nclass LegendInactiveItemsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('legend.inactiveItems', configurationService);\n this.configurationService = configurationService;\n }\n}\nLegendInactiveItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendInactiveItemsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nLegendInactiveItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LegendInactiveItemsComponent, selector: \"kendo-chart-legend-inactive-items\", inputs: { labels: \"labels\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendInactiveItemsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-legend-inactive-items',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { labels: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart legend item.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * ```\n */\nclass LegendItemComponent extends SettingsComponent {\n constructor(configurationService) {\n super('legend.item', configurationService);\n this.configurationService = configurationService;\n }\n}\nLegendItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendItemComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nLegendItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LegendItemComponent, selector: \"kendo-chart-legend-item\", inputs: { cursor: \"cursor\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LegendItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-legend-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { cursor: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration component for a Chart pane.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n *\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public seriesData: number[][] = [[1, 2, 3, 5], [0, 1, 0, 1]];\n * }\n * ```\n */\nclass PaneComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PaneComponent, selector: \"kendo-chart-pane, kendo-chart-panes-item\", inputs: { background: \"background\", border: \"border\", clip: \"clip\", height: \"height\", margin: \"margin\", name: \"name\", padding: \"padding\", title: \"title\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-pane, kendo-chart-panes-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], clip: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], name: [{\n type: Input\n }], padding: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * The default options for all chart panes,\n * ([see example]({% slug panes_chart_charts %}#toc-default-panes-configuration)).\n */\nclass PaneDefaultsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('paneDefaults', configurationService);\n this.configurationService = configurationService;\n }\n}\nPaneDefaultsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneDefaultsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nPaneDefaultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PaneDefaultsComponent, selector: \"kendo-chart-pane-defaults\", inputs: { background: \"background\", border: \"border\", clip: \"clip\", height: \"height\", margin: \"margin\", padding: \"padding\", title: \"title\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneDefaultsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-pane-defaults',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], clip: [{\n type: Input\n }], height: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the pane default title.\n */\nclass PaneDefaultsTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('paneDefaults.title', configurationService);\n this.configurationService = configurationService;\n }\n}\nPaneDefaultsTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneDefaultsTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nPaneDefaultsTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PaneDefaultsTitleComponent, selector: \"kendo-chart-pane-defaults-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", position: \"position\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PaneDefaultsTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-pane-defaults-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], position: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more pane configuration components.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nclass PanesComponent extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('panes', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nPanesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanesComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nPanesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PanesComponent, selector: \"kendo-chart-panes\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: PaneComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-panes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [PaneComponent]\n }] } });\n\n/**\n * The configuration of the Chart pane title.\n */\nclass PanesTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nPanesTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanesTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nPanesTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PanesTitleComponent, selector: \"kendo-chart-pane-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", position: \"position\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PanesTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-pane-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], position: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the plot area\n * ([see example]({% slug plotarea_chart_charts %})).\n * The plot area is the area which displays the series.\n */\nclass PlotAreaComponent extends SettingsComponent {\n constructor(configurationService) {\n super('plotArea', configurationService);\n this.configurationService = configurationService;\n }\n}\nPlotAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PlotAreaComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nPlotAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PlotAreaComponent, selector: \"kendo-chart-plot-area\", inputs: { background: \"background\", border: \"border\", margin: \"margin\", opacity: \"opacity\", padding: \"padding\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PlotAreaComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-plot-area',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], margin: [{\n type: Input\n }], opacity: [{\n type: Input\n }], padding: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more series items.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nclass SeriesComponent extends CollectionComponent {\n constructor(configurationService, collectionService, tooltipTemplateService) {\n super('series', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.tooltipTemplateService = tooltipTemplateService;\n }\n ngAfterContentChecked() {\n this.readTooltipTemplates();\n }\n readTooltipTemplates() {\n const templates = this.children.map((item) => item.seriesTooltipTemplateRef);\n this.tooltipTemplateService.setSeriesTemplates(templates);\n }\n}\nSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }, { token: TooltipTemplateService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesComponent, selector: \"kendo-chart-series\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: SeriesItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-series',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: TooltipTemplateService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [SeriesItemComponent]\n }] } });\n\n/**\n * The default options for all series\n * ([see example]({% slug series_chart_charts %}#toc-default-series-configuration)).\n */\nclass SeriesDefaultsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsComponent, selector: \"kendo-chart-series-defaults\", inputs: { border: \"border\", gap: \"gap\", highlight: \"highlight\", overlay: \"overlay\", spacing: \"spacing\", stack: \"stack\", type: \"type\", visual: \"visual\", labels: \"labels\", notes: \"notes\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { border: [{\n type: Input\n }], gap: [{\n type: Input\n }], highlight: [{\n type: Input\n }], overlay: [{\n type: Input\n }], spacing: [{\n type: Input\n }], stack: [{\n type: Input\n }], type: [{\n type: Input\n }], visual: [{\n type: Input\n }], labels: [{\n type: Input\n }], notes: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart series label.\n */\nclass SeriesDefaultsLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.labels', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesDefaultsLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsLabelsComponent, selector: \"kendo-chart-series-defaults-labels\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", visible: \"visible\", visual: \"visual\", from: \"from\", to: \"to\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }], from: [{\n type: Input\n }], to: [{\n type: Input\n }] } });\n\n/**\n * The `from` label configuration of the Chart series.\n */\nclass SeriesDefaultsLabelsFromComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.labels.from', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesDefaultsLabelsFromComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsFromComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsLabelsFromComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsLabelsFromComponent, selector: \"kendo-chart-series-defaults-labels-from\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsFromComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-labels-from',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The `to` label configuration of the Chart series.\n */\nclass SeriesDefaultsLabelsToComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.labels.to', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesDefaultsLabelsToComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsToComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsLabelsToComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsLabelsToComponent, selector: \"kendo-chart-series-defaults-labels-to\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsLabelsToComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-labels-to',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the [`seriesDefaults`]({% slug api_charts_seriesdefaultscomponent %}) notes.\n */\nclass SeriesDefaultsNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsNotesComponent, selector: \"kendo-chart-series-defaults-notes\", inputs: { line: \"line\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { line: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass SeriesDefaultsNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsNotesIconComponent, selector: \"kendo-chart-series-defaults-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass SeriesDefaultsNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesDefaultsNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsNotesLabelComponent, selector: \"kendo-chart-series-defaults-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the Chart series tooltip.\n */\nclass SeriesDefaultsTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('seriesDefaults.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesDefaultsTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesDefaultsTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesDefaultsTooltipComponent, selector: \"kendo-chart-series-defaults-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesDefaultsTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-defaults-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The error bars of the Chart series\n * ([see example]({% slug errorbars_chart_charts %})).\n */\nclass SeriesErrorBarsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('errorBars', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesErrorBarsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesErrorBarsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesErrorBarsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesErrorBarsComponent, selector: \"kendo-chart-series-item-error-bars\", inputs: { color: \"color\", endCaps: \"endCaps\", line: \"line\", value: \"value\", visual: \"visual\", xValue: \"xValue\", yValue: \"yValue\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesErrorBarsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-error-bars',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], endCaps: [{\n type: Input\n }], line: [{\n type: Input\n }], value: [{\n type: Input\n }], visual: [{\n type: Input\n }], xValue: [{\n type: Input\n }], yValue: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart series extremes.\n * Applies to extreme outliers.\n * For more information, refer to [`series.outliers`]({% slug api_charts_seriesitemcomponent %}#toc-outliers).\n */\nclass SeriesExtremesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('extremes', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesExtremesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesExtremesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesExtremesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesExtremesComponent, selector: \"kendo-chart-series-item-extremes\", inputs: { background: \"background\", border: \"border\", rotation: \"rotation\", size: \"size\", type: \"type\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesExtremesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-extremes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], rotation: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }] } });\n\n/**\n * The Chart series highlighting configuration options.\n */\nclass SeriesHighlightComponent extends SettingsComponent {\n constructor(configurationService) {\n super('highlight', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesHighlightComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesHighlightComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesHighlightComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesHighlightComponent, selector: \"kendo-chart-series-item-highlight\", inputs: { border: \"border\", color: \"color\", line: \"line\", markers: \"markers\", opacity: \"opacity\", toggle: \"toggle\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesHighlightComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-highlight',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { border: [{\n type: Input\n }], color: [{\n type: Input\n }], line: [{\n type: Input\n }], markers: [{\n type: Input\n }], opacity: [{\n type: Input\n }], toggle: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart series label\n * ([see example]({% slug labels_chart_charts %})).\n */\nclass SeriesLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesLabelsComponent, selector: \"kendo-chart-series-item-labels\", inputs: { align: \"align\", background: \"background\", border: \"border\", color: \"color\", content: \"content\", distance: \"distance\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", visible: \"visible\", visual: \"visual\", from: \"from\", to: \"to\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { align: [{\n type: Input\n }], background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], distance: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }], from: [{\n type: Input\n }], to: [{\n type: Input\n }] } });\n\n/**\n * The `from` label configuration of the Chart series.\n */\nclass SeriesLabelsFromComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels.from', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesLabelsFromComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsFromComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesLabelsFromComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesLabelsFromComponent, selector: \"kendo-chart-series-item-labels-from\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", position: \"position\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsFromComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-labels-from',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The `to` label configuration of the Chart series.\n */\nclass SeriesLabelsToComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels.to', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nSeriesLabelsToComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsToComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesLabelsToComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesLabelsToComponent, selector: \"kendo-chart-series-item-labels-to\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", padding: \"padding\", position: \"position\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesLabelsToComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-labels-to',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart series marker.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public series: any[] = [{\n * name: \"India\",\n * data: [3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855],\n * markers: {\n * background: 'red',\n * size: 20,\n * type: 'circle'\n * }\n * }, {\n * name: \"Russian Federation\",\n * data: [4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3],\n * markers: {\n * background: 'yellow',\n * size: 10,\n * type: 'square',\n * rotation: 45\n * }\n * }, {\n * name: \"Germany\",\n * data: [0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995],\n * markers: {\n * background: 'green',\n * size: 20,\n * type: 'triangle'\n * }\n * },{\n * name: \"World\",\n * data: [1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727],\n * markers: {\n * background: 'blue',\n * size: 10,\n * type: 'cross'\n * }\n * }];\n * public categories: number[] = [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011];\n * }\n * ```\n */\nclass SeriesMarkersComponent extends SettingsComponent {\n constructor(configurationService) {\n super('markers', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesMarkersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesMarkersComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesMarkersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesMarkersComponent, selector: \"kendo-chart-series-item-markers\", inputs: { background: \"background\", border: \"border\", rotation: \"rotation\", size: \"size\", type: \"type\", visible: \"visible\", visual: \"visual\", from: \"from\", to: \"to\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesMarkersComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-markers',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], rotation: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }], from: [{\n type: Input\n }], to: [{\n type: Input\n }] } });\n\n/**\n * The series notes configuration\n * ([see example]({% slug notes_chart_charts %})).\n */\nclass SeriesNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesNotesComponent, selector: \"kendo-chart-series-item-notes\", inputs: { line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { line: [{\n type: Input\n }], position: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass SeriesNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesNotesIconComponent, selector: \"kendo-chart-series-item-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass SeriesNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesNotesLabelComponent, selector: \"kendo-chart-series-item-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Chart series outliers.\n * Applies to mild outliers.\n * For more information, refer to the [`series.extremes`]({% slug api_charts_seriesitemcomponent %}#toc-extremes) option.\n */\nclass SeriesOutliersComponent extends SettingsComponent {\n constructor(configurationService) {\n super('outliers', configurationService);\n this.configurationService = configurationService;\n }\n}\nSeriesOutliersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesOutliersComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nSeriesOutliersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SeriesOutliersComponent, selector: \"kendo-chart-series-item-outliers\", inputs: { background: \"background\", border: \"border\", rotation: \"rotation\", size: \"size\", type: \"type\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SeriesOutliersComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-series-item-outliers',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], rotation: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the Chart title or text\n * ([see example]({% slug title_chart_charts %})).\n *\n * @example\n * ```ts-preview\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n *

\n * \n * `\n * })\n * export class AppComponent {\n * public isVisible = true;\n * public borderOptions = {\n * color: \"rgba(255, 0, 0, 0.8)\",\n * dashType: 'dash',\n * width: 2\n * };\n *\n * public series: any[] = [{\n * name: \"India\",\n * data: [3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855]\n * }, {\n * name: \"Russian Federation\",\n * data: [4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3]\n * }, {\n * name: \"Germany\",\n * data: [0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995]\n * },{\n * name: \"World\",\n * data: [1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727]\n * }];\n * public categories: number[] = [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011];\n * }\n * ```\n */\nclass TitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TitleComponent, selector: \"kendo-chart-title\", inputs: { align: \"align\", background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", text: \"text\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { align: [{\n type: Input\n }], background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the Chart series tooltip\n * ([see example]({% slug tooltips_chart_charts %})).\n */\nclass TooltipComponent extends SettingsComponent {\n constructor(configurationService, templateService) {\n super('tooltip', configurationService);\n this.configurationService = configurationService;\n this.templateService = templateService;\n this.markAsVisible();\n }\n ngAfterContentChecked() {\n this.templateService.setTemplate(this.seriesTooltipTemplate ? this.seriesTooltipTemplate.templateRef : null);\n this.templateService.setSharedTemplate(this.sharedTooltipTemplate ? this.sharedTooltipTemplate.templateRef : null);\n }\n}\nTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipComponent, deps: [{ token: ConfigurationService }, { token: TooltipTemplateService }], target: i0.ɵɵFactoryTarget.Component });\nTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TooltipComponent, selector: \"kendo-chart-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", opacity: \"opacity\", padding: \"padding\", shared: \"shared\", visible: \"visible\" }, queries: [{ propertyName: \"seriesTooltipTemplate\", first: true, predicate: SeriesTooltipTemplateDirective, descendants: true }, { propertyName: \"sharedTooltipTemplate\", first: true, predicate: SharedTooltipTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TooltipComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-chart-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: TooltipTemplateService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], opacity: [{\n type: Input\n }], padding: [{\n type: Input\n }], shared: [{\n type: Input\n }], visible: [{\n type: Input\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: [SeriesTooltipTemplateDirective, { static: false }]\n }], sharedTooltipTemplate: [{\n type: ContentChild,\n args: [SharedTooltipTemplateDirective, { static: false }]\n }] } });\n\n/**\n * The configuration component for a value axis.\n */\nclass ValueAxisItemComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nValueAxisItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisItemComponent, selector: \"kendo-chart-value-axis-item\", inputs: { axisCrossingValue: \"axisCrossingValue\", background: \"background\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", majorUnit: \"majorUnit\", max: \"max\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", minorUnit: \"minorUnit\", name: \"name\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", type: \"type\", visible: \"visible\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", title: \"title\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-value-axis-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { axisCrossingValue: [{\n type: Input\n }], background: [{\n type: Input\n }], color: [{\n type: Input\n }], line: [{\n type: Input\n }], majorGridLines: [{\n type: Input\n }], majorTicks: [{\n type: Input\n }], majorUnit: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], minorGridLines: [{\n type: Input\n }], minorTicks: [{\n type: Input\n }], minorUnit: [{\n type: Input\n }], name: [{\n type: Input\n }], narrowRange: [{\n type: Input\n }], pane: [{\n type: Input\n }], plotBands: [{\n type: Input\n }], reverse: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }], crosshair: [{\n type: Input\n }], labels: [{\n type: Input\n }], notes: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more value axis configuration components.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * }\n *\n * ```\n */\nclass ValueAxisComponent extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('valueAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nValueAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisComponent, selector: \"kendo-chart-value-axis\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: ValueAxisItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-value-axis',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [ValueAxisItemComponent]\n }] } });\n\n/**\n * The crosshair configuration options ([see example]({% slug crosshairs_chart_charts %})).\n */\nclass ValueAxisCrosshairComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nValueAxisCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisCrosshairComponent, selector: \"kendo-chart-value-axis-item-crosshair\", inputs: { color: \"color\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], opacity: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the crosshair tooltip ([see example]({% slug crosshairs_chart_charts %})).\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nclass ValueAxisCrosshairTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nValueAxisCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisCrosshairTooltipComponent, selector: \"kendo-chart-value-axis-item-crosshair-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The axis labels configuration.\n */\nclass ValueAxisLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisLabelsComponent, selector: \"kendo-chart-value-axis-item-labels\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], mirror: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], skip: [{\n type: Input\n }], step: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the value axis notes ([see example]({% slug notes_chart_charts %}#toc-axis-notes)).\n */\nclass ValueAxisNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisNotesComponent, selector: \"kendo-chart-value-axis-item-notes\", inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { data: [{\n type: Input\n }], line: [{\n type: Input\n }], position: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass ValueAxisNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisNotesIconComponent, selector: \"kendo-chart-value-axis-item-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass ValueAxisNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisNotesLabelComponent, selector: \"kendo-chart-value-axis-item-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The title configuration of the value axis.\n */\nclass ValueAxisTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nValueAxisTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nValueAxisTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueAxisTitleComponent, selector: \"kendo-chart-value-axis-item-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueAxisTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-value-axis-item-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration component for an X axis\n * ([see example]({% slug api_charts_xaxiscomponent %})).\n */\nclass XAxisItemComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService, intl, localeId) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.intl = intl;\n this.notifyChanges({ weekStartDay: intl.firstDay(localeId) });\n }\n}\nXAxisItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }, { token: i3.IntlService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });\nXAxisItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisItemComponent, selector: \"kendo-chart-x-axis-item\", inputs: { axisCrossingValue: \"axisCrossingValue\", background: \"background\", baseUnit: \"baseUnit\", categories: \"categories\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", majorUnit: \"majorUnit\", max: \"max\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", minorUnit: \"minorUnit\", name: \"name\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", startAngle: \"startAngle\", type: \"type\", visible: \"visible\", weekStartDay: \"weekStartDay\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", title: \"title\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-x-axis-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: i3.IntlService }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, propDecorators: { axisCrossingValue: [{\n type: Input\n }], background: [{\n type: Input\n }], baseUnit: [{\n type: Input\n }], categories: [{\n type: Input\n }], color: [{\n type: Input\n }], line: [{\n type: Input\n }], majorGridLines: [{\n type: Input\n }], majorTicks: [{\n type: Input\n }], majorUnit: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], minorGridLines: [{\n type: Input\n }], minorTicks: [{\n type: Input\n }], minorUnit: [{\n type: Input\n }], name: [{\n type: Input\n }], narrowRange: [{\n type: Input\n }], pane: [{\n type: Input\n }], plotBands: [{\n type: Input\n }], reverse: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }], weekStartDay: [{\n type: Input\n }], crosshair: [{\n type: Input\n }], labels: [{\n type: Input\n }], notes: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more X-axis configuration components.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public notesConfig = {\n * data: [{\n * value: 0.2,\n * text: \"foo\"\n * }, {\n * value: 0.8,\n * text: \"bar\"\n * }],\n * label: {\n * content: (args: any) => args.dataItem.text,\n * background: 'red',\n * color: 'white'\n * },\n * line: {\n * color: 'blue',\n * dashType: 'dash',\n * length: 150,\n * width: 2\n * },\n * position: 'top'\n * };\n *\n * public crosshairConfig = {\n * color: 'green',\n * opacity: 0.8,\n * visible: true,\n * width: 3\n * };\n * }\n *\n * ```\n */\nclass XAxisComponent extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('xAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nXAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisComponent, selector: \"kendo-chart-x-axis\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: XAxisItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-x-axis',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [XAxisItemComponent]\n }] } });\n\n/**\n * The crosshair configuration options\n * ([see example]({% slug api_charts_xaxiscomponent %})).\n */\nclass XAxisCrosshairComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nXAxisCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisCrosshairComponent, selector: \"kendo-chart-x-axis-item-crosshair\", inputs: { color: \"color\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], opacity: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the crosshair tooltip.\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nclass XAxisCrosshairTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nXAxisCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisCrosshairTooltipComponent, selector: \"kendo-chart-x-axis-item-crosshair-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The axis labels configuration.\n */\nclass XAxisLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisLabelsComponent, selector: \"kendo-chart-x-axis-item-labels\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", culture: \"culture\", dateFormats: \"dateFormats\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], culture: [{\n type: Input\n }], dateFormats: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], mirror: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], skip: [{\n type: Input\n }], step: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the X-axis notes.\n * For an example on the basic usage of the XAxisNotesComponent,\n * refer to the [demo on the XAxisComponent]({% slug api_charts_xaxiscomponent %})\n * or to the documentation about the\n * [axis notes]({% slug notes_chart_charts %}#toc-axis-notes).\n */\nclass XAxisNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisNotesComponent, selector: \"kendo-chart-x-axis-item-notes\", inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { data: [{\n type: Input\n }], line: [{\n type: Input\n }], position: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass XAxisNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisNotesIconComponent, selector: \"kendo-chart-x-axis-item-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass XAxisNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisNotesLabelComponent, selector: \"kendo-chart-x-axis-item-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The title configuration of the Scatter Chart X axis.\n */\nclass XAxisTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nXAxisTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nXAxisTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: XAxisTitleComponent, selector: \"kendo-chart-x-axis-item-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: XAxisTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-x-axis-item-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration component for the Y axis\n * ([see example]({% slug api_charts_yaxiscomponent %})).\n */\nclass YAxisItemComponent extends CollectionItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nYAxisItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisItemComponent, selector: \"kendo-chart-y-axis-item\", inputs: { axisCrossingValue: \"axisCrossingValue\", background: \"background\", baseUnit: \"baseUnit\", categories: \"categories\", color: \"color\", line: \"line\", majorGridLines: \"majorGridLines\", majorTicks: \"majorTicks\", majorUnit: \"majorUnit\", max: \"max\", min: \"min\", minorGridLines: \"minorGridLines\", minorTicks: \"minorTicks\", minorUnit: \"minorUnit\", name: \"name\", narrowRange: \"narrowRange\", pane: \"pane\", plotBands: \"plotBands\", reverse: \"reverse\", type: \"type\", visible: \"visible\", crosshair: \"crosshair\", labels: \"labels\", notes: \"notes\", title: \"title\" }, providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-y-axis-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { axisCrossingValue: [{\n type: Input\n }], background: [{\n type: Input\n }], baseUnit: [{\n type: Input\n }], categories: [{\n type: Input\n }], color: [{\n type: Input\n }], line: [{\n type: Input\n }], majorGridLines: [{\n type: Input\n }], majorTicks: [{\n type: Input\n }], majorUnit: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], minorGridLines: [{\n type: Input\n }], minorTicks: [{\n type: Input\n }], minorUnit: [{\n type: Input\n }], name: [{\n type: Input\n }], narrowRange: [{\n type: Input\n }], pane: [{\n type: Input\n }], plotBands: [{\n type: Input\n }], reverse: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }], crosshair: [{\n type: Input\n }], labels: [{\n type: Input\n }], notes: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\n/**\n * A collection of one or more Y-axis configuration components.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public notesConfig = {\n * data: [{\n * value: 0.2,\n * text: \"foo\"\n * }, {\n * value: 0.8,\n * text: \"bar\"\n * }],\n * label: {\n * content: (args: any) => args.dataItem.text,\n * background: 'red',\n * color: 'white'\n * },\n * line: {\n * color: 'blue',\n * dashType: 'dash',\n * length: 150,\n * width: 2\n * },\n * position: 'top'\n * };\n *\n * public crosshairConfig = {\n * color: 'green',\n * opacity: 0.8,\n * visible: true,\n * width: 3\n * };\n * }\n *\n * ```\n */\nclass YAxisComponent extends CollectionComponent {\n constructor(configurationService, collectionService) {\n super('yAxis', configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nYAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisComponent, selector: \"kendo-chart-y-axis\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: YAxisItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-y-axis',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [YAxisItemComponent]\n }] } });\n\n/**\n * The crosshair configuration options\n * ([see example]({% slug api_charts_yaxiscomponent %})).\n */\nclass YAxisCrosshairComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nYAxisCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisCrosshairComponent, selector: \"kendo-chart-y-axis-item-crosshair\", inputs: { color: \"color\", opacity: \"opacity\", visible: \"visible\", width: \"width\", tooltip: \"tooltip\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { color: [{\n type: Input\n }], opacity: [{\n type: Input\n }], visible: [{\n type: Input\n }], width: [{\n type: Input\n }], tooltip: [{\n type: Input\n }] } });\n\n/**\n * The configuration options of the crosshair tooltip.\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nclass YAxisCrosshairTooltipComponent extends SettingsComponent {\n constructor(configurationService) {\n super('crosshair.tooltip', configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nYAxisCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisCrosshairTooltipComponent, selector: \"kendo-chart-y-axis-item-crosshair-tooltip\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", format: \"format\", padding: \"padding\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], padding: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The axis labels configuration.\n */\nclass YAxisLabelsComponent extends SettingsComponent {\n constructor(configurationService) {\n super('labels', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisLabelsComponent, selector: \"kendo-chart-y-axis-item-labels\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", culture: \"culture\", dateFormats: \"dateFormats\", font: \"font\", format: \"format\", margin: \"margin\", mirror: \"mirror\", padding: \"padding\", position: \"position\", rotation: \"rotation\", skip: \"skip\", step: \"step\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], culture: [{\n type: Input\n }], dateFormats: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], margin: [{\n type: Input\n }], mirror: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], skip: [{\n type: Input\n }], step: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * The configuration of the Y axis notes\n * ([see example]({% slug api_charts_yaxiscomponent %})).\n */\nclass YAxisNotesComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisNotesComponent, selector: \"kendo-chart-y-axis-item-notes\", inputs: { data: \"data\", line: \"line\", position: \"position\", visual: \"visual\", icon: \"icon\", label: \"label\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { data: [{\n type: Input\n }], line: [{\n type: Input\n }], position: [{\n type: Input\n }], visual: [{\n type: Input\n }], icon: [{\n type: Input\n }], label: [{\n type: Input\n }] } });\n\n/**\n * The icon of the notes.\n */\nclass YAxisNotesIconComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.icon', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisNotesIconComponent, selector: \"kendo-chart-y-axis-item-notes-icon\", inputs: { background: \"background\", border: \"border\", size: \"size\", type: \"type\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], size: [{\n type: Input\n }], type: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The label of the notes.\n */\nclass YAxisNotesLabelComponent extends SettingsComponent {\n constructor(configurationService) {\n super('notes.label', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisNotesLabelComponent, selector: \"kendo-chart-y-axis-item-notes-label\", inputs: { background: \"background\", border: \"border\", color: \"color\", content: \"content\", font: \"font\", format: \"format\", position: \"position\", rotation: \"rotation\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], content: [{\n type: Input\n }], font: [{\n type: Input\n }], format: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The title configuration of the Scatter Chart Y axis.\n */\nclass YAxisTitleComponent extends SettingsComponent {\n constructor(configurationService) {\n super('title', configurationService);\n this.configurationService = configurationService;\n }\n}\nYAxisTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nYAxisTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YAxisTitleComponent, selector: \"kendo-chart-y-axis-item-title\", inputs: { background: \"background\", border: \"border\", color: \"color\", font: \"font\", margin: \"margin\", padding: \"padding\", position: \"position\", rotation: \"rotation\", text: \"text\", visible: \"visible\", visual: \"visual\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YAxisTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-y-axis-item-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { background: [{\n type: Input\n }], border: [{\n type: Input\n }], color: [{\n type: Input\n }], font: [{\n type: Input\n }], margin: [{\n type: Input\n }], padding: [{\n type: Input\n }], position: [{\n type: Input\n }], rotation: [{\n type: Input\n }], text: [{\n type: Input\n }], visible: [{\n type: Input\n }], visual: [{\n type: Input\n }] } });\n\n/**\n * Specifies if the Chart can be zoomed.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * ```\n */\nclass ZoomableComponent extends SettingsComponent {\n constructor(configurationService) {\n super('zoomable', configurationService);\n this.configurationService = configurationService;\n }\n}\nZoomableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ZoomableComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nZoomableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ZoomableComponent, selector: \"kendo-chart-zoomable\", inputs: { mousewheel: \"mousewheel\", selection: \"selection\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ZoomableComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-zoomable',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { mousewheel: [{\n type: Input\n }], selection: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst CHART_DIRECTIVES = [\n ChartComponent,\n TooltipPopupComponent,\n SeriesTooltipTemplateDirective,\n SharedTooltipTemplateDirective,\n CrosshairTooltipsContainerComponent,\n CrosshairTooltipComponent,\n DonutCenterTemplateDirective,\n AxisDefaultsComponent,\n AxisDefaultsCrosshairComponent,\n AxisDefaultsCrosshairTooltipComponent,\n AxisDefaultsLabelsComponent,\n AxisDefaultsTitleComponent,\n CategoryAxisComponent,\n CategoryAxisCrosshairComponent,\n CategoryAxisCrosshairTooltipComponent,\n CategoryAxisItemComponent,\n CategoryAxisLabelsComponent,\n CategoryAxisRangeLabelsComponent,\n CategoryAxisNotesComponent,\n CategoryAxisNotesIconComponent,\n CategoryAxisNotesLabelComponent,\n CategoryAxisSelectComponent,\n CategoryAxisTitleComponent,\n ChartAreaComponent,\n LegendComponent,\n LegendInactiveItemsComponent,\n LegendItemComponent,\n PaneComponent,\n PaneDefaultsComponent,\n PaneDefaultsTitleComponent,\n PanesComponent,\n PanesTitleComponent,\n PlotAreaComponent,\n SeriesComponent,\n SeriesDefaultsComponent,\n SeriesDefaultsLabelsComponent,\n SeriesDefaultsLabelsFromComponent,\n SeriesDefaultsLabelsToComponent,\n SeriesDefaultsNotesComponent,\n SeriesDefaultsNotesIconComponent,\n SeriesDefaultsNotesLabelComponent,\n SeriesDefaultsTooltipComponent,\n SeriesErrorBarsComponent,\n SeriesExtremesComponent,\n SeriesHighlightComponent,\n SeriesItemComponent,\n SeriesLabelsComponent,\n SeriesLabelsFromComponent,\n SeriesLabelsToComponent,\n SeriesMarkersComponent,\n SeriesNotesComponent,\n SeriesNotesIconComponent,\n SeriesNotesLabelComponent,\n SeriesOutliersComponent,\n SeriesTooltipComponent,\n TitleComponent,\n TooltipComponent,\n ValueAxisComponent,\n ValueAxisCrosshairComponent,\n ValueAxisCrosshairTooltipComponent,\n ValueAxisItemComponent,\n ValueAxisLabelsComponent,\n ValueAxisNotesComponent,\n ValueAxisNotesIconComponent,\n ValueAxisNotesLabelComponent,\n ValueAxisTitleComponent,\n XAxisComponent,\n XAxisCrosshairComponent,\n XAxisCrosshairTooltipComponent,\n XAxisItemComponent,\n XAxisLabelsComponent,\n XAxisNotesComponent,\n XAxisNotesIconComponent,\n XAxisNotesLabelComponent,\n XAxisTitleComponent,\n YAxisComponent,\n YAxisCrosshairComponent,\n YAxisCrosshairTooltipComponent,\n YAxisItemComponent,\n YAxisLabelsComponent,\n YAxisNotesComponent,\n YAxisNotesIconComponent,\n YAxisNotesLabelComponent,\n YAxisTitleComponent,\n ZoomableComponent\n];\n\n// Re-export event types\n\n/**\n * Specifies the `weekStartDay` of a [CategoryAxisItemComponent]({% slug api_charts_categoryaxisitemcomponent %}).\n */\nvar WeekStartDay;\n(function (WeekStartDay) {\n /**\n * Specifies Sunday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Sunday\"] = 0] = \"Sunday\";\n /**\n * Specifies Monday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Monday\"] = 1] = \"Monday\";\n /**\n * Specifies Tuesday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Tuesday\"] = 2] = \"Tuesday\";\n /**\n * Specifies Wednesday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Wednesday\"] = 3] = \"Wednesday\";\n /**\n * Specifies Thursday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Thursday\"] = 4] = \"Thursday\";\n /**\n * Specifies Friday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Friday\"] = 5] = \"Friday\";\n /**\n * Specifies Saturday as the first day of the week.\n */\n WeekStartDay[WeekStartDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekStartDay || (WeekStartDay = {}));\n\n/**\n * The arguments for the `navigatorFilter` event.\n */\nclass NavigatorFilterEvent extends BaseEvent {\n /**\n * Constructs the event arguments from a raw object.\n */\n constructor(e, sender) {\n super(sender);\n this.from = e.from;\n this.to = e.to;\n }\n}\n\n// Re-export event types\n\n/**\n * @hidden\n */\nclass RootConfigurationService extends ConfigurationService {\n}\nRootConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RootConfigurationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nRootConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RootConfigurationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RootConfigurationService, decorators: [{\n type: Injectable\n }] });\n\nconst EVENT_MAP = {\n navigatorFilter: NavigatorFilterEvent\n};\n/**\n * @hidden\n */\nclass StockInstanceEventService extends InstanceEventService {\n create(name, args, sender) {\n if (EVENT_MAP[name]) {\n return new EVENT_MAP[name](args, sender);\n }\n return super.create(name, args, sender);\n }\n}\n\nconst NAVIGATOR_DEFAULTS = {\n autoBindElements: true,\n liveDrag: false,\n partialRedraw: true\n};\n/**\n * The root StockChart component.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public data: any[] = [];\n *\n * constructor() {\n * for (let idx = 0; idx < 100; idx++) {\n * this.data.push({\n * date: new Date(2017, 0, idx),\n * value: Math.random() * 100\n * });\n * }\n * }\n * }\n *\n * ```\n */\nclass StockChartComponent extends ChartComponent {\n constructor(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer) {\n super(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer);\n this.configurationService = configurationService;\n this.themeService = themeService;\n this.element = element;\n this.intl = intl;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.instanceEventService = instanceEventService;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n /**\n * Fires when the navigator range is changed.\n */\n this.navigatorFilter = new EventEmitter();\n this.redrawSlaves = false;\n this.hostClasses = ['k-chart', 'k-stockchart'];\n validatePackage(packageMetadata);\n }\n /**\n * If called, the navigator pane is not redrawn the next time the StockChart options are updated.\n * The method is useful if you need to update only the main series data for the selected period.\n */\n skipNavigatorRedraw() {\n this.redrawSlaves = true;\n }\n createInstance(element, observer) {\n this.applyNavigatorDefaults();\n if (this.isDevMode() && (this.options.zoomable || this.options.pannable)) {\n throw new Error('The pannable and zoomable options are not supported by the StockChart component.');\n }\n this.instance = new StockChart(element, this.options, this.theme, {\n intlService: this.intl,\n observer: observer,\n rtl: this.rtl,\n sender: this\n });\n }\n updateOptions() {\n this.applyNavigatorDefaults();\n if (this.redrawSlaves) {\n this.instance.applyOptions(this.options);\n this.instance.bindCategories();\n this.instance.navigator.redrawSlaves();\n }\n else {\n this.instance.setOptions(this.options);\n }\n this.redrawSlaves = false;\n }\n applyNavigatorDefaults() {\n this.options.navigator = Object.assign({}, this.options.navigator, NAVIGATOR_DEFAULTS);\n }\n isDevMode() {\n return isDevMode();\n }\n}\nStockChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartComponent, deps: [{ token: ConfigurationService }, { token: ThemeService }, { token: i0.ElementRef }, { token: i3.IntlService }, { token: i4.LocalizationService }, { token: i0.NgZone }, { token: StockInstanceEventService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nStockChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: StockChartComponent, selector: \"kendo-stockchart\", inputs: { navigator: \"navigator\", pannable: \"pannable\", zoomable: \"zoomable\" }, outputs: { navigatorFilter: \"navigatorFilter\" }, providers: [\n ConfigurationService,\n TooltipTemplateService,\n { provide: RootConfigurationService, useExisting: ConfigurationService },\n StockInstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ], exportAs: [\"kendoStockChart\"], usesInheritance: true, ngImport: i0, template: `\n
\n \n \n \n \n \n `, isInline: true, components: [{ type: CrosshairTooltipsContainerComponent, selector: \"kendo-chart-crosshair-tooltips-container\", inputs: [\"popupSettings\"] }, { type: TooltipPopupComponent, selector: \"kendo-chart-tooltip-popup\", inputs: [\"animate\", \"classNames\", \"popupSettings\", \"wrapperClass\"], outputs: [\"leave\"] }, { type: i8.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoStockChart',\n providers: [\n ConfigurationService,\n TooltipTemplateService,\n { provide: RootConfigurationService, useExisting: ConfigurationService },\n StockInstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ],\n selector: 'kendo-stockchart',\n template: `\n
\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: i0.ElementRef }, { type: i3.IntlService }, { type: i4.LocalizationService }, { type: i0.NgZone }, { type: StockInstanceEventService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { navigator: [{\n type: Input\n }], pannable: [{\n type: Input\n }], zoomable: [{\n type: Input\n }], navigatorFilter: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nconst PREFIX = new InjectionToken('configuration prefix');\n/**\n * @hidden\n */\nclass PrefixConfigurationService extends ConfigurationService {\n constructor(rootService, prefix, ngZone) {\n super(ngZone);\n this.rootService = rootService;\n this.prefix = prefix;\n }\n push(store) {\n this.rootService.notify(new Change(this.prefix, store));\n }\n notify(change) {\n change.key = this.prefix + (change.key ? `.${change.key}` : '');\n this.rootService.notify(change);\n }\n}\nPrefixConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PrefixConfigurationService, deps: [{ token: RootConfigurationService }, { token: PREFIX }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nPrefixConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PrefixConfigurationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PrefixConfigurationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: RootConfigurationService, decorators: [{\n type: Inject,\n args: [RootConfigurationService]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PREFIX]\n }] }, { type: i0.NgZone }]; } });\n\n/**\n * The configuration options of the navigator\n * ([see runnable example]({% slug overview_stockchart_charts %}#toc-navigator)).\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n *

\n * \n * `\n * })\n * ```\n */\nclass NavigatorComponent extends SettingsComponent {\n constructor(configurationService) {\n super('', configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorComponent, selector: \"kendo-chart-navigator\", inputs: { visible: \"visible\", categoryAxis: \"categoryAxis\", hint: \"hint\", pane: \"pane\", select: \"select\", series: \"series\" }, providers: [{ provide: PREFIX, useValue: 'navigator' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: PREFIX, useValue: 'navigator' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }],\n selector: 'kendo-chart-navigator',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { visible: [{\n type: Input\n }], categoryAxis: [{\n type: Input\n }], hint: [{\n type: Input\n }], pane: [{\n type: Input\n }], select: [{\n type: Input\n }], series: [{\n type: Input\n }] } });\n\n/**\n * The configuration component of the navigator category axis.\n *\n * @example\n *\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * ```\n */\nclass NavigatorCategoryAxisComponent extends CategoryAxisItemComponent {\n constructor(configurationService, intl, localeId) {\n super(configurationService, null, intl, localeId);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisComponent, deps: [{ token: ConfigurationService }, { token: i3.IntlService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisComponent, selector: \"kendo-chart-navigator-category-axis\", providers: [{\n provide: PREFIX,\n useValue: 'navigator.categoryAxis'\n }, {\n provide: ConfigurationService,\n useClass: PrefixConfigurationService\n }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: PREFIX,\n useValue: 'navigator.categoryAxis'\n }, {\n provide: ConfigurationService,\n useClass: PrefixConfigurationService\n }],\n selector: 'kendo-chart-navigator-category-axis',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i3.IntlService }, { type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\n/**\n * The configuration options of the crosshair.\n */\nclass NavigatorCategoryAxisCrosshairComponent extends CategoryAxisCrosshairComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisCrosshairComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisCrosshairComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisCrosshairComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisCrosshairComponent, selector: \"kendo-chart-navigator-category-axis-crosshair\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisCrosshairComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-crosshair',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration options of the crosshair tooltip.\n * The crosshair tooltip is displayed when the `visible` option is set to `true`.\n */\nclass NavigatorCategoryAxisCrosshairTooltipComponent extends CategoryAxisCrosshairTooltipComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisCrosshairTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisCrosshairTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisCrosshairTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisCrosshairTooltipComponent, selector: \"kendo-chart-navigator-category-axis-crosshair-tooltip\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisCrosshairTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-crosshair-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration of the axis labels.\n */\nclass NavigatorCategoryAxisLabelsComponent extends CategoryAxisLabelsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisLabelsComponent, selector: \"kendo-chart-navigator-category-axis-labels\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration of the category axis notes.\n */\nclass NavigatorCategoryAxisNotesComponent extends CategoryAxisNotesComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisNotesComponent, selector: \"kendo-chart-navigator-category-axis-notes\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The icon of the notes.\n */\nclass NavigatorCategoryAxisNotesIconComponent extends CategoryAxisNotesIconComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisNotesIconComponent, selector: \"kendo-chart-navigator-category-axis-notes-icon\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The label of the notes.\n */\nclass NavigatorCategoryAxisNotesLabelComponent extends CategoryAxisNotesLabelComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisNotesLabelComponent, selector: \"kendo-chart-navigator-category-axis-notes-label\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The selected axis range. If set, the axis selection is enabled. The range is index-based and starts from zero.\n * Categories with indexes in the range (`select.from`, `select.to`) will be selected.\n * This means that the last category in the range will not be included in the selection.\n * If the categories are dates, the range has also to be specified with date values.\n */\nclass NavigatorCategoryAxisSelectComponent extends CategoryAxisSelectComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisSelectComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisSelectComponent, selector: \"kendo-chart-navigator-category-axis-select\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisSelectComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-select',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The title configuration of the navigator category axis.\n */\nclass NavigatorCategoryAxisTitleComponent extends CategoryAxisTitleComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorCategoryAxisTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorCategoryAxisTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorCategoryAxisTitleComponent, selector: \"kendo-chart-navigator-category-axis-title\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorCategoryAxisTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-category-axis-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The default options of the navigator hint\n * ([see example]({% slug overview_stockchart_charts %}#toc-navigator)).\n */\nclass NavigatorHintComponent extends SettingsComponent {\n constructor(configurationService) {\n super('hint', configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorHintComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorHintComponent, selector: \"kendo-chart-navigator-hint\", inputs: { content: \"content\", format: \"format\", visible: \"visible\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorHintComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-hint',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { content: [{\n type: Input\n }], format: [{\n type: Input\n }], visible: [{\n type: Input\n }] } });\n\n/**\n * The configuration component of the navigator pane\n * ([see example]({% slug overview_stockchart_charts %}#toc-navigator)).\n */\nclass NavigatorPaneComponent extends PaneComponent {\n constructor(configurationService) {\n super(configurationService, null);\n this.configurationService = configurationService;\n }\n}\nNavigatorPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorPaneComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorPaneComponent, selector: \"kendo-chart-navigator-pane\", providers: [{ provide: PREFIX, useValue: 'navigator.pane' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorPaneComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: PREFIX, useValue: 'navigator.pane' }, { provide: ConfigurationService, useClass: PrefixConfigurationService }],\n selector: 'kendo-chart-navigator-pane',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The title configuration of the StockChart navigator pane.\n */\nclass NavigatorPaneTitleComponent extends PanesTitleComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorPaneTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorPaneTitleComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorPaneTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorPaneTitleComponent, selector: \"kendo-chart-navigator-pane-title\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorPaneTitleComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-pane-title',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * Specifies the initially selected range.\n * If no range is specified, the full range of values is rendered.\n */\nclass NavigatorSelectComponent extends SettingsComponent {\n constructor(configurationService) {\n super('select', configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSelectComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSelectComponent, selector: \"kendo-chart-navigator-select\", inputs: { from: \"from\", to: \"to\", mousewheel: \"mousewheel\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSelectComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-select',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; }, propDecorators: { from: [{\n type: Input\n }], to: [{\n type: Input\n }], mousewheel: [{\n type: Input\n }] } });\n\n/**\n * The configuration component of a navigator series item\n * ([see example]({% slug navigator_stockchart_charts %})).\n */\nclass NavigatorSeriesItemComponent extends SeriesItemComponent {\n constructor(configurationService, collectionService) {\n super(configurationService, collectionService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n }\n}\nNavigatorSeriesItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesItemComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesItemComponent, selector: \"kendo-chart-navigator-series-item\", providers: [ConfigurationService], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesItemComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ConfigurationService],\n selector: 'kendo-chart-navigator-series-item',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }]; } });\n\n/**\n * A collection of one or more navigator series items.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public data: any[] = [];\n *\n * constructor() {\n * for (let idx = 0; idx < 100; idx++) {\n * this.data.push({\n * date: new Date(2017, 0, idx),\n * value: Math.random() * 100\n * });\n * }\n * }\n * }\n *\n * ```\n */\nclass NavigatorSeriesComponent extends SeriesComponent {\n constructor(configurationService, collectionService, tooltipTemplateService) {\n super(configurationService, collectionService, tooltipTemplateService);\n this.configurationService = configurationService;\n this.collectionService = collectionService;\n this.tooltipTemplateService = tooltipTemplateService;\n }\n readTooltipTemplates() {\n }\n}\nNavigatorSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesComponent, deps: [{ token: ConfigurationService }, { token: CollectionService }, { token: TooltipTemplateService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesComponent, selector: \"kendo-chart-navigator-series\", providers: [CollectionService], queries: [{ propertyName: \"children\", predicate: NavigatorSeriesItemComponent }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionService],\n selector: 'kendo-chart-navigator-series',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: CollectionService }, { type: TooltipTemplateService }]; }, propDecorators: { children: [{\n type: ContentChildren,\n args: [NavigatorSeriesItemComponent]\n }] } });\n\n/**\n * The error bars of the StockChart navigator series.\n */\nclass NavigatorSeriesErrorBarsComponent extends SeriesErrorBarsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesErrorBarsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesErrorBarsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesErrorBarsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesErrorBarsComponent, selector: \"kendo-chart-navigator-series-item-error-bars\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesErrorBarsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-error-bars',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The extremes configuration of the StockChart navigator series. Applies to extreme outliers.\n */\nclass NavigatorSeriesExtremesComponent extends SeriesExtremesComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesExtremesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesExtremesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesExtremesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesExtremesComponent, selector: \"kendo-chart-navigator-series-item-extremes\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesExtremesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-extremes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The configuration options of the StockChart series highlight.\n */\nclass NavigatorSeriesHighlightComponent extends SeriesHighlightComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesHighlightComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesHighlightComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesHighlightComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesHighlightComponent, selector: \"kendo-chart-navigator-series-item-highlight\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesHighlightComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-highlight',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The label configuration of the StockChart navigator series.\n */\nclass NavigatorSeriesLabelsComponent extends SeriesLabelsComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nNavigatorSeriesLabelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesLabelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesLabelsComponent, selector: \"kendo-chart-navigator-series-item-labels\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-labels',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The `from` label configuration of the StockChart navigator series.\n */\nclass NavigatorSeriesLabelsFromComponent extends SeriesLabelsFromComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nNavigatorSeriesLabelsFromComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsFromComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesLabelsFromComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesLabelsFromComponent, selector: \"kendo-chart-navigator-series-item-labels-from\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsFromComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-labels-from',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The `to` label configuration of the StockChart navigator series.\n */\nclass NavigatorSeriesLabelsToComponent extends SeriesLabelsToComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n this.markAsVisible();\n }\n}\nNavigatorSeriesLabelsToComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsToComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesLabelsToComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesLabelsToComponent, selector: \"kendo-chart-navigator-series-item-labels-to\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesLabelsToComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-labels-to',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The marker configuration of the StockChart navigator series.\n */\nclass NavigatorSeriesMarkersComponent extends SeriesMarkersComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesMarkersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesMarkersComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesMarkersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesMarkersComponent, selector: \"kendo-chart-navigator-series-item-markers\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesMarkersComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-markers',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The notes configuration of the StockChart navigator series.\n */\nclass NavigatorSeriesNotesComponent extends SeriesNotesComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesNotesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesNotesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesNotesComponent, selector: \"kendo-chart-navigator-series-item-notes\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-notes',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The icon of the notes.\n */\nclass NavigatorSeriesNotesIconComponent extends SeriesNotesIconComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesNotesIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesIconComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesNotesIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesNotesIconComponent, selector: \"kendo-chart-navigator-series-item-notes-icon\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesIconComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-notes-icon',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The label of the notes.\n */\nclass NavigatorSeriesNotesLabelComponent extends SeriesNotesLabelComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesNotesLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesLabelComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesNotesLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesNotesLabelComponent, selector: \"kendo-chart-navigator-series-item-notes-label\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesNotesLabelComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-notes-label',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The outliers configuration of the StockChart navigator series. Applies to mild outliers.\n */\nclass NavigatorSeriesOutliersComponent extends SeriesOutliersComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesOutliersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesOutliersComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesOutliersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesOutliersComponent, selector: \"kendo-chart-navigator-series-item-outliers\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesOutliersComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-outliers',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * The tooltip configuration of the StockChart navigator series.\n * The StockChart navigator series tooltip is displayed when the `navigator.series.tooltip.visible` option is set to `true`.\n */\nclass NavigatorSeriesTooltipComponent extends SeriesTooltipComponent {\n constructor(configurationService) {\n super(configurationService);\n this.configurationService = configurationService;\n }\n}\nNavigatorSeriesTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesTooltipComponent, deps: [{ token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Component });\nNavigatorSeriesTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigatorSeriesTooltipComponent, selector: \"kendo-chart-navigator-series-item-tooltip\", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigatorSeriesTooltipComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-chart-navigator-series-item-tooltip',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }]; } });\n\n/**\n * @hidden\n */\nconst STOCK_CHART_DIRECTIVES = [\n StockChartComponent,\n NavigatorComponent,\n NavigatorCategoryAxisComponent,\n NavigatorCategoryAxisCrosshairComponent,\n NavigatorCategoryAxisCrosshairTooltipComponent,\n NavigatorCategoryAxisLabelsComponent,\n NavigatorCategoryAxisNotesComponent,\n NavigatorCategoryAxisNotesIconComponent,\n NavigatorCategoryAxisNotesLabelComponent,\n NavigatorCategoryAxisSelectComponent,\n NavigatorCategoryAxisTitleComponent,\n NavigatorHintComponent,\n NavigatorPaneComponent,\n NavigatorPaneTitleComponent,\n NavigatorSelectComponent,\n NavigatorSeriesComponent,\n NavigatorSeriesItemComponent,\n NavigatorSeriesErrorBarsComponent,\n NavigatorSeriesExtremesComponent,\n NavigatorSeriesHighlightComponent,\n NavigatorSeriesLabelsComponent,\n NavigatorSeriesLabelsFromComponent,\n NavigatorSeriesLabelsToComponent,\n NavigatorSeriesMarkersComponent,\n NavigatorSeriesNotesComponent,\n NavigatorSeriesNotesIconComponent,\n NavigatorSeriesNotesLabelComponent,\n NavigatorSeriesOutliersComponent,\n NavigatorSeriesTooltipComponent\n];\n\n/**\n * The root Chart component.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public data: any[] = [\n * 936, 968, 1025, 999, 998, 1014, 1017, 1010, 1010, 1007,\n * 1004, 988, 990, 988, 987, 995, 946, 954, 991, 984,\n * 974, 956, 986, 936, 955, 1021, 1013, 1005, 958, 953,\n * 952, 940, 937, 980, 966, 965, 928, 916, 910, 980\n * ];\n * }\n *\n * ```\n */\nclass SparklineComponent extends ChartComponent {\n constructor(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer) {\n super(configurationService, themeService, element, intl, localizationService, ngZone, instanceEventService, changeDetector, renderer);\n this.configurationService = configurationService;\n this.themeService = themeService;\n this.element = element;\n this.intl = intl;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.instanceEventService = instanceEventService;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n /**\n * @hidden\n */\n this.tooltipWrapperClass = 'k-sparkline-tooltip-wrapper';\n /**\n * @hidden\n */\n this.tooltipContentClasses = {\n 'k-sparkline-tooltip': true\n };\n this.hostClasses = ['k-sparkline', 'k-widget'];\n validatePackage(packageMetadata);\n }\n createInstance(element, observer) {\n this.instance = new Sparkline(element, Sparkline.normalizeOptions(this.options), this.theme, {\n intlService: this.intl,\n observer: observer,\n rtl: this.rtl,\n sender: this\n });\n }\n updateOptions() {\n this.instance.setOptions(Sparkline.normalizeOptions(this.options));\n }\n}\nSparklineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineComponent, deps: [{ token: ConfigurationService }, { token: ThemeService }, { token: i0.ElementRef }, { token: i3.IntlService }, { token: i4.LocalizationService }, { token: i0.NgZone }, { token: InstanceEventService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nSparklineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SparklineComponent, selector: \"kendo-sparkline\", inputs: { type: \"type\", data: \"data\" }, providers: [\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ], exportAs: [\"kendoSparkline\"], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: CrosshairTooltipsContainerComponent, selector: \"kendo-chart-crosshair-tooltips-container\", inputs: [\"popupSettings\"] }, { type: TooltipPopupComponent, selector: \"kendo-chart-tooltip-popup\", inputs: [\"animate\", \"classNames\", \"popupSettings\", \"wrapperClass\"], outputs: [\"leave\"] }, { type: i8.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendoSparkline',\n providers: [\n ConfigurationService,\n TooltipTemplateService,\n InstanceEventService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chart'\n }\n ],\n selector: 'kendo-sparkline',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: ThemeService }, { type: i0.ElementRef }, { type: i3.IntlService }, { type: i4.LocalizationService }, { type: i0.NgZone }, { type: InstanceEventService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { type: [{\n type: Input\n }], data: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst SPARKLINE_DIRECTIVES = [\n SparklineComponent\n];\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes the Chart component and directives.\n *\n * Imports the ChartModule into your application\n * [root module]({{ site.data.url.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the Chart component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { ChartModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, ChartModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass ChartModule {\n}\nChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartModule, declarations: [ChartComponent, TooltipPopupComponent, SeriesTooltipTemplateDirective, SharedTooltipTemplateDirective, CrosshairTooltipsContainerComponent, CrosshairTooltipComponent, DonutCenterTemplateDirective, AxisDefaultsComponent, AxisDefaultsCrosshairComponent, AxisDefaultsCrosshairTooltipComponent, AxisDefaultsLabelsComponent, AxisDefaultsTitleComponent, CategoryAxisComponent, CategoryAxisCrosshairComponent, CategoryAxisCrosshairTooltipComponent, CategoryAxisItemComponent, CategoryAxisLabelsComponent, CategoryAxisRangeLabelsComponent, CategoryAxisNotesComponent, CategoryAxisNotesIconComponent, CategoryAxisNotesLabelComponent, CategoryAxisSelectComponent, CategoryAxisTitleComponent, ChartAreaComponent, LegendComponent, LegendInactiveItemsComponent, LegendItemComponent, PaneComponent, PaneDefaultsComponent, PaneDefaultsTitleComponent, PanesComponent, PanesTitleComponent, PlotAreaComponent, SeriesComponent, SeriesDefaultsComponent, SeriesDefaultsLabelsComponent, SeriesDefaultsLabelsFromComponent, SeriesDefaultsLabelsToComponent, SeriesDefaultsNotesComponent, SeriesDefaultsNotesIconComponent, SeriesDefaultsNotesLabelComponent, SeriesDefaultsTooltipComponent, SeriesErrorBarsComponent, SeriesExtremesComponent, SeriesHighlightComponent, SeriesItemComponent, SeriesLabelsComponent, SeriesLabelsFromComponent, SeriesLabelsToComponent, SeriesMarkersComponent, SeriesNotesComponent, SeriesNotesIconComponent, SeriesNotesLabelComponent, SeriesOutliersComponent, SeriesTooltipComponent, TitleComponent, TooltipComponent, ValueAxisComponent, ValueAxisCrosshairComponent, ValueAxisCrosshairTooltipComponent, ValueAxisItemComponent, ValueAxisLabelsComponent, ValueAxisNotesComponent, ValueAxisNotesIconComponent, ValueAxisNotesLabelComponent, ValueAxisTitleComponent, XAxisComponent, XAxisCrosshairComponent, XAxisCrosshairTooltipComponent, XAxisItemComponent, XAxisLabelsComponent, XAxisNotesComponent, XAxisNotesIconComponent, XAxisNotesLabelComponent, XAxisTitleComponent, YAxisComponent, YAxisCrosshairComponent, YAxisCrosshairTooltipComponent, YAxisItemComponent, YAxisLabelsComponent, YAxisNotesComponent, YAxisNotesIconComponent, YAxisNotesLabelComponent, YAxisTitleComponent, ZoomableComponent], imports: [CommonModule, PopupModule, ResizeSensorModule], exports: [ChartComponent, TooltipPopupComponent, SeriesTooltipTemplateDirective, SharedTooltipTemplateDirective, CrosshairTooltipsContainerComponent, CrosshairTooltipComponent, DonutCenterTemplateDirective, AxisDefaultsComponent, AxisDefaultsCrosshairComponent, AxisDefaultsCrosshairTooltipComponent, AxisDefaultsLabelsComponent, AxisDefaultsTitleComponent, CategoryAxisComponent, CategoryAxisCrosshairComponent, CategoryAxisCrosshairTooltipComponent, CategoryAxisItemComponent, CategoryAxisLabelsComponent, CategoryAxisRangeLabelsComponent, CategoryAxisNotesComponent, CategoryAxisNotesIconComponent, CategoryAxisNotesLabelComponent, CategoryAxisSelectComponent, CategoryAxisTitleComponent, ChartAreaComponent, LegendComponent, LegendInactiveItemsComponent, LegendItemComponent, PaneComponent, PaneDefaultsComponent, PaneDefaultsTitleComponent, PanesComponent, PanesTitleComponent, PlotAreaComponent, SeriesComponent, SeriesDefaultsComponent, SeriesDefaultsLabelsComponent, SeriesDefaultsLabelsFromComponent, SeriesDefaultsLabelsToComponent, SeriesDefaultsNotesComponent, SeriesDefaultsNotesIconComponent, SeriesDefaultsNotesLabelComponent, SeriesDefaultsTooltipComponent, SeriesErrorBarsComponent, SeriesExtremesComponent, SeriesHighlightComponent, SeriesItemComponent, SeriesLabelsComponent, SeriesLabelsFromComponent, SeriesLabelsToComponent, SeriesMarkersComponent, SeriesNotesComponent, SeriesNotesIconComponent, SeriesNotesLabelComponent, SeriesOutliersComponent, SeriesTooltipComponent, TitleComponent, TooltipComponent, ValueAxisComponent, ValueAxisCrosshairComponent, ValueAxisCrosshairTooltipComponent, ValueAxisItemComponent, ValueAxisLabelsComponent, ValueAxisNotesComponent, ValueAxisNotesIconComponent, ValueAxisNotesLabelComponent, ValueAxisTitleComponent, XAxisComponent, XAxisCrosshairComponent, XAxisCrosshairTooltipComponent, XAxisItemComponent, XAxisLabelsComponent, XAxisNotesComponent, XAxisNotesIconComponent, XAxisNotesLabelComponent, XAxisTitleComponent, YAxisComponent, YAxisCrosshairComponent, YAxisCrosshairTooltipComponent, YAxisItemComponent, YAxisLabelsComponent, YAxisNotesComponent, YAxisNotesIconComponent, YAxisNotesLabelComponent, YAxisTitleComponent, ZoomableComponent] });\nChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartModule, providers: [\n ThemeService\n ], imports: [[CommonModule, PopupModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CHART_DIRECTIVES],\n exports: [CHART_DIRECTIVES],\n imports: [CommonModule, PopupModule, ResizeSensorModule],\n providers: [\n ThemeService\n ]\n }]\n }] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes the StockChart component and directives.\n *\n * Imports the StockChartModule into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the StockChart component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { StockChartModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, StockChartModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass StockChartModule {\n}\nStockChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nStockChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartModule, declarations: [StockChartComponent, NavigatorComponent, NavigatorCategoryAxisComponent, NavigatorCategoryAxisCrosshairComponent, NavigatorCategoryAxisCrosshairTooltipComponent, NavigatorCategoryAxisLabelsComponent, NavigatorCategoryAxisNotesComponent, NavigatorCategoryAxisNotesIconComponent, NavigatorCategoryAxisNotesLabelComponent, NavigatorCategoryAxisSelectComponent, NavigatorCategoryAxisTitleComponent, NavigatorHintComponent, NavigatorPaneComponent, NavigatorPaneTitleComponent, NavigatorSelectComponent, NavigatorSeriesComponent, NavigatorSeriesItemComponent, NavigatorSeriesErrorBarsComponent, NavigatorSeriesExtremesComponent, NavigatorSeriesHighlightComponent, NavigatorSeriesLabelsComponent, NavigatorSeriesLabelsFromComponent, NavigatorSeriesLabelsToComponent, NavigatorSeriesMarkersComponent, NavigatorSeriesNotesComponent, NavigatorSeriesNotesIconComponent, NavigatorSeriesNotesLabelComponent, NavigatorSeriesOutliersComponent, NavigatorSeriesTooltipComponent], imports: [ChartModule, CommonModule, PopupModule, ResizeSensorModule], exports: [StockChartComponent, NavigatorComponent, NavigatorCategoryAxisComponent, NavigatorCategoryAxisCrosshairComponent, NavigatorCategoryAxisCrosshairTooltipComponent, NavigatorCategoryAxisLabelsComponent, NavigatorCategoryAxisNotesComponent, NavigatorCategoryAxisNotesIconComponent, NavigatorCategoryAxisNotesLabelComponent, NavigatorCategoryAxisSelectComponent, NavigatorCategoryAxisTitleComponent, NavigatorHintComponent, NavigatorPaneComponent, NavigatorPaneTitleComponent, NavigatorSelectComponent, NavigatorSeriesComponent, NavigatorSeriesItemComponent, NavigatorSeriesErrorBarsComponent, NavigatorSeriesExtremesComponent, NavigatorSeriesHighlightComponent, NavigatorSeriesLabelsComponent, NavigatorSeriesLabelsFromComponent, NavigatorSeriesLabelsToComponent, NavigatorSeriesMarkersComponent, NavigatorSeriesNotesComponent, NavigatorSeriesNotesIconComponent, NavigatorSeriesNotesLabelComponent, NavigatorSeriesOutliersComponent, NavigatorSeriesTooltipComponent, ChartModule] });\nStockChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartModule, imports: [[ChartModule, CommonModule, PopupModule, ResizeSensorModule], ChartModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: StockChartModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [STOCK_CHART_DIRECTIVES],\n exports: [STOCK_CHART_DIRECTIVES, ChartModule],\n imports: [ChartModule, CommonModule, PopupModule, ResizeSensorModule]\n }]\n }] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes the Sparkline component and directives.\n *\n * Imports the SparklineModule into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the Sparkline component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { SparklineModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, SparklineModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass SparklineModule {\n}\nSparklineModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSparklineModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineModule, declarations: [SparklineComponent], imports: [ChartModule, CommonModule, PopupModule, ResizeSensorModule], exports: [SparklineComponent, ChartModule] });\nSparklineModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineModule, imports: [[ChartModule, CommonModule, PopupModule, ResizeSensorModule], ChartModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SparklineModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SPARKLINE_DIRECTIVES],\n exports: [SPARKLINE_DIRECTIVES, ChartModule],\n imports: [ChartModule, CommonModule, PopupModule, ResizeSensorModule]\n }]\n }] });\n\n/**\n * A [module]({{ site.data.urls.angular['ngmoduleapi'] }}) that includes all Chart components and directives.\n *\n * Imports the ChartsModule into your application\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity) or any other sub-module\n * that will use the Charts components.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { ChartsModule } from '@progress/kendo-angular-charts';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, ChartsModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass ChartsModule {\n}\nChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartsModule, exports: [ChartModule, SparklineModule, StockChartModule] });\nChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartsModule, imports: [ChartModule, SparklineModule, StockChartModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ChartsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [ChartModule, SparklineModule, StockChartModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AxisDefaultsComponent, AxisDefaultsCrosshairComponent, AxisDefaultsCrosshairTooltipComponent, AxisDefaultsLabelsComponent, AxisDefaultsTitleComponent, AxisLabelClickEvent, CHART_DIRECTIVES, CategoryAxisComponent, CategoryAxisCrosshairComponent, CategoryAxisCrosshairTooltipComponent, CategoryAxisItemComponent, CategoryAxisLabelsComponent, CategoryAxisNotesComponent, CategoryAxisNotesIconComponent, CategoryAxisNotesLabelComponent, CategoryAxisRangeLabelsComponent, CategoryAxisSelectComponent, CategoryAxisTitleComponent, ChartAreaComponent, ChartComponent, ChartModule, ChartsModule, CrosshairTooltipComponent, CrosshairTooltipsContainerComponent, DonutCenterTemplateDirective, DragEndEvent, DragEvent, DragStartEvent, LegendComponent, LegendInactiveItemsComponent, LegendItemClickEvent, LegendItemComponent, LegendItemHoverEvent, LegendItemLeaveEvent, NavigatorCategoryAxisComponent, NavigatorCategoryAxisCrosshairComponent, NavigatorCategoryAxisCrosshairTooltipComponent, NavigatorCategoryAxisLabelsComponent, NavigatorCategoryAxisNotesComponent, NavigatorCategoryAxisNotesIconComponent, NavigatorCategoryAxisNotesLabelComponent, NavigatorCategoryAxisSelectComponent, NavigatorCategoryAxisTitleComponent, NavigatorComponent, NavigatorFilterEvent, NavigatorHintComponent, NavigatorPaneComponent, NavigatorPaneTitleComponent, NavigatorSelectComponent, NavigatorSeriesComponent, NavigatorSeriesErrorBarsComponent, NavigatorSeriesExtremesComponent, NavigatorSeriesHighlightComponent, NavigatorSeriesItemComponent, NavigatorSeriesLabelsComponent, NavigatorSeriesLabelsFromComponent, NavigatorSeriesLabelsToComponent, NavigatorSeriesMarkersComponent, NavigatorSeriesNotesComponent, NavigatorSeriesNotesIconComponent, NavigatorSeriesNotesLabelComponent, NavigatorSeriesOutliersComponent, NavigatorSeriesTooltipComponent, NoteClickEvent, NoteHoverEvent, PaneComponent, PaneDefaultsComponent, PaneDefaultsTitleComponent, PaneRenderEvent, PanesComponent, PanesTitleComponent, PlotAreaClickEvent, PlotAreaComponent, PlotAreaHoverEvent, RenderEvent, SPARKLINE_DIRECTIVES, STOCK_CHART_DIRECTIVES, SelectEndEvent, SelectEvent, SelectStartEvent, SeriesClickEvent, SeriesComponent, SeriesDefaultsComponent, SeriesDefaultsLabelsComponent, SeriesDefaultsLabelsFromComponent, SeriesDefaultsLabelsToComponent, SeriesDefaultsNotesComponent, SeriesDefaultsNotesIconComponent, SeriesDefaultsNotesLabelComponent, SeriesDefaultsTooltipComponent, SeriesErrorBarsComponent, SeriesExtremesComponent, SeriesHighlightComponent, SeriesHoverEvent, SeriesItemComponent, SeriesLabelsComponent, SeriesLabelsFromComponent, SeriesLabelsToComponent, SeriesMarkersComponent, SeriesNotesComponent, SeriesNotesIconComponent, SeriesNotesLabelComponent, SeriesOutliersComponent, SeriesTooltipComponent, SeriesTooltipTemplateDirective, SharedTooltipTemplateDirective, SparklineComponent, SparklineModule, StockChartComponent, StockChartModule, TitleComponent, TooltipComponent, TooltipPopupComponent, ValueAxisComponent, ValueAxisCrosshairComponent, ValueAxisCrosshairTooltipComponent, ValueAxisItemComponent, ValueAxisLabelsComponent, ValueAxisNotesComponent, ValueAxisNotesIconComponent, ValueAxisNotesLabelComponent, ValueAxisTitleComponent, WeekStartDay, XAxisComponent, XAxisCrosshairComponent, XAxisCrosshairTooltipComponent, XAxisItemComponent, XAxisLabelsComponent, XAxisNotesComponent, XAxisNotesIconComponent, XAxisNotesLabelComponent, XAxisTitleComponent, YAxisComponent, YAxisCrosshairComponent, YAxisCrosshairTooltipComponent, YAxisItemComponent, YAxisLabelsComponent, YAxisNotesComponent, YAxisNotesIconComponent, YAxisNotesLabelComponent, YAxisTitleComponent, ZoomEndEvent, ZoomEvent, ZoomStartEvent, ZoomableComponent };\n\n","const proxy = (a, b) => (e) => b(a(e));\n\nconst bind = (el, event, callback) =>\n el.addEventListener && el.addEventListener(event, callback);\n\nconst unbind = (el, event, callback) =>\n el && el.removeEventListener && el.removeEventListener(event, callback);\n\nconst noop = () => { /* empty */ };\n\nconst preventDefault = e => e.preventDefault();\n\nconst touchRegExp = /touch/;\n\n// 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\nconst IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport class Draggable {\n static supportPointerEvent() {\n return (typeof window !== 'undefined') && window.PointerEvent;\n }\n\n get document() {\n return this._element\n ? this._element.ownerDocument\n : document;\n }\n\n constructor({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = (e) => {\n if (e.touches.length === 1) {\n this._pressHandler(e);\n }\n };\n\n this._touchmove = (e) => {\n if (e.touches.length === 1) {\n this._dragHandler(e);\n }\n };\n\n this._touchend = (e) => {\n // the last finger has been lifted, and the user is not doing gesture.\n // there might be a better way to handle this.\n if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this._releaseHandler(e);\n this._ignoreMouse = true;\n setTimeout(this._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = () => {\n this._ignoreMouse = false;\n };\n\n this._mousedown = (e) => {\n const { which } = e;\n\n if ((which && which > 1) || this._ignoreMouse) {\n return;\n }\n\n bind(this.document, \"mousemove\", this._mousemove);\n bind(this.document, \"mouseup\", this._mouseup);\n this._pressHandler(e);\n };\n\n this._mousemove = (e) => {\n this._dragHandler(e);\n };\n\n this._mouseup = (e) => {\n unbind(this.document, \"mousemove\", this._mousemove);\n unbind(this.document, \"mouseup\", this._mouseup);\n this._releaseHandler(e);\n };\n\n this._pointerdown = (e) => {\n if (e.isPrimary && e.button === 0) {\n bind(this.document, \"pointermove\", this._pointermove);\n bind(this.document, \"pointerup\", this._pointerup);\n bind(this.document, \"pointercancel\", this._pointerup);\n bind(this.document, \"contextmenu\", preventDefault);\n\n this._pressHandler(e);\n }\n };\n\n this._pointermove = (e) => {\n if (e.isPrimary) {\n this._dragHandler(e);\n }\n };\n\n this._pointerup = (e) => {\n if (e.isPrimary) {\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"pointercancel\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n\n this._releaseHandler(e);\n }\n };\n }\n\n bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n this._bindToCurrent();\n }\n\n _bindToCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n }\n\n _unbindFromCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n unbind(this.document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n }\n\n _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n }\n\n update({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._mouseOnly = mouseOnly;\n }\n\n destroy() {\n this._unbindFromCurrent();\n this._element = null;\n }\n}\n\n// Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\nDraggable.default = Draggable;\n\n// Rollup won't output exports['default'] otherwise\nexport default Draggable;\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Input, Output, NgModule, Injectable, Component } from '@angular/core';\nimport Draggable from '@telerik/kendo-draggable';\nimport { CommonModule } from '@angular/common';\nimport { auditTime } from 'rxjs/operators';\nimport { merge, fromEvent, from } from 'rxjs';\n\n/**\n * @hidden\n */\nconst isDocumentAvailable = () => typeof document !== 'undefined';\n\n/**\n * @hidden\n */\nconst isChanged = (propertyName, changes, skipFirstChange = true) => (typeof changes[propertyName] !== 'undefined' &&\n (!changes[propertyName].isFirstChange() || !skipFirstChange) &&\n changes[propertyName].previousValue !== changes[propertyName].currentValue);\n\n/**\n * @hidden\n */\nconst anyChanged = (propertyNames, changes, skipFirstChange = true) => propertyNames.some(name => isChanged(name, changes, skipFirstChange));\n\n/**\n * @hidden\n */\nconst hasObservers = (emitter) => emitter && emitter.observers.length > 0;\n\n/**\n * @hidden\n */\nconst guid = () => {\n let id = \"\";\n for (let i = 0; i < 32; i++) {\n const random = Math.random() * 16 | 0; // eslint-disable-line no-bitwise\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n // eslint-disable-next-line no-bitwise\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\n\nclass DraggableDirective {\n constructor(element, ngZone) {\n this.element = element;\n this.ngZone = ngZone;\n this.enableDrag = true;\n this.kendoPress = new EventEmitter();\n this.kendoDrag = new EventEmitter();\n this.kendoRelease = new EventEmitter();\n }\n ngOnInit() {\n this.toggleDraggable();\n }\n ngOnChanges(changes) {\n if (isChanged('enableDrag', changes)) {\n this.toggleDraggable();\n }\n }\n ngOnDestroy() {\n this.destroyDraggable();\n }\n toggleDraggable() {\n if (isDocumentAvailable()) {\n this.destroyDraggable();\n if (this.enableDrag) {\n this.draggable = new Draggable({\n drag: (e) => this.kendoDrag.next(e),\n press: (e) => this.kendoPress.next(e),\n release: (e) => this.kendoRelease.next(e)\n });\n this.ngZone.runOutsideAngular(() => this.draggable.bindTo(this.element.nativeElement));\n }\n }\n }\n destroyDraggable() {\n if (this.draggable) {\n this.draggable.destroy();\n this.draggable = null;\n }\n }\n}\nDraggableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nDraggableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DraggableDirective, selector: \"[kendoDraggable]\", inputs: { enableDrag: \"enableDrag\" }, outputs: { kendoPress: \"kendoPress\", kendoDrag: \"kendoDrag\", kendoRelease: \"kendoRelease\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDraggable]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { enableDrag: [{\n type: Input\n }], kendoPress: [{\n type: Output\n }], kendoDrag: [{\n type: Output\n }], kendoRelease: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass DraggableModule {\n}\nDraggableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDraggableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, declarations: [DraggableDirective], imports: [CommonModule], exports: [DraggableDirective] });\nDraggableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DraggableModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DraggableDirective],\n exports: [DraggableDirective],\n imports: [CommonModule]\n }]\n }] });\n\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n\nconst contains = (parent, node, matchSelf = false) => {\n const outside = !closest(node, (child) => child === parent);\n if (outside) {\n return false;\n }\n const el = closest(node, (child) => child === node);\n return el && (matchSelf || el !== parent);\n};\n\nconst findElement = (node, predicate, matchSelf = true) => {\n if (!node) {\n return;\n }\n if (matchSelf && predicate(node)) {\n return node;\n }\n node = node.firstChild;\n while (node) {\n if (node.nodeType === 1) {\n const element = findElement(node, predicate);\n if (element) {\n return element;\n }\n }\n node = node.nextSibling;\n }\n};\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst isFocusable = (element) => {\n if (!element.tagName) {\n return false;\n }\n const tagName = element.tagName.toLowerCase();\n const hasTabIndex = Boolean(element.getAttribute('tabIndex'));\n const focusable = !element.disabled && focusableRegex.test(tagName);\n return focusable || hasTabIndex;\n};\n\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n const hasSize = rect.width > 0 && rect.height > 0;\n const hasPosition = rect.x !== 0 && rect.y !== 0;\n // Elements can have zero size due to styling, but they will still count as visible.\n // For example, the selection checkbox has no size, but is made visible through styling.\n return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n\nconst isFocusableWithTabKey = (element, checkVisibility = true) => {\n if (!isFocusable(element)) {\n return false;\n }\n const tabIndex = element.getAttribute('tabIndex');\n const visible = !checkVisibility || isVisible(element);\n return visible && tabIndex !== '-1';\n};\n\nconst findFocusableChild = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility), false);\n};\n\nconst findFocusable = (element, checkVisibility = true) => {\n return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility));\n};\n\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n\nconst matchesClasses = (classNames) => (element) => hasClasses(element, classNames);\n\nconst NODE_NAME_PREDICATES = {};\nconst matchesNodeName = (nodeName) => {\n if (!NODE_NAME_PREDICATES[nodeName]) {\n NODE_NAME_PREDICATES[nodeName] = (element) => String(element.nodeName).toLowerCase() === nodeName.toLowerCase();\n }\n return NODE_NAME_PREDICATES[nodeName];\n};\n\n/**\n * Normalizes a scroll position value in RTL mode.\n */\nfunction rtlScrollPosition(position, element, initial) {\n let result = position;\n if (initial < 0) {\n result = -position;\n }\n else if (initial > 0) {\n result = element.scrollWidth - element.offsetWidth - position;\n }\n return result;\n}\n\n/**\n * @hidden\n */\nclass EventsOutsideAngularDirective {\n constructor(element, ngZone, renderer) {\n this.element = element;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.events = {};\n }\n ngOnInit() {\n if (!this.element || !this.element.nativeElement) {\n return;\n }\n const events = this.events;\n this.subscriptions = [];\n this.ngZone.runOutsideAngular(() => {\n for (let name in events) {\n if (events.hasOwnProperty(name)) {\n this.subscriptions.push(this.renderer.listen(this.element.nativeElement, name, this.scope ? events[name].bind(this.scope) : events[name]));\n }\n }\n });\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n for (let idx = 0; idx < this.subscriptions.length; idx++) {\n this.subscriptions[idx]();\n }\n this.subscriptions = null;\n }\n }\n}\nEventsOutsideAngularDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsOutsideAngularDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nEventsOutsideAngularDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: { events: [\"kendoEventsOutsideAngular\", \"events\"], scope: \"scope\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsOutsideAngularDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoEventsOutsideAngular]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { events: [{\n type: Input,\n args: ['kendoEventsOutsideAngular']\n }], scope: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass EventsModule {\n}\nEventsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nEventsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule, declarations: [EventsOutsideAngularDirective], exports: [EventsOutsideAngularDirective] });\nEventsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: EventsModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [EventsOutsideAngularDirective],\n exports: [EventsOutsideAngularDirective]\n }]\n }] });\n\nclass ResizeService {\n constructor(resizeBatchService) {\n this.resizeBatchService = resizeBatchService;\n this.resize = new EventEmitter();\n this.acceptedSize = false;\n this.state = 0 /* Initial */;\n }\n acceptSize(size = this.measure()) {\n this.lastWidth = size.width;\n this.lastHeight = size.height;\n this.acceptedSize = true;\n }\n checkChanges() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.state === 0 /* Initial */) {\n this.state = 1 /* Initializing */;\n // batch initial measure\n this.resizeBatchService.schedule(this, this.init);\n }\n }\n destroy() {\n this.resizeBatchService.cancel(this);\n }\n checkSize() {\n if (!this.parentElement) {\n return;\n }\n const { width, height } = this.measure();\n const sameSize = width === this.lastWidth && height === this.lastHeight;\n if (sameSize) {\n return;\n }\n this.lastWidth = width;\n this.lastHeight = height;\n this.acceptedSize = false;\n this.resize.emit();\n return true;\n }\n initSize() {\n const size = this.measure();\n this.lastWidth = size.width;\n this.lastHeight = size.height;\n }\n measure() {\n let width = 0;\n let height = 0;\n if (this.parentElement) {\n height = this.parentElement.offsetHeight;\n width = this.parentElement.offsetWidth;\n }\n return { height, width };\n }\n}\n\n// eslint-disable import/no-deprecated\nconst div = style => {\n const el = document.createElement('div');\n el.style.cssText = style;\n return el;\n};\nconst computedProp = (elem, prop) => getComputedStyle(elem, null).getPropertyValue(prop);\nconst WRAP_STYLE = 'position: absolute; display: block; left: 0; top: 0; right: 0; bottom: 0; z-index: -1;' +\n 'overflow: hidden; visibility: hidden;';\nconst EXPAND_CHILD_STYLE = 'position: absolute; left: 0; top: 0; transition: 0s;';\nconst SHRINK_CHILD_STYLE = EXPAND_CHILD_STYLE + 'width: 200%; height: 200%;';\nclass ResizeCompatService extends ResizeService {\n constructor(resizeBatchService, element, ngZone) {\n super(resizeBatchService);\n this.element = element;\n this.ngZone = ngZone;\n }\n checkChanges() {\n if (this.state === 2 /* Initialized */) {\n if (!this.resizeBatchService.isScheduled(this)) {\n this.resizeBatchService.schedule(this, this.checkSize);\n }\n return;\n }\n super.checkChanges();\n }\n destroy() {\n super.destroy();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.expand) {\n const element = this.element.nativeElement;\n element.removeChild(this.expand);\n element.removeChild(this.shrink);\n this.expand.removeChild(this.expandChild);\n this.expand = this.expandChild = this.shrink = this.element = null;\n }\n }\n checkSize() {\n if (super.checkSize()) {\n this.reset();\n return true;\n }\n }\n init() {\n const parentElement = this.parentElement = this.element.nativeElement.parentElement;\n if (computedProp(parentElement, 'position') === 'static') {\n parentElement.style.position = 'relative';\n }\n this.state = 2 /* Initialized */;\n this.render();\n this.reset();\n this.initSize();\n this.subscribe();\n }\n render() {\n const element = this.element.nativeElement;\n element.style.cssText = WRAP_STYLE;\n element.setAttribute('dir', 'ltr');\n this.expand = div(WRAP_STYLE);\n this.expandChild = div(EXPAND_CHILD_STYLE);\n this.expand.appendChild(this.expandChild);\n element.appendChild(this.expand);\n this.shrink = div(WRAP_STYLE);\n const shrinkChild = div(SHRINK_CHILD_STYLE);\n this.shrink.appendChild(shrinkChild);\n element.appendChild(this.shrink);\n }\n reset() {\n const expandChild = this.expandChild;\n expandChild.style.width = 100000 + 'px';\n expandChild.style.height = 100000 + 'px';\n const expand = this.expand;\n expand.scrollLeft = 100000;\n expand.scrollTop = 100000;\n const shrink = this.shrink;\n shrink.scrollLeft = 100000;\n shrink.scrollTop = 100000;\n }\n subscribe() {\n this.ngZone.runOutsideAngular(() => {\n this.subscription = merge(fromEvent(this.shrink, 'scroll'), fromEvent(this.expand, 'scroll'))\n .subscribe(() => {\n this.checkSize();\n });\n });\n }\n}\n\nconst HAS_OBSERVER = typeof ResizeObserver !== 'undefined';\n/**\n * @hidden\n */\nclass ResizeObserverService extends ResizeService {\n constructor(resizeBatchService, element, ngZone) {\n super(resizeBatchService);\n this.element = element;\n this.ngZone = ngZone;\n }\n static supported() {\n return HAS_OBSERVER;\n }\n destroy() {\n super.destroy();\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n this.parentElement = null;\n }\n init() {\n this.parentElement = this.element.nativeElement.parentElement;\n this.initSize();\n this.state = 2 /* Initialized */;\n this.ngZone.runOutsideAngular(() => {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkSize();\n });\n this.resizeObserver.observe(this.parentElement);\n });\n }\n}\n\n/**\n * @hidden\n */\nclass ResizeBatchService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.scheduled = [];\n this.resolvedPromise = Promise.resolve(null);\n this.flush = this.flush.bind(this);\n }\n schedule(instance, method) {\n this.scheduled.push({ instance, method });\n if (!this.subscription) {\n this.ngZone.runOutsideAngular(() => {\n this.subscription = from(this.resolvedPromise)\n .subscribe(this.flush);\n });\n }\n }\n isScheduled(instance) {\n return Boolean(this.scheduled.find(item => item.instance === instance));\n }\n cancel(instance) {\n const scheduled = this.scheduled;\n const count = scheduled.length;\n for (let idx = 0; idx < count; idx++) {\n if (scheduled[idx].instance === instance) {\n scheduled.splice(idx, 1);\n if (!scheduled.length) {\n this.unsubscribe();\n }\n return;\n }\n }\n }\n ngOnDestroy() {\n this.unsubscribe();\n }\n unsubscribe() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = null;\n }\n }\n flush() {\n this.scheduled.forEach(item => {\n item.method.call(item.instance);\n });\n this.scheduled = [];\n this.unsubscribe();\n }\n}\nResizeBatchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeBatchService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nResizeBatchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeBatchService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeBatchService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * Emit up to 10 resize events per second by default.\n * Chosen as a compromise between responsiveness and performance.\n */\nconst DEFAULT_RATE_LIMIT = 10;\n/**\n * Resize Sensor Component\n *\n * Triggers a \"resize\" event whenever the parent DOM element size changes.\n */\nclass ResizeSensorComponent {\n constructor(resizeBatchService, element, ngZone) {\n /**\n * The maximum number of resize events to emit per second.\n *\n * Defaults to 10.\n */\n this.rateLimit = DEFAULT_RATE_LIMIT;\n /**\n * Fires when the parent DOM element has been resized.\n */\n this.resize = new EventEmitter();\n const serviceType = ResizeObserverService.supported() ? ResizeObserverService : ResizeCompatService;\n this.resizeService = new serviceType(resizeBatchService, element, ngZone);\n const throttleTime = 1000 / (this.rateLimit || DEFAULT_RATE_LIMIT);\n this.subscription = this.resizeService.resize\n .pipe(auditTime(throttleTime))\n .subscribe(() => {\n if (!this.resizeService.acceptedSize) {\n this.resize.emit();\n }\n });\n }\n ngAfterViewChecked() {\n this.resizeService.checkChanges();\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n this.resizeService.destroy();\n }\n acceptSize(size) {\n this.resizeService.acceptSize(size);\n }\n}\nResizeSensorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorComponent, deps: [{ token: ResizeBatchService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nResizeSensorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: { rateLimit: \"rateLimit\" }, outputs: { resize: \"resize\" }, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-resize-sensor',\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: ResizeBatchService }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { rateLimit: [{\n type: Input\n }], resize: [{\n type: Output\n }] } });\n\nconst COMPONENT_DIRECTIVES = [ResizeSensorComponent];\n/**\n * Resize Sensor module\n */\nclass ResizeSensorModule {\n}\nResizeSensorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nResizeSensorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, declarations: [ResizeSensorComponent], exports: [ResizeSensorComponent] });\nResizeSensorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, providers: [ResizeBatchService] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeSensorModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES],\n providers: [ResizeBatchService]\n }]\n }] });\n\nclass KendoInput {\n}\n\n/**\n * Enum with key codes.\n */\nvar Keys;\n(function (Keys) {\n Keys[Keys[\"Alt\"] = 18] = \"Alt\";\n Keys[Keys[\"ArrowDown\"] = 40] = \"ArrowDown\";\n Keys[Keys[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\n Keys[Keys[\"ArrowRight\"] = 39] = \"ArrowRight\";\n Keys[Keys[\"ArrowUp\"] = 38] = \"ArrowUp\";\n Keys[Keys[\"Backspace\"] = 8] = \"Backspace\";\n Keys[Keys[\"Control\"] = 17] = \"Control\";\n Keys[Keys[\"Delete\"] = 46] = \"Delete\";\n Keys[Keys[\"Digit0\"] = 48] = \"Digit0\";\n Keys[Keys[\"Digit1\"] = 49] = \"Digit1\";\n Keys[Keys[\"Digit2\"] = 50] = \"Digit2\";\n Keys[Keys[\"Digit3\"] = 51] = \"Digit3\";\n Keys[Keys[\"Digit4\"] = 52] = \"Digit4\";\n Keys[Keys[\"Digit5\"] = 53] = \"Digit5\";\n Keys[Keys[\"Digit6\"] = 54] = \"Digit6\";\n Keys[Keys[\"Digit7\"] = 55] = \"Digit7\";\n Keys[Keys[\"Digit8\"] = 56] = \"Digit8\";\n Keys[Keys[\"Digit9\"] = 57] = \"Digit9\";\n Keys[Keys[\"End\"] = 35] = \"End\";\n Keys[Keys[\"Enter\"] = 13] = \"Enter\";\n Keys[Keys[\"Escape\"] = 27] = \"Escape\";\n Keys[Keys[\"F1\"] = 112] = \"F1\";\n Keys[Keys[\"F2\"] = 113] = \"F2\";\n Keys[Keys[\"F10\"] = 121] = \"F10\";\n Keys[Keys[\"Home\"] = 36] = \"Home\";\n Keys[Keys[\"Insert\"] = 45] = \"Insert\";\n Keys[Keys[\"KeyA\"] = 65] = \"KeyA\";\n Keys[Keys[\"KeyB\"] = 66] = \"KeyB\";\n Keys[Keys[\"KeyC\"] = 67] = \"KeyC\";\n Keys[Keys[\"KeyD\"] = 68] = \"KeyD\";\n Keys[Keys[\"KeyE\"] = 69] = \"KeyE\";\n Keys[Keys[\"KeyF\"] = 70] = \"KeyF\";\n Keys[Keys[\"KeyG\"] = 71] = \"KeyG\";\n Keys[Keys[\"KeyH\"] = 72] = \"KeyH\";\n Keys[Keys[\"KeyI\"] = 73] = \"KeyI\";\n Keys[Keys[\"KeyJ\"] = 74] = \"KeyJ\";\n Keys[Keys[\"KeyK\"] = 75] = \"KeyK\";\n Keys[Keys[\"KeyL\"] = 76] = \"KeyL\";\n Keys[Keys[\"KeyM\"] = 77] = \"KeyM\";\n Keys[Keys[\"KeyN\"] = 78] = \"KeyN\";\n Keys[Keys[\"KeyO\"] = 79] = \"KeyO\";\n Keys[Keys[\"KeyP\"] = 80] = \"KeyP\";\n Keys[Keys[\"KeyQ\"] = 81] = \"KeyQ\";\n Keys[Keys[\"KeyR\"] = 82] = \"KeyR\";\n Keys[Keys[\"KeyS\"] = 83] = \"KeyS\";\n Keys[Keys[\"KeyT\"] = 84] = \"KeyT\";\n Keys[Keys[\"KeyU\"] = 85] = \"KeyU\";\n Keys[Keys[\"KeyV\"] = 86] = \"KeyV\";\n Keys[Keys[\"KeyW\"] = 87] = \"KeyW\";\n Keys[Keys[\"KeyX\"] = 88] = \"KeyX\";\n Keys[Keys[\"KeyY\"] = 89] = \"KeyY\";\n Keys[Keys[\"KeyZ\"] = 90] = \"KeyZ\";\n Keys[Keys[\"NumpadDecimal\"] = 110] = \"NumpadDecimal\";\n Keys[Keys[\"PageDown\"] = 34] = \"PageDown\";\n Keys[Keys[\"PageUp\"] = 33] = \"PageUp\";\n Keys[Keys[\"Shift\"] = 16] = \"Shift\";\n Keys[Keys[\"Space\"] = 32] = \"Space\";\n Keys[Keys[\"Tab\"] = 9] = \"Tab\";\n})(Keys || (Keys = {}));\n\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DraggableDirective, DraggableModule, EventsModule, EventsOutsideAngularDirective, KendoInput, Keys, PreventableEvent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorComponent, ResizeSensorModule, anyChanged, closest, closestInScope, contains, findElement, findFocusable, findFocusableChild, guid, hasClasses, hasObservers, isChanged, isDocumentAvailable, isFocusable, isFocusableWithTabKey, isVisible, matchesClasses, matchesNodeName, rtlScrollPosition };\n\n","/**\n * A function that clones the passed date. The parameter could be `null`.\n *\n * @param date - The initial date value.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * cloneDate(new Date(2016, 0, 1)); // returns new Date(2016, 0, 1);\n * cloneDate(null); // returns null\n * ```\n */\nexport const cloneDate = (date) => date ? new Date(date.getTime()) : null;\n","import { cloneDate } from './clone-date';\n/**\n * @hidden\n */\nexport const adjustDST = (date, hour) => {\n const newDate = cloneDate(date);\n if (hour === 0 && newDate.getHours() === 23) {\n newDate.setHours(newDate.getHours() + 2);\n }\n return newDate;\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\n/**\n * A function that adds and subtracts days from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of days to add and subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDays(new Date(2016, 0, 1), 5); // 2016-1-6\n * addDays(new Date(2016, 0, 1), -5); // 2015-12-26\n * ```\n */\nexport const addDays = (date, offset) => {\n const newDate = cloneDate(date);\n newDate.setDate(newDate.getDate() + offset);\n return adjustDST(newDate, date.getHours());\n};\n","import { adjustDST } from './adjust-dst';\n/**\n * A function which returns a new `Date` instance.\n *\n * @param year - The year value.\n * @param month - The month value.\n * @param day - The day value.\n * @param hours - The hours value.\n * @param minutes - The minutes value.\n * @param seconds - The seconds value.\n * @param milliseconds - milliseconds value.\n * @returns The date instance.\n *\n * @example\n * ```ts-no-run\n * createDate(2016, 0, 15); // 2016-01-15 00:00:00\n * createDate(2016, 0, 15, 22, 22, 20); // 2016-01-15 22:22:20\n * ```\n */\nexport const createDate = (year, month, day, hours = 0, minutes = 0, seconds = 0, milliseconds = 0) => {\n const date = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n if (year > -1 && year < 100) {\n date.setFullYear(date.getFullYear() - 1900);\n }\n return adjustDST(date, hours);\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the passed date with a midnight time portion.\n *\n * @param date - The initial date.\n * @returns - The date with a midnight time portion.\n *\n * @example\n * ```ts-no-run\n * getDate(new Date(2016, 0, 15, 14, 30, 30)); // 2016-01-15 00:00:00\n * ```\n */\nexport const getDate = (date) => {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n};\n","/**\n * A function that compares two dates. The comparison also includes the time portion.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value indicating whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 1)); // true\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 2)); // false\n * isEqual(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // false\n * ```\n */\nexport const isEqual = (candidate, expected) => {\n if (!candidate && !expected) {\n return true;\n }\n return candidate && expected && candidate.getTime() === expected.getTime();\n};\n","import { addDays } from './add-days';\nimport { createDate } from './create-date';\n/**\n * A function which returns the last date of the month.\n *\n * @param date - The initial date.\n * @returns - The last date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * lastDayOfMonth(new Date(2016, 0, 15)); // 2016-01-31\n * ```\n */\nexport const lastDayOfMonth = (date) => {\n const newDate = createDate(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return addDays(newDate, -1);\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\nimport { lastDayOfMonth } from './last-day-of-month';\nconst MONTHS_LENGTH = 12;\nconst normalize = (date, expectedMonth) => (date.getMonth() !== expectedMonth ? lastDayOfMonth(addMonths(date, -1)) : date //tslint:disable-line:no-use-before-declare\n);\n/**\n * A function that adds and subtracts months from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of months to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addMonths(new Date(2016, 5, 1), 5); // 2016-11-1\n * addMonths(new Date(2016, 5, 1), -5); // 2015-1-1\n * ```\n */\nexport const addMonths = (date, offset) => {\n const newDate = cloneDate(date);\n const diff = (newDate.getMonth() + offset) % MONTHS_LENGTH;\n const expectedMonth = (MONTHS_LENGTH + diff) % MONTHS_LENGTH;\n newDate.setMonth(newDate.getMonth() + offset);\n return normalize(adjustDST(newDate, date.getHours()), expectedMonth);\n};\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport const setYear = (value, year) => {\n const month = value.getMonth();\n const candidate = createDate(year, month, value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getMonth() === month ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { adjustDST } from './adjust-dst';\nimport { setYear } from './set-year';\n/**\n * A function that adds and subtracts years from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of years to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addYears(new Date(2016, 5, 1), 5); // 2011-6-1\n * addYears(new Date(2016, 5, 1), -5); // 2021-6-1\n * ```\n */\nexport const addYears = (value, offset) => {\n return adjustDST(setYear(value, value.getFullYear() + offset), value.getHours());\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts decades from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of decades to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDecades(new Date(2016, 5, 1), 5); // 2066-6-1\n * addDecades(new Date(2016, 5, 1), -5); // 1966-6-1\n * ```\n */\nexport const addDecades = (value, offset) => {\n return addYears(value, 10 * offset);\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts centuries from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of centuries to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addCenturies(new Date(2016, 5, 1), 5); // 2516-6-1\n * addCenturies(new Date(2016, 5, 1), -5); // 1516-6-1\n * ```\n */\nexport const addCenturies = (value, offset) => {\n return addYears(value, 100 * offset);\n};\n","import { setYear } from './set-year';\n/**\n * @hidden\n */\nexport const normalizeYear = (value, year) => (setYear(value, year(value.getFullYear())));\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first decade in a century.\n *\n * @param date - The start date value.\n * @returns - The first year in a century.\n *\n * @example\n * ```ts-no-run\n * firstDecadeOfCentury(new Date(2017, 0, 1)); // 2000-1-1\n * firstDecadeOfCentury(new Date(2007, 10, 22)); // 2000-11-22\n * firstDecadeOfCentury(new Date(2126, 0, 1)); // 2100-1-1\n * ```\n */\nexport const firstDecadeOfCentury = (value) => (normalizeYear(value, (y) => y - (y % 100)));\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last decade in a century.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastDecadeOfCentury(new Date(2017, 0, 1)); // 2090-1-1\n * lastDecadeOfCentury(new Date(2007, 10, 22)); // 2090-11-22\n * lastDecadeOfCentury(new Date(2126, 0, 1)); // 2190-1-1\n * ```\n */\nexport const lastDecadeOfCentury = (value) => (normalizeYear(value, (y) => y - (y % 100) + 90));\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first year in a decade.\n *\n * @param date - The start date value.\n * @returns - The first year in a decade.\n *\n * @example\n * ```ts-no-run\n * firstYearOfDecade(new Date(2017, 0, 1)); // 2010-1-1\n * firstYearOfDecade(new Date(2007, 10, 22)); // 2000-11-22\n * firstYearOfDecade(new Date(2026, 0, 1)); // 2020-1-1\n * ```\n */\nexport const firstYearOfDecade = (value) => (normalizeYear(value, (y) => y - (y % 10)));\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last year in a decade.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastYearOfDecade(new Date(2017, 0, 1)); // 2019-1-1\n * lastYearOfDecade(new Date(2007, 10, 22)); // 2009-11-22\n * lastYearOfDecade(new Date(2026, 0, 1)); // 2029-1-1\n * ```\n */\nexport const lastYearOfDecade = (value) => (normalizeYear(value, (y) => y - (y % 10) + 9));\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport const setMonth = (value, month) => {\n const day = value.getDate();\n const candidate = createDate(value.getFullYear(), month, day, value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getDate() === day ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the last month in a year.\n *\n * @param date - The start date value.\n * @returns - The last month in a year.\n *\n * @example\n * ```ts-no-run\n * lastMonthOfYear(new Date(2017, 5, 3)); // 2017-12-3\n * lastMonthOfYear(new Date(2017, 11, 3)); // 2017-12-3\n * ```\n */\nexport const lastMonthOfYear = (value) => setMonth(value, 11);\n","import { firstDecadeOfCentury } from './first-decade-of-century';\n/**\n * A function that calculates duration in centuries between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInCenturies(new Date(2016, 0, 1), new Date(3216, 0, 1)); // 12\n * durationInCenturies(new Date(2016, 6, 1), new Date(2617, 0, 1)); // 6\n * durationInCenturies(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInCenturies = (start, end) => ((firstDecadeOfCentury(end).getFullYear() - firstDecadeOfCentury(start).getFullYear()) / 100);\n","import { firstYearOfDecade } from './first-year-of-decade';\n/**\n * A function that calculates duration in decades between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInDecades(new Date(2016, 0, 1), new Date(2136, 0, 1)); // 12\n * durationInDecades(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInDecades = (start, end) => ((firstYearOfDecade(end).getFullYear() - firstYearOfDecade(start).getFullYear()) / 10);\n","import { addDays } from './add-days';\n/**\n * A function that adds and subtracts weeks from a Date object.\n *\n * @param date - The initial date value.\n * @param offset - The number of weeks to add/subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addWeeks(new Date(2016, 5, 1), 3); // 2016-6-22\n * addWeeks(new Date(2016, 5, 1), -3); // 2015-5-11\n * ```\n */\nexport const addWeeks = (date, offset) => {\n return addDays(date, offset * 7);\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the first date of the month.\n *\n * @param date - The initial date.\n * @returns - The first date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * firstDayOfMonth(new Date(2016, 0, 15)); // 2016-01-01\n * ```\n */\nexport const firstDayOfMonth = (date) => {\n return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n","// tslint:disable:max-line-length\n/**\n * An enumeration which represents the horizontal direction. The `Forward` option moves forward. The `Backward` option moves backward.\n */\nexport var Direction;\n(function (Direction) {\n /**\n * The `Forward` value with an underlying `1` number value.\n */\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n /**\n * The `Backward` value with an underlying `-1` (minus one) number value.\n */\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n// tslint:enable:max-line-length\n","import { Direction } from \"./direction.enum\";\nimport { adjustDST } from \"./adjust-dst\";\nimport { cloneDate } from './clone-date';\n/**\n * @hidden\n *\n * A function which returns the next or previous date for a specific week day. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @param direction - The `Direction` enum specifying the calculation direction.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Forward); // 2016-01-06, Wednesday\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Backward); // 2015-12-30, Wednesday\n * ```\n */\nexport const dayOfWeek = (date, weekDay, direction = Direction.Forward) => {\n const newDate = cloneDate(date);\n const newDay = ((weekDay - newDate.getDay()) + (7 * direction)) % 7;\n newDate.setDate(newDate.getDate() + newDay);\n return adjustDST(newDate, date.getHours());\n};\n","/**\n * A function that calculates duration in months between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInMonths(new Date(2016, 0, 1), new Date(2017, 0, 1)); // 12\n * durationInMonths(new Date(2016, 6, 1), new Date(2017, 0, 1)); // 6\n * durationInMonths(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInMonths = (start, end) => (((end.getFullYear() - start.getFullYear())) * 12 + (end.getMonth() - start.getMonth()));\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the first month in a year.\n *\n * @param date - The start date value.\n * @returns - The first month in a year.\n *\n * @example\n * ```ts-no-run\n * firstMonthOfYear(new Date(2017, 11, 1)); // 2017-1-1\n * firstMonthOfYear(new Date(2017, 0, 1)); // 2017-1-1\n * ```\n */\nexport const firstMonthOfYear = (value) => setMonth(value, 0);\n","/**\n * A function that calculates duration in years between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in years.\n *\n * @example\n * ```ts-no-run\n * durationInYears(new Date(2016, 0, 1), new Date(2028, 0, 1)); // 12\n * durationInYears(new Date(2016, 0, 1), new Date(2022, 0, 1)); // 6\n * durationInYears(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport const durationInYears = (start, end) => (end.getFullYear() - start.getFullYear());\n","/**\n * Enumeration which represents the week days.\n */\nexport var Day;\n(function (Day) {\n /**\n * The Sunday value with an underlying `0` number value.\n */\n Day[Day[\"Sunday\"] = 0] = \"Sunday\";\n /**\n * The Monday value with an underlying `1` number value.\n */\n Day[Day[\"Monday\"] = 1] = \"Monday\";\n /**\n * The Tuesday value with an underlying `2` number value.\n */\n Day[Day[\"Tuesday\"] = 2] = \"Tuesday\";\n /**\n * The Wednesday value with an underlying `3` number value.\n */\n Day[Day[\"Wednesday\"] = 3] = \"Wednesday\";\n /**\n * The Thursday value with an underlying `4` number value.\n */\n Day[Day[\"Thursday\"] = 4] = \"Thursday\";\n /**\n * The Friday value with an underlying `5` number value.\n */\n Day[Day[\"Friday\"] = 5] = \"Friday\";\n /**\n * The Saturday value with an underlying `6` number value.\n */\n Day[Day[\"Saturday\"] = 6] = \"Saturday\";\n})(Day || (Day = {}));\n","import { Direction } from \"./direction.enum\";\nimport { dayOfWeek } from './day-of-week';\n/**\n * A function which returns a date by a specific week name. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * prevDayOfWeek(new Date(2016, 0, 1), Day.Wednesday); // 2015-12-30, Wednesday\n * ```\n */\nexport const prevDayOfWeek = (date, weekDay) => {\n return dayOfWeek(date, weekDay, Direction.Backward);\n};\n","import { Day } from './day.enum';\nimport { addDays } from './add-days';\nimport { createDate } from './create-date';\nimport { prevDayOfWeek } from './prev-day-of-week';\nimport { MS_PER_DAY } from './constants';\nimport { getDate } from './get-date';\nconst moveDateToWeekStart = (date, weekStartDay) => {\n if (weekStartDay !== Day.Monday) {\n return addDays(prevDayOfWeek(date, weekStartDay), 4);\n }\n return addDays(date, (4 - (date.getDay() || 7)));\n};\nconst calcWeekInYear = (date, weekStartDay) => {\n const firstWeekInYear = createDate(date.getFullYear(), 0, 1, -6);\n const newDate = moveDateToWeekStart(date, weekStartDay);\n const diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n const days = Math.floor(diffInMS / MS_PER_DAY);\n return 1 + Math.floor(days / 7);\n};\n/**\n * A function that returns the number of the week within a year, which is calculated in relation to the date.\n *\n * For more information, refer to the [**ISO week date**](https://en.wikipedia.org/wiki/ISO_week_date) article.\n *\n * @param date - The date used for the week number calculation.\n * @param weekStartDay - The first day of the week. By default, the first week day is Monday.\n * @returns - The number of the week within the year.\n *\n * @example\n * ```ts-no-run\n * weekInYear(new Date(2016, 0, 1)); // Week 53, 2015\n * weekInYear(new Date(2016, 0, 5)); // Week 1, 2016\n * weekInYear(new Date(2017, 0, 1)); // Week 52, 2016\n * weekInYear(new Date(2017, 0, 2)); // Week 1, 2017\n * ```\n */\nexport const weekInYear = (date, weekStartDay = Day.Monday) => {\n date = getDate(date);\n const prevWeekDate = addDays(date, -7);\n const nextWeekDate = addDays(date, 7);\n const weekNumber = calcWeekInYear(date, weekStartDay);\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n return weekNumber;\n};\n","/**\n * The number of milliseconds in one minute.\n */\nexport const MS_PER_MINUTE = 60000;\n/**\n * The number of milliseconds in one hour.\n */\nexport const MS_PER_HOUR = 3600000;\n/**\n * The number of milliseconds in one standard day.\n */\nexport const MS_PER_DAY = 86400000;\n","import { Subscription } from '../Subscription';\nexport const animationFrameProvider = {\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel === null || cancel === void 0 ? void 0 : cancel(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n","import { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './animationFrameProvider';\nexport class AnimationFrameAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n if (!scheduler.actions.some((action) => action.id === id)) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n }\n}\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AnimationFrameScheduler extends AsyncScheduler {\n flush(action) {\n this._active = true;\n const flushId = this._scheduled;\n this._scheduled = undefined;\n const { actions } = this;\n let error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport const animationFrame = animationFrameScheduler;\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, isDevMode, Directive, Input, Component, Output, ChangeDetectionStrategy, HostBinding, forwardRef, ElementRef, ContentChild, ViewChild, HostListener, InjectionToken, Inject, NgZone, Optional, ViewContainerRef, ViewChildren, TemplateRef, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, NgControl } from '@angular/forms';\nimport * as i1$1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX, RTL } from '@progress/kendo-angular-l10n';\nimport { cloneDate, addDays, getDate, isEqual, addDecades, addCenturies, firstDecadeOfCentury, lastDecadeOfCentury, firstYearOfDecade, createDate, lastYearOfDecade, lastMonthOfYear, lastDayOfMonth, durationInCenturies, addYears, durationInDecades, addWeeks, addMonths, firstDayOfMonth, dayOfWeek, durationInMonths, firstMonthOfYear, durationInYears, weekInYear } from '@progress/kendo-date-math';\nimport * as i5 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, guid, Keys, hasObservers, KendoInput, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1 from '@progress/kendo-angular-intl';\nimport { IntlModule } from '@progress/kendo-angular-intl';\nimport { Subject, Subscription, ReplaySubject, Observable, combineLatest, of, interval, animationFrameScheduler, fromEvent, EMPTY, from, BehaviorSubject, merge } from 'rxjs';\nimport * as i7 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { map, scan, takeWhile, debounceTime, tap, filter } from 'rxjs/operators';\nimport * as i2 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { touchEnabled } from '@progress/kendo-common';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-dateinputs',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1652250169,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nvar Action;\n(function (Action) {\n Action[Action[\"Left\"] = 0] = \"Left\";\n Action[Action[\"Right\"] = 1] = \"Right\";\n Action[Action[\"Up\"] = 2] = \"Up\";\n Action[Action[\"Down\"] = 3] = \"Down\";\n Action[Action[\"PrevView\"] = 4] = \"PrevView\";\n Action[Action[\"NextView\"] = 5] = \"NextView\";\n Action[Action[\"FirstInView\"] = 6] = \"FirstInView\";\n Action[Action[\"LastInView\"] = 7] = \"LastInView\";\n Action[Action[\"LowerView\"] = 8] = \"LowerView\";\n Action[Action[\"UpperView\"] = 9] = \"UpperView\";\n})(Action || (Action = {}));\n\n/**\n * @hidden\n *\n * The Enum which defines all possible Calendar view types.\n */\nvar CalendarViewEnum;\n(function (CalendarViewEnum) {\n CalendarViewEnum[CalendarViewEnum[\"month\"] = 0] = \"month\";\n CalendarViewEnum[CalendarViewEnum[\"year\"] = 1] = \"year\";\n CalendarViewEnum[CalendarViewEnum[\"decade\"] = 2] = \"decade\";\n CalendarViewEnum[CalendarViewEnum[\"century\"] = 3] = \"century\";\n})(CalendarViewEnum || (CalendarViewEnum = {}));\n\n/**\n * @hidden\n */\nconst MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nconst MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nconst MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nconst MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nconst MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\n\n/**\n * @hidden\n */\nconst EMPTY_SELECTIONRANGE = { start: null, end: null };\n\n/**\n * @hidden\n */\nconst requiresZoneOnBlur = (ngControl) => ngControl &&\n (!ngControl.touched || (ngControl.control && ngControl.control.updateOn === 'blur'));\n/**\n * @hidden\n */\nconst preventDefault = (args) => args.preventDefault();\n/**\n * @hidden\n */\nconst currentFocusTarget = (blurArgs) => blurArgs.relatedTarget || document.activeElement;\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== undefined && value !== null;\n/**\n * @hidden\n *\n * If the provided parameter is an array with at least one item\n * and all items in the array are numbers, returns `true.\n */\nconst isNumberArray = (value) => Array.isArray(value) && value.length > 0 && value.every(item => typeof item === 'number');\n/**\n * @hidden\n *\n * If the provided parameter is an array with at least one item\n * and all items in the array are dates, returns `true`.\n */\nconst isDateArray = (value) => Array.isArray(value) && value.length > 0 && value.every(item => item instanceof Date);\n\nconst isSet = (value) => value !== null && value !== undefined;\nconst setter = (method) => (date, value) => {\n const clone = cloneDate(date);\n clone[method](value);\n return clone;\n};\n/**\n * @hidden\n */\nconst setTime = (origin, candidate) => {\n const date = cloneDate(origin);\n date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());\n return date;\n};\nconst normalizeTimes = (candidate, min, max) => ({\n candidateValue: setTime(MIDNIGHT_DATE, candidate),\n maxValue: addDays(setTime(MIDNIGHT_DATE, max), min.getHours() < max.getHours() ||\n (min.getHours() === max.getHours() && min.getMinutes() < max.getMinutes()) ? 0 : 1),\n minValue: setTime(MIDNIGHT_DATE, min)\n});\n/**\n * @hidden\n */\nconst setYears = setter('setFullYear');\n/**\n * @hidden\n */\nconst setHours$1 = setter('setHours');\n/**\n * @hidden\n */\nconst setMinutes = setter('setMinutes');\n/**\n * @hidden\n */\nconst setSeconds = setter('setSeconds');\n/**\n * @hidden\n */\nconst setMilliseconds = setter('setMilliseconds');\n/**\n * @hidden\n */\nconst range = (start, end, step = 1) => {\n const result = [];\n for (let i = start; i < end; i = i + step) {\n result.push(i);\n }\n return result;\n};\n/**\n * @hidden\n */\nconst isInRange = (candidate, min, max) => (!candidate || !((min && min > candidate) || (max && max < candidate)));\n/**\n * @hidden\n */\nconst isInTimeRange = (candidate, min, max) => {\n if (!candidate || !min || !max) {\n return true;\n }\n const { candidateValue, minValue, maxValue } = normalizeTimes(candidate, min, max);\n return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nconst isValidRange = (min, max) => (!isSet(min) || !isSet(max) || min <= max);\n/**\n * @hidden\n */\nconst dateInRange = (candidate, min, max) => {\n if (!candidate) {\n return candidate;\n }\n if (min && candidate < min) {\n return cloneDate(min);\n }\n if (max && candidate > max) {\n return cloneDate(max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nconst timeInRange = (candidate, min, max) => {\n if (!candidate || !min || !max) {\n return candidate;\n }\n const { candidateValue, minValue, maxValue } = normalizeTimes(candidate, min, max);\n if (candidateValue < minValue) {\n return setTime(candidate, min);\n }\n if (candidateValue > maxValue) {\n return setTime(candidate, max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nconst getNow = () => new Date();\n/**\n * @hidden\n */\nconst getToday = () => getDate(new Date());\n/**\n * @hidden\n */\nconst noop$2 = (_) => { }; // eslint-disable-line no-empty\n/**\n * @hidden\n */\nconst isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nconst stringifyClassObject = (classes) => {\n const pushToAcc = (acc, cls) => classes[cls] ? acc.concat(cls) : acc;\n return Object.keys(classes).reduce(pushToAcc, []).join(' ');\n};\n/**\n * @hidden\n */\nconst shiftWeekNames = (names, offset) => (names.slice(offset).concat(names.slice(0, offset)));\n/**\n * @hidden\n */\nconst approximateStringMatching = (oldTextOrigin, oldFormat, newTextOrigin, caret) => {\n // Remove the right part of the cursor.\n //oldFormat = oldFormat.substring(0, caret + oldText.length - newText.length);\n const oldIndex = caret + oldTextOrigin.length - newTextOrigin.length;\n const oldTextSeparator = oldTextOrigin[oldIndex];\n const oldText = oldTextOrigin.substring(0, caret + oldTextOrigin.length - newTextOrigin.length);\n const newText = newTextOrigin.substring(0, caret);\n const diff = [];\n // Handle typing a single character over the same selection.\n if (oldText === newText && caret > 0) {\n diff.push([oldFormat[caret - 1], newText[caret - 1]]);\n return diff;\n }\n if (oldText.indexOf(newText) === 0 && (newText.length === 0 || oldFormat[newText.length - 1] !== oldFormat[newText.length])) {\n // Handle Delete/Backspace.\n let deletedSymbol = \"\";\n //XXX:\n // Whole text is replaced with a same char\n // Nasty patch required to keep the selection in the first segment\n if (newText.length === 1) {\n diff.push([oldFormat[0], newText[0]]);\n }\n for (let i = newText.length; i < oldText.length; i++) {\n if (oldFormat[i] !== deletedSymbol && oldFormat[i] !== \"_\") {\n deletedSymbol = oldFormat[i];\n diff.push([deletedSymbol, \"\"]);\n }\n }\n return diff;\n }\n // Handle inserting text (the new text is longer than the previous one).\n // Handle typing over a literal as well.\n if (newText.indexOf(oldText) === 0 || oldFormat[caret - 1] === \"_\") {\n let symbol = oldFormat[0];\n for (let i = Math.max(0, oldText.length - 1); i < oldFormat.length; i++) {\n if (oldFormat[i] !== \"_\") {\n symbol = oldFormat[i];\n break;\n }\n }\n return [[symbol, newText[caret - 1]]];\n }\n // Handle entering a space or a separator, for navigation to the next item.\n if (newText[newText.length - 1] === \" \" || (newText[newText.length - 1] === oldTextSeparator && oldFormat[oldIndex] === '_')) {\n return [[oldFormat[caret - 1], \"_\"]];\n }\n // Handle typing over a correctly selected part.\n return [[oldFormat[caret - 1], newText[caret - 1]]];\n};\n/**\n * @hidden\n */\nconst domContainerFactory = (type) => (children, classes = \"\", styles = {}) => {\n const container = document.createElement(type);\n container.className = classes;\n Object.keys(styles).map(key => container.style[key] = styles[key]);\n if (typeof children === 'string') {\n container.innerHTML = children || '';\n }\n else {\n (children || []).forEach(child => child && container.appendChild(child));\n }\n return container;\n};\n/**\n * @hidden\n */\nconst hasChange = (changes, field) => changes[field] !== undefined;\n/**\n * @hidden\n */\nconst hasExistingValue = (changes, field) => changes[field] && changes[field].currentValue !== undefined && changes[field].currentValue !== null;\n/**\n * @hidden\n */\nconst last = (list = []) => list && list[list.length - 1];\n/**\n * @hidden\n */\nconst isInSelectionRange = (value, selectionRange) => {\n const { start, end } = selectionRange || EMPTY_SELECTIONRANGE;\n if (!start || !end) {\n return false;\n }\n return start < value && value < end;\n};\n/**\n * @hidden\n */\nconst either = (value1, value2) => value1 || value2;\n/**\n * @hidden\n */\nconst clampRange = (value) => ({ start: value, end: value });\n/**\n * @hidden\n */\nconst isEqualRange = (initial, updated) => {\n const { start: initialStart, end: initialEnd } = initial || EMPTY_SELECTIONRANGE;\n const { start: updatedStart, end: updatedEnd } = updated || EMPTY_SELECTIONRANGE;\n return isEqual(initialStart, updatedStart) && isEqual(initialEnd, updatedEnd);\n};\n/**\n * @hidden\n */\nconst areDatesEqual = (first, second) => {\n first = first || [];\n second = second || [];\n return first.length === second.length && first.every((date, index) => isEqual(date, second[index]));\n};\n/**\n * @hidden\n */\nconst sortDates = (dates) => {\n return dates.filter(date => isPresent(date)).sort((a, b) => a.getTime() - b.getTime());\n};\n/**\n * @hidden\n *\n * Creates a new date based on the date information from the specified date portion\n * and the time information from the time portion.\n * If a parameter is not provided, returns `null`.\n */\nconst mergeDateAndTime = (date, time) => {\n if (!(date && time)) {\n return null;\n }\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n};\n/**\n * @hidden\n */\nconst lastMillisecondOfDate = (date) => {\n if (!date) {\n return null;\n }\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);\n};\n/**\n * @hidden\n *\n * Returns an array with dates ranging between and including the specified start and\n * end dates that are evaluated as disabled.\n */\nconst disabledDatesInRange = (start, end, isDateDisabled) => {\n if (!(start && end && isDateDisabled) || (start > end)) {\n return [];\n }\n const dates = [];\n let current = start;\n while (current <= end) {\n if (isDateDisabled(current)) {\n dates.push(current);\n }\n current = addDays(current, 1);\n }\n return dates;\n};\n/**\n * @hidden\n *\n * Crops the last two digits from the year of the provided date value.\n */\nconst cropTwoDigitYear = (date) => {\n if (!isPresent(date) || isNaN(date.getTime())) {\n return 0;\n }\n return Number(date\n .getFullYear()\n .toString()\n .slice(-2));\n};\n/**\n * @hidden\n *\n * Used when resetting millisecond segment value in the DateInput\n */\nconst msPaddingFromFormat = (format) => {\n return Array(format.match(/S+(\\1)/)[0].length).join(\"0\");\n};\n/**\n * @hidden\n */\nconst millisecondDigitsInFormat = (format) => {\n const result = format && format.match(/S+(\\1)/);\n return result ? result[0].length : 0;\n};\n/**\n * @hidden\n */\nconst millisecondStepFor = (digits) => {\n return Math.pow(10, 3 - digits);\n};\n/**\n * @hidden\n *\n * Checks if a tab keydown would would move the focus outside of the calendar.\n */\nconst isTabExitingCalendar = (calendarType, focusedElement, shiftKey) => {\n if (!isPresent(focusedElement)) {\n return false;\n }\n return calendarType === 'infinite' || ( // infinte calendar is always exited on first tab keydown\n calendarType === 'classic' &&\n (shiftKey && focusedElement.classList.contains('k-calendar')) || // exited on main calendar element focused and back-tab\n (!shiftKey && focusedElement.classList.contains('k-next-view')) // exited on next button focused and regular tab\n );\n};\n/**\n * @hidden\n * Returns the size class based on the component and size input.\n */\nconst getSizeClass = (component, size) => {\n const SIZE_CLASSES = {\n 'small': `k-${component}-sm`,\n 'medium': `k-${component}-md`,\n 'large': `k-${component}-lg`\n };\n return SIZE_CLASSES[size];\n};\n/**\n * @hidden\n * Returns the rounded class based on the rounded input.\n */\nconst getRoundedClass = (rounded) => {\n const ROUNDED_CLASSES = {\n 'small': 'k-rounded-sm',\n 'medium': 'k-rounded-md',\n 'large': 'k-rounded-lg',\n 'full': 'k-rounded-full'\n };\n return ROUNDED_CLASSES[rounded];\n};\n/**\n * @hidden\n * Return the fillMode class based on the component and fillMode input.\n */\nconst getFillModeClass = (component, fillMode) => {\n const FILLMODE_CLASSES = {\n 'solid': `k-${component}-solid`,\n 'flat': `k-${component}-flat`,\n 'outline': `k-${component}-outline`\n };\n return FILLMODE_CLASSES[fillMode];\n};\n/**\n * @hidden\n */\nconst DEFAULT_ROUNDED = 'medium';\n/**\n * @hidden\n */\nconst DEFAULT_SIZE = 'medium';\n/**\n * @hidden\n */\nconst DEFAULT_FILL_MODE = 'solid';\n\nconst EMPTY_DATA$3 = [[]];\nconst CELLS_LENGTH$3 = 4;\nconst ROWS_LENGTH$3 = 3;\nconst ACTIONS$3 = {\n [Action.Left]: (date) => addDecades(date, -1),\n [Action.Up]: (date) => addDecades(date, -5),\n [Action.Right]: (date) => addDecades(date, 1),\n [Action.Down]: (date) => addDecades(date, 5),\n [Action.PrevView]: (date) => addCenturies(date, -1),\n [Action.NextView]: (date) => addCenturies(date, 1),\n [Action.FirstInView]: (date) => firstDecadeOfCentury(date),\n [Action.LastInView]: (date) => lastDecadeOfCentury(date)\n};\n/**\n * @hidden\n */\nclass CenturyViewService {\n constructor() {\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addDecades(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addCenturies(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addCenturies(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\n if (!viewDate) {\n return EMPTY_DATA$3;\n }\n const cells = range(0, CELLS_LENGTH$3);\n const firstDate = firstDecadeOfCentury(viewDate);\n const lastDate = lastDecadeOfCentury(viewDate);\n const today = getToday();\n return range(0, ROWS_LENGTH$3).map(rowOffset => {\n const baseDate = addDecades(firstDate, rowOffset * CELLS_LENGTH$3);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addDecades(baseDate, cellOffset), min, max);\n const nextCentury = cellDate.getFullYear() > lastDate.getFullYear();\n if (!this.isInRange(cellDate, min, max) || nextCentury) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: this.value(cellDate),\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return firstYearOfDecade(candidate).getFullYear() === firstYearOfDecade(expected).getFullYear();\n }\n isInArray(date, dates) {\n if (!dates.length) {\n return false;\n }\n const year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 99);\n }\n isInRange(candidate, min, max) {\n const year = firstYearOfDecade(candidate).getFullYear();\n const aboveMin = !min || firstYearOfDecade(min).getFullYear() <= year;\n const belowMax = !max || year <= firstYearOfDecade(max).getFullYear();\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n const firstYear = firstYearOfDecade(firstDecadeOfCentury(date));\n return createDate(firstYear.getFullYear(), 0, 1);\n }\n lastDayOfPeriod(date) {\n const decade = lastDecadeOfCentury(date);\n const year = lastYearOfDecade(decade);\n const month = lastMonthOfYear(year);\n return lastDayOfMonth(month);\n }\n isRangeStart(value) {\n return value.getFullYear() % 1000 === 0;\n }\n move(value, action) {\n const modifier = ACTIONS$3[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return firstYearOfDecade(value).getFullYear().toString();\n }\n navigationTitle(value) {\n return value ? firstDecadeOfCentury(value).getFullYear().toString() : '';\n }\n title(value) {\n if (!value) {\n return '';\n }\n return `${firstDecadeOfCentury(value).getFullYear()} - ${lastDecadeOfCentury(value).getFullYear()}`;\n }\n rowLength() {\n return CELLS_LENGTH$3;\n }\n skip(value, min) {\n return durationInCenturies(min, value);\n }\n total(min, max) {\n return durationInCenturies(min, max) + 1;\n }\n value(current) {\n return current ? firstYearOfDecade(current).getFullYear().toString() : '';\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const centuriesToSubtract = viewsCount - viewsInRange;\n return addCenturies(date, -1 * centuriesToSubtract);\n }\n return date;\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n}\nCenturyViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCenturyViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyViewService, decorators: [{\n type: Injectable\n }] });\n\nconst EMPTY_DATA$2 = [[]];\nconst CELLS_LENGTH$2 = 4;\nconst ROWS_LENGTH$2 = 3;\nconst ACTIONS$2 = {\n [Action.Left]: (date) => addYears(date, -1),\n [Action.Up]: (date) => addYears(date, -5),\n [Action.Right]: (date) => addYears(date, 1),\n [Action.Down]: (date) => addYears(date, 5),\n [Action.PrevView]: (date) => addDecades(date, -1),\n [Action.NextView]: (date) => addDecades(date, 1),\n [Action.FirstInView]: (date) => firstYearOfDecade(date),\n [Action.LastInView]: (date) => lastYearOfDecade(date)\n};\n/**\n * @hidden\n */\nclass DecadeViewService {\n constructor() {\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addYears(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addDecades(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addDecades(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\n if (!viewDate) {\n return EMPTY_DATA$2;\n }\n const cells = range(0, CELLS_LENGTH$2);\n const firstDate = firstYearOfDecade(viewDate);\n const lastDate = lastYearOfDecade(viewDate);\n const today = getToday();\n return range(0, ROWS_LENGTH$2).map(rowOffset => {\n const baseDate = addYears(firstDate, rowOffset * CELLS_LENGTH$2);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addYears(baseDate, cellOffset), min, max);\n const nextDecade = cellDate.getFullYear() > lastDate.getFullYear();\n if (!this.isInRange(cellDate, min, max) || nextDecade) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: this.value(cellDate),\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear();\n }\n isInArray(date, dates) {\n if (!dates.length) {\n return false;\n }\n const year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 9);\n }\n isInRange(candidate, min, max) {\n const year = candidate.getFullYear();\n const aboveMin = !min || min.getFullYear() <= year;\n const belowMax = !max || year <= max.getFullYear();\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n const firstYear = firstYearOfDecade(date);\n return createDate(firstYear.getFullYear(), 0, 1);\n }\n lastDayOfPeriod(date) {\n const year = lastYearOfDecade(date);\n const month = lastMonthOfYear(year);\n return lastDayOfMonth(month);\n }\n isRangeStart(value) {\n return value.getFullYear() % 100 === 0;\n }\n move(value, action) {\n const modifier = ACTIONS$2[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return value.getFullYear().toString();\n }\n navigationTitle(value) {\n return value ? firstYearOfDecade(value).getFullYear().toString() : '';\n }\n title(value) {\n if (!value) {\n return '';\n }\n return `${firstYearOfDecade(value).getFullYear()} - ${lastYearOfDecade(value).getFullYear()}`;\n }\n rowLength() {\n return CELLS_LENGTH$2;\n }\n skip(value, min) {\n return durationInDecades(min, value);\n }\n total(min, max) {\n return durationInDecades(min, max) + 1;\n }\n value(current) {\n return current ? current.getFullYear().toString() : '';\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const decadesToSubtract = viewsCount - viewsInRange;\n return addDecades(date, -1 * decadesToSubtract);\n }\n return date;\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n}\nDecadeViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDecadeViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeViewService, decorators: [{\n type: Injectable\n }] });\n\nconst EMPTY_DATA$1 = [[]];\nconst CELLS_LENGTH$1 = 7;\nconst ROWS_LENGTH$1 = 6;\nconst ACTIONS$1 = {\n [Action.Left]: (date) => addDays(date, -1),\n [Action.Up]: (date) => addWeeks(date, -1),\n [Action.Right]: (date) => addDays(date, 1),\n [Action.Down]: (date) => addWeeks(date, 1),\n [Action.PrevView]: (date) => addMonths(date, -1),\n [Action.NextView]: (date) => addMonths(date, 1),\n [Action.FirstInView]: (date) => firstDayOfMonth(date),\n [Action.LastInView]: (date) => lastDayOfMonth(date)\n};\n/**\n * @hidden\n */\nclass MonthViewService {\n constructor(_intlService) {\n this._intlService = _intlService;\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addDays(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addMonths(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addMonths(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate, isDateDisabled = () => false } = options;\n if (!viewDate) {\n return EMPTY_DATA$1;\n }\n const firstMonthDate = firstDayOfMonth(viewDate);\n const firstMonthDay = getDate(firstMonthDate);\n const lastMonthDate = lastDayOfMonth(viewDate);\n const lastMonthDay = getDate(lastMonthDate);\n const backward = -1;\n const date = dayOfWeek(firstMonthDate, this._intlService.firstDay(), backward);\n const cells = range(0, CELLS_LENGTH$1);\n const today = getToday();\n return range(0, ROWS_LENGTH$1).map(rowOffset => {\n const baseDate = addDays(date, rowOffset * CELLS_LENGTH$1);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addDays(baseDate, cellOffset), min, max);\n const cellDay = getDate(cellDate);\n const otherMonth = cellDay < firstMonthDay || cellDay > lastMonthDay;\n const outOfRange = cellDate < min || cellDate > max;\n if (outOfRange) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: this.value(cellDate),\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: this.isWeekend(cellDate),\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstMonthDate),\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastMonthDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate,\n isDisabled: isDateDisabled(cellDate),\n isOtherMonth: otherMonth\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return getDate(candidate).getTime() === getDate(expected).getTime();\n }\n isInArray(date, dates) {\n if (dates.length === 0) {\n return false;\n }\n const lowerBound = this.beginningOfPeriod(dates[0]);\n const upperBound = this.beginningOfPeriod(addMonths(dates[dates.length - 1], 1));\n return lowerBound <= date && date < upperBound;\n }\n isInRange(candidate, min, max) {\n const value = getDate(candidate);\n const aboveMin = !min || getDate(min) <= value;\n const belowMax = !max || value <= getDate(max);\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n return createDate(date.getFullYear(), date.getMonth(), 1);\n }\n lastDayOfPeriod(date) {\n return lastDayOfMonth(date);\n }\n isRangeStart(value) {\n return !value.getMonth();\n }\n move(value, action) {\n const modifier = ACTIONS$1[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return this._intlService.formatDate(value, 'D');\n }\n navigationTitle(value) {\n if (!value) {\n return '';\n }\n return this.isRangeStart(value) ? value.getFullYear().toString() : this.abbrMonthNames()[value.getMonth()];\n }\n title(current) {\n return `${this.wideMonthNames()[current.getMonth()]} ${current.getFullYear()}`;\n }\n rowLength(options = {}) {\n return CELLS_LENGTH$1 + (options.prependCell ? 1 : 0);\n }\n skip(value, min) {\n return durationInMonths(min, value);\n }\n total(min, max) {\n return durationInMonths(min, max) + 1;\n }\n value(current) {\n return current ? current.getDate().toString() : \"\";\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const monthsToSubtract = viewsCount - viewsInRange;\n return addMonths(date, -1 * monthsToSubtract);\n }\n return date;\n }\n isWeekend(date) {\n const { start, end } = this._intlService.weekendRange();\n const day = date.getDay();\n if (end < start) {\n return day <= end || start <= day;\n }\n return start <= day && day <= end;\n }\n abbrMonthNames() {\n return this._intlService.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n wideMonthNames() {\n return this._intlService.dateFormatNames({ nameType: 'wide', type: 'months' });\n }\n}\nMonthViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nMonthViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthViewService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst EMPTY_DATA = [[]];\nconst CELLS_LENGTH = 4;\nconst ROWS_LENGTH = 3;\nconst upStep = (month) => {\n if (month > 4) {\n return -5;\n }\n if (month < 2) {\n return -2;\n }\n return -7;\n};\nconst downStep = (month) => {\n if (month < 7) {\n return 5;\n }\n if (month < 10) {\n return 7;\n }\n return 2;\n};\nconst ACTIONS = {\n [Action.Left]: (date) => addMonths(date, -1),\n [Action.Up]: (date) => addMonths(date, upStep(date.getMonth())),\n [Action.Right]: (date) => addMonths(date, 1),\n [Action.Down]: (date) => addMonths(date, downStep(date.getMonth())),\n [Action.PrevView]: (date) => addYears(date, -1),\n [Action.NextView]: (date) => addYears(date, 1),\n [Action.FirstInView]: (date) => firstMonthOfYear(date),\n [Action.LastInView]: (date) => lastMonthOfYear(date)\n};\n/**\n * @hidden\n */\nclass YearViewService {\n constructor(_intlService) {\n this._intlService = _intlService;\n this.dateRange = (start, end) => {\n if (!isPresent(start) || !isPresent(end)) {\n return [];\n }\n const result = [];\n let current = start;\n while (current <= end) {\n result.push(current);\n current = addMonths(current, 1);\n }\n return result;\n };\n }\n addToDate(min, skip) {\n return addYears(min, skip);\n }\n datesList(start, count) {\n return range(0, count).map(i => addYears(start, i));\n }\n data(options) {\n const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n const months = this.abbrMonthNames();\n const firstDate = firstMonthOfYear(viewDate);\n const lastDate = lastMonthOfYear(viewDate);\n const currentYear = firstDate.getFullYear();\n const cells = range(0, CELLS_LENGTH);\n const today = getToday();\n return range(0, ROWS_LENGTH).map(rowOffset => {\n const baseDate = addMonths(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(cellOffset => {\n const cellDate = this.normalize(addMonths(baseDate, cellOffset), min, max);\n const changedYear = currentYear < cellDate.getFullYear();\n if (!this.isInRange(cellDate, min, max) || changedYear) {\n return null;\n }\n const isRangeStart = this.isEqual(cellDate, selectionRange.start);\n const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\n const isInMiddle = !isRangeStart && !isRangeEnd;\n const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n return {\n formattedValue: months[cellDate.getMonth()],\n id: `${cellUID}${cellDate.getTime()}`,\n isFocused: this.isEqual(cellDate, focusedDate),\n isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\n isToday: this.isEqual(cellDate, today),\n title: this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n }\n isEqual(candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear() &&\n candidate.getMonth() === expected.getMonth();\n }\n isInArray(date, dates) {\n if (!dates.length) {\n return false;\n }\n const year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear();\n }\n isInRange(candidate, min, max) {\n const candidateValue = createDate(candidate.getFullYear(), candidate.getMonth(), 1);\n const aboveMin = !min || createDate(min.getFullYear(), min.getMonth(), 1) <= candidateValue;\n const belowMax = !max || candidateValue <= createDate(max.getFullYear(), max.getMonth(), 1);\n return aboveMin && belowMax;\n }\n beginningOfPeriod(date) {\n if (!date) {\n return date;\n }\n return createDate(date.getFullYear(), 0, 1);\n }\n lastDayOfPeriod(date) {\n const month = lastMonthOfYear(date);\n return lastDayOfMonth(month);\n }\n isRangeStart(value) {\n return value.getFullYear() % 10 === 0;\n }\n move(value, action) {\n const modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n }\n cellTitle(value) {\n return `${value.getFullYear()} ${this.value(value)}`;\n }\n navigationTitle(value) {\n return this.title(value);\n }\n title(current) {\n return current ? current.getFullYear().toString() : '';\n }\n rowLength() {\n return CELLS_LENGTH;\n }\n skip(value, min) {\n return durationInYears(min, value);\n }\n total(min, max) {\n return durationInYears(min, max) + 1;\n }\n value(current) {\n return current ? this.abbrMonthNames()[current.getMonth()] : '';\n }\n viewDate(date, max, viewsCount = 1) {\n const viewsInRange = this.total(date, max);\n if (viewsInRange < viewsCount) {\n const yearsToSubtract = viewsCount - viewsInRange;\n return addYears(date, -1 * yearsToSubtract);\n }\n return date;\n }\n abbrMonthNames() {\n return this._intlService.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n }\n normalize(cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n }\n}\nYearViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearViewService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nYearViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearViewService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst services$1 = {\n [CalendarViewEnum.month]: MonthViewService,\n [CalendarViewEnum.year]: YearViewService,\n [CalendarViewEnum.decade]: DecadeViewService,\n [CalendarViewEnum.century]: CenturyViewService\n};\nconst viewOffset = (view, offset) => {\n const candidate = CalendarViewEnum[CalendarViewEnum[view + offset]];\n return candidate !== undefined ? candidate : view;\n};\n/**\n * @hidden\n */\nclass BusViewService {\n constructor(injector) {\n this.injector = injector;\n this.viewChanged = new EventEmitter();\n this.bottom = CalendarViewEnum.month;\n this.top = CalendarViewEnum.century;\n }\n configure(bottom, top) {\n this.bottom = bottom;\n this.top = top;\n }\n service(view) {\n const serviceType = services$1[view];\n return serviceType ? this.injector.get(serviceType) : null;\n }\n moveDown(view) {\n this.move(view, -1);\n }\n moveUp(view) {\n this.move(view, 1);\n }\n moveToBottom(activeView) {\n if (activeView === this.bottom) {\n return;\n }\n this.viewChanged.emit({ view: this.bottom });\n }\n canMoveDown(view) {\n return this.bottom < view;\n }\n canMoveUp(view) {\n return view < this.top;\n }\n clamp(view) {\n if (view < this.bottom) {\n return this.bottom;\n }\n if (view > this.top) {\n return this.top;\n }\n return view;\n }\n move(view, offset) {\n const candidate = this.clamp(viewOffset(view, offset));\n if (candidate === view) {\n return;\n }\n this.viewChanged.emit({ view: candidate });\n }\n}\nBusViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BusViewService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });\nBusViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BusViewService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BusViewService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.Injector }]; } });\n\n/**\n * @hidden\n */\nclass WeekNamesService {\n constructor(intl) {\n this.intl = intl;\n }\n getWeekNames(includeWeekNumber = false) {\n const weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return includeWeekNumber ? [''].concat(weekNames) : weekNames;\n }\n}\nWeekNamesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNamesService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nWeekNamesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNamesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNamesService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\n/**\n * @hidden\n */\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n\nconst noop$1 = () => false;\nconst DISABLED_DATES_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/calendar/disabled-dates/';\n/**\n * @hidden\n */\nclass DisabledDatesService {\n constructor() {\n /**\n * Emits every time the `isDateDisabled` method changes.\n */\n this.changes = new Subject();\n /**\n * Based on the user-defined `disabledDates` input evaluates if the date is disabled.\n * If not set, returns `false`.\n */\n this.isDateDisabled = noop$1;\n }\n /**\n * Configures the `isDateDisabled` function.\n *\n * * If a function is provided, uses it as-is and passes each date to it for evaluation.\n * The time part is set to `midnight`.\n * * If a `Date[]` is provided, creates a function that checks the targeted date against\n * the listed dates and, if the targeted date is listed, marks it as disabled.\n * * If a `Day[]` is provided, creates a function that evaluates the provided days of the\n * week as disabled.\n */\n initialize(disabledDates) {\n if (typeof disabledDates === 'function') {\n this.isDateDisabled = (date) => disabledDates(getDate(date));\n }\n else if (isNumberArray(disabledDates)) {\n const disabledWeekDays = new Set(disabledDates);\n this.isDateDisabled = (date) => disabledWeekDays.has(date.getDay());\n }\n else if (isDateArray(disabledDates)) {\n const normalizedDisabledDates = new Set(disabledDates.map(date => getDate(date).getTime()));\n this.isDateDisabled = (date) => normalizedDisabledDates.has(getDate(date).getTime());\n }\n else {\n this.isDateDisabled = noop$1;\n this.notifyInvalidInput(disabledDates);\n }\n this.notifyServiceChange();\n }\n notifyInvalidInput(disabledDates) {\n if (isPresent(disabledDates) && isDevMode()) {\n throw new Error(`The 'disabledDates' value should be a function, a Day array or a Date array. Check ${DISABLED_DATES_DOC_LINK} for more information.`);\n }\n }\n notifyServiceChange() {\n this.changes.next();\n }\n}\nDisabledDatesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledDatesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDisabledDatesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledDatesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledDatesService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass KForOfContext {\n constructor($implicit, kForOf, index, count) {\n this.$implicit = $implicit;\n this.kForOf = kForOf;\n this.index = index;\n this.count = count;\n }\n get first() { return this.index === 0; }\n get last() { return this.index === this.count - 1; }\n get even() { return this.index % 2 === 0; }\n get odd() { return !this.even; }\n}\n/**\n * @hidden\n */\n// eslint-disable-next-line\nclass KForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._differ = null;\n }\n set kForTemplate(value) {\n if (value) {\n this._template = value;\n }\n }\n ngOnChanges(changes) {\n if ('kForOf' in changes) {\n const value = changes.kForOf.currentValue;\n if (this._differ || !value) {\n return;\n }\n try {\n this._differ = this._differs.find(value).create(this.kForTrackBy);\n }\n catch (e) {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeNameForDebugging(value)}'.`);\n }\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this.kForOf);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _applyChanges(changes) {\n if (!isDocumentAvailable()) {\n return;\n }\n const viewContainerLength = this._viewContainer.length;\n const dataLength = this.kForOf.length;\n const tuples = {};\n changes.forEachOperation((record, _, currentIndex) => {\n if (currentIndex !== null) {\n tuples[currentIndex] = record.item;\n }\n });\n for (let i = viewContainerLength; i < dataLength; i++) {\n this._viewContainer.createEmbeddedView(this._template, new KForOfContext(null, this.kForOf, -1, -1), i);\n }\n for (let i = this._viewContainer.length; i > dataLength; i--) {\n this._viewContainer.remove(i - 1);\n }\n for (let i = 0; i < this._viewContainer.length; i++) {\n const view = this._viewContainer.get(i);\n view.context.index = i;\n view.context.count = length;\n view.context.$implicit = tuples[i] || null;\n }\n }\n}\nKForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nKForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: KForOf, selector: \"[kFor][kForOf]\", inputs: { kForOf: \"kForOf\", kForTrackBy: \"kForTrackBy\", kForTemplate: \"kForTemplate\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: KForOf, decorators: [{\n type: Directive,\n args: [{ selector: '[kFor][kForOf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { kForOf: [{\n type: Input\n }], kForTrackBy: [{\n type: Input\n }], kForTemplate: [{\n type: Input\n }] } });\n/**\n * @hidden\n */\nfunction getTypeNameForDebugging(type) {\n return type.name || typeof type;\n}\n\n/**\n * @hidden\n */\nclass ViewComponent {\n constructor(bus, intl, cdr, element, zone, renderer, disabledDatesService) {\n this.bus = bus;\n this.intl = intl;\n this.cdr = cdr;\n this.element = element;\n this.zone = zone;\n this.renderer = renderer;\n this.disabledDatesService = disabledDatesService;\n this.direction = 'vertical';\n this.isActive = true;\n this.selectedDates = [];\n this.cellClick = new EventEmitter();\n this.weekNumberCellClick = new EventEmitter();\n this.cellEnter = new EventEmitter();\n this.cellLeave = new EventEmitter();\n this.colSpan = 0;\n this.subscriptions = new Subscription();\n this.domEvents = [];\n this.subscriptions.add(this.intl.changes.subscribe(this.intlChange.bind(this)));\n this.subscriptions.add(this.disabledDatesService.changes.subscribe(this.disabledDatesChange.bind(this)));\n }\n get weekNumber() {\n return this.showWeekNumbers && this.activeView === CalendarViewEnum.month;\n }\n set weekNumber(showWeekNumbers) {\n this.showWeekNumbers = showWeekNumbers;\n }\n ngOnInit() {\n if (this.element) {\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngOnChanges(changes) {\n this.service = this.bus.service(this.activeView);\n if (!this.service) {\n return;\n }\n this.colSpan = this.service.rowLength({ prependCell: this.weekNumber });\n this.title = this.service.title(this.viewDate);\n this.updateData();\n if (changes.activeView) {\n this.currentCellIndex = null;\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.domEvents.forEach(unsubscribeCallback => unsubscribeCallback());\n }\n isHorizontal() {\n return this.direction === 'horizontal';\n }\n isMonthView() {\n return this.activeView === CalendarViewEnum.month;\n }\n shouldRenderCellContent(cellCtx) {\n return isPresent(cellCtx) && !(!this.isHorizontal() && cellCtx.isOtherMonth);\n }\n firstDate(rowCtx) {\n const ctx = this.firstWeekDateContext(rowCtx);\n return ctx ? ctx.value : null;\n }\n getWeekNumber(date) {\n if (!this.weekNumber) {\n return null;\n }\n return weekInYear(date, this.intl.firstDay());\n }\n getWeekNumberContext(rowCtx) {\n const ctx = this.firstWeekDateContext(rowCtx);\n if (!this.weekNumber || !ctx) {\n return null;\n }\n const weekNumber = weekInYear(ctx.value, this.intl.firstDay()).toString();\n return {\n formattedValue: weekNumber,\n id: null,\n isFocused: false,\n isSelected: false,\n isWeekend: false,\n title: weekNumber,\n value: cloneDate(ctx.value)\n };\n }\n getStyles(context) {\n const { isRangeEnd, isRangeStart } = context;\n const isEndActive = this.activeRangeEnd === 'end' && isRangeEnd;\n const isStartActive = this.activeRangeEnd === 'start' && isRangeStart;\n return stringifyClassObject({\n 'k-range-end': !context.isOtherMonth && isRangeEnd,\n 'k-range-mid': !context.isOtherMonth && context.isRangeMid,\n 'k-range-split-end': !context.isOtherMonth && context.isRangeSplitEnd,\n 'k-range-split-start': !context.isOtherMonth && context.isRangeSplitStart,\n 'k-range-start': !context.isOtherMonth && isRangeStart,\n 'k-state-active': isStartActive || isEndActive,\n 'k-state-focused': !context.isOtherMonth && this.isActive && context.isFocused,\n 'k-state-selected': !context.isOtherMonth && (context.isSelected || isRangeStart || isRangeEnd),\n 'k-today': !context.isOtherMonth && context.isToday,\n 'k-weekend': context.isWeekend,\n 'k-disabled': context.isDisabled,\n 'k-other-month': context.isOtherMonth\n });\n }\n tableCellIndex(rowIndex, cellIndex) {\n return `${rowIndex}:${cellIndex}`;\n }\n handleWeekNumberClick(week) {\n const availableDates = week.map(item => item.value).filter(date => !this.disabledDatesService.isDateDisabled(date));\n this.weekNumberCellClick.emit(availableDates);\n }\n firstWeekDateContext(rowCtx) {\n if (!this.weekNumber) {\n return null;\n }\n let idx = 0;\n let ctx = this.shouldRenderCellContent(rowCtx[idx]) ? rowCtx[idx] : null;\n while (!ctx && idx < rowCtx.length) {\n const cellCtx = rowCtx[++idx];\n ctx = this.shouldRenderCellContent(cellCtx) ? cellCtx : null;\n }\n return ctx;\n }\n updateData() {\n const time = last(this.selectedDates) || getToday();\n const viewDate = setTime(this.viewDate, time);\n this.data = this.service.data({\n cellUID: this.cellUID,\n focusedDate: this.focusedDate,\n isActiveView: !this.bus.canMoveDown(this.activeView),\n max: this.max,\n min: this.min,\n selectedDates: this.selectedDates,\n selectionRange: this.selectionRange,\n viewDate: viewDate,\n isDateDisabled: this.disabledDatesService.isDateDisabled,\n direction: this.direction\n });\n }\n intlChange() {\n this.updateData();\n this.cdr.markForCheck();\n }\n disabledDatesChange() {\n this.updateData();\n this.cdr.markForCheck();\n }\n bindEvents() {\n const element = this.element.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'mouseover', this.cellMouseoverHandler.bind(this)), this.renderer.listen(element, 'mouseleave', this.mouseLeaveHandler.bind(this)), this.renderer.listen(element, 'click', this.clickHandler.bind(this)));\n }\n clickHandler(args) {\n const cell = this.closestCell(args);\n if (!cell) {\n return;\n }\n const index = cell.getAttribute('data-cell-index');\n const cellContext = this.cellByIndex(index);\n if (!cellContext.isDisabled) {\n const { ctrlKey, metaKey, shiftKey } = args;\n this.cellClick.emit({\n date: cellContext.value,\n modifiers: { ctrlKey, metaKey, shiftKey }\n });\n }\n }\n mouseLeaveHandler() {\n if (this.currentCellIndex) {\n this.emitCellLeave();\n }\n }\n cellMouseoverHandler(args) {\n const cell = this.closestCell(args);\n if (cell) {\n const index = cell.getAttribute('data-cell-index');\n if (this.currentCellIndex && this.currentCellIndex !== index) {\n this.emitCellLeave();\n }\n const value = this.cellByIndex(index).value;\n this.cellEnter.emit(value);\n this.currentCellIndex = index;\n }\n else if (this.currentCellIndex) {\n this.emitCellLeave();\n }\n }\n closestCell(eventArgs) {\n return closestInScope(eventArgs.target, node => node.hasAttribute('data-cell-index'), this.element.nativeElement);\n }\n emitCellLeave() {\n const item = this.cellByIndex(this.currentCellIndex);\n if (item) {\n this.cellLeave.emit(item.value);\n }\n this.currentCellIndex = null;\n }\n cellByIndex(index) {\n const [rowIndex, cellIndex] = index.split(':');\n return this.data[rowIndex][cellIndex];\n }\n}\nViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewComponent, deps: [{ token: BusViewService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: DisabledDatesService }], target: i0.ɵɵFactoryTarget.Component });\nViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ViewComponent, selector: \"[kendoCalendarView]\", inputs: { direction: \"direction\", isActive: \"isActive\", activeView: \"activeView\", cellUID: \"cellUID\", focusedDate: \"focusedDate\", viewDate: \"viewDate\", activeRangeEnd: \"activeRangeEnd\", selectionRange: \"selectionRange\", min: \"min\", max: \"max\", selectedDates: \"selectedDates\", weekNumber: \"weekNumber\", viewIndex: \"viewIndex\", templateRef: \"templateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\" }, usesOnChanges: true, ngImport: i0, template: `\n  \n {{title}}\n \n \n \n \n {{getWeekNumber(firstDate(row))}}\n \n \n \n \n \n \n \n {{cell.formattedValue}}\n \n \n \n \n \n `, isInline: true, directives: [{ type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line\n selector: '[kendoCalendarView]',\n template: `\n  \n {{title}}\n \n \n \n \n {{getWeekNumber(firstDate(row))}}\n \n \n \n \n \n \n \n {{cell.formattedValue}}\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i1.IntlService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: DisabledDatesService }]; }, propDecorators: { direction: [{\n type: Input\n }], isActive: [{\n type: Input\n }], activeView: [{\n type: Input\n }], cellUID: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], selectedDates: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], viewIndex: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], weekNumberTemplateRef: [{\n type: Input\n }], cellClick: [{\n type: Output\n }], weekNumberCellClick: [{\n type: Output\n }], cellEnter: [{\n type: Output\n }], cellLeave: [{\n type: Output\n }] } });\n\n/* eslint-disable @angular-eslint/component-selector */\nconst DEFAULT_VIEWS_LENGTH = 2;\n/**\n * @hidden\n */\nclass HorizontalViewListComponent {\n constructor(bus, intl, weekService, cdr, element, renderer) {\n this.bus = bus;\n this.intl = intl;\n this.weekService = weekService;\n this.cdr = cdr;\n this.element = element;\n this.renderer = renderer;\n this.activeView = CalendarViewEnum.month;\n this.isActive = true;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.selectedDates = [];\n this.views = DEFAULT_VIEWS_LENGTH;\n this.showViewHeader = false;\n this.animateNavigation = false;\n this.cellClick = new EventEmitter();\n this.weekNumberCellClick = new EventEmitter();\n this.cellEnter = new EventEmitter();\n this.cellLeave = new EventEmitter();\n this.activeDateChange = new EventEmitter();\n this.getComponentClass = true;\n this.weekNames = [];\n this.dates = [];\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n }\n get weekNumber() {\n return this.showWeekNumbers && this.isMonthView();\n }\n set weekNumber(showWeekNumbers) {\n this.showWeekNumbers = showWeekNumbers;\n }\n get getComponentMonthClass() {\n return this.activeView === CalendarViewEnum.month;\n }\n get getComponentYearClass() {\n return this.activeView === CalendarViewEnum.year;\n }\n get getComponentDecadeClass() {\n return this.activeView === CalendarViewEnum.decade;\n }\n get getComponentCenturyClass() {\n return this.activeView === CalendarViewEnum.century;\n }\n ngOnChanges(changes) {\n this.initService();\n if (this.weekNames.length === 0 || changes.weekNumber) {\n this.weekNames = this.weekService.getWeekNames(this.weekNumber);\n }\n if (!this.service) {\n return;\n }\n this.views = this.views || DEFAULT_VIEWS_LENGTH;\n const focusedDate = this.focusedDate;\n const viewDate = this.clampDate(this.service.viewDate(focusedDate, this.max, this.views));\n this.skip = this.service.skip(viewDate, this.min);\n this.total = this.service.total(this.min, this.max);\n const activeViewChanged = hasChange(changes, 'activeView');\n const viewsHasChanged = this.views > 0 && hasChange(changes, 'views');\n if (activeViewChanged || !this.isInDates(focusedDate) || viewsHasChanged || !this.activeDate) {\n this.dates = this.service.datesList(viewDate, this.getTake(this.skip));\n this.activeDate = cloneDate(this.dates[0]);\n this.activeDateChange.emit(this.activeDate);\n }\n }\n ngAfterViewInit() {\n // make the calendar look the same in the different browsers\n // which also smoothens the navigation animation\n if (this.views === 1) {\n this.setTableMinWidth();\n }\n }\n ngOnDestroy() {\n this.intlSubscription.unsubscribe();\n }\n initService() {\n this.service = this.bus.service(this.activeView);\n }\n isMonthView() {\n return this.activeView === CalendarViewEnum.month;\n }\n getCaptionTitle(date) {\n return this.service.title(date);\n }\n getCaptionClass() {\n return this.isMonthView() ? 'k-month-header' : 'k-meta-header';\n }\n animateView(action) {\n const container = this.element.nativeElement;\n const table = container.querySelector('table');\n // the whole width excluding padding/margin\n const initialContainerWidth = parseFloat(getComputedStyle(container).width);\n // table width\n const tableWidth = parseFloat(getComputedStyle(table).width);\n this.renderer.setStyle(container, 'width', `${initialContainerWidth}px`);\n this.renderer.setStyle(container, 'overflow', 'visible');\n // initialize an additional view for the animation\n if (action === Action.NextView) {\n // animating Action.NextView requires adding an additional view before the rendered views\n this.nextAnimationDate = cloneDate(this.dates[0]);\n }\n else {\n // animating Action.PrevView requires adding an additional view after the rendered views\n this.prevAnimationDate = cloneDate(this.dates[this.dates.length - 1]);\n }\n // run cdr to render the additional view\n this.cdr.detectChanges();\n container.querySelectorAll('table').forEach(table => {\n this.renderer.setStyle(table, 'width', `${tableWidth}px`);\n if (this.views === 1) {\n this.renderer.setStyle(table, 'min-width', `${initialContainerWidth}px`);\n }\n });\n // we always slide by the width of 1 table\n // cross-browser compatibility is ensured by measuring the client rectangle and substracting the gap\n const tabRect = table.getBoundingClientRect();\n const containerGap = parseFloat(getComputedStyle(container).columnGap);\n const start = action === Action.NextView ? 'translateX(0)' : `translateX(-${tabRect.width + containerGap}px)`;\n const end = action === Action.NextView ? `translateX(-${tabRect.width + containerGap}px)` : 'translateX(0)';\n if (!this.animation) {\n this.animation = container.animate([\n { transform: start },\n { transform: end }\n ], {\n duration: 500,\n easing: 'ease-out'\n });\n this.animation.oncancel = this.animation.onfinish = () => {\n // clear all inline styles\n this.renderer.removeStyle(container, 'width');\n this.renderer.removeStyle(container, 'overflow');\n container.querySelectorAll('table').forEach(table => {\n this.renderer.removeStyle(table, 'width');\n });\n // clear the animation and the animation view\n this.animation = null;\n this.nextAnimationDate = null;\n this.prevAnimationDate = null;\n // run cdr to remove additional animation view from the markup\n this.cdr.detectChanges();\n };\n }\n else {\n // if animation is already running, cancel it and show the end navigation result on multiple prev/next button clicks\n this.animation.cancel();\n }\n }\n navigate(action) {\n if (this.animateNavigation && isDocumentAvailable() && isPresent(this.element.nativeElement.animate)) {\n this.animateView(action);\n }\n const candidate = this.move(action);\n const list = this.service.datesList(candidate, this.getTake(this.skip));\n if (this.isListInRange(list)) {\n this.dates = list;\n }\n this.activeDate = cloneDate(this.dates[0]);\n this.focusedDate = cloneDate(candidate);\n this.cdr.markForCheck();\n this.activeDateChange.emit(this.activeDate);\n return cloneDate(candidate);\n }\n canNavigate(action) {\n if (!this.service) {\n return false;\n }\n return this.isListInRange(this.service.datesList(this.move(action), this.getTake(this.skip)));\n }\n setTableMinWidth() {\n const container = this.element.nativeElement;\n const table = container.querySelector('table');\n if (table) {\n const containerWidth = parseFloat(getComputedStyle(container).width);\n this.renderer.setStyle(table, 'min-width', `${containerWidth}px`);\n }\n }\n intlChange() {\n this.weekNames = this.weekService.getWeekNames(this.weekNumber);\n this.cdr.markForCheck();\n }\n clampDate(value) {\n return dateInRange(value, this.min, this.max);\n }\n move(action) {\n return this.service.move(this.dates[0] || this.focusedDate, action);\n }\n isListInRange(list) {\n const lowerBound = this.service.beginningOfPeriod(this.min);\n const upperBound = this.service.beginningOfPeriod(this.service.addToDate(this.max, 1));\n return lowerBound <= list[0] && list[list.length - 1] < upperBound;\n }\n isInDates(value) {\n return this.service.isInArray(value, this.dates);\n }\n getTake(skip) {\n return Math.min(this.total - skip, this.views);\n }\n}\nHorizontalViewListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HorizontalViewListComponent, deps: [{ token: BusViewService }, { token: i1.IntlService }, { token: WeekNamesService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nHorizontalViewListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HorizontalViewListComponent, selector: \"kendo-calendar-horizontal\", inputs: { cellTemplateRef: \"cellTemplateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\", activeRangeEnd: \"activeRangeEnd\", activeView: \"activeView\", cellUID: \"cellUID\", focusedDate: \"focusedDate\", isActive: \"isActive\", min: \"min\", max: \"max\", selectionRange: \"selectionRange\", selectedDates: \"selectedDates\", views: \"views\", showViewHeader: \"showViewHeader\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\", activeDateChange: \"activeDateChange\" }, host: { properties: { \"class.k-calendar-view\": \"this.getComponentClass\", \"class.k-hstack\": \"this.getComponentClass\", \"class.k-align-items-start\": \"this.getComponentClass\", \"class.k-justify-content-center\": \"this.getComponentClass\", \"class.k-calendar-monthview\": \"this.getComponentMonthClass\", \"class.k-calendar-yearview\": \"this.getComponentYearClass\", \"class.k-calendar-decadeview\": \"this.getComponentDecadeClass\", \"class.k-calendar-centuryview\": \"this.getComponentCenturyClass\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n \n {{ getCaptionTitle(date) }}\n \n \n {{name}}\n \n \n \n \n \n \n\n \n \n \n\n \n \n\n \n \n \n `, isInline: true, components: [{ type: ViewComponent, selector: \"[kendoCalendarView]\", inputs: [\"direction\", \"isActive\", \"activeView\", \"cellUID\", \"focusedDate\", \"viewDate\", \"activeRangeEnd\", \"selectionRange\", \"min\", \"max\", \"selectedDates\", \"weekNumber\", \"viewIndex\", \"templateRef\", \"weekNumberTemplateRef\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"cellEnter\", \"cellLeave\"] }], directives: [{ type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HorizontalViewListComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-calendar-horizontal',\n template: `\n \n \n {{ getCaptionTitle(date) }}\n \n \n {{name}}\n \n \n \n \n \n \n\n \n \n \n\n \n \n\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i1.IntlService }, { type: WeekNamesService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { cellTemplateRef: [{\n type: Input\n }], weekNumberTemplateRef: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], activeView: [{\n type: Input\n }], cellUID: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], isActive: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], selectedDates: [{\n type: Input\n }], views: [{\n type: Input\n }], showViewHeader: [{\n type: Input\n }], animateNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], cellClick: [{\n type: Output\n }], weekNumberCellClick: [{\n type: Output\n }], cellEnter: [{\n type: Output\n }], cellLeave: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-view\"]\n }, {\n type: HostBinding,\n args: [\"class.k-hstack\"]\n }, {\n type: HostBinding,\n args: [\"class.k-align-items-start\"]\n }, {\n type: HostBinding,\n args: [\"class.k-justify-content-center\"]\n }], getComponentMonthClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-monthview\"]\n }], getComponentYearClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-yearview\"]\n }], getComponentDecadeClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-decadeview\"]\n }], getComponentCenturyClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-centuryview\"]\n }] } });\n\n/**\n * @hidden\n */\nclass HeaderComponent {\n constructor(bus, cdr, localization, intl, disabledDatesService) {\n this.bus = bus;\n this.cdr = cdr;\n this.localization = localization;\n this.intl = intl;\n this.disabledDatesService = disabledDatesService;\n this.navigate = true;\n this.todayAvailable = true;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.rangeLength = 1;\n this.isPrevDisabled = true;\n this.isNextDisabled = true;\n this.showNavigationButtons = false;\n this.todayButtonClick = new EventEmitter();\n this.prevButtonClick = new EventEmitter();\n this.nextButtonClick = new EventEmitter();\n this.getComponentClass = true;\n this.subscriptions = new Subscription();\n }\n ngOnInit() {\n this.subscriptions.add(this.intl.changes.subscribe(this.intlChange.bind(this)));\n this.subscriptions.add(this.localization.changes.subscribe(this.l10nChange.bind(this)));\n this.subscriptions.add(this.disabledDatesService.changes.subscribe(this.setTodayAvailability.bind(this)));\n }\n ngOnChanges(_) {\n const service = this.bus.service(this.activeView);\n if (!service) {\n return;\n }\n this.activeViewValue = CalendarViewEnum[this.activeView];\n this.todayMessage = this.localization.get('today');\n this.setTodayAvailability();\n this.navigate = this.bus.canMoveUp(this.activeView);\n this.title = this.getTitle();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n handleTodayClick() {\n if (!this.todayAvailable) {\n return;\n }\n this.bus.moveToBottom(this.activeView);\n this.todayButtonClick.emit(dateInRange(getToday(), this.min, this.max));\n }\n handleNavigation() {\n if (!this.navigate) {\n return;\n }\n this.bus.moveUp(this.activeView);\n }\n intlChange() {\n if (this.currentDate && this.bus.service(this.activeView)) {\n this.title = this.getTitle();\n this.cdr.markForCheck();\n }\n }\n l10nChange() {\n this.prevButtonTitle = this.localization.get('prevButtonTitle');\n this.nextButtonTitle = this.localization.get('nextButtonTitle');\n this.todayMessage = this.localization.get('today');\n this.cdr.markForCheck();\n }\n getTitle() {\n if (!this.currentDate) {\n return '';\n }\n const service = this.bus.service(this.activeView);\n const take = this.rangeLength - 1;\n const title = service.title(this.currentDate);\n const nextDate = service.addToDate(this.currentDate, take);\n if (take < 1 || !service.isInRange(nextDate, this.min, this.max)) {\n return title;\n }\n return `${title} - ${service.title(nextDate)}`;\n }\n setTodayAvailability() {\n const today = getToday();\n const isTodayInRange = isInRange(today, getDate(this.min), getDate(this.max));\n const isDisabled = this.disabledDatesService.isDateDisabled(today);\n this.todayAvailable = isTodayInRange && !isDisabled;\n this.cdr.markForCheck();\n }\n}\nHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderComponent, deps: [{ token: BusViewService }, { token: i0.ChangeDetectorRef }, { token: i1$1.LocalizationService }, { token: i1.IntlService }, { token: DisabledDatesService }], target: i0.ɵɵFactoryTarget.Component });\nHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderComponent, selector: \"kendo-calendar-header\", inputs: { activeView: \"activeView\", currentDate: \"currentDate\", min: \"min\", max: \"max\", rangeLength: \"rangeLength\", templateRef: \"templateRef\", isPrevDisabled: \"isPrevDisabled\", isNextDisabled: \"isNextDisabled\", showNavigationButtons: \"showNavigationButtons\" }, outputs: { todayButtonClick: \"todayButtonClick\", prevButtonClick: \"prevButtonClick\", nextButtonClick: \"nextButtonClick\" }, host: { properties: { \"class.k-calendar-header\": \"this.getComponentClass\", \"class.k-hstack\": \"this.getComponentClass\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n {{title}}\n \n \n \n \n \n \n \n \n {{ todayMessage }}\n \n \n \n \n \n `, isInline: true, directives: [{ type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-calendar-header',\n template: `\n \n {{title}}\n \n \n \n \n \n \n \n \n {{ todayMessage }}\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i0.ChangeDetectorRef }, { type: i1$1.LocalizationService }, { type: i1.IntlService }, { type: DisabledDatesService }]; }, propDecorators: { activeView: [{\n type: Input\n }], currentDate: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeLength: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], isPrevDisabled: [{\n type: Input\n }], isNextDisabled: [{\n type: Input\n }], showNavigationButtons: [{\n type: Input\n }], todayButtonClick: [{\n type: Output\n }], prevButtonClick: [{\n type: Output\n }], nextButtonClick: [{\n type: Output\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-header\"]\n }, {\n type: HostBinding,\n args: [\"class.k-hstack\"]\n }] } });\n\nconst KEY_TO_ACTION = {\n '33': Action.PrevView,\n '34': Action.NextView,\n '35': Action.LastInView,\n '36': Action.FirstInView,\n '37': Action.Left,\n '38': Action.Up,\n '39': Action.Right,\n '40': Action.Down,\n 'meta+38': Action.UpperView,\n 'meta+40': Action.LowerView\n};\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(bus) {\n this.bus = bus;\n }\n action(event) {\n const action = `${event.ctrlKey || event.metaKey ? 'meta+' : ''}${event.keyCode}`;\n return KEY_TO_ACTION[action];\n }\n move(value, action, activeView) {\n const service = this.bus.service(activeView);\n if (!service) {\n return value;\n }\n if (action === Action.UpperView && this.bus.canMoveUp(activeView)) {\n this.bus.moveUp(activeView);\n return value;\n }\n if (action === Action.LowerView && this.bus.canMoveDown(activeView)) {\n this.bus.moveDown(activeView);\n return value;\n }\n return service.move(value, action);\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: BusViewService }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: BusViewService }]; } });\n\n/**\n * @hidden\n */\nclass SelectionService {\n constructor(bus) {\n this.bus = bus;\n }\n performSelection(args) {\n let { date, modifiers, selectionMode, activeViewEnum, rangePivot } = args;\n let selectedDates = args.selectedDates.slice();\n if (selectionMode === 'multiple') {\n if (modifiers.ctrlKey || modifiers.metaKey) {\n if (this.isDateSelected(selectedDates, date)) {\n selectedDates = selectedDates.filter(item => !isEqual(item, date));\n }\n else {\n selectedDates.push(date);\n }\n rangePivot = date;\n }\n else if (modifiers.shiftKey) {\n const [start, end] = sortDates([rangePivot || date, date]);\n selectedDates = this.bus.service(activeViewEnum).dateRange(start, end);\n rangePivot = date > selectedDates[0] ? selectedDates[0] : last(selectedDates);\n }\n else {\n selectedDates = [date];\n rangePivot = date;\n }\n }\n else {\n selectedDates = [date];\n rangePivot = date;\n }\n return { selectedDates, rangePivot };\n }\n isDateSelected(selectedDates, date) {\n return selectedDates.some(item => isEqual(item, date));\n }\n}\nSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, deps: [{ token: BusViewService }], target: i0.ɵɵFactoryTarget.Injectable });\nSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: BusViewService }]; } });\n\n/**\n * Used for rendering the cell content of the Calendar. To define the cell template, nest an `` tag\n * with the `kendoCalendarCellTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current date, use the `let-date` directive. To provide more details\n * about the current cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * > `kendoCalendarCellTemplate` is equivalent to\n * > [`kendoCalendarMonthCellTemplate`]({% slug api_dateinputs_monthcelltemplatedirective %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{date.getDate()}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass CellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CellTemplateDirective, selector: \"[kendoCalendarCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the month cell content of the Calendar. To define the month cell template, nest an `` tag\n * with the `kendoCalendarMonthCellTemplate` directive inside the component tag. The template context is set to the current\n * component. To get a reference to the current date, use the `let-date` directive. To provide more details about the current\n * month cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass MonthCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nMonthCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nMonthCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MonthCellTemplateDirective, selector: \"[kendoCalendarMonthCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MonthCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarMonthCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the year cell content of the Calendar. To define the year cell template, nest an\n * `` tag with the `kendoCalendarYearCellTemplate` directive inside the component tag.\n * The template context is set to the current component. To get a reference to the current date, use\n * the `let-date` directive. To provide more details about the current year cell, get a reference to the\n * current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public activeView: CalendarView = 'year';\n * }\n * ```\n */\nclass YearCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nYearCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nYearCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: YearCellTemplateDirective, selector: \"[kendoCalendarYearCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: YearCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarYearCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the decade cell content of the Calendar. To define the decade cell template, nest an ``\n * tag with the `kendoCalendarDecadeCellTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current date, use the `let-date` directive. To provide more details about\n * the current decade cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public activeView: CalendarView = 'decade';\n * }\n * ```\n */\nclass DecadeCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDecadeCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nDecadeCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DecadeCellTemplateDirective, selector: \"[kendoCalendarDecadeCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DecadeCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarDecadeCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the century cell content of the Calendar. To define the century cell template, nest an ``\n * tag with the `kendoCalendarCenturyCellTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current date, use the `let-date` directive. To provide more details about\n * the current century cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public activeView: CalendarView = 'century';\n * }\n * ```\n */\nclass CenturyCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCenturyCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCenturyCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CenturyCellTemplateDirective, selector: \"[kendoCalendarCenturyCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CenturyCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarCenturyCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the week number cell content in the month view of the Calendar. To define the month week number cell template,\n * nest an `` tag with the `kendoCalendarWeekNumberCellTemplate` directive inside the component tag. The template\n * context is set to the current component. To get a reference to the current date, use the `let-date` directive. To provide more\n * details about the current week number cell, get a reference to the current `cellContext` by using the `let-cellContext` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{context.formattedValue}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass WeekNumberCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nWeekNumberCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNumberCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nWeekNumberCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WeekNumberCellTemplateDirective, selector: \"[kendoCalendarWeekNumberCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WeekNumberCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarWeekNumberCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Used for rendering the header title of the Calendar. To define the header title template, nest an `` tag\n * with the `kendoCalendarHeaderTitleTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current title, use the `let-title` directive. To provide more details about\n * the current title, get a reference to the current `date` by using the `let-date` directive or get a reference to the\n * current active view by using the `let-activeView` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{title}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass HeaderTitleTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nHeaderTitleTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTitleTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderTitleTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderTitleTemplateDirective, selector: \"[kendoCalendarHeaderTitleTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTitleTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarHeaderTitleTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nconst minValidator = (minValue) => {\n return (control) => {\n const err = {\n minError: {\n minValue: minValue,\n value: control.value\n }\n };\n if (!minValue || !control.value) {\n return null;\n }\n return control.value < minValue ? err : null;\n };\n};\n\n/**\n * @hidden\n */\nconst maxValidator = (maxValue) => {\n return (control) => {\n const err = {\n maxError: {\n maxValue: maxValue,\n value: control.value\n }\n };\n if (!maxValue || !control.value) {\n return null;\n }\n return control.value > maxValue ? err : null;\n };\n};\n\nconst noop = () => null;\n/**\n * @hidden\n */\nconst disabledDatesRangeValidator = (isDateDisabled) => {\n if (!isPresent(isDateDisabled)) {\n return noop;\n }\n return (selectedRange) => {\n const isRangeComplete = isPresent(selectedRange) && isPresent(selectedRange.start) && isPresent(selectedRange.end);\n if (!isRangeComplete || selectedRange.start > selectedRange.end) {\n return null;\n }\n const disabledDates = disabledDatesInRange(selectedRange.start, selectedRange.end, isDateDisabled);\n const error = {\n disabledDatesInRange: disabledDates\n };\n return disabledDates.length ? error : null;\n };\n};\n\n/**\n * @hidden\n */\nclass Messages$1 extends ComponentMessages {\n}\nMessages$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages$1, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages$1.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages$1, selector: \"kendo-multiview-calendar-messages-base\", inputs: { today: \"today\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages$1, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-multiview-calendar-messages-base'\n }]\n }], propDecorators: { today: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass MultiViewCalendarLocalizedMessagesDirective extends Messages$1 {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nMultiViewCalendarLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nMultiViewCalendarLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiViewCalendarLocalizedMessagesDirective, selector: \"[kendoMultiViewCalendarLocalizedMessages]\", providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoMultiViewCalendarLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst BOTTOM_VIEW_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-bottomview';\nconst TOP_VIEW_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-topview';\nconst MIN_DOC_LINK$3 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-min';\nconst MAX_DOC_LINK$3 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-max';\nconst VALUE_DOC_LINK$5 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/calendar/#toc-using-with-json';\n/**\n * @hidden\n */\nconst RANGE_CALENDAR_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiViewCalendarComponent)\n};\n/**\n * @hidden\n */\nconst RANGE_CALENDAR_RANGE_VALIDATORS = {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MultiViewCalendarComponent)\n};\n/**\n * Represents the Kendo UI MultiViewCalendar component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass MultiViewCalendarComponent {\n constructor(bus, element, navigator, renderer, cdr, zone, disabledDatesService, selectionService) {\n this.bus = bus;\n this.element = element;\n this.navigator = navigator;\n this.renderer = renderer;\n this.cdr = cdr;\n this.zone = zone;\n this.disabledDatesService = disabledDatesService;\n this.selectionService = selectionService;\n /**\n * @hidden\n */\n this.id = guid();\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form.\n */\n this.rangeValidation = false;\n /**\n * Determines whether the built-in validator for disabled\n * date ranges is enforced when validating a form\n * ([see example]({% slug disabled_dates_multiviewcalendar %}#toc-validation)).\n */\n this.disabledDatesRangeValidation = false;\n /**\n * Sets the Calendar selection mode\n * ([see example]({% slug multiple_selection_multiviewcalendar %})).\n *\n * The available values are:\n * * `single` (default)\n * * `multiple`\n */\n this.selection = 'single';\n /**\n * Sets or gets the `disabled` property of the Calendar and\n * determines whether the component is active\n * ([see example]({% slug disabled_multiviewcalendar %})).\n */\n this.disabled = false;\n /**\n * Sets or gets the `tabindex` property of the Calendar. Based on the\n * [HTML `tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) behavior,\n * it determines whether the component is focusable.\n */\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.isActive = false;\n /**\n * @hidden\n */\n this.isHeaderActive = false;\n /**\n * Defines the active view that the Calendar initially renders\n * ([see example]({% slug activeview_multiviewcalendar %})).\n * By default, the active view is `month`.\n *\n * > You have to set `activeView` within the `topView`-`bottomView` range.\n */\n this.activeView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the bottommost view, to which the user can navigate\n * ([see example]({% slug dates_multiviewcalendar %}#toc-partial-dates)).\n */\n this.bottomView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the topmost view, to which the user can navigate.\n */\n this.topView = CalendarViewEnum[CalendarViewEnum.century];\n /**\n * Determines whether to display a header for every view (for example the month name).\n */\n this.showViewHeader = false;\n /**\n * Determines whether to enable animation when navigating to previous/next view.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateNavigation = false;\n /**\n * Determines whether to display a week number column in the `month` view\n * ([see example]({% slug weeknumcolumn_multiviewcalendar %})).\n */\n this.weekNumber = false;\n /**\n * Sets or gets the `views` property of the Calendar and\n * defines the number of rendered months.\n */\n this.views = 2;\n /**\n * Fires when the active view is changed\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.activeViewChange = new EventEmitter();\n /**\n * Fires when navigating in the currently active view\n * ([more information and example]({% slug events_multiviewcalendar %})).\n */\n this.navigate = new EventEmitter();\n /**\n * Fires when a view cell is entered\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.cellEnter = new EventEmitter();\n /**\n * Fires when a view cell is leaved\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.cellLeave = new EventEmitter();\n /**\n * Fires when the value is changed\n * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * @hidden\n */\n this.blurEvent = new EventEmitter();\n this.cellUID = guid();\n this.isHovered = false;\n this.isPrevDisabled = true;\n this.isNextDisabled = true;\n this.prevView = Action.PrevView;\n this.nextView = Action.NextView;\n this.selectedDates = [];\n this._min = new Date(MIN_DATE);\n this._max = new Date(MAX_DATE);\n this._focusedDate = getToday();\n this.resolvedPromise = Promise.resolve();\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.disabledDatesRangeValidateFn = noop$2;\n this.subscriptions = new Subscription();\n this.setClasses(element.nativeElement);\n }\n /**\n * Sets or gets the `focusedDate` property of the Calendar and\n * defines the focused date of the component\n * ([see example]({% slug dates_multiviewcalendar %}#toc-focused-dates)).\n *\n * > If the Calendar is out of the min or max range, it normalizes the defined `focusedDate`.\n */\n set focusedDate(focusedDate) {\n this._focusedDate = focusedDate || getToday();\n }\n get focusedDate() {\n return this._focusedDate;\n }\n /**\n * Sets or gets the `min` property of the Calendar and\n * defines the minimum allowed date value.\n * By default, the `min` value is `1900-1-1`.\n */\n set min(min) {\n this._min = min || new Date(MIN_DATE);\n }\n get min() {\n return this._min;\n }\n /**\n * Sets or gets the `max` property of the Calendar and\n * defines the maximum allowed date value.\n * By default, the `max` value is `2099-12-31`.\n */\n set max(max) {\n this._max = max || new Date(MAX_DATE);\n }\n get max() {\n return this._max;\n }\n /**\n * Sets or gets the `value` property of the Calendar and defines the selected value of the component.\n *\n * > The `value` has to be a valid\n * [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date)\n * instance when in `single` selection mode or an array of valid JavaScript Date instances when in `multiple` selection mode.\n */\n get value() {\n return this._value;\n }\n set value(candidate) {\n this.verifyValue(candidate);\n this._value = Array.isArray(candidate) ?\n candidate.filter(date => isPresent(date)).map(element => cloneDate(element)) :\n cloneDate(candidate);\n const selection = [].concat(candidate).filter(date => isPresent(date)).map(date => cloneDate(date));\n if (!areDatesEqual(selection, this.selectedDates)) {\n const lastSelected = last(selection);\n this.rangePivot = cloneDate(lastSelected);\n this.focusedDate = cloneDate(lastSelected) || this.focusedDate;\n this.selectedDates = selection;\n }\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the dates of the MultiViewCalendar that will be disabled\n * ([see example]({% slug disabled_dates_multiviewcalendar %})).\n */\n set disabledDates(value) {\n this.disabledDatesService.initialize(value);\n }\n /**\n * Sets or gets the `selectionRange` property of the Calendar and\n * defines the selection range of the component\n * ([see example]({% slug dates_multiviewcalendar %}#toc-selection-range)).\n */\n set selectionRange(range) {\n this._selectionRange = range;\n if (this.disabledDatesRangeValidation) {\n this.onValidatorChange();\n }\n }\n get selectionRange() {\n return this._selectionRange;\n }\n /**\n * @hidden\n *\n * Defines the template for each cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set cellTemplateRef(template) {\n this._cellTemplateRef = template;\n }\n get cellTemplateRef() {\n return this._cellTemplateRef || this.cellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each month cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set monthCellTemplateRef(template) {\n this._monthCellTemplateRef = template;\n }\n get monthCellTemplateRef() {\n return this._monthCellTemplateRef || this.monthCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each year cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set yearCellTemplateRef(template) {\n this._yearCellTemplateRef = template;\n }\n get yearCellTemplateRef() {\n return this._yearCellTemplateRef || this.yearCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each decade cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set decadeCellTemplateRef(template) {\n this._decadeCellTemplateRef = template;\n }\n get decadeCellTemplateRef() {\n return this._decadeCellTemplateRef || this.decadeCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each century cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set centuryCellTemplateRef(template) {\n this._centuryCellTemplateRef = template;\n }\n get centuryCellTemplateRef() {\n return this._centuryCellTemplateRef || this.centuryCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the week cell.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set weekNumberTemplateRef(template) {\n this._weekNumberTemplateRef = template;\n }\n get weekNumberTemplateRef() {\n return this._weekNumberTemplateRef || this.weekNumberTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the header title.\n * Takes precedence over nested templates in the KendoMultiViewCalendar tag.\n */\n set headerTitleTemplateRef(template) {\n this._headerTitleTemplateRef = template;\n }\n get headerTitleTemplateRef() {\n return this._headerTitleTemplateRef || this.headerTitleTemplate;\n }\n get activeViewEnum() {\n const activeView = CalendarViewEnum[this.activeView];\n return activeView < this.bottomViewEnum ? this.bottomViewEnum : activeView;\n }\n get bottomViewEnum() {\n return CalendarViewEnum[this.bottomView];\n }\n get topViewEnum() {\n return CalendarViewEnum[this.topView];\n }\n get widgetId() {\n return this.id;\n }\n get calendarTabIndex() {\n return this.disabled ? undefined : this.tabIndex;\n }\n get ariaDisabled() {\n return this.disabled;\n }\n get ariaActivedescendant() {\n return this.cellUID + this.focusedDate.getTime();\n }\n /**\n * @hidden\n */\n handleFocusout(event) {\n const relatedTarget = event.relatedTarget;\n if (!this.element.nativeElement.contains(relatedTarget)) {\n this.blurEvent.emit(event);\n this.onControlTouched();\n }\n this.isActive = false;\n this.isHovered = false; //ensure that hovered is also not active\n this.isHeaderActive = this.headerElement.nativeElement.contains(relatedTarget);\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isActive = true;\n this.isHeaderActive = false;\n }\n /**\n * @hidden\n */\n handleMouseEnter() {\n this.isHovered = true;\n }\n /**\n * @hidden\n */\n handleMouseLeave() {\n this.isHovered = false;\n }\n /**\n * @hidden\n */\n handleMousedown(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n handleClick() {\n if (this.isActive) {\n return;\n }\n this.focus();\n }\n /**\n * @hidden\n */\n keydown(event) {\n if (this.isHeaderActive) {\n return;\n }\n if (event.keyCode === Keys.Enter) {\n this.performSelection(this.focusedDate, event);\n }\n const candidate = dateInRange(this.navigator.move(this.focusedDate, this.navigator.action(event), this.activeViewEnum), this.min, this.max);\n if (isEqual(this.focusedDate, candidate)) {\n return;\n }\n this.focusedDate = candidate;\n event.preventDefault();\n const isSameView = this.bus.service(this.activeViewEnum).isInArray(this.focusedDate, this.viewList.dates);\n if (!isSameView) {\n this.emitNavigate(this.focusedDate);\n }\n }\n ngOnInit() {\n this.subscriptions.add(this.bus.viewChanged.subscribe(({ view }) => {\n this.activeView = CalendarViewEnum[view];\n this.activeViewChange.emit(this.activeView);\n this.cdr.detectChanges();\n this.updateButtonState();\n }));\n }\n ngOnChanges(changes) {\n this.verifyChanges();\n this.bus.configure(this.bottomViewEnum, this.topViewEnum);\n if (hasExistingValue(changes, 'focusedDate')) {\n const focusedDate = changes.focusedDate.currentValue;\n this.focusedDate = dateInRange(focusedDate, this.min, this.max);\n }\n if (changes.min || changes.max || changes.rangeValidation || changes.disabledDates || changes.disabledDatesRangeValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.disabledDatesRangeValidateFn = this.disabledDatesRangeValidation ? disabledDatesRangeValidator(this.disabledDatesService.isDateDisabled) : noop$2;\n this.onValidatorChange();\n }\n if (changes.min || changes.max || changes.focusedDate || changes.activeView) {\n this.updateButtonState();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n ngAfterViewInit() {\n this.updateButtonState();\n }\n /**\n * Focuses the host element of the Calendar.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.focus();\n }\n /**\n * Blurs the Calendar component.\n */\n blur() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.blur();\n }\n /**\n * @hidden\n */\n handleHeaderFocus() {\n this.isHeaderActive = true;\n }\n /**\n * @hidden\n */\n handleDateChange(args) {\n const canNavigateDown = this.bus.canMoveDown(this.activeViewEnum);\n const availableDates = args.selectedDates.filter(date => !this.disabledDatesService.isDateDisabled(date));\n this.focusedDate = args.focusedDate || this.focusedDate;\n const sameDates = !canNavigateDown && areDatesEqual(availableDates, this.selectedDates);\n if (this.disabled || sameDates) {\n return;\n }\n if (canNavigateDown) {\n this.bus.moveDown(this.activeViewEnum);\n return;\n }\n if (this.disabledDatesService.isDateDisabled(this.focusedDate)) {\n return;\n }\n this.selectedDates = availableDates.map(date => cloneDate(date));\n this.value = this.parseSelectionToValue(availableDates);\n this.onControlChange(this.parseSelectionToValue(availableDates));\n this.valueChange.emit(this.parseSelectionToValue(availableDates));\n }\n /**\n * @hidden\n */\n handleTodayButtonClick(args) {\n const todayDate = args.focusedDate;\n const isSameView = this.bus.service(this.activeViewEnum).isInArray(todayDate, this.viewList.dates);\n const isBottomView = !this.bus.canMoveDown(this.activeViewEnum);\n if (!isSameView && isBottomView) {\n this.emitNavigate(todayDate);\n }\n this.handleDateChange(args);\n }\n /**\n * @hidden\n */\n setActiveDate(date) {\n this.activeDate = cloneDate(date);\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n writeValue(candidate) {\n this.verifyValue(candidate);\n this.value = candidate;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control) || this.disabledDatesRangeValidateFn(this.selectionRange);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n */\n activeCellTemplate() {\n switch (this.activeViewEnum) {\n case CalendarViewEnum.month:\n return this.monthCellTemplateRef || this.cellTemplateRef;\n case CalendarViewEnum.year:\n return this.yearCellTemplateRef;\n case CalendarViewEnum.decade:\n return this.decadeCellTemplateRef;\n case CalendarViewEnum.century:\n return this.centuryCellTemplateRef;\n default:\n return null;\n }\n }\n /**\n * @hidden\n */\n navigateView(action) {\n this.focusedDate = this.viewList.navigate(action);\n this.updateButtonState();\n this.emitNavigate(this.focusedDate);\n }\n /**\n * @hidden\n */\n emitNavigate(focusedDate) {\n const activeView = CalendarViewEnum[this.activeViewEnum];\n this.navigate.emit({ activeView, focusedDate });\n }\n /**\n * @hidden\n */\n emitCellEvent(emitter, args) {\n if (hasObservers(emitter)) {\n this.zone.run(() => {\n emitter.emit(args);\n });\n }\n }\n /**\n * @hidden\n */\n handleCellClick({ date, modifiers }) {\n this.performSelection(date, modifiers);\n const isSameView = this.bus.service(this.activeViewEnum).isInArray(this.focusedDate, this.viewList.dates);\n if (!isSameView) {\n this.emitNavigate(this.focusedDate);\n }\n }\n /**\n * @hidden\n */\n handleWeekNumberClick(dates) {\n if (this.selection === 'single') {\n return;\n }\n this.zone.run(() => {\n this.handleDateChange({\n selectedDates: dates,\n focusedDate: last(dates)\n });\n });\n }\n setClasses(element) {\n this.renderer.addClass(element, 'k-widget');\n this.renderer.addClass(element, 'k-calendar');\n this.renderer.addClass(element, 'k-calendar-range');\n }\n verifyChanges() {\n if (!isDevMode()) {\n return;\n }\n if (this.min > this.max) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK$3} and ${MAX_DOC_LINK$3}.`);\n }\n if (this.bottomViewEnum > this.topViewEnum) {\n throw new Error(`The topView should be greater than bottomView. See ${BOTTOM_VIEW_DOC_LINK$1} and ${TOP_VIEW_DOC_LINK$1}.`);\n }\n }\n verifyValue(candidate) {\n if (!isDevMode()) {\n return;\n }\n if (this.selection === 'single' && candidate && !(candidate instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$5} for possible resolution.`);\n }\n else if (this.selection === 'multiple' && candidate && Array.isArray(candidate)) {\n const onlyDates = candidate.every(value => value instanceof Date);\n if (!onlyDates) {\n throw new Error(`The 'value' should be an array of valid JavaScript Date instances. Check ${VALUE_DOC_LINK$5} for possible resolution.`);\n }\n }\n }\n updateButtonState() {\n this.resolvedPromise.then(() => {\n this.isPrevDisabled = !this.viewList.canNavigate(this.prevView);\n this.isNextDisabled = !this.viewList.canNavigate(this.nextView);\n this.cdr.markForCheck();\n });\n }\n parseSelectionToValue(selection) {\n selection = selection || [];\n return this.selection === 'single' ? cloneDate(last(selection)) : selection.map(date => cloneDate(date));\n }\n performSelection(date, selectionModifiers) {\n const selection = this.selectionService.performSelection({\n date: date,\n modifiers: selectionModifiers,\n selectionMode: this.selection,\n activeViewEnum: this.activeViewEnum,\n rangePivot: this.rangePivot,\n selectedDates: this.selectedDates\n });\n this.rangePivot = selection.rangePivot;\n this.handleDateChange({\n selectedDates: selection.selectedDates,\n focusedDate: date\n });\n }\n}\nMultiViewCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarComponent, deps: [{ token: BusViewService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: DisabledDatesService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Component });\nMultiViewCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiViewCalendarComponent, selector: \"kendo-multiviewcalendar\", inputs: { id: \"id\", focusedDate: \"focusedDate\", min: \"min\", max: \"max\", rangeValidation: \"rangeValidation\", disabledDatesRangeValidation: \"disabledDatesRangeValidation\", selection: \"selection\", value: \"value\", disabled: \"disabled\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", isActive: \"isActive\", disabledDates: \"disabledDates\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", showViewHeader: \"showViewHeader\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\", activeRangeEnd: \"activeRangeEnd\", selectionRange: \"selectionRange\", views: \"views\", cellTemplateRef: [\"cellTemplate\", \"cellTemplateRef\"], monthCellTemplateRef: [\"monthCellTemplate\", \"monthCellTemplateRef\"], yearCellTemplateRef: [\"yearCellTemplate\", \"yearCellTemplateRef\"], decadeCellTemplateRef: [\"decadeCellTemplate\", \"decadeCellTemplateRef\"], centuryCellTemplateRef: [\"centuryCellTemplate\", \"centuryCellTemplateRef\"], weekNumberTemplateRef: [\"weekNumberTemplate\", \"weekNumberTemplateRef\"], headerTitleTemplateRef: [\"headerTitleTemplate\", \"headerTitleTemplateRef\"] }, outputs: { activeViewChange: \"activeViewChange\", navigate: \"navigate\", cellEnter: \"cellEnter\", cellLeave: \"cellLeave\", valueChange: \"valueChange\", blurEvent: \"blur\" }, host: { listeners: { \"focusout\": \"handleFocusout($event)\", \"focus\": \"handleFocus()\", \"mouseenter\": \"handleMouseEnter()\", \"mouseleave\": \"handleMouseLeave()\", \"mousedown\": \"handleMousedown($event)\", \"click\": \"handleClick()\", \"keydown\": \"keydown($event)\" }, properties: { \"attr.id\": \"this.widgetId\", \"attr.tabindex\": \"this.calendarTabIndex\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"class.k-disabled\": \"this.ariaDisabled\", \"attr.aria-activedescendant\": \"this.ariaActivedescendant\" } }, providers: [\n BusViewService,\n RANGE_CALENDAR_VALUE_ACCESSOR,\n RANGE_CALENDAR_RANGE_VALIDATORS,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiviewcalendar'\n },\n NavigationService,\n SelectionService\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"headerElement\", first: true, predicate: HeaderComponent, descendants: true, read: ElementRef }, { propertyName: \"viewList\", first: true, predicate: HorizontalViewListComponent, descendants: true }], exportAs: [\"kendo-multiviewcalendar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, components: [{ type: HeaderComponent, selector: \"kendo-calendar-header\", inputs: [\"activeView\", \"currentDate\", \"min\", \"max\", \"rangeLength\", \"templateRef\", \"isPrevDisabled\", \"isNextDisabled\", \"showNavigationButtons\"], outputs: [\"todayButtonClick\", \"prevButtonClick\", \"nextButtonClick\"] }, { type: HorizontalViewListComponent, selector: \"kendo-calendar-horizontal\", inputs: [\"cellTemplateRef\", \"weekNumberTemplateRef\", \"activeRangeEnd\", \"activeView\", \"cellUID\", \"focusedDate\", \"isActive\", \"min\", \"max\", \"selectionRange\", \"selectedDates\", \"views\", \"showViewHeader\", \"animateNavigation\", \"weekNumber\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"cellEnter\", \"cellLeave\", \"activeDateChange\"] }], directives: [{ type: MultiViewCalendarLocalizedMessagesDirective, selector: \"[kendoMultiViewCalendarLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-multiviewcalendar',\n providers: [\n BusViewService,\n RANGE_CALENDAR_VALUE_ACCESSOR,\n RANGE_CALENDAR_RANGE_VALIDATORS,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiviewcalendar'\n },\n NavigationService,\n SelectionService\n ],\n selector: 'kendo-multiviewcalendar',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i0.ElementRef }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: DisabledDatesService }, { type: SelectionService }]; }, propDecorators: { id: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], disabledDatesRangeValidation: [{\n type: Input\n }], selection: [{\n type: Input\n }], value: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], isActive: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], showViewHeader: [{\n type: Input\n }], animateNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], views: [{\n type: Input\n }], activeViewChange: [{\n type: Output\n }], navigate: [{\n type: Output\n }], cellEnter: [{\n type: Output\n }], cellLeave: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], blurEvent: [{\n type: Output,\n args: ['blur']\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], headerElement: [{\n type: ViewChild,\n args: [HeaderComponent, { static: false, read: ElementRef }]\n }], viewList: [{\n type: ViewChild,\n args: [HorizontalViewListComponent, { static: false }]\n }], widgetId: [{\n type: HostBinding,\n args: ['attr.id']\n }], calendarTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], ariaActivedescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], handleFocusout: [{\n type: HostListener,\n args: ['focusout', ['$event']]\n }], handleFocus: [{\n type: HostListener,\n args: [\"focus\"]\n }], handleMouseEnter: [{\n type: HostListener,\n args: [\"mouseenter\"]\n }], handleMouseLeave: [{\n type: HostListener,\n args: [\"mouseleave\"]\n }], handleMousedown: [{\n type: HostListener,\n args: [\"mousedown\", ['$event']]\n }], handleClick: [{\n type: HostListener,\n args: [\"click\"]\n }], keydown: [{\n type: HostListener,\n args: [\"keydown\", [\"$event\"]]\n }] } });\n\n/**\n * @hidden\n */\nconst update = (arr, idx, value) => ([\n ...arr.slice(0, idx + 1),\n ...(arr.slice(idx + 1).map(x => x + value))\n]);\n/**\n * @hidden\n */\nclass RowHeightService {\n constructor(total = 0, rowHeight, detailRowHeight) {\n this.total = total;\n this.rowHeight = rowHeight;\n this.detailRowHeight = detailRowHeight;\n this.offsets = [];\n this.heights = [];\n let agg = 0;\n for (let idx = 0; idx < total; idx++) {\n this.offsets.push(agg);\n agg += rowHeight;\n this.heights.push(rowHeight);\n }\n }\n height(rowIndex) {\n return this.heights[rowIndex];\n }\n expandDetail(rowIndex) {\n if (this.height(rowIndex) === this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight);\n }\n }\n collapseDetail(rowIndex) {\n if (this.height(rowIndex) > this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight * -1);\n }\n }\n index(position) {\n if (position < 0) {\n return undefined;\n }\n const result = this.offsets.reduce((prev, current, idx) => {\n if (prev !== undefined) {\n return prev;\n }\n else if (current === position) {\n return idx;\n }\n else if (current > position) {\n return idx - 1;\n }\n return undefined;\n }, undefined);\n return result === undefined ? this.total - 1 : result;\n }\n offset(rowIndex) {\n return this.offsets[rowIndex];\n }\n totalHeight() {\n return this.heights.reduce((prev, curr) => prev + curr, 0);\n }\n updateRowHeight(rowIndex, value) {\n this.heights[rowIndex] += value;\n this.offsets = update(this.offsets, rowIndex, value);\n }\n}\n\nconst normalize = x => Math.max(x, 0);\n/**\n * @hidden\n */\nclass ScrollAction {\n constructor(offset) {\n this.offset = offset;\n }\n}\n/**\n * @hidden\n */\nclass PageAction {\n constructor(skip) {\n this.skip = skip;\n }\n}\n/**\n * @hidden\n */\nclass ScrollerService {\n constructor(scrollObservable) {\n this.scrollObservable = scrollObservable;\n this.firstLoaded = 0;\n this.bottomOffset = 0;\n this.topOffset = 0;\n }\n create(rowHeightService, skip, take, total, topOffset = 0, bottomOffset = 0, direction = 'vertical') {\n this.rowHeightService = rowHeightService;\n this.firstLoaded = skip;\n this.lastLoaded = skip + take;\n this.take = take;\n this.total = total;\n this.lastScroll = 0;\n this.topOffset = topOffset;\n this.bottomOffset = bottomOffset;\n this.direction = direction;\n const subject = new ReplaySubject(2);\n const offsetBufferRows = this.rowsForHeight(topOffset);\n const skipWithOffset = normalize(skip - offsetBufferRows);\n subject.next(new ScrollAction(this.rowOffset(skipWithOffset)));\n if (offsetBufferRows) {\n subject.next(new PageAction(skipWithOffset));\n }\n this.subscription = new Observable(observer => {\n this.unsubscribe();\n this.scrollSubscription = this.scrollObservable.subscribe(x => this.onScroll(x, observer));\n }).subscribe((x) => subject.next(x));\n return subject;\n }\n destroy() {\n this.unsubscribe();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n onScroll({ scrollLeft, scrollTop, offsetHeight, offsetWidth }, observer) {\n const scrollPosition = this.direction === 'vertical' ? scrollTop : scrollLeft;\n const offsetSize = this.direction === 'vertical' ? offsetHeight : offsetWidth;\n if (this.lastScroll === scrollPosition) {\n return;\n }\n const up = this.lastScroll >= scrollPosition;\n this.lastScroll = scrollPosition;\n const firstItemIndex = this.rowHeightService.index(normalize(scrollPosition - this.topOffset));\n const lastItemIndex = this.rowHeightService.index(normalize(scrollPosition + offsetSize - this.bottomOffset));\n if (!up && lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n this.firstLoaded = firstItemIndex;\n observer.next(new ScrollAction(this.rowOffset(firstItemIndex)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n observer.next(new PageAction(this.firstLoaded));\n }\n if (up && firstItemIndex <= this.firstLoaded) {\n const nonVisibleBuffer = Math.floor(this.take * 0.3);\n this.firstLoaded = normalize(firstItemIndex - nonVisibleBuffer);\n observer.next(new ScrollAction(this.rowOffset(this.firstLoaded)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n observer.next(new PageAction(this.firstLoaded));\n }\n }\n rowOffset(index) {\n return this.rowHeightService.offset(index) + this.topOffset;\n }\n rowsForHeight(height) {\n return Math.ceil(height / this.rowHeightService.height(0));\n }\n unsubscribe() {\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n this.scrollSubscription = null;\n }\n }\n}\n\n/* eslint-disable @angular-eslint/component-selector */\n/**\n * @hidden\n */\nconst SCROLLER_FACTORY_TOKEN = new InjectionToken('dateinputs-scroll-service-factory');\n/**\n * @hidden\n */\nfunction DEFAULT_SCROLLER_FACTORY(observable) {\n return new ScrollerService(observable);\n}\n/**\n * @hidden\n */\nvar ScrollDirection;\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Backward\"] = 0] = \"Backward\";\n ScrollDirection[ScrollDirection[\"Forward\"] = 1] = \"Forward\";\n})(ScrollDirection || (ScrollDirection = {}));\nconst FRAME_DURATION = 17;\nconst scrollModifiers = {\n [ScrollDirection.Forward]: (step) => value => value + step,\n [ScrollDirection.Backward]: (step) => value => value - step\n};\nconst scrollNormalizers = {\n [ScrollDirection.Forward]: (end) => value => Math.min(value, end),\n [ScrollDirection.Backward]: (end) => value => Math.max(value, end)\n};\nconst scrollValidators = {\n [ScrollDirection.Forward]: end => start => start < end,\n [ScrollDirection.Backward]: end => start => start > end\n};\nconst differenceToScroll = (scrollTop, staticOffset, maxScrollDifference) => {\n return Math.min(Math.abs(staticOffset - scrollTop), maxScrollDifference);\n};\n/**\n * @hidden\n */\nclass VirtualizationComponent {\n constructor(scrollerFactory, container, renderer, zone) {\n this.container = container;\n this.renderer = renderer;\n this.zone = zone;\n this.direction = 'vertical';\n this.itemHeight = 1;\n this.itemWidth = 1;\n this.topOffset = 0;\n this.bottomOffset = 0;\n this.maxScrollDifference = 100;\n this.scrollOffsetSize = 0;\n this.scrollDuration = 150;\n this.activeIndexChange = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.scrollChange = new EventEmitter();\n this.wrapperClasses = true;\n this.resolvedPromise = Promise.resolve(null);\n this.dispatcher = new Subject();\n this.scroller = scrollerFactory(this.dispatcher);\n }\n get horizontalClass() {\n return this.direction === 'horizontal';\n }\n get totalVertexLength() {\n const value = `${this.totalSize}px`;\n return this.direction === 'vertical' ? { height: value } : { width: value };\n }\n get containerOffsetSize() {\n return this.getContainerProperty(this.direction === 'vertical' ? 'offsetHeight' : 'offsetWidth');\n }\n get containerScrollSize() {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth');\n }\n get containerScrollPosition() {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft');\n }\n ngOnChanges(changes) {\n if (changes.direction || changes.take || changes.total) {\n this.initServices();\n this.totalSize = this.rowHeightService.totalHeight() + this.bottomOffset;\n }\n }\n ngOnInit() {\n if (!this.rowHeightService) {\n this.rowHeightService = this.createRowHeightService();\n }\n }\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n this.containerScrollSubscription = this.scroll$()\n .pipe(map((event) => event.target))\n .subscribe(t => {\n this.dispatcher.next(t);\n this.emitActiveIndex();\n });\n });\n }\n ngOnDestroy() {\n if (this.containerScrollSubscription) {\n this.containerScrollSubscription.unsubscribe();\n }\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n if (this.animationSubscription) {\n this.animationSubscription.unsubscribe();\n }\n }\n getContainerProperty(propertyName) {\n return this.container.nativeElement[propertyName];\n }\n activeIndex() {\n return this.itemIndex(Math.ceil(this.containerScrollPosition)); //handle subpixeling\n }\n itemIndex(offset) {\n return this.rowHeightService.index(offset);\n }\n itemOffset(index) {\n return this.rowHeightService.offset(index);\n }\n isIndexVisible(index) {\n if (!this.rowHeightService) {\n return false;\n }\n const containerTop = this.containerScrollPosition;\n const containerBottom = containerTop + this.containerOffsetSize;\n const top = this.rowHeightService.offset(index);\n const bottom = top + this.rowHeightService.height(index);\n return top >= containerTop && bottom <= containerBottom;\n }\n isListScrolled(index) {\n return this.containerScrollPosition !== this.rowHeightService.offset(index);\n }\n scrollTo(value) {\n const scrollProperty = this.direction === \"vertical\" ? 'scrollTop' : 'scrollLeft';\n this.renderer.setProperty(this.container.nativeElement, scrollProperty, value);\n }\n scrollToIndex(index) {\n //XXX: scrolling with tick is required to prevent list jump in Chrome.\n //Original issue: focus first day in the month and press LEFT arrow.\n //Notice how the view jumps on every day change.\n //\n this.zone.runOutsideAngular(() => {\n this.resolvedPromise.then(() => {\n this.scrollTo(this.rowHeightService.offset(index));\n });\n });\n }\n scrollToBottom() {\n this.scrollTo(this.totalSize);\n }\n animateToIndex(index) {\n if (this.animationSubscription) {\n this.animationSubscription.unsubscribe();\n }\n const indexOffset = this.rowHeightService.offset(index);\n const direction = this.getContainerScrollDirection(indexOffset);\n const { start, end } = this.scrollRange(indexOffset, direction);\n if (start === end) {\n return;\n }\n const step = this.scrollStep(start, end);\n const modifyScroll = scrollModifiers[direction](step);\n const normalizeScroll = scrollNormalizers[direction](end);\n const isScrollValid = scrollValidators[direction](modifyScroll(end));\n this.zone.runOutsideAngular(() => {\n this.animationSubscription =\n combineLatest(of(start), interval(0, animationFrameScheduler)).pipe(map(stream => stream[0]), scan(modifyScroll), takeWhile(isScrollValid), map(normalizeScroll)).subscribe((x) => this.scrollTo(x));\n });\n }\n scrollRange(indexOffset, direction) {\n const containerScroll = this.containerScrollPosition;\n if (parseInt(indexOffset, 10) === parseInt(containerScroll, 10)) {\n return { start: indexOffset, end: indexOffset };\n }\n const maxScroll = this.containerMaxScroll();\n const sign = direction === ScrollDirection.Backward ? 1 : -1;\n const difference = differenceToScroll(containerScroll, indexOffset, this.maxScrollDifference);\n const end = Math.min(indexOffset, maxScroll);\n const start = Math.min(Math.max(end + (sign * difference), 0), maxScroll);\n return { start, end };\n }\n scrollStep(start, end) {\n return Math.abs(end - start) / (this.scrollDuration / FRAME_DURATION);\n }\n scroll$() {\n return isDocumentAvailable() ? fromEvent(this.container.nativeElement, 'scroll') : EMPTY;\n }\n initServices() {\n this.rowHeightService = this.createRowHeightService();\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n this.scrollSubscription = this.scroller\n .create(this.rowHeightService, this.skip, this.take, this.total, this.topOffset, this.scrollOffsetSize, this.direction)\n .subscribe((x) => {\n if (x instanceof PageAction) {\n this.pageChange.emit(x);\n }\n else {\n this.scrollChange.emit(x);\n }\n });\n }\n createRowHeightService() {\n const dimension = this.direction === 'vertical' ? this.itemHeight : this.itemWidth;\n return new RowHeightService(this.total, dimension, 0);\n }\n emitActiveIndex() {\n const index = this.rowHeightService.index(this.containerScrollPosition - this.topOffset);\n if (this.lastActiveIndex !== index) {\n this.lastActiveIndex = index;\n this.activeIndexChange.emit(index);\n }\n }\n containerMaxScroll() {\n return this.containerScrollSize - this.containerOffsetSize;\n }\n getContainerScrollDirection(indexOffset) {\n return indexOffset < this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;\n }\n}\nVirtualizationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nVirtualizationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: { direction: \"direction\", itemHeight: \"itemHeight\", itemWidth: \"itemWidth\", topOffset: \"topOffset\", bottomOffset: \"bottomOffset\", maxScrollDifference: \"maxScrollDifference\", scrollOffsetSize: \"scrollOffsetSize\", scrollDuration: \"scrollDuration\", skip: \"skip\", take: \"take\", total: \"total\" }, outputs: { activeIndexChange: \"activeIndexChange\", pageChange: \"pageChange\", scrollChange: \"scrollChange\" }, host: { properties: { \"class.k-flex\": \"this.wrapperClasses\", \"class.k-content\": \"this.wrapperClasses\", \"class.k-calendar-content\": \"this.wrapperClasses\", \"class.k-scrollable\": \"this.wrapperClasses\", \"class.k-scrollable-horizontal\": \"this.horizontalClass\" } }, providers: [{\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }], usesOnChanges: true, ngImport: i0, template: `\n \n
\n `, isInline: true, directives: [{ type: i7.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationComponent, decorators: [{\n type: Component,\n args: [{\n providers: [{\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }],\n selector: 'kendo-virtualization',\n template: `\n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [SCROLLER_FACTORY_TOKEN]\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { direction: [{\n type: Input\n }], itemHeight: [{\n type: Input\n }], itemWidth: [{\n type: Input\n }], topOffset: [{\n type: Input\n }], bottomOffset: [{\n type: Input\n }], maxScrollDifference: [{\n type: Input\n }], scrollOffsetSize: [{\n type: Input\n }], scrollDuration: [{\n type: Input\n }], skip: [{\n type: Input\n }], take: [{\n type: Input\n }], total: [{\n type: Input\n }], activeIndexChange: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], scrollChange: [{\n type: Output\n }], wrapperClasses: [{\n type: HostBinding,\n args: ['class.k-flex']\n }, {\n type: HostBinding,\n args: ['class.k-content']\n }, {\n type: HostBinding,\n args: ['class.k-calendar-content']\n }, {\n type: HostBinding,\n args: ['class.k-scrollable']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-scrollable-horizontal']\n }] } });\n\nconst div$1 = domContainerFactory('div');\nconst ul$1 = domContainerFactory('ul');\nconst li$1 = domContainerFactory('li');\nconst td = domContainerFactory('td');\nconst th = domContainerFactory('th');\nconst tr = domContainerFactory('tr');\nconst tbody = domContainerFactory('tbody');\nconst thead = domContainerFactory('thead');\nconst table = domContainerFactory('table');\nconst monthHeader = () => (div$1(`\n March 2017\n \n \n TODAY\n \n `, 'k-calendar-header k-hstack'));\nconst monthWeekHeader = () => (table([\n thead([\n tr([th('MO', 'k-calendar-th')], 'k-calendar-tr')\n ], 'k-calendar-thead')\n], 'k-calendar-weekdays k-calendar-table'));\nconst repeat = (count, mapper) => new Array(count).fill('1').map(mapper);\nconst content = (rows, cells = 1) => (table([\n tbody([tr([th('1', 'k-calendar-th')], 'k-calendar-tr')].concat(repeat(rows, () => tr(repeat(cells, c => td(`${c}`, 'k-calendar-td')), 'k-calendar-tr'))), 'k-calendar-tbody')\n], 'k-calendar-table'));\nconst scrollable$1 = (children) => div$1(children, 'k-flex k-content k-calendar-content k-scrollable');\nconst view = (contentElement, className, renderWeekHeader) => (div$1([\n monthHeader(),\n renderWeekHeader ? monthWeekHeader() : null,\n scrollable$1([contentElement, contentElement])\n], className, { left: '-10000px', position: 'absolute' }));\nconst navigationList = (() => {\n let navElement;\n return () => {\n if (!isDocumentAvailable) {\n return null;\n }\n if (!navElement) {\n navElement = div$1([scrollable$1([ul$1([li$1('FEB')])])], 'k-calendar-navigation', { left: '0px', position: 'absolute' });\n }\n return navElement;\n };\n})();\nconst viewFactory = ({ cells, rows }, className, renderWeekHeader) => {\n let viewElement;\n return () => {\n if (!isDocumentAvailable) {\n return null;\n }\n if (!viewElement) {\n viewElement = view(content(rows, cells), className, renderWeekHeader);\n }\n return viewElement;\n };\n};\nconst getScrollable = (element) => element.querySelector('.k-scrollable');\nconst horizontal = element => {\n const scrollableElement = getScrollable(element);\n scrollableElement.classList.add('k-scrollable-horizontal');\n return element;\n};\nconst monthView = viewFactory({ cells: 7, rows: 6 }, 'k-vstack k-calendar-view k-calendar-monthview', true);\nconst yearView = viewFactory({ cells: 4, rows: 3 }, 'k-vstack k-calendar-view k-calendar-yearview', false);\nconst decadeView = viewFactory({ cells: 4, rows: 3 }, 'k-vstack k-calendar-view k-calendar-decadeview', false);\nconst horzMonthView = () => horizontal(monthView());\nconst horzYearView = () => horizontal(yearView());\nconst horzDecadeView = () => horizontal(decadeView());\nconst height = (element) => (parseFloat(window.getComputedStyle(element).height) || element.offsetHeight);\nconst width = (element) => {\n const styles = window.getComputedStyle(element);\n const computed = parseFloat(styles.width)\n + parseFloat(styles.paddingLeft)\n + parseFloat(styles.paddingRight);\n return computed || element.offsetWidth;\n};\nconst getBody = (element) => element.querySelector('tbody');\n/**\n * @hidden\n */\nclass CalendarDOMService {\n ensureHeights() {\n if (this.calendarHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n }\n calculateHeights(container) {\n if (!isDocumentAvailable()) {\n return;\n }\n this.hostContainer = container;\n this.batch(monthView(), (contentElement) => {\n const viewElement = getBody(contentElement);\n this.calendarHeight = height(contentElement);\n this.monthViewHeight = height(viewElement);\n this.headerHeight = height(viewElement.children[0]);\n this.scrollableContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzMonthView(), (contentElement) => {\n const viewElement = getBody(contentElement);\n this.calendarWidth = width(contentElement);\n this.monthViewWidth = width(viewElement);\n this.scrollableContentWidth = width(getScrollable(contentElement));\n });\n this.batch(yearView(), (contentElement) => {\n this.yearViewHeight = height(getBody(contentElement));\n this.scrollableYearContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzYearView(), (contentElement) => {\n this.yearViewWidth = width(getBody(contentElement));\n });\n this.batch(decadeView(), (contentElement) => {\n this.decadeViewHeight = height(getBody(contentElement));\n this.centuryViewHeight = this.decadeViewHeight;\n });\n this.batch(horzDecadeView(), (contentElement) => {\n this.decadeViewWidth = width(getBody(contentElement));\n this.centuryViewWidth = this.decadeViewWidth;\n });\n this.batch(navigationList(), (contentElement) => {\n this.navigationItemHeight = height(contentElement.querySelector('li'));\n });\n }\n viewHeight(viewType) {\n return this.viewDimension(viewType, 'height');\n }\n viewWidth(viewType) {\n return this.viewDimension(viewType, 'width');\n }\n viewDimension(viewType, dimension) {\n const viewProp = dimension === 'height' ? 'ViewHeight' : 'ViewWidth';\n switch (viewType) {\n case CalendarViewEnum.month:\n return this[`month${viewProp}`];\n case CalendarViewEnum.year:\n return this[`year${viewProp}`];\n case CalendarViewEnum.decade:\n return this[`decade${viewProp}`];\n case CalendarViewEnum.century:\n return this[`century${viewProp}`];\n default:\n return 1;\n }\n }\n batch(contentElement, action) {\n if (!isPresent(this.hostContainer)) {\n return;\n }\n const hostClone = this.hostContainer.cloneNode();\n document.body.appendChild(hostClone);\n try {\n const appendedContent = hostClone.appendChild(contentElement);\n action(appendedContent);\n }\n catch (error) {\n throw error;\n }\n finally {\n document.body.removeChild(hostClone);\n }\n }\n}\nCalendarDOMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarDOMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCalendarDOMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarDOMService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarDOMService, decorators: [{\n type: Injectable\n }] });\n\n/* eslint-disable @angular-eslint/component-selector */\nconst ITEMS_COUNT = 30;\n/**\n * @hidden\n */\nclass NavigationComponent {\n constructor(bus, dom, intl, cdr, renderer) {\n this.bus = bus;\n this.dom = dom;\n this.intl = intl;\n this.cdr = cdr;\n this.renderer = renderer;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.focusedDate = new Date();\n this.valueChange = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.dates = [];\n this.take = ITEMS_COUNT;\n this.indexToScroll = -1;\n }\n get getComponentClass() {\n return true;\n }\n ngOnInit() {\n this.dom.ensureHeights();\n const calendarHeight = this.dom.calendarHeight;\n this.itemHeight = this.dom.navigationItemHeight;\n this.maxViewHeight = this.dom.monthViewHeight;\n this.topOffset = (calendarHeight - this.itemHeight) / 2;\n this.bottomOffset = calendarHeight - this.itemHeight;\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n }\n ngOnChanges(changes) {\n this.service = this.bus.service(this.activeView);\n if (!this.service) {\n return;\n }\n this.activeViewValue = CalendarViewEnum[this.activeView];\n const viewDate = dateInRange(this.focusedDate, this.min, this.max);\n const total = this.service.total(this.min, this.max);\n const totalChanged = this.total && this.total !== total;\n this.skip = this.service.skip(viewDate, this.min);\n this.total = total;\n if (totalChanged || !this.service.isInArray(viewDate, this.dates)) {\n this.dates = this.service.datesList(viewDate, this.getTake(this.skip));\n }\n if (!!changes.focusedDate || totalChanged) {\n this.indexToScroll = this.service.skip(this.focusedDate, this.min);\n }\n }\n ngOnDestroy() {\n if (this.intlSubscription) {\n this.intlSubscription.unsubscribe();\n }\n }\n ngAfterViewInit() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization.scrollToIndex(this.indexToScroll);\n this.indexToScroll = -1;\n }\n ngAfterViewChecked() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization.scrollToIndex(this.indexToScroll);\n this.indexToScroll = -1;\n }\n onPageChange({ skip }) {\n this.dates = this.service.datesList(this.service.addToDate(this.min, skip), this.getTake(skip));\n this.pageChange.emit();\n }\n scrollChange({ offset }) {\n const el = this.list.nativeElement;\n const translate = `translateY(${offset}px)`;\n this.renderer.setStyle(el, 'transform', translate);\n this.renderer.setStyle(el, '-ms-transform', translate);\n }\n handleDateChange(args) {\n const item = closestInScope(args.target, node => node.hasAttribute('data-date-index'), this.list.nativeElement);\n if (item) {\n const index = parseInt(item.getAttribute('data-date-index'), 10);\n const candidate = this.dates[index];\n this.valueChange.emit(cloneDate(candidate));\n }\n }\n getTake(skip) {\n return Math.min(this.total - skip, this.take);\n }\n intlChange() {\n if (this.activeView === CalendarViewEnum.month) {\n this.cdr.markForCheck();\n }\n }\n}\nNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationComponent, deps: [{ token: BusViewService }, { token: CalendarDOMService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigationComponent, selector: \"kendo-calendar-navigation\", inputs: { activeView: \"activeView\", min: \"min\", max: \"max\", focusedDate: \"focusedDate\", templateRef: \"templateRef\" }, outputs: { valueChange: \"valueChange\", pageChange: \"pageChange\" }, host: { properties: { \"class.k-calendar-navigation\": \"this.getComponentClass\" } }, viewQueries: [{ propertyName: \"virtualization\", first: true, predicate: VirtualizationComponent, descendants: true }, { propertyName: \"list\", first: true, predicate: [\"list\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n
    \n
  • \n \n {{service.navigationTitle(date)}}\n \n \n
  • \n
\n \n `, isInline: true, components: [{ type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: [\"direction\", \"itemHeight\", \"itemWidth\", \"topOffset\", \"bottomOffset\", \"maxScrollDifference\", \"scrollOffsetSize\", \"scrollDuration\", \"skip\", \"take\", \"total\"], outputs: [\"activeIndexChange\", \"pageChange\", \"scrollChange\"] }], directives: [{ type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-calendar-navigation',\n template: `\n \n \n
    \n
  • \n \n {{service.navigationTitle(date)}}\n \n \n
  • \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: CalendarDOMService }, { type: i1.IntlService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { activeView: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: false }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-navigation\"]\n }] } });\n\nconst VIEWS_COUNT = 5;\nconst isEqualMonthYear = (date1, date2) => (date1 && date2 &&\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth());\n/**\n * @hidden\n */\nclass ViewListComponent {\n constructor(bus, cdr, intl, dom, renderer) {\n this.bus = bus;\n this.cdr = cdr;\n this.intl = intl;\n this.dom = dom;\n this.renderer = renderer;\n this.isActive = true;\n this.min = new Date(MIN_DATE);\n this.max = new Date(MAX_DATE);\n this.selectedDates = [];\n this.cellClick = new EventEmitter();\n this.weekNumberCellClick = new EventEmitter();\n this.activeDateChange = new EventEmitter();\n this.todayButtonClick = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.getComponentClass = true;\n this.dates = [];\n this.cols = [];\n this.weekNames = [];\n this.take = VIEWS_COUNT;\n this.animateToIndex = true;\n this.indexToScroll = -1;\n this.minViewsToRender = 1;\n }\n get weekNumber() {\n return this.showWeekNumbers && this.isMonthView();\n }\n set weekNumber(showWeekNumbers) {\n this.showWeekNumbers = showWeekNumbers;\n }\n get getComponentMonthClass() {\n return this.activeView === CalendarViewEnum.month;\n }\n get getComponentYearClass() {\n return this.activeView === CalendarViewEnum.year;\n }\n get getComponentDecadeClass() {\n return this.activeView === CalendarViewEnum.decade;\n }\n get getComponentCenturyClass() {\n return this.activeView === CalendarViewEnum.century;\n }\n ngOnInit() {\n this.weekNames = this.getWeekNames();\n this.bottomOffset = this.getBottomOffset();\n this.viewOffset = -1 * this.dom.headerHeight;\n this.viewHeight = this.dom.viewHeight(this.activeView);\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n }\n ngOnChanges(changes) {\n this.service = this.bus.service(this.activeView);\n if (!this.service) {\n return;\n }\n this.cols = new Array(this.service.rowLength({ prependCell: this.weekNumber })).fill('');\n this.colWidth = Math.round(100 / this.cols.length);\n this.weekNames = hasChange(changes, 'weekNumber') && this.weekNumber ? this.getWeekNames() : this.weekNames;\n const activeViewChanged = hasChange(changes, 'activeView');\n const focusedDate = this.focusedDate;\n const viewDate = dateInRange(this.service.viewDate(focusedDate, this.max, this.minViewsToRender), this.min, this.max);\n const total = this.service.total(this.min, this.max);\n const totalChanged = this.total && this.total !== total;\n const generateDates = totalChanged || !this.service.isInArray(focusedDate, this.dates);\n this.skip = this.service.skip(viewDate, this.min);\n this.total = total;\n this.animateToIndex = !activeViewChanged;\n this.bottomOffset = this.getBottomOffset();\n this.viewHeight = this.dom.viewHeight(this.activeView);\n if (generateDates) {\n this.dates = this.service.datesList(viewDate, this.getTake(this.skip));\n }\n if (!isEqualMonthYear(this.activeDate, focusedDate)) {\n this.activeDate = cloneDate(focusedDate);\n }\n const updateIndex = hasChange(changes, 'focusedDate') || activeViewChanged;\n if (generateDates || updateIndex || this.virtualization.isIndexVisible(this.skip)) {\n this.indexToScroll = this.service.skip(focusedDate, this.min);\n }\n }\n ngOnDestroy() {\n if (this.intlSubscription) {\n this.intlSubscription.unsubscribe();\n }\n }\n ngAfterViewInit() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization.scrollToIndex(this.indexToScroll);\n this.indexToScroll = -1;\n }\n ngAfterViewChecked() {\n if (this.indexToScroll === -1) {\n return;\n }\n this.virtualization[this.animateToIndex ? 'animateToIndex' : 'scrollToIndex'](this.indexToScroll);\n this.animateToIndex = true;\n this.indexToScroll = -1;\n }\n onPageChange({ skip }) {\n this.dates = this.service.datesList(this.service.addToDate(this.min, skip), this.getTake(skip));\n this.pageChange.emit();\n }\n scrollChange({ offset }) {\n const el = this.list.nativeElement;\n const translate = `translateY(${offset}px)`;\n this.renderer.setStyle(el, 'transform', translate);\n this.renderer.setStyle(el, '-ms-transform', translate);\n }\n setActiveDate(index) {\n const candidate = this.service.addToDate(this.min, index);\n this.activeDate = candidate;\n this.activeDateChange.emit(candidate);\n this.cdr.detectChanges();\n }\n isMonthView() {\n return this.activeView === CalendarViewEnum.month;\n }\n isScrolled() {\n return this.virtualization.isListScrolled(this.service.skip(this.focusedDate, this.min));\n }\n getBottomOffset() {\n return this.getScrollableHeight() - this.dom.viewHeight(this.activeView);\n }\n getScrollableHeight() {\n return this.activeView === CalendarViewEnum.month ?\n this.dom.scrollableContentHeight :\n this.dom.scrollableYearContentHeight;\n }\n getTake(skip) {\n return Math.min(this.total - skip, this.take);\n }\n getWeekNames() {\n const weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return this.weekNumber ? [''].concat(weekNames) : weekNames;\n }\n intlChange() {\n this.weekNames = this.getWeekNames();\n if (this.isMonthView()) {\n this.cdr.markForCheck();\n }\n }\n}\nViewListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewListComponent, deps: [{ token: BusViewService }, { token: i0.ChangeDetectorRef }, { token: i1.IntlService }, { token: CalendarDOMService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nViewListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ViewListComponent, selector: \"kendo-calendar-viewlist\", inputs: { cellTemplateRef: \"cellTemplateRef\", weekNumberTemplateRef: \"weekNumberTemplateRef\", headerTitleTemplateRef: \"headerTitleTemplateRef\", activeView: \"activeView\", cellUID: \"cellUID\", focusedDate: \"focusedDate\", isActive: \"isActive\", min: \"min\", max: \"max\", selectedDates: \"selectedDates\", weekNumber: \"weekNumber\" }, outputs: { cellClick: \"cellClick\", weekNumberCellClick: \"weekNumberCellClick\", activeDateChange: \"activeDateChange\", todayButtonClick: \"todayButtonClick\", pageChange: \"pageChange\" }, host: { properties: { \"class.k-vstack\": \"this.getComponentClass\", \"class.k-calendar-view\": \"this.getComponentClass\", \"class.k-calendar-monthview\": \"this.getComponentMonthClass\", \"class.k-calendar-yearview\": \"this.getComponentYearClass\", \"class.k-calendar-decadeview\": \"this.getComponentDecadeClass\", \"class.k-calendar-centuryview\": \"this.getComponentCenturyClass\" } }, viewQueries: [{ propertyName: \"virtualization\", first: true, predicate: VirtualizationComponent, descendants: true }, { propertyName: \"list\", first: true, predicate: [\"list\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n
{{name}}
\n \n \n \n\n \n \n \n `, isInline: true, components: [{ type: HeaderComponent, selector: \"kendo-calendar-header\", inputs: [\"activeView\", \"currentDate\", \"min\", \"max\", \"rangeLength\", \"templateRef\", \"isPrevDisabled\", \"isNextDisabled\", \"showNavigationButtons\"], outputs: [\"todayButtonClick\", \"prevButtonClick\", \"nextButtonClick\"] }, { type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: [\"direction\", \"itemHeight\", \"itemWidth\", \"topOffset\", \"bottomOffset\", \"maxScrollDifference\", \"scrollOffsetSize\", \"scrollDuration\", \"skip\", \"take\", \"total\"], outputs: [\"activeIndexChange\", \"pageChange\", \"scrollChange\"] }, { type: ViewComponent, selector: \"[kendoCalendarView]\", inputs: [\"direction\", \"isActive\", \"activeView\", \"cellUID\", \"focusedDate\", \"viewDate\", \"activeRangeEnd\", \"selectionRange\", \"min\", \"max\", \"selectedDates\", \"weekNumber\", \"viewIndex\", \"templateRef\", \"weekNumberTemplateRef\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"cellEnter\", \"cellLeave\"] }], directives: [{ type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: KForOf, selector: \"[kFor][kForOf]\", inputs: [\"kForOf\", \"kForTrackBy\", \"kForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ViewListComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-calendar-viewlist',\n template: `\n \n \n \n \n \n \n \n \n
{{name}}
\n \n \n \n\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: i0.ChangeDetectorRef }, { type: i1.IntlService }, { type: CalendarDOMService }, { type: i0.Renderer2 }]; }, propDecorators: { cellTemplateRef: [{\n type: Input\n }], weekNumberTemplateRef: [{\n type: Input\n }], headerTitleTemplateRef: [{\n type: Input\n }], activeView: [{\n type: Input\n }], cellUID: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], isActive: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], selectedDates: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], cellClick: [{\n type: Output\n }], weekNumberCellClick: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], todayButtonClick: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: false }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }], getComponentClass: [{\n type: HostBinding,\n args: [\"class.k-vstack\"]\n }, {\n type: HostBinding,\n args: [\"class.k-calendar-view\"]\n }], getComponentMonthClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-monthview\"]\n }], getComponentYearClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-yearview\"]\n }], getComponentDecadeClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-decadeview\"]\n }], getComponentCenturyClass: [{\n type: HostBinding,\n args: [\"class.k-calendar-centuryview\"]\n }] } });\n\nconst divideByMagnitude = (magnitude) => x => Math.floor(x / magnitude);\nconst powerByMagnitude = (magnitude) => x => x * magnitude;\n/**\n * @hidden\n */\nclass ScrollSyncService {\n constructor(dom, zone) {\n this.dom = dom;\n this.zone = zone;\n }\n configure(activeView) {\n const magnitude = Math.max(this.dom.viewHeight(activeView) / this.dom.navigationItemHeight, 1);\n this.divideByMagnitude = divideByMagnitude(magnitude);\n this.powerByMagnitude = powerByMagnitude(magnitude);\n }\n sync(navigator, view) {\n this.unsubscribe();\n if (!navigator || !view) {\n return;\n }\n this.navigator = navigator;\n this.view = view;\n this.zone.runOutsideAngular(() => {\n let navScrolled, monthScrolled;\n this.navSubscription = navigator.scroll$()\n .subscribe((e) => {\n if (monthScrolled) {\n monthScrolled = false;\n return;\n }\n navScrolled = true;\n this.scrollSiblingOf(e.target);\n });\n this.viewSubscription = view.scroll$()\n .subscribe((e) => {\n if (navScrolled) {\n navScrolled = false;\n return;\n }\n monthScrolled = true;\n this.scrollSiblingOf(e.target);\n });\n });\n }\n scrollSiblingOf(scrolledElement) {\n const component = this.siblingComponent(scrolledElement);\n const scrollTop = this.calculateScroll(component, scrolledElement.scrollTop);\n component.scrollTo(scrollTop);\n }\n siblingComponent(scrollableElement) {\n return this.navigator.container.nativeElement === scrollableElement ? this.view : this.navigator;\n }\n calculateScroll(component, scrollTop) {\n const modifier = component === this.navigator ? this.divideByMagnitude : this.powerByMagnitude;\n return modifier(scrollTop);\n }\n destroy() {\n this.unsubscribe();\n }\n unsubscribe() {\n if (this.navSubscription) {\n this.navSubscription.unsubscribe();\n }\n if (this.viewSubscription) {\n this.viewSubscription.unsubscribe();\n }\n }\n}\nScrollSyncService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService, deps: [{ token: CalendarDOMService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollSyncService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollSyncService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: CalendarDOMService }, { type: i0.NgZone }]; } });\n\n/**\n * Used for rendering the navigation item of the Calendar. To define the navigation item template, nest an ``\n * tag with the `kendoCalendarNavigationItemTemplate` directive inside the component tag. The template context is set to the\n * current component. To get a reference to the current item value, use the `let-title` directive. To provide more details\n * about the current title, get a reference to the current `date` by using the `let-date='date'` directive or get a reference\n * to the current active view by using the `let-activeView='activeView'` directive.\n *\n * For more examples, refer to the article on [templates]({% slug templates_calendar %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * styles: ['.custom { color: red; }'],\n * template: `\n * \n * \n * {{title}}\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass NavigationItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNavigationItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNavigationItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NavigationItemTemplateDirective, selector: \"[kendoCalendarNavigationItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCalendarNavigationItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass PickerService {\n constructor() {\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.sameDateSelected = new EventEmitter();\n this.dateCompletenessChange = new EventEmitter();\n }\n}\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass MultiViewCalendarCustomMessagesComponent extends Messages$1 {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nMultiViewCalendarCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nMultiViewCalendarCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiViewCalendarCustomMessagesComponent, selector: \"kendo-multiviewcalendar-messages\", providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages$1,\n useExisting: forwardRef(() => MultiViewCalendarCustomMessagesComponent)\n }\n ],\n selector: 'kendo-multiviewcalendar-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass CalendarMessages extends ComponentMessages {\n}\nCalendarMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nCalendarMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarMessages, selector: \"kendo-calendar-messages-base\", inputs: { today: \"today\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-calendar-messages-base'\n }]\n }], propDecorators: { today: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass CalendarLocalizedMessagesDirective extends CalendarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nCalendarLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nCalendarLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarLocalizedMessagesDirective, selector: \"[kendoCalendarLocalizedMessages]\", providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoCalendarLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst BOTTOM_VIEW_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-bottomview';\nconst TOP_VIEW_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-topview';\nconst MIN_DOC_LINK$2 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-min';\nconst MAX_DOC_LINK$2 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/CalendarComponent/#toc-max';\nconst VALUE_DOC_LINK$4 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/calendar/#toc-using-with-json';\nconst virtualizationProp = x => x ? x.virtualization : null;\n/**\n * @hidden\n */\nconst CALENDAR_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CalendarComponent)\n};\n/**\n * @hidden\n */\nconst CALENDAR_RANGE_VALIDATORS = {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CalendarComponent)\n};\n/**\n * @hidden\n */\nconst KENDO_INPUT_PROVIDER = {\n provide: KendoInput,\n useExisting: forwardRef(() => CalendarComponent)\n};\n/**\n * Represents the [Kendo UI Calendar component for Angular]({% slug overview_calendar %}#toc-basic-usage).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\nclass CalendarComponent {\n constructor(bus, dom, element, navigator, renderer, cdr, ngZone, injector, scrollSyncService, disabledDatesService, localization, selectionService, pickerService) {\n this.bus = bus;\n this.dom = dom;\n this.element = element;\n this.navigator = navigator;\n this.renderer = renderer;\n this.cdr = cdr;\n this.ngZone = ngZone;\n this.injector = injector;\n this.scrollSyncService = scrollSyncService;\n this.disabledDatesService = disabledDatesService;\n this.localization = localization;\n this.selectionService = selectionService;\n this.pickerService = pickerService;\n /**\n * @hidden\n */\n this.id = guid();\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form.\n */\n this.rangeValidation = false;\n /**\n * Sets the Calendar selection mode\n * ([see example]({% slug multiple_selection_calendar %})).\n *\n * The available values are:\n * * `single` (default)\n * * `multiple`\n */\n this.selection = 'single';\n /**\n * Sets or gets the `disabled` property of the Calendar and\n * determines whether the component is active\n * ([see example]({% slug disabled_calendar %})).\n */\n this.disabled = false;\n /**\n * Sets or gets the `tabindex` property of the Calendar. Based on the\n * [HTML `tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) behavior,\n * it determines whether the component is focusable.\n */\n this.tabindex = 0;\n /**\n * Sets or gets the `navigation` property of the Calendar\n * and determines whether the navigation side-bar will be displayed\n * ([see example]({% slug sidebar_calendar %})).\n * Applies to the [`infinite`]({% slug api_dateinputs_calendarcomponent %}#toc-type) Calendar only.\n */\n this.navigation = true;\n /**\n * Defines the active view that the Calendar initially renders\n * ([see example]({% slug activeview_calendar %})).\n * By default, the active view is `month`.\n *\n * > You have to set `activeView` within the `topView`-`bottomView` range.\n */\n this.activeView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the bottommost view to which the user can navigate\n * ([see example]({% slug dates_calendar %}#toc-partial-dates)).\n */\n this.bottomView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the topmost view to which the user can navigate\n * ([see example]({% slug sidebar_calendar %}#toc-partial-dates)).\n */\n this.topView = CalendarViewEnum[CalendarViewEnum.century];\n /**\n * Determines whether to enable animation when navigating to previous/next view.\n * Applies to the [`classic`]({% slug api_dateinputs_calendarcomponent %}#toc-type) Calendar only.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateNavigation = false;\n /**\n * Determines whether to display a week number column in the `month` view\n * ([see example]({% slug weeknumcolumn_calendar %})).\n */\n this.weekNumber = false;\n /**\n * Fires when the active view is changed\n * ([more information and example]({% slug overview_calendar %}#toc-events)).\n */\n this.activeViewChange = new EventEmitter();\n /**\n * Fires when navigating in the currently active view\n * ([more information and example]({% slug events_calendar %})).\n */\n this.navigate = new EventEmitter();\n /**\n * Fires when the active view date is changed\n * ([more information and example]({% slug overview_calendar %}#toc-events)).\n * Applies to the [`infinite`]({% slug api_dateinputs_calendarcomponent %}#toc-type) Calendar only.\n */\n this.activeViewDateChange = new EventEmitter();\n /**\n * Fires when the value is changed\n * ([more information and example]({% slug overview_calendar %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n this.isActive = false;\n this.cellUID = guid();\n this.selectedDates = [];\n this._min = new Date(MIN_DATE);\n this._max = new Date(MAX_DATE);\n this._focusedDate = getToday();\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.syncNavigation = true;\n this._type = 'infinite';\n this.domEvents = [];\n this.resolvedPromise = Promise.resolve(null);\n this.destroyed = false;\n validatePackage(packageMetadata);\n this.setClasses(element.nativeElement);\n if (this.pickerService) {\n this.pickerService.calendar = this;\n }\n }\n /**\n * Sets or gets the `focusedDate` property of the Calendar and\n * defines the focused date of the component\n * ([see example]({% slug dates_calendar %}#toc-focused-dates)).\n *\n * > If the Calendar is out of the min or max range, it normalizes the defined `focusedDate`.\n */\n set focusedDate(focusedDate) {\n if (this.activeViewDate && !isEqual(this._focusedDate, focusedDate)) {\n const service = this.bus.service(this.activeViewEnum);\n const lastDayInPeriod = service.lastDayOfPeriod(this.activeViewDate);\n const isFocusedDateInRange = service.isInRange(focusedDate, this.activeViewDate, lastDayInPeriod);\n if (!isFocusedDateInRange) {\n this.emitNavigate(focusedDate);\n }\n }\n this._focusedDate = focusedDate || getToday();\n this.setAriaActivedescendant();\n }\n get focusedDate() {\n return this._focusedDate;\n }\n /**\n * Sets or gets the `min` property of the Calendar and\n * defines the minimum allowed date value\n * ([see example]({% slug dateranges_calendar %})).\n * By default, the `min` value is `1900-1-1`.\n */\n set min(min) {\n this._min = min || new Date(MIN_DATE);\n }\n get min() {\n return this._min;\n }\n /**\n * Sets or gets the `max` property of the Calendar and\n * defines the maximum allowed date value\n * ([see example]({% slug dateranges_calendar %})).\n * By default, the `max` value is `2099-12-31`.\n */\n set max(max) {\n this._max = max || new Date(MAX_DATE);\n }\n get max() {\n return this._max;\n }\n /**\n * Sets or gets the `value` property of the Calendar and defines the selected value of the component.\n *\n * > The `value` has to be a valid\n * [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date)\n * instance when in `single` selection mode or an array of valid JavaScript Date instances when in `multiple` selection mode.\n */\n get value() {\n return this._value;\n }\n set value(candidate) {\n this.verifyValue(candidate);\n this._value = Array.isArray(candidate) ?\n candidate.filter(date => isPresent(date)).map(element => cloneDate(element)) :\n cloneDate(candidate);\n const selection = [].concat(candidate).filter(date => isPresent(date)).map(date => cloneDate(date));\n if (!areDatesEqual(selection, this.selectedDates)) {\n const lastSelected = last(selection);\n this.rangePivot = cloneDate(lastSelected);\n this.focusedDate = cloneDate(lastSelected) || this.focusedDate;\n this.selectedDates = selection;\n }\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the dates of the Calendar that will be disabled\n * ([see example]({% slug disabled_dates_calendar %})).\n */\n set disabledDates(value) {\n this.disabledDatesService.initialize(value);\n this._disabledDates = value;\n }\n get disabledDates() {\n return this._disabledDates;\n }\n /**\n * Specifies the Calendar type.\n *\n * The possible values are:\n * - `infinite` (default)\n * - `classic`\n *\n */\n set type(type) {\n this.renderer.removeClass(this.element.nativeElement, `k-calendar-${this.type}`);\n this.renderer.addClass(this.element.nativeElement, `k-calendar-${type}`);\n this._type = type;\n }\n get type() {\n return this._type;\n }\n /**\n * @hidden\n *\n * Defines the template for each cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set cellTemplateRef(template) {\n this._cellTemplateRef = template;\n }\n get cellTemplateRef() {\n return this._cellTemplateRef || this.cellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each month cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set monthCellTemplateRef(template) {\n this._monthCellTemplateRef = template;\n }\n get monthCellTemplateRef() {\n return this._monthCellTemplateRef || this.monthCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each year cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set yearCellTemplateRef(template) {\n this._yearCellTemplateRef = template;\n }\n get yearCellTemplateRef() {\n return this._yearCellTemplateRef || this.yearCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each decade cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set decadeCellTemplateRef(template) {\n this._decadeCellTemplateRef = template;\n }\n get decadeCellTemplateRef() {\n return this._decadeCellTemplateRef || this.decadeCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for each century cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set centuryCellTemplateRef(template) {\n this._centuryCellTemplateRef = template;\n }\n get centuryCellTemplateRef() {\n return this._centuryCellTemplateRef || this.centuryCellTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the week cell.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set weekNumberTemplateRef(template) {\n this._weekNumberTemplateRef = template;\n }\n get weekNumberTemplateRef() {\n return this._weekNumberTemplateRef || this.weekNumberTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the header title.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set headerTitleTemplateRef(template) {\n this._headerTitleTemplateRef = template;\n }\n get headerTitleTemplateRef() {\n return this._headerTitleTemplateRef || this.headerTitleTemplate;\n }\n /**\n * @hidden\n *\n * Defines the template for the navigation item.\n * Takes precedence over nested templates in the KendoCalendar tag.\n */\n set navigationItemTemplateRef(template) {\n this._navigationItemTemplateRef = template;\n }\n get navigationItemTemplateRef() {\n return this._navigationItemTemplateRef || this.navigationItemTemplate;\n }\n get activeViewEnum() {\n const activeView = CalendarViewEnum[this.activeView];\n return activeView < this.bottomViewEnum ? this.bottomViewEnum : activeView;\n }\n get bottomViewEnum() {\n return CalendarViewEnum[this.bottomView];\n }\n get topViewEnum() {\n return CalendarViewEnum[this.topView];\n }\n get widgetId() {\n return this.id;\n }\n get calendarTabIndex() {\n // in Classic mode, the inner MultiViewCalendar is the focusable element\n return this.disabled || this.type === 'classic' ? undefined : this.tabIndex;\n }\n get ariaDisabled() {\n // in Classic mode, the inner MultiViewCalendar should handle the disabled class and aria attr\n return this.type === 'classic' ? undefined : this.disabled;\n }\n ngOnInit() {\n this.dom.calculateHeights(this.element.nativeElement);\n this.scrollSyncService.configure(this.activeViewEnum);\n this.localizationChangeSubscription = this.localization.changes.subscribe(() => this.cdr.markForCheck());\n this.viewChangeSubscription = this.bus.viewChanged.subscribe(({ view }) => this.handleActiveViewChange(CalendarViewEnum[view]));\n this.control = this.injector.get(NgControl, null);\n if (this.element) {\n this.ngZone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngOnChanges(changes) {\n this.verifyChanges();\n this.bus.configure(this.bottomViewEnum, this.topViewEnum);\n this.scrollSyncService.configure(this.activeViewEnum);\n if (hasExistingValue(changes, 'focusedDate')) {\n const focusedDate = changes.focusedDate.currentValue;\n this.focusedDate = dateInRange(focusedDate, this.min, this.max);\n }\n if (changes.navigation) {\n this.syncNavigation = true;\n }\n if (changes.min || changes.max || changes.rangeValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.onValidatorChange();\n }\n }\n ngAfterViewInit() {\n this.setAriaActivedescendant();\n }\n ngAfterViewChecked() {\n if (!this.syncNavigation) {\n return;\n }\n this.syncNavigation = false;\n this.scrollSyncService.sync(virtualizationProp(this.navigationView), virtualizationProp(this.monthView));\n }\n ngOnDestroy() {\n this.scrollSyncService.destroy();\n this.domEvents.forEach(unbindCallback => unbindCallback());\n if (this.pickerService) {\n this.pickerService.calendar = null;\n }\n if (this.viewChangeSubscription) {\n this.viewChangeSubscription.unsubscribe();\n }\n if (this.pageChangeSubscription) {\n this.pageChangeSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n this.destroyed = true;\n }\n /**\n * @hidden\n */\n onResize() {\n this.focusedDate = new Date(this.focusedDate);\n this.cdr.detectChanges();\n }\n /**\n * Focuses the host element of the Calendar.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n const focusTarget = this.type === 'infinite' ?\n this.element && this.element.nativeElement :\n this.multiViewCalendar;\n if (isPresent(focusTarget)) {\n focusTarget.focus();\n }\n }\n /**\n * Blurs the Calendar component.\n */\n blur() {\n const blurTarget = this.type === 'infinite' ?\n this.element && this.element.nativeElement :\n this.multiViewCalendar;\n if (isPresent(blurTarget)) {\n blurTarget.blur();\n }\n }\n /**\n * @hidden\n */\n containsElement(element) {\n return Boolean(closest(element, node => node === this.element.nativeElement));\n }\n /**\n * @hidden\n */\n handleNavigation(candidate) {\n if (this.disabled) {\n return;\n }\n const focusTarget = candidate ? new Date(cloneDate(candidate).setDate(1)) : this.focusedDate;\n this.focusedDate = dateInRange(focusTarget, this.min, this.max);\n this.detectChanges();\n }\n /**\n * @hidden\n */\n onPageChange() {\n if (!NgZone.isInAngularZone()) {\n if (this.pageChangeSubscription) {\n this.pageChangeSubscription.unsubscribe();\n }\n this.pageChangeSubscription = from(this.resolvedPromise)\n .subscribe(() => {\n this.detectChanges(); // requires zone if templates\n });\n }\n }\n /**\n * @hidden\n */\n handleMultiViewCalendarValueChange(date, focusedDate) {\n const selectedDates = Array.isArray(date) ? date : [date];\n this.handleDateChange({ selectedDates, focusedDate });\n }\n /**\n * @hidden\n */\n handleDateChange(args) {\n const selectedDates = Array.isArray(args.selectedDates) ? args.selectedDates : [args.selectedDates];\n const canNavigateDown = this.bus.canMoveDown(this.activeViewEnum);\n const availableDates = selectedDates.filter(date => !this.disabledDatesService.isDateDisabled(date));\n this.focusedDate = args.focusedDate || this.focusedDate;\n if (this.disabled) {\n return;\n }\n if (!canNavigateDown && areDatesEqual(availableDates, this.selectedDates)) {\n this.emitSameDate();\n return;\n }\n if (canNavigateDown) {\n this.bus.moveDown(this.activeViewEnum);\n return;\n }\n if (this.disabledDatesService.isDateDisabled(this.focusedDate)) {\n return;\n }\n this.ngZone.run(() => {\n this.selectedDates = availableDates.map(date => cloneDate(date));\n this.value = this.parseSelectionToValue(availableDates);\n this.onControlChange(this.parseSelectionToValue(availableDates));\n this.valueChange.emit(this.parseSelectionToValue(availableDates));\n this.cdr.markForCheck();\n });\n }\n /**\n * @hidden\n */\n writeValue(candidate) {\n this.verifyValue(candidate);\n this.value = candidate;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n */\n activeCellTemplate() {\n switch (this.activeViewEnum) {\n case CalendarViewEnum.month:\n return this.monthCellTemplateRef || this.cellTemplateRef;\n case CalendarViewEnum.year:\n return this.yearCellTemplateRef;\n case CalendarViewEnum.decade:\n return this.decadeCellTemplateRef;\n case CalendarViewEnum.century:\n return this.centuryCellTemplateRef;\n default:\n return null;\n }\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n this.focusedDate = event.focusedDate;\n this.activeView = event.activeView;\n this.emitNavigate(this.focusedDate);\n }\n /**\n * @hidden\n */\n emitNavigate(focusedDate) {\n const activeView = CalendarViewEnum[this.activeViewEnum];\n this.navigate.emit({ activeView, focusedDate });\n }\n /**\n * @hidden\n */\n emitEvent(emitter, args) {\n if (hasObservers(emitter)) {\n this.ngZone.run(() => {\n emitter.emit(args);\n });\n }\n }\n /**\n * @hidden\n */\n handleActiveDateChange(date) {\n this.activeViewDate = date;\n this.emitEvent(this.activeViewDateChange, date);\n }\n /**\n * @hidden\n */\n handleActiveViewChange(view) {\n this.activeView = view;\n this.emitEvent(this.activeViewChange, view);\n if (this.type === 'infinite') {\n this.scrollSyncService.configure(this.activeViewEnum);\n }\n this.detectChanges(); // requires zone if templates\n }\n /**\n * @hidden\n */\n handleCellClick({ date, modifiers }) {\n this.performSelection(date, modifiers);\n }\n /**\n * @hidden\n */\n handleWeekNumberClick(dates) {\n if (this.selection === 'single') {\n return;\n }\n this.ngZone.run(() => {\n this.handleDateChange({\n selectedDates: dates,\n focusedDate: last(dates)\n });\n });\n }\n /**\n * @hidden\n */\n handleBlur(args) {\n if (this.element.nativeElement.contains(args.relatedTarget)) {\n return;\n }\n this.isActive = false;\n // the injector can get the NgControl instance of the parent component (for example, the DateTimePicker)\n // and enters the zone for no reason because the parent component is still untouched\n if (!this.pickerService && requiresZoneOnBlur(this.control)) {\n this.ngZone.run(() => {\n this.onControlTouched();\n this.emitBlur(args);\n this.cdr.markForCheck();\n });\n }\n else {\n this.emitBlur(args);\n this.detectChanges();\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isActive = true;\n if (!NgZone.isInAngularZone()) {\n this.detectChanges();\n }\n this.emitFocus();\n }\n /**\n * @hidden\n */\n handleMultiViewCalendarKeydown(args) {\n // Prevent form from submitting on enter if used in datepicker (classic view)\n if (isPresent(this.pickerService) && args.keyCode === Keys.Enter) {\n args.preventDefault();\n }\n }\n setClasses(element) {\n this.renderer.addClass(element, 'k-widget');\n this.renderer.addClass(element, 'k-calendar');\n this.renderer.addClass(element, `k-calendar-${this.type}`);\n }\n verifyChanges() {\n if (!isDevMode()) {\n return;\n }\n if (this.min > this.max) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK$2} and ${MAX_DOC_LINK$2}.`);\n }\n if (this.bottomViewEnum > this.topViewEnum) {\n throw new Error(`The topView should be greater than bottomView. See ${BOTTOM_VIEW_DOC_LINK} and ${TOP_VIEW_DOC_LINK}.`);\n }\n }\n verifyValue(candidate) {\n if (!isDevMode()) {\n return;\n }\n if (this.selection === 'single' && candidate && !(candidate instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$4} for possible resolution.`);\n }\n else if (this.selection === 'multiple' && candidate && Array.isArray(candidate)) {\n const onlyDates = candidate.every(value => value instanceof Date);\n if (!onlyDates) {\n throw new Error(`The 'value' should be an array of valid JavaScript Date instances. Check ${VALUE_DOC_LINK$4} for possible resolution.`);\n }\n }\n }\n bindEvents() {\n const element = this.element.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'blur', this.handleBlur.bind(this)), this.renderer.listen(element, 'focus', this.handleFocus.bind(this)), this.renderer.listen(element, 'mousedown', preventDefault), this.renderer.listen(element, 'click', this.handleComponentClick.bind(this)), this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)));\n }\n emitBlur(args) {\n if (this.pickerService) {\n this.pickerService.onBlur.emit(args);\n }\n }\n emitFocus() {\n if (this.pickerService) {\n this.pickerService.onFocus.emit();\n }\n }\n handleComponentClick() {\n if (!this.isActive) {\n if (this.type === 'infinite' && this.monthView.isScrolled()) {\n this.focusedDate = cloneDate(this.focusedDate); //XXX: forces change detect\n this.detectChanges();\n }\n this.focus();\n }\n }\n handleKeydown(args) {\n const headerActive = this.type === 'classic' && this.multiViewCalendar.isHeaderActive;\n if (headerActive) {\n return;\n }\n // reserve the alt + arrow key commands for the picker\n const arrowKeyPressed = [Keys.ArrowUp, Keys.ArrowRight, Keys.ArrowDown, Keys.ArrowLeft].indexOf(args.keyCode) !== -1;\n if (isPresent(this.pickerService) && arrowKeyPressed && args.altKey) {\n return;\n }\n // Prevent form from submitting on enter if used in datepicker (infinite view)\n if (isPresent(this.pickerService) && args.keyCode === Keys.Enter) {\n args.preventDefault();\n }\n const candidate = dateInRange(this.navigator.move(this.focusedDate, this.navigator.action(args), this.activeViewEnum), this.min, this.max);\n if (!isEqual(this.focusedDate, candidate)) {\n this.focusedDate = candidate;\n this.detectChanges();\n args.preventDefault();\n }\n if (args.keyCode === Keys.Enter) {\n this.performSelection(this.focusedDate, args);\n }\n }\n detectChanges() {\n if (!this.destroyed) {\n this.cdr.detectChanges();\n }\n }\n emitSameDate() {\n if (this.pickerService) {\n this.pickerService.sameDateSelected.emit();\n }\n }\n setAriaActivedescendant() {\n // in Classic mode, the inner MultiViewCalendar handles the activedescendant\n if (!isPresent(this.element) || (this.type === 'classic' && !this.element.nativeElement.hasAttribute('aria-activedescendant'))) {\n return;\n }\n if (this.type === 'classic') {\n this.renderer.removeAttribute(this.element.nativeElement, 'aria-activedescendant');\n return;\n }\n const focusedCellId = this.cellUID + this.focusedDate.getTime();\n this.renderer.setAttribute(this.element.nativeElement, 'aria-activedescendant', focusedCellId);\n }\n parseSelectionToValue(selection) {\n selection = selection || [];\n return this.selection === 'single' ? cloneDate(last(selection)) : selection.map(date => cloneDate(date));\n }\n performSelection(date, selectionModifiers) {\n const selection = this.selectionService.performSelection({\n date: date,\n modifiers: selectionModifiers,\n selectionMode: this.selection,\n activeViewEnum: this.activeViewEnum,\n rangePivot: this.rangePivot,\n selectedDates: this.selectedDates\n });\n this.rangePivot = selection.rangePivot;\n this.handleDateChange({\n selectedDates: selection.selectedDates,\n focusedDate: date\n });\n }\n}\nCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarComponent, deps: [{ token: BusViewService }, { token: CalendarDOMService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: ScrollSyncService }, { token: DisabledDatesService }, { token: i1$1.LocalizationService }, { token: SelectionService }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarComponent, selector: \"kendo-calendar\", inputs: { id: \"id\", focusedDate: \"focusedDate\", min: \"min\", max: \"max\", rangeValidation: \"rangeValidation\", selection: \"selection\", value: \"value\", disabled: \"disabled\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", disabledDates: \"disabledDates\", navigation: \"navigation\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", type: \"type\", animateNavigation: \"animateNavigation\", weekNumber: \"weekNumber\", cellTemplateRef: [\"cellTemplate\", \"cellTemplateRef\"], monthCellTemplateRef: [\"monthCellTemplate\", \"monthCellTemplateRef\"], yearCellTemplateRef: [\"yearCellTemplate\", \"yearCellTemplateRef\"], decadeCellTemplateRef: [\"decadeCellTemplate\", \"decadeCellTemplateRef\"], centuryCellTemplateRef: [\"centuryCellTemplate\", \"centuryCellTemplateRef\"], weekNumberTemplateRef: [\"weekNumberTemplate\", \"weekNumberTemplateRef\"], headerTitleTemplateRef: [\"headerTitleTemplate\", \"headerTitleTemplateRef\"], navigationItemTemplateRef: [\"navigationItemTemplate\", \"navigationItemTemplateRef\"] }, outputs: { activeViewChange: \"activeViewChange\", navigate: \"navigate\", activeViewDateChange: \"activeViewDateChange\", valueChange: \"valueChange\" }, host: { properties: { \"class.k-week-number\": \"this.weekNumber\", \"attr.id\": \"this.widgetId\", \"attr.tabindex\": \"this.calendarTabIndex\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"class.k-disabled\": \"this.ariaDisabled\" } }, providers: [\n BusViewService,\n CALENDAR_VALUE_ACCESSOR,\n CALENDAR_RANGE_VALIDATORS,\n KENDO_INPUT_PROVIDER,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.calendar'\n },\n NavigationService,\n ScrollSyncService,\n SelectionService\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }, { propertyName: \"navigationItemTemplate\", first: true, predicate: NavigationItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"navigationView\", first: true, predicate: NavigationComponent, descendants: true }, { propertyName: \"monthView\", first: true, predicate: ViewListComponent, descendants: true }, { propertyName: \"multiViewCalendar\", first: true, predicate: MultiViewCalendarComponent, descendants: true }], exportAs: [\"kendo-calendar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: NavigationComponent, selector: \"kendo-calendar-navigation\", inputs: [\"activeView\", \"min\", \"max\", \"focusedDate\", \"templateRef\"], outputs: [\"valueChange\", \"pageChange\"] }, { type: ViewListComponent, selector: \"kendo-calendar-viewlist\", inputs: [\"cellTemplateRef\", \"weekNumberTemplateRef\", \"headerTitleTemplateRef\", \"activeView\", \"cellUID\", \"focusedDate\", \"isActive\", \"min\", \"max\", \"selectedDates\", \"weekNumber\"], outputs: [\"cellClick\", \"weekNumberCellClick\", \"activeDateChange\", \"todayButtonClick\", \"pageChange\"] }, { type: i5.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }, { type: MultiViewCalendarComponent, selector: \"kendo-multiviewcalendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"disabledDatesRangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"isActive\", \"disabledDates\", \"activeView\", \"bottomView\", \"topView\", \"showViewHeader\", \"animateNavigation\", \"weekNumber\", \"activeRangeEnd\", \"selectionRange\", \"views\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"cellEnter\", \"cellLeave\", \"valueChange\", \"blur\"], exportAs: [\"kendo-multiviewcalendar\"] }, { type: MultiViewCalendarCustomMessagesComponent, selector: \"kendo-multiviewcalendar-messages\" }], directives: [{ type: CalendarLocalizedMessagesDirective, selector: \"[kendoCalendarLocalizedMessages]\" }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-calendar',\n providers: [\n BusViewService,\n CALENDAR_VALUE_ACCESSOR,\n CALENDAR_RANGE_VALIDATORS,\n KENDO_INPUT_PROVIDER,\n LocalizationService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.calendar'\n },\n NavigationService,\n ScrollSyncService,\n SelectionService\n ],\n selector: 'kendo-calendar',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: BusViewService }, { type: CalendarDOMService }, { type: i0.ElementRef }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Injector }, { type: ScrollSyncService }, { type: DisabledDatesService }, { type: i1$1.LocalizationService }, { type: SelectionService }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { id: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], selection: [{\n type: Input\n }], value: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], navigation: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], type: [{\n type: Input\n }], animateNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.k-week-number']\n }], activeViewChange: [{\n type: Output\n }], navigate: [{\n type: Output\n }], activeViewDateChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], navigationItemTemplate: [{\n type: ContentChild,\n args: [NavigationItemTemplateDirective, { static: false }]\n }], navigationItemTemplateRef: [{\n type: Input,\n args: ['navigationItemTemplate']\n }], navigationView: [{\n type: ViewChild,\n args: [NavigationComponent, { static: false }]\n }], monthView: [{\n type: ViewChild,\n args: [ViewListComponent, { static: false }]\n }], multiViewCalendar: [{\n type: ViewChild,\n args: [MultiViewCalendarComponent, { static: false }]\n }], widgetId: [{\n type: HostBinding,\n args: ['attr.id']\n }], calendarTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }] } });\n\n/**\n * @hidden\n */\nconst incompleteDateValidator = () => {\n return (control, incomplete) => {\n if (!isPresent(control.value) && incomplete) {\n return { incompleteDate: true };\n }\n else {\n return null;\n }\n };\n};\n\n/**\n * @hidden\n */\nvar Arrow;\n(function (Arrow) {\n Arrow[Arrow[\"Up\"] = 0] = \"Up\";\n Arrow[Arrow[\"Down\"] = 1] = \"Down\";\n Arrow[Arrow[\"None\"] = 2] = \"None\";\n})(Arrow || (Arrow = {}));\n\n/**\n * @hidden\n */\nclass DateInputMessages extends ComponentMessages {\n}\nDateInputMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDateInputMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputMessages, selector: \"kendo-dateinput-messages-base\", inputs: { decrement: \"decrement\", increment: \"increment\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-dateinput-messages-base'\n }]\n }], propDecorators: { decrement: [{\n type: Input\n }], increment: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DateInputLocalizedMessagesDirective extends DateInputMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nDateInputLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nDateInputLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputLocalizedMessagesDirective, selector: \"[kendoDateInputLocalizedMessages]\", providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoDateInputLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst MIN_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DateInputComponent/#toc-min';\nconst MAX_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DateInputComponent/#toc-max';\nconst VALUE_DOC_LINK$3 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/dateinput/#toc-using-with-json';\nconst DATE_PART_REGEXP = /year|month|/;\nconst TIME_PART_REGEXP = /hour|minute|second|millisecond/;\nconst SHORT_PATTERN_LENGTH_REGEXP = /d|M|H|h|m|s/;\nconst TWO_DIGIT_YEAR_MAX$2 = 68;\nconst PREVIOUS_CENTURY_BASE = 1900;\nconst CURRENT_CENTURY_BASE = 2000;\nconst DEFAULT_FORMAT$1 = 'd';\nconst padZero = (length) => new Array(Math.max(length, 0)).fill('0').join('');\nconst unpadZero = (value) => value.replace(/^0*/, '');\nclass Mask {\n constructor() {\n this.symbols = \"\";\n }\n}\nclass KendoDate {\n constructor(intl, formatPlaceholder, format, value, twoDigitYearMax = TWO_DIGIT_YEAR_MAX$2) {\n this.intl = intl;\n this.formatPlaceholder = formatPlaceholder;\n this.format = format;\n this.twoDigitYearMax = twoDigitYearMax;\n this.year = true;\n this.month = true;\n this.date = true;\n this.hours = true;\n this.minutes = true;\n this.seconds = true;\n this.milliseconds = true;\n this.leadingZero = null;\n this.monthNames = null;\n this.typedMonthPart = \"\";\n this.value = getDate(new Date());\n this.knownParts = \"adHhmMsSEy\";\n this.symbols = {\n \"E\": \"E\",\n \"H\": \"H\",\n \"M\": \"M\",\n \"a\": \"a\",\n \"d\": \"d\",\n \"h\": \"h\",\n \"m\": \"m\",\n \"s\": \"s\",\n \"S\": \"S\",\n \"y\": \"y\"\n };\n validatePackage(packageMetadata);\n this.monthNames = this.allFormatedMonths();\n this.dayPeriods = this.allDayPeriods();\n if (!value) {\n this.value = getDate(new Date());\n const sampleFormat = this.dateFormatString(this.value, this.format).symbols;\n for (let i = 0; i < sampleFormat.length; i++) {\n this.setExisting(sampleFormat[i], false);\n }\n }\n else {\n this.value = cloneDate(value);\n }\n }\n hasValue() {\n const pred = (a, p) => a || p.type !== 'literal' && p.type !== 'dayperiod' && this.getExisting(p.pattern[0]);\n return this.intl.splitDateFormat(this.format).reduce(pred, false);\n }\n shouldNormalizeCentury() {\n return this.intl.splitDateFormat(this.format).some(part => part.pattern === 'yy');\n }\n getDateObject() {\n for (let i = 0; i < this.knownParts.length; i++) {\n if (!this.getExisting(this.knownParts[i])) {\n return null;\n }\n }\n return cloneDate(this.value);\n }\n getTextAndFormat(format) {\n return this.merge(this.intl.formatDate(this.value, format), this.dateFormatString(this.value, format));\n }\n getExisting(symbol) {\n switch (symbol) {\n case \"y\": return this.year;\n case \"M\":\n case \"L\": return this.month;\n case \"d\": return this.date;\n case \"E\": return this.date && this.month && this.year;\n case \"h\":\n case \"H\": return this.hours;\n case \"m\": return this.minutes;\n case \"s\": return this.seconds;\n case \"S\": return this.milliseconds;\n default: return true;\n }\n }\n setExisting(symbol, value) {\n switch (symbol) {\n case \"y\":\n this.year = value;\n if (value === false) {\n this.value.setFullYear(2000);\n }\n break; //allow 2/29 dates\n case \"M\":\n this.month = value;\n if (value === false) {\n this.value.setMonth(0);\n }\n break; //make sure you can type 31 at day part\n case \"d\":\n this.date = value;\n break;\n case \"h\":\n case \"H\":\n this.hours = value;\n break;\n case \"m\":\n this.minutes = value;\n break;\n case \"s\":\n this.seconds = value;\n break;\n case \"S\":\n this.milliseconds = value;\n break;\n default: return;\n }\n }\n modifyPart(symbol, offset) {\n let newValue = cloneDate(this.value);\n switch (symbol) {\n case \"y\":\n newValue.setFullYear(newValue.getFullYear() + offset);\n break;\n case \"M\":\n newValue = addMonths(this.value, offset);\n break;\n case \"d\":\n case \"E\":\n newValue.setDate(newValue.getDate() + offset);\n break;\n case \"h\":\n case \"H\":\n newValue.setHours(newValue.getHours() + offset);\n break;\n case \"m\":\n newValue.setMinutes(newValue.getMinutes() + offset);\n break;\n case \"s\":\n newValue.setSeconds(newValue.getSeconds() + offset);\n break;\n case \"S\":\n newValue.setMilliseconds(newValue.getMilliseconds() + offset);\n break;\n case \"a\":\n newValue.setHours(newValue.getHours() + (12 * offset));\n break;\n default: break;\n }\n if (this.shouldNormalizeCentury()) {\n newValue = this.normalizeCentury(newValue);\n }\n if (newValue.getFullYear() > 0) {\n this.setExisting(symbol, true);\n this.value = newValue;\n }\n }\n parsePart(symbol, currentChar, resetSegmentValue) {\n if (!currentChar) {\n this.resetLeadingZero();\n this.setExisting(symbol, false);\n return { value: null, switchToNext: false };\n }\n let baseDate = this.intl.formatDate(this.value, this.format);\n let dateParts = this.dateFormatString(this.value, this.format);\n let baseFormat = dateParts.symbols;\n let replaced = false;\n let prefix = \"\";\n let current = \"\";\n let suffix = \"\";\n for (let i = 0; i < baseDate.length; i++) {\n if (baseFormat[i] === symbol) {\n current += this.getExisting(symbol) ? baseDate[i] : \"0\";\n replaced = true;\n }\n else if (!replaced) {\n prefix += baseDate[i];\n }\n else {\n suffix += baseDate[i];\n }\n }\n let currentMaxLength = current.length - 3;\n let parsedDate = null;\n const month = this.matchMonth(currentChar);\n const dayPeriod = this.matchDayPeriod(currentChar, symbol);\n const isZeroCurrentChar = currentChar === '0';\n const leadingZero = (this.leadingZero || {})[symbol] || 0;\n if (isZeroCurrentChar) {\n let valueNumber = parseInt(resetSegmentValue ? currentChar : current + currentChar, 10);\n if (valueNumber === 0 && !this.isAbbrMonth(dateParts.partMap, symbol)) {\n this.incrementLeadingZero(symbol);\n }\n }\n else {\n this.resetLeadingZero();\n }\n for (let i = Math.max(0, currentMaxLength); i <= current.length; i++) {\n let middle = resetSegmentValue ? currentChar : (current.substring(i) + currentChar);\n if (symbol === \"S\" && resetSegmentValue) {\n // The \"S\" parser in intl parses \"1\" as 100ms in order to handle ISOString dates correctly, so to get 1ms, we need to pass \"001\"\n const padding = msPaddingFromFormat(baseFormat);\n middle = padding + middle;\n }\n let middleNumber = parseInt(middle, 10);\n parsedDate = this.intl.parseDate(prefix + middle + suffix, this.format);\n if (!parsedDate && !isNaN(middleNumber) && !isNaN(parseInt(currentChar, 10))) {\n if (symbol === 'M' && !month) {\n const monthNumber = middleNumber - 1;\n if (monthNumber > -1 && monthNumber < 12) {\n parsedDate = cloneDate(this.value);\n parsedDate.setMonth(monthNumber);\n if (parsedDate.getMonth() !== monthNumber) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (symbol === 'y') {\n parsedDate = createDate(parseInt(middle, 10), this.month ? this.value.getMonth() : 0, this.date ? this.value.getDate() : 1, this.hours ? this.value.getHours() : 0, this.minutes ? this.value.getMinutes() : 0, this.seconds ? this.value.getSeconds() : 0, this.milliseconds ? this.value.getMilliseconds() : 0);\n if (this.date && parsedDate.getDate() !== this.value.getDate()) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (parsedDate) {\n //move to next segment if the part will overflow with next char\n //when start from empty date (01, then 010), padded zeros should be trimmed\n const patternValue = this.partPattern(dateParts.partMap, symbol).pattern;\n const peekDate = this.intl.parseDate(`${prefix}${this.peek(middle, patternValue)}${suffix}`, this.format);\n const patternLength = this.patternLength(patternValue) || patternValue.length;\n const patternSatisfied = (leadingZero + (unpadZero(middle) || currentChar).length) >= patternLength;\n const switchToNext = peekDate === null || patternSatisfied;\n if (this.shouldNormalizeCentury()) {\n parsedDate = this.normalizeCentury(parsedDate);\n }\n this.value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value, switchToNext: switchToNext };\n }\n }\n if (month) {\n parsedDate = this.intl.parseDate(prefix + month + suffix, this.format);\n if (parsedDate) {\n this.value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value, switchToNext: false };\n }\n }\n if (dayPeriod) {\n parsedDate = this.intl.parseDate(prefix + dayPeriod + suffix, this.format);\n if (parsedDate) {\n this.value = parsedDate;\n return { value: this.value, switchToNext: true };\n }\n }\n if (isZeroCurrentChar) {\n this.setExisting(symbol, false);\n }\n return { value: null, switchToNext: false };\n }\n resetLeadingZero() {\n const hasLeadingZero = this.leadingZero !== null;\n this.setLeadingZero(null);\n return hasLeadingZero;\n }\n setLeadingZero(leadingZero) {\n this.leadingZero = leadingZero;\n }\n normalizeCentury(date) {\n if (!isPresent(date)) {\n return date;\n }\n const twoDigitYear = cropTwoDigitYear(date);\n const centuryBase = this.getNormalizedCenturyBase(twoDigitYear);\n const normalizedDate = setYears(date, centuryBase + twoDigitYear);\n return normalizedDate;\n }\n incrementLeadingZero(symbol) {\n const leadingZero = this.leadingZero || {};\n leadingZero[symbol] = (leadingZero[symbol] || 0) + 1;\n this.leadingZero = leadingZero;\n }\n isAbbrMonth(parts, symbol) {\n const pattern = this.partPattern(parts, symbol);\n return pattern.type === 'month' && pattern.names;\n }\n partPattern(parts, symbol) {\n return parts.filter((part) => part.pattern.indexOf(symbol) !== -1)[0];\n }\n peek(value, pattern) {\n const peekValue = unpadZero(value) + '0';\n return padZero(pattern.length - peekValue.length) + peekValue;\n }\n matchMonth(typedChar) {\n this.typedMonthPart += typedChar.toLowerCase();\n if (!this.monthNames) {\n return \"\";\n }\n while (this.typedMonthPart.length > 0) {\n for (let i = 0; i < this.monthNames.length; i++) {\n if (this.monthNames[i].toLowerCase().indexOf(this.typedMonthPart) === 0) {\n return this.monthNames[i];\n }\n }\n const monthAsNum = parseInt(this.typedMonthPart, 10);\n if (monthAsNum >= 1 && monthAsNum <= 12 && monthAsNum.toString() === this.typedMonthPart /*ensure they exact match*/) {\n return this.monthNames[monthAsNum - 1];\n }\n this.typedMonthPart = this.typedMonthPart.substring(1, this.typedMonthPart.length);\n }\n return \"\";\n }\n matchDayPeriod(typedChar, symbol) {\n const lowerChart = String(typedChar).toLowerCase();\n if (symbol === 'a' && this.dayPeriods) {\n if (this.dayPeriods.am.toLowerCase().startsWith(lowerChart)) {\n return this.dayPeriods.am;\n }\n else if (this.dayPeriods.pm.toLowerCase().startsWith(lowerChart)) {\n return this.dayPeriods.pm;\n }\n }\n return '';\n }\n allFormatedMonths() {\n const dateFormatParts = this.intl.splitDateFormat(this.format);\n for (let i = 0; i < dateFormatParts.length; i++) {\n if (dateFormatParts[i].type === \"month\" && dateFormatParts[i].names) {\n return this.intl.dateFormatNames(dateFormatParts[i].names);\n }\n }\n return null;\n }\n allDayPeriods() {\n const dateFormatParts = this.intl.splitDateFormat(this.format);\n for (let i = 0; i < dateFormatParts.length; i++) {\n if (dateFormatParts[i].type === \"dayperiod\" && dateFormatParts[i].names) {\n return this.intl.dateFormatNames(dateFormatParts[i].names);\n }\n }\n return null;\n }\n patternLength(pattern) {\n if (pattern[0] === 'y') {\n return 4;\n }\n if (SHORT_PATTERN_LENGTH_REGEXP.test(pattern)) {\n return 2;\n }\n return 0;\n }\n //TODO: REMOVE!\n dateFormatString(date, format) {\n const dateFormatParts = this.intl.splitDateFormat(format);\n const parts = [];\n const partMap = [];\n for (let i = 0; i < dateFormatParts.length; i++) {\n let partLength = this.intl.formatDate(date, { pattern: dateFormatParts[i].pattern }).length;\n while (partLength > 0) {\n parts.push(this.symbols[dateFormatParts[i].pattern[0]] || \"_\");\n partMap.push(dateFormatParts[i]);\n partLength--;\n }\n }\n const returnValue = new Mask();\n returnValue.symbols = parts.join(\"\");\n returnValue.partMap = partMap;\n return returnValue;\n }\n merge(text, mask) {\n // Important: right to left.\n let resultText = \"\";\n let resultFormat = \"\";\n let format = mask.symbols;\n for (let r = format.length - 1; r >= 0; r--) {\n if (this.knownParts.indexOf(format[r]) === -1 || this.getExisting(format[r])) {\n resultText = text[r] + resultText;\n resultFormat = format[r] + resultFormat;\n }\n else {\n const currentSymbol = format[r];\n while (r >= 0 && currentSymbol === format[r]) {\n r--;\n }\n r++;\n if (this.leadingZero && this.leadingZero[currentSymbol]) {\n resultText = '0' + resultText;\n }\n else {\n resultText = this.dateFieldName(mask.partMap[r]) + resultText;\n }\n while (resultFormat.length < resultText.length) {\n resultFormat = format[r] + resultFormat;\n }\n }\n }\n return [resultText, resultFormat];\n }\n dateFieldName(part) {\n const formatPlaceholder = this.formatPlaceholder || 'wide';\n if (formatPlaceholder[part.type]) {\n return formatPlaceholder[part.type];\n }\n if (formatPlaceholder === 'formatPattern') {\n return part.pattern;\n }\n return this.intl.dateFieldName(Object.assign(part, { nameType: formatPlaceholder }));\n }\n getNormalizedCenturyBase(twoDigitYear) {\n return twoDigitYear > this.twoDigitYearMax ?\n PREVIOUS_CENTURY_BASE :\n CURRENT_CENTURY_BASE;\n }\n}\n/**\n * Represents the [Kendo UI DateInput component for Angular]({% slug overview_dateinput %}#toc-basic-usage).\n */\nclass DateInputComponent {\n constructor(cdr, intl, renderer, wrapper, ngZone, injector, localization, pickerService) {\n this.cdr = cdr;\n this.intl = intl;\n this.renderer = renderer;\n this.wrapper = wrapper;\n this.ngZone = ngZone;\n this.injector = injector;\n this.localization = localization;\n this.pickerService = pickerService;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets or gets the `disabled` property of the DateInput and\n * determines whether the component is active\n * ([see example]({% slug disabled_dateinput %})).\n */\n this.disabled = false;\n /**\n * Sets or gets the read-only state of the DateInput\n * ([see example]({% slug readonly_dateinput %})).\n */\n this.readonly = false;\n /**\n * Sets the title of the input element of the DateInput.\n */\n this.title = \"\";\n /**\n * Sets or gets the `tabIndex` property of the DateInput.\n * .\n */\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.role = 'spinbutton';\n /**\n * @hidden\n */\n this.ariaReadOnly = false;\n /**\n * Specifies the date format that is used to display the input value\n * ([see example]({% slug formats_dateinput %})).\n *\n * Format value options:\n * - `string` - Provide a `string` if a single format is going to be used regardless whether the input is focused or blurred.\n * - [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) - To display different formats when the component is focused or blurred, provide a settings object with specified `inputFormat` and `displayFormat` values.\n */\n this.format = DEFAULT_FORMAT$1;\n /**\n * Specifies the hint the DateInput displays when its value is `null`.\n * For more information, refer to the article on\n * [placeholders]({% slug placeholders_dateinput %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n this.placeholder = null;\n /**\n * Configures the incremental steps of the DateInput.\n * For more information, refer to the article on\n * [incremental steps]({% slug incrementalsteps_dateinput %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public steps = { year: 10, month: 1, day: 5 };\n * }\n * ```\n */\n this.steps = {};\n /**\n * Determines whether the built-in min or max validators are to be enforced when a form is being validated.\n */\n this.rangeValidation = true;\n /**\n * @hidden\n * Based on the min and max values, specifies whether the value will be auto-corrected while typing.\n */\n this.autoCorrect = false;\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * The maximum year to assume to be from the current century when typing two-digit year value\n * ([see example]({% slug formats_dateinput %}#toc-two-digit-year-format)).\n *\n * The default value is 68, indicating that typing any value less than 69\n * will be assumed to be 20xx, while 69 and larger will be assumed to be 19xx.\n */\n this.twoDigitYearMax = TWO_DIGIT_YEAR_MAX$2;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered.\n * For more information, refer to the article on\n * [spinner buttons]({% slug spinbuttons_dateinput %}).\n */\n this.spinners = false;\n /**\n * @hidden\n */\n this.isPopupOpen = false;\n /**\n * @hidden\n */\n this.hasPopup = false;\n /**\n * Fires each time the user selects a new value.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n */\n this.valueChange = new EventEmitter();\n /**\n * @hidden\n * Fires each time the user selects a new value.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n */\n this.valueUpdate = new EventEmitter();\n /**\n * Fires each time the user focuses the input element.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n *\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the input element gets blurred.\n * For more information, refer to the section on\n * [events]({% slug overview_dateinput %}#toc-events).\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n *\n */\n this.onBlur = new EventEmitter();\n this.arrow = Arrow;\n this.arrowDirection = Arrow.None;\n this.formatSections = { date: false, time: false };\n this.hasMousedown = false;\n this.focusedPriorToMousedown = false;\n /**\n * @hidden\n */\n this.isDateIncomplete = false;\n this.currentValue = \"\";\n this.currentFormat = \"\";\n this.backspace = false;\n this.resetSegmentValue = true;\n this.minValidator = noop$2;\n this.maxValidator = noop$2;\n this.incompleteValidator = noop$2;\n this._value = null;\n this._active = false;\n this.kendoDate = null;\n this.paste = false;\n this.domEvents = [];\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n this.symbolsMap = this.dateSymbolMap();\n this.updateFormatSections();\n if (this.pickerService) {\n this.pickerService.input = this;\n }\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Specifies the value of the DateInput component.\n *\n * > The `value` has to be a valid [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) instance.\n */\n set value(value) {\n this.verifyValue(value);\n if (this.autoCorrect && !isInRange(value, this.min, this.max)) {\n return;\n }\n this._value = cloneDate(value);\n this.valueUpdate.emit(cloneDate(value));\n }\n get value() {\n return this._value;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n if (this.spinners && this.spinup && this.spindown) {\n this.setSpinnerFill(this.spinup.nativeElement, newFillMode, this.fillMode);\n this.setSpinnerFill(this.spindown.nativeElement, newFillMode, this.fillMode);\n }\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get wrapperClass() {\n return true;\n }\n get disabledClass() {\n return this.disabled;\n }\n get inputElement() {\n return this.dateInput ? this.dateInput.nativeElement : null;\n }\n get inputValue() {\n return (this.inputElement || {}).value || '';\n }\n get isActive() {\n return this._active;\n }\n set isActive(value) {\n this._active = value;\n if (!this.wrapper) {\n return;\n }\n if (!isPresent(this.pickerService)) {\n const element = this.wrapper.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-focus');\n }\n else {\n this.renderer.removeClass(element, 'k-focus');\n }\n }\n }\n get inputFormat() {\n if (!this.format) {\n return DEFAULT_FORMAT$1;\n }\n if (typeof this.format === 'string') {\n return this.format;\n }\n else {\n return this.format.inputFormat;\n }\n }\n get displayFormat() {\n if (!this.format) {\n return DEFAULT_FORMAT$1;\n }\n if (typeof this.format === 'string') {\n return this.format;\n }\n else {\n return this.format.displayFormat;\n }\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty\n */\n isEmpty() {\n return !this.currentValue || !String(this.currentValue).trim();\n }\n /**\n * @hidden\n */\n containsElement(element) {\n return Boolean(closest(element, node => node === this.wrapper.nativeElement));\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n this.verifyRange();\n if (changes.min || changes.max || changes.rangeValidation || changes.incompleteDateValidation) {\n this.minValidator = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidator = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n if (changes.format) {\n this.symbolsMap = this.dateSymbolMap();\n this.updateFormatSections();\n }\n const isEqualToKendoDate = this.kendoDate && isEqual(this.value, this.kendoDate.getDateObject());\n if (changes.format || !isEqualToKendoDate || changes.placeholder) {\n this.kendoDate = this.getKendoDate(this.value);\n this.updateElementValue(this.isActive);\n }\n }\n ngOnDestroy() {\n if (this.intlSubscription) {\n this.intlSubscription.unsubscribe();\n }\n if (this.pickerService) {\n this.pickerService.input = null;\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidator(control) || this.maxValidator(control) || this.incompleteValidator(control, this.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.kendoDate = this.getKendoDate(this.value);\n this.updateElementValue();\n this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));\n this.ngControl = this.injector.get(NgControl, null);\n if (this.wrapper) {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.ngZone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n //ngModel binding\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n this.kendoDate = this.getKendoDate(value);\n this.value = cloneDate(value);\n this.updateElementValue(this.isActive);\n }\n /**\n * @hidden\n */\n triggerChange() {\n const value = this.kendoDate.getDateObject();\n if (+value !== +this.value) {\n this.value = cloneDate(value);\n this.notify();\n }\n }\n /**\n * @hidden\n */\n notify() {\n this.ngZone.run(() => {\n this.onControlChange(cloneDate(this.value));\n this.valueChange.emit(cloneDate(this.value));\n });\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * Focuses the DateInput component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n const input = this.inputElement;\n if (input) {\n input.focus();\n this.selectDateSegment(this.currentFormat[0]);\n }\n }\n /**\n * Blurs the DateInput component.\n */\n blur() {\n const input = this.inputElement;\n if (input) {\n input.blur();\n }\n }\n /**\n * @hidden\n */\n handleButtonClick(offset) {\n this.arrowDirection = Arrow.None;\n this.modifyDateSegmentValue(offset);\n }\n /**\n * @hidden\n */\n modifyDateSegmentValue(offset) {\n const caret = this.caret();\n const symbol = this.currentFormat[caret[0]];\n let step = (this.steps || {})[this.symbolsMap[symbol]] || 1;\n if (symbol === \"S\" && !this.steps.millisecond) {\n const msDigits = millisecondDigitsInFormat(this.inputFormat);\n step = millisecondStepFor(msDigits);\n }\n this.kendoDate.modifyPart(symbol, offset * step);\n this.putDateInRange();\n this.updateElementValue(this.isActive);\n this.triggerChange();\n this.selectDateSegment(symbol);\n this.updateIncompleteValidationStatus();\n }\n /**\n * @hidden\n */\n switchDateSegment(offset) {\n const caret = this.caret();\n if (this.kendoDate.resetLeadingZero()) {\n this.updateElementValue(this.isActive);\n }\n if (caret[0] < caret[1] && this.currentFormat[caret[0]] !== this.currentFormat[caret[1] - 1]) {\n this.selectNearestSegment(offset > 0 ? caret[0] : caret[1] - 1);\n this.resetSegmentValue = true;\n return true;\n }\n const previousFormatSymbol = this.currentFormat[caret[0]];\n let a = caret[0] + offset;\n while (a > 0 && a < this.currentFormat.length) {\n if (this.currentFormat[a] !== previousFormatSymbol &&\n this.currentFormat[a] !== \"_\") {\n break;\n }\n a += offset;\n }\n if (this.currentFormat[a] === \"_\") {\n //there is not known symbol found\n return false;\n }\n let b = a;\n while (b >= 0 && b < this.currentFormat.length) {\n if (this.currentFormat[b] !== this.currentFormat[a]) {\n break;\n }\n b += offset;\n }\n if (a > b && (b + 1 !== caret[0] || a + 1 !== caret[1])) {\n this.caret(b + 1, a + 1);\n this.resetSegmentValue = true;\n return true;\n }\n else if (a < b && (a !== caret[0] || b !== caret[1])) {\n this.caret(a, b);\n this.resetSegmentValue = true;\n return true;\n }\n return false;\n }\n /**\n * @hidden\n */\n selectDateSegment(symbol) {\n let begin = -1;\n let end = 0;\n for (let i = 0; i < this.currentFormat.length; i++) {\n if (this.currentFormat[i] === symbol) {\n end = i + 1;\n if (begin === -1) {\n begin = i;\n }\n }\n }\n if (begin < 0) {\n begin = 0;\n }\n this.caret(0, 0);\n this.caret(begin, end);\n }\n /**\n * @hidden\n */\n handleClick() {\n this.hasMousedown = false;\n if (this.isActive) {\n const selectionPresent = this.inputElement.selectionStart !== this.inputElement.selectionEnd;\n const placeholderToggled = isPresent(this.placeholder) && !this.kendoDate.hasValue() && !this.focusedPriorToMousedown;\n // focus first segment if the user hasn't selected something during mousedown and if the placeholder was just toggled\n const selectFirstSegment = !selectionPresent && placeholderToggled;\n const index = selectFirstSegment ? 0 : this.caret()[0];\n this.selectNearestSegment(index);\n }\n }\n /**\n * @hidden\n */\n handleDragAndDrop(args) {\n args.preventDefault();\n }\n /**\n * @hidden\n */\n handleMousedown() {\n this.hasMousedown = true;\n this.focusedPriorToMousedown = this.isActive;\n }\n /**\n * @hidden\n */\n handleFocus(args) {\n this.isActive = true;\n this.updateElementValue();\n if (!this.hasMousedown) {\n this.caret(0, this.inputValue.length);\n }\n this.hasMousedown = false;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.emitFocus(args);\n });\n }\n else {\n this.emitFocus(args);\n }\n }\n /**\n * @hidden\n */\n handleBlur(args) {\n this.isActive = false;\n this.resetSegmentValue = true;\n this.kendoDate.resetLeadingZero();\n this.updateElementValue();\n if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.ngControl)) {\n this.ngZone.run(() => {\n this.onControlTouched();\n this.emitBlur(args);\n this.cdr.markForCheck();\n });\n }\n else {\n this.emitBlur(args);\n }\n }\n getKendoDate(value) {\n const { leadingZero } = (this.kendoDate || {}) || null;\n const kendoDate = new KendoDate(this.intl, this.formatPlaceholder, this.inputFormat, value, this.twoDigitYearMax);\n kendoDate.setLeadingZero(this.isActive ? leadingZero : null);\n return kendoDate;\n }\n dateSymbolMap() {\n const reducer = (map, part) => {\n map[part.pattern[0]] = part.type;\n return map;\n };\n return this.intl.splitDateFormat(this.inputFormat).reduce(reducer, {});\n }\n updateElementValue(isActive) {\n const start = this.caret()[0]; //XXX: get caret position before input is updated\n const format = this.isActive ? this.inputFormat : this.displayFormat;\n const texts = this.kendoDate.getTextAndFormat(format);\n const showPlaceholder = !this.isActive && isPresent(this.placeholder) && !this.kendoDate.hasValue();\n const input = this.inputElement;\n this.currentFormat = texts[1];\n this.currentValue = !showPlaceholder ? texts[0] : '';\n this.renderer.setProperty(input, \"value\", this.currentValue);\n if (input.placeholder !== this.placeholder) {\n this.renderer.setProperty(input, \"placeholder\", this.placeholder);\n }\n if (isActive) {\n this.selectNearestSegment(start);\n }\n }\n caret(start, end = start) {\n const isPosition = start !== undefined;\n let returnValue = [start, start];\n const element = this.inputElement;\n if (isPosition && (this.disabled || this.readonly)) {\n return undefined;\n }\n try {\n if (element.selectionStart !== undefined) {\n if (isPosition) {\n if (isDocumentAvailable() && document.activeElement !== element) {\n element.focus();\n }\n element.setSelectionRange(start, end);\n }\n returnValue = [element.selectionStart, element.selectionEnd];\n }\n }\n catch (e) {\n returnValue = [];\n }\n return returnValue;\n }\n selectNearestSegment(index) {\n // Finds the nearest (in both directions) known part.\n for (let i = index, j = index - 1; i < this.currentFormat.length || j >= 0; i++, j--) {\n if (i < this.currentFormat.length && this.currentFormat[i] !== \"_\") {\n this.selectDateSegment(this.currentFormat[i]);\n return;\n }\n if (j >= 0 && this.currentFormat[j] !== \"_\") {\n this.selectDateSegment(this.currentFormat[j]);\n return;\n }\n }\n }\n verifyRange() {\n if (!isDevMode()) {\n return;\n }\n if (!isValidRange(this.min, this.max)) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK$1} and ${MAX_DOC_LINK$1}.`);\n }\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (value && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$3} for possible resolution.`);\n }\n }\n putDateInRange() {\n const currentDate = this.kendoDate.getDateObject();\n const candidate = dateInRange(currentDate, this.min, this.max);\n if (this.autoCorrect && !isEqual(currentDate, candidate)) {\n this.kendoDate = this.getKendoDate(candidate);\n }\n }\n updateFormatSections() {\n this.formatSections = this.intl.splitDateFormat(this.inputFormat)\n .reduce(({ date, time }, p) => {\n return {\n date: date || DATE_PART_REGEXP.test(p.type),\n time: time || TIME_PART_REGEXP.test(p.type)\n };\n }, { date: false, time: false });\n }\n intlChange() {\n this.updateFormatSections();\n this.kendoDate = this.getKendoDate(this.value);\n this.updateElementValue(this.isActive);\n }\n updateOnPaste() {\n let value = this.intl.parseDate(this.inputValue, this.inputFormat) || this.value;\n if (isPresent(value) && this.kendoDate.shouldNormalizeCentury()) {\n value = this.kendoDate.normalizeCentury(value);\n }\n const notify = +value !== +this.value;\n this.writeValue(value);\n if (notify) {\n this.notify();\n }\n }\n bindEvents() {\n const element = this.wrapper.nativeElement;\n const mousewheelHandler = this.handleMouseWheel.bind(this);\n this.domEvents.push(this.renderer.listen(element, 'DOMMouseScroll', mousewheelHandler), this.renderer.listen(element, 'mousewheel', mousewheelHandler), this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)), this.renderer.listen(element, 'paste', this.handlePaste.bind(this)), this.renderer.listen(element, 'input', this.handleInput.bind(this)));\n }\n handleMouseWheel(event) {\n if (this.disabled || this.readonly || !this.isActive) {\n return;\n }\n event = window.event || event;\n if (event.shiftKey) {\n this.switchDateSegment((event.wheelDelta || -event.detail) > 0 ? -1 : 1);\n }\n else {\n this.modifyDateSegmentValue((event.wheelDelta || -event.detail) > 0 ? 1 : -1);\n }\n event.returnValue = false;\n if (event.preventDefault) {\n event.preventDefault();\n }\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n }\n handlePaste() {\n this.paste = true;\n }\n handleKeydown(event) {\n if (this.disabled || this.readonly || event.altKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.keyCode === Keys.Tab) {\n const moved = this.switchDateSegment(event.shiftKey ? -1 : 1);\n if (moved) {\n event.preventDefault();\n }\n return;\n }\n if (event.keyCode === Keys.Backspace) {\n this.backspace = true;\n return;\n }\n switch (event.keyCode) {\n case Keys.ArrowDown:\n this.modifyDateSegmentValue(-1);\n break;\n case Keys.ArrowUp:\n this.modifyDateSegmentValue(1);\n break;\n case Keys.ArrowRight:\n this.switchDateSegment(1);\n break;\n case Keys.ArrowLeft:\n this.switchDateSegment(-1);\n break;\n case Keys.Home:\n this.selectNearestSegment(0);\n break;\n case Keys.End:\n this.selectNearestSegment(this.inputValue.length);\n break;\n default:\n return; //skip the preventDefault if we didn't handled the keyCode\n }\n event.preventDefault();\n }\n handleInput() {\n if (this.disabled || this.readonly) {\n return;\n }\n if (this.paste) {\n this.updateOnPaste();\n this.paste = false;\n return;\n }\n const diff = approximateStringMatching(this.currentValue, this.currentFormat, this.inputValue, this.caret()[0]);\n const navigationOnly = (diff.length === 1 && diff[0][1] === \"_\");\n let switchPart = false;\n if (!navigationOnly) {\n let parsedPart;\n for (let i = 0; i < diff.length; i++) {\n parsedPart = this.kendoDate.parsePart(diff[i][0], diff[i][1], this.resetSegmentValue);\n switchPart = parsedPart.switchToNext;\n }\n const candidate = this.kendoDate.getDateObject();\n if (this.value && candidate && !this.formatSections.date) {\n this.kendoDate = this.getKendoDate(setTime(this.value, candidate));\n }\n }\n this.resetSegmentValue = false;\n this.putDateInRange();\n this.updateElementValue(this.isActive);\n this.triggerChange();\n this.updateIncompleteValidationStatus();\n if (diff.length && diff[0][0] !== \"_\") {\n this.selectDateSegment(diff[0][0]);\n }\n if (switchPart || navigationOnly) {\n this.switchDateSegment(1);\n }\n if (this.backspace) {\n this.switchDateSegment(-1);\n }\n this.backspace = false;\n }\n emitFocus(args) {\n this.onFocus.emit();\n if (this.pickerService) {\n this.pickerService.onFocus.emit(args);\n }\n }\n emitBlur(args) {\n this.onBlur.emit();\n if (this.pickerService) {\n this.pickerService.onBlur.emit(args);\n }\n }\n updateIncompleteValidationStatus() {\n const previousValue = this.isDateIncomplete;\n this.isDateIncomplete = this.kendoDate.hasValue() && this.value === null;\n if (previousValue === this.isDateIncomplete || !this.incompleteDateValidation) {\n return;\n }\n if (isPresent(this.ngControl) && !isPresent(this.pickerService)) {\n this.cdr.markForCheck();\n this.ngZone.run(() => this.onValidatorChange());\n }\n else if (isPresent(this.pickerService)) {\n this.pickerService.dateCompletenessChange.emit();\n }\n }\n setSpinnerFill(spinner, fill, oldFill) {\n if (oldFill !== 'none') {\n this.renderer.removeClass(spinner, `k-button-${oldFill}`);\n this.renderer.removeClass(spinner, `k-button-${oldFill}-base`);\n }\n this.renderer.addClass(spinner, `k-button-${fill}`);\n this.renderer.addClass(spinner, `k-button-${fill}-base`);\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n if (this.spinners && this.fillMode !== 'none') {\n this.setSpinnerFill(this.spinup.nativeElement, this.fillMode);\n this.setSpinnerFill(this.spindown.nativeElement, this.fillMode);\n }\n }\n}\nDateInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.IntlService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: i1$1.LocalizationService }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputComponent, selector: \"kendo-dateinput\", inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", title: \"title\", tabindex: \"tabindex\", role: \"role\", ariaReadOnly: \"ariaReadOnly\", tabIndex: \"tabIndex\", format: \"format\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", steps: \"steps\", max: \"max\", min: \"min\", rangeValidation: \"rangeValidation\", autoCorrect: \"autoCorrect\", incompleteDateValidation: \"incompleteDateValidation\", twoDigitYearMax: \"twoDigitYearMax\", value: \"value\", spinners: \"spinners\", isPopupOpen: \"isPopupOpen\", hasPopup: \"hasPopup\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", valueUpdate: \"valueUpdate\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-input\": \"this.wrapperClass\", \"class.k-dateinput\": \"this.wrapperClass\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: L10N_PREFIX, useValue: 'kendo.dateinput' },\n { provide: KendoInput, useExisting: forwardRef(() => DateInputComponent) },\n LocalizationService\n ], viewQueries: [{ propertyName: \"dateInput\", first: true, predicate: [\"dateInput\"], descendants: true, static: true }, { propertyName: \"spinup\", first: true, predicate: [\"spinup\"], descendants: true }, { propertyName: \"spindown\", first: true, predicate: [\"spindown\"], descendants: true }], exportAs: [\"kendo-dateinput\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: DateInputLocalizedMessagesDirective, selector: \"[kendoDateInputLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-dateinput',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: L10N_PREFIX, useValue: 'kendo.dateinput' },\n { provide: KendoInput, useExisting: forwardRef(() => DateInputComponent) },\n LocalizationService\n ],\n selector: 'kendo-dateinput',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.IntlService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Injector }, { type: i1$1.LocalizationService }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], title: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], role: [{\n type: Input\n }], ariaReadOnly: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], format: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], steps: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], autoCorrect: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], twoDigitYearMax: [{\n type: Input\n }], value: [{\n type: Input\n }], spinners: [{\n type: Input\n }], isPopupOpen: [{\n type: Input\n }], hasPopup: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], valueUpdate: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], dateInput: [{\n type: ViewChild,\n args: ['dateInput', { static: true }]\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-input']\n }, {\n type: HostBinding,\n args: ['class.k-dateinput']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], spinup: [{\n type: ViewChild,\n args: ['spinup', { static: false }]\n }], spindown: [{\n type: ViewChild,\n args: ['spindown', { static: false }]\n }] } });\n\n/**\n * A preventable event instance which is triggered by the `open` and `close` events.\n */\nclass PreventableEvent {\n /** @hidden */\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nconst TOUCH_ENABLED = new InjectionToken('dateinputs-touch-enabled');\n\n/**\n * @hidden\n */\nconst disabledDatesValidator = (isDateDisabled) => {\n return (control) => {\n if (!isDateDisabled || !control.value) {\n return null;\n }\n const error = {\n disabledDate: true\n };\n return isDateDisabled(control.value) ? error : null;\n };\n};\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass CalendarCustomMessagesComponent extends CalendarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCalendarCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCalendarCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CalendarCustomMessagesComponent, selector: \"kendo-calendar-messages\", providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: CalendarMessages,\n useExisting: forwardRef(() => CalendarCustomMessagesComponent)\n }\n ],\n selector: 'kendo-calendar-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass DatePickerMessages extends ComponentMessages {\n}\nDatePickerMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDatePickerMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerMessages, selector: \"kendo-datepicker-messages-base\", inputs: { today: \"today\", toggle: \"toggle\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-datepicker-messages-base'\n }]\n }], propDecorators: { today: [{\n type: Input\n }], toggle: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DatePickerLocalizedMessagesDirective extends DatePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nDatePickerLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nDatePickerLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerLocalizedMessagesDirective, selector: \"[kendoDatePickerLocalizedMessages]\", providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoDatePickerLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst MIN_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DatePickerComponent/#toc-min';\nconst MAX_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DatePickerComponent/#toc-max';\nconst VALUE_DOC_LINK$2 = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/datepicker/#toc-using-with-json';\nconst DEFAULT_FORMAT = 'd';\nconst TWO_DIGIT_YEAR_MAX$1 = 68;\n/**\n * Represents the [Kendo UI DatePicker component for Angular]({% slug overview_datepicker %}#toc-basic-usage).\n */\nclass DatePickerComponent {\n constructor(zone, localization, cdr, popupService, wrapper, renderer, injector, pickerService, disabledDatesService, touchEnabled) {\n this.zone = zone;\n this.localization = localization;\n this.cdr = cdr;\n this.popupService = popupService;\n this.wrapper = wrapper;\n this.renderer = renderer;\n this.injector = injector;\n this.pickerService = pickerService;\n this.disabledDatesService = disabledDatesService;\n this.touchEnabled = touchEnabled;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Defines the active view that the Calendar initially renders\n * ([see example]({% slug calendar_type_datepicker %}#toc-active-view)).\n * By default, the active view is `month`.\n *\n * > You have to set `activeView` within the `topView`-`bottomView` range.\n */\n this.activeView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the bottommost Calendar view to which the user can navigate\n * ([see example]({% slug calendar_type_datepicker %}#toc-focused-dates)).\n */\n this.bottomView = CalendarViewEnum[CalendarViewEnum.month];\n /**\n * Defines the topmost Calendar view to which the user can navigate\n * ([see example]({% slug calendar_type_datepicker %}#toc-focused-dates)).\n */\n this.topView = CalendarViewEnum[CalendarViewEnum.century];\n /**\n * Specifies the Calendar type.\n *\n * The possible values are:\n * - `infinite` (default)\n * - `classic`\n *\n */\n this.calendarType = 'infinite';\n /**\n * Determines whether to enable animation when navigating to previous/next Calendar view.\n * Applies to the [`classic`]({% slug api_dateinputs_datepickercomponent %}#toc-calendartype) Calendar only.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateCalendarNavigation = false;\n /**\n * Sets or gets the `disabled` property of the DatePicker and determines whether the component is active\n * ([see example]({% slug disabled_datepicker %})).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the DatePicker\n * ([see example]({% slug readonly_datepicker %}#toc-read-only-datepicker)).\n */\n this.readonly = false;\n /**\n * Sets the read-only state of the DatePicker input field\n * ([see example]({% slug readonly_datepicker %}#toc-read-only-input)).\n *\n * > Note that if you set the [`readonly`]({% slug api_dateinputs_datepickercomponent %}#toc-readonly) property value to `true`,\n * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.\n */\n this.readOnlyInput = false;\n /**\n * Sets or gets the `navigation` property of the Calendar\n * and determines whether the navigation side-bar is displayed.\n * ([see example]({% slug sidebar_datepicker %})).\n */\n this.navigation = true;\n /**\n * Specifies the smallest valid date\n * ([see example]({% slug dateranges_datepicker %})).\n * By default, the `min` value is `1900-1-1`.\n */\n this.min = cloneDate(MIN_DATE);\n /**\n * Specifies the biggest valid date\n * ([see example]({% slug dateranges_datepicker %})).\n * By default, the `max` value is `2099-12-31`.\n */\n this.max = cloneDate(MAX_DATE);\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * Specifies the focused date of the Calendar component\n * ([see example]({% slug calendar_type_datepicker %}#toc-focused-dates)).\n */\n this.focusedDate = null;\n /**\n * Specifies the date format that is used to display the input value\n * ([see example]({% slug formats_datepicker %})).\n *\n * Format value options:\n * - `string` - Provide a `string` if a single format is going to be used regardless whether the input is focused or blurred.\n * - [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) - To display different formats when the component is focused or blurred, provide a settings object with specified `inputFormat` and `displayFormat` values.\n */\n this.format = DEFAULT_FORMAT;\n /**\n * The maximum year to assume to be from the current century when typing two-digit year value\n * ([see example]({% slug formats_datepicker %}#toc-two-digit-year-format)).\n *\n * The default value is 68, indicating that typing any value less than 69\n * will be assumed to be 20xx, while 69 and larger will be assumed to be 19xx.\n */\n this.twoDigitYearMax = TWO_DIGIT_YEAR_MAX$1;\n /**\n * Specifies the hint the DatePicker displays when its value is `null`.\n * ([more information and exaples]({% slug placeholders_datepicker %})).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n this.placeholder = null;\n /**\n * Sets or gets the `tabindex` property of the DatePicker.\n */\n this.tabindex = 0;\n /**\n * Sets the title of the input element of the DatePicker.\n */\n this.title = \"\";\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form.\n */\n this.rangeValidation = true;\n /**\n * Determines whether the built-in validator for disabled\n * date ranges is enforced when validating a form\n * ([see example]({% slug disabled_dates_datepicker %}#toc-validation)).\n */\n this.disabledDatesValidation = true;\n /**\n * Determines whether to display a week number column in the `month` view of the Calendar\n * ([see example]({% slug calendar_type_datepicker %}#toc-week-number-column)).\n */\n this.weekNumber = false;\n /**\n * Fires each time the user selects a new value\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the input element\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the input element gets blurred\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open\n * ([more information and example]({% slug overview_datepicker %}#toc-events)).\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.wrapperClasses = true;\n this.popupUID = guid();\n this._popupSettings = { animate: true };\n this._show = false;\n this._value = null;\n this._active = false;\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.disabledDatesValidateFn = noop$2;\n this.incompleteValidator = noop$2;\n this.resolvedPromise = Promise.resolve(null);\n this.domEvents = [];\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n validatePackage(packageMetadata);\n this.pickerSubscriptions = this.pickerService.onFocus.subscribe(this.handleFocus.bind(this));\n this.pickerSubscriptions.add(this.pickerService.onBlur.subscribe(this.handleBlur.bind(this)));\n this.pickerSubscriptions.add(this.pickerService.sameDateSelected.subscribe(this.handleSameSelection.bind(this)));\n this.pickerSubscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));\n }\n /**\n * @hidden\n */\n set cellTemplateRef(template) {\n this.cellTemplate = template;\n }\n /**\n * @hidden\n */\n set monthCellTemplateRef(template) {\n this.monthCellTemplate = template;\n }\n /**\n * @hidden\n */\n set yearCellTemplateRef(template) {\n this.yearCellTemplate = template;\n }\n /**\n * @hidden\n */\n set decadeCellTemplateRef(template) {\n this.decadeCellTemplate = template;\n }\n /**\n * @hidden\n */\n set centuryCellTemplateRef(template) {\n this.centuryCellTemplate = template;\n }\n /**\n * @hidden\n */\n set weekNumberTemplateRef(template) {\n this.weekNumberTemplate = template;\n }\n /**\n * @hidden\n */\n set headerTitleTemplateRef(template) {\n this.headerTitleTemplate = template;\n }\n /**\n * @hidden\n */\n set navigationItemTemplateRef(template) {\n this.navigationItemTemplate = template;\n }\n /**\n * Configures the popup options of the DatePicker.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `appendTo: 'root' | 'component' | ViewContainerRef`—Controls the popup container. By default, the popup will be appended to the root component.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, { animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Specifies the value of the DatePicker component.\n *\n * > The `value` has to be a valid\n * [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) instance.\n */\n set value(value) {\n this.verifyValue(value);\n this._value = cloneDate(value);\n }\n get value() {\n return this._value;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the dates of the DatePicker that will be disabled\n * ([see example]({% slug disabled_dates_datepicker %})).\n */\n set disabledDates(value) {\n this._disabledDates = value;\n this.disabledDatesService.initialize(value);\n }\n get disabledDates() {\n return this._disabledDates;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.removeClass(this.toggleButton.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${newFillMode}-base`);\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get inputRole() {\n return this.readOnlyInput ? 'listbox' : 'spinbutton';\n }\n get isActive() {\n return this._active;\n }\n set isActive(value) {\n this._active = value;\n if (!this.wrapper) {\n return;\n }\n const element = this.wrapper.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-focus');\n }\n else {\n this.renderer.removeClass(element, 'k-focus');\n }\n }\n get show() {\n return this._show;\n }\n set show(show) {\n if (show && (this.disabled || this.readonly)) {\n return;\n }\n const skipZone = !show && (!this._show || !hasObservers(this.close));\n if (!skipZone) {\n this.zone.run(() => {\n this.togglePopup(show);\n });\n }\n else {\n this.togglePopup(show);\n }\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n return !this.value && this.input.isEmpty();\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes\n .subscribe(() => this.cdr.markForCheck());\n this.control = this.injector.get(NgControl, null);\n if (this.wrapper) {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n this.verifySettings();\n if (changes.min || changes.max || changes.rangeValidation || changes.disabledDatesValidation || changes.disabledDates || changes.incompleteDateValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.disabledDatesValidateFn = this.disabledDatesValidation ? disabledDatesValidator(this.disabledDatesService.isDateDisabled) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.isActive = false;\n this.show = false;\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.windowBlurSubscription) {\n this.windowBlurSubscription.unsubscribe();\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n this.pickerSubscriptions.unsubscribe();\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.show;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n this.value = cloneDate(value);\n this.cdr.markForCheck();\n if (!value && this.input) {\n this.input.placeholder = this.placeholder;\n this.input.writeValue(value);\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control) || this.disabledDatesValidateFn(control) || this.incompleteValidator(control, this.input && this.input.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * Focuses the DatePicker component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n this.input.focus();\n }\n /**\n * Blurs the DatePicker component.\n */\n blur() {\n (this.calendar || this.input)['blur']();\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n *\n * @param show - The state of the popup.\n */\n toggle(show) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.resolvedPromise.then(() => {\n this._toggle((show === undefined) ? !this.show : show);\n });\n }\n /**\n * @hidden\n */\n handleIconClick(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n this.focusInput();\n //XXX: explicitly call the handleFocus handler here\n //due to async IE focus event\n this.handleFocus();\n this.show = !this.show;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleMousedown(args) {\n args.preventDefault();\n }\n /**\n * @hidden\n */\n handleChange(value) {\n this.cdr.markForCheck();\n this.focusInput();\n this.value = value;\n this.show = false;\n this.onControlChange(cloneDate(value));\n this.valueChange.emit(cloneDate(value));\n }\n /**\n * @hidden\n */\n handleInputChange(value) {\n this.handleChange(this.input.formatSections.time ? value : this.mergeTime(value));\n }\n /**\n * @hidden\n */\n get popupClasses() {\n return [\n 'k-calendar-container',\n 'k-group',\n 'k-reset'\n ].concat(this.popupSettings.popupClass || []);\n }\n /**\n * @hidden\n */\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n get input() {\n return this.pickerService.input;\n }\n get calendar() {\n return this.pickerService.calendar;\n }\n /**\n * @hidden\n */\n mergeTime(value) {\n return this.value && value ? setTime(value, this.value) : value;\n }\n /**\n * @hidden\n */\n handleKeydown(e) {\n const { altKey, shiftKey, keyCode, target } = e;\n if (keyCode === Keys.Escape) {\n this.show = false;\n }\n if (altKey) {\n if (keyCode === Keys.ArrowDown && !this.show) {\n this.show = true;\n }\n if (keyCode === Keys.ArrowUp) {\n this.show = false;\n }\n }\n if (keyCode === Keys.Tab && this.show && this.calendar.isActive && isTabExitingCalendar(this.calendarType, target, shiftKey)) {\n this.input.focus();\n this.show = false;\n }\n }\n togglePopup(show) {\n const event = new PreventableEvent();\n if (!this._show && show) {\n this.open.emit(event);\n }\n else if (this._show && !show) {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this._toggle(show);\n this.toggleFocus();\n }\n _toggle(show) {\n if (show === this._show) {\n return;\n }\n this._show = show;\n if (show) {\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: { vertical: 'top', horizontal: direction },\n popupClass: this.popupClasses,\n positionMode: 'absolute'\n });\n this.popupRef.popupElement.setAttribute('id', this.popupUID);\n this.subscription = this.popupRef.popupAnchorViewportLeave.subscribe(() => this.show = false);\n }\n else {\n this.popupRef.close();\n this.popupRef = null;\n this.subscription.unsubscribe();\n }\n }\n focusInput() {\n if (this.touchEnabled) {\n return;\n }\n this.input.focus();\n }\n toggleFocus() {\n if (!this.isActive) {\n return;\n }\n if (this.show) {\n if (!this.calendar) {\n this.cdr.detectChanges();\n }\n if (this.calendar) {\n this.calendar.focus();\n }\n }\n else if (!this.touchEnabled) {\n this.input.focus();\n }\n else if (!this.input.isActive) {\n this.handleBlur();\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isValidRange(this.min, this.max)) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_DOC_LINK} and ${MAX_DOC_LINK}.`);\n }\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (value && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$2} for possible resolution.`);\n }\n }\n bindEvents() {\n const element = this.wrapper.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)));\n if (isWindowAvailable()) {\n this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this));\n }\n }\n handleFocus() {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n handleWindowBlur() {\n if (!this.isOpen) {\n return;\n }\n this.show = false;\n }\n handleBlur(args) {\n const currentTarget = args && currentFocusTarget(args);\n if (currentTarget && (this.input.containsElement(currentTarget) ||\n (this.calendar && this.calendar.containsElement(currentTarget)))) {\n return;\n }\n if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {\n this.zone.run(() => {\n this.blurComponent();\n this.cdr.markForCheck();\n });\n }\n else {\n this.blurComponent();\n }\n }\n blurComponent() {\n this.isActive = false; // order is important ¯\\_(ツ)_/¯\n this.show = false;\n this.cdr.detectChanges();\n this.onControlTouched();\n this.onBlur.emit();\n }\n handleSameSelection() {\n if (this.show) {\n this.focusInput();\n this.show = false;\n }\n }\n handleDateCompletenessChange() {\n this.cdr.markForCheck();\n this.zone.run(() => this.onValidatorChange());\n }\n setComponentClasses() {\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('button', this.size));\n }\n if (this.rounded) {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode) {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n }\n }\n}\nDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.NgZone }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.PopupService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: PickerService }, { token: DisabledDatesService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerComponent, selector: \"kendo-datepicker\", inputs: { cellTemplateRef: [\"cellTemplate\", \"cellTemplateRef\"], monthCellTemplateRef: [\"monthCellTemplate\", \"monthCellTemplateRef\"], yearCellTemplateRef: [\"yearCellTemplate\", \"yearCellTemplateRef\"], decadeCellTemplateRef: [\"decadeCellTemplate\", \"decadeCellTemplateRef\"], centuryCellTemplateRef: [\"centuryCellTemplate\", \"centuryCellTemplateRef\"], weekNumberTemplateRef: [\"weekNumberTemplate\", \"weekNumberTemplateRef\"], headerTitleTemplateRef: [\"headerTitleTemplate\", \"headerTitleTemplateRef\"], navigationItemTemplateRef: [\"navigationItemTemplate\", \"navigationItemTemplateRef\"], focusableId: \"focusableId\", activeView: \"activeView\", bottomView: \"bottomView\", topView: \"topView\", calendarType: \"calendarType\", animateCalendarNavigation: \"animateCalendarNavigation\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", popupSettings: \"popupSettings\", navigation: \"navigation\", min: \"min\", max: \"max\", incompleteDateValidation: \"incompleteDateValidation\", focusedDate: \"focusedDate\", value: \"value\", format: \"format\", twoDigitYearMax: \"twoDigitYearMax\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", disabledDates: \"disabledDates\", title: \"title\", rangeValidation: \"rangeValidation\", disabledDatesValidation: \"disabledDatesValidation\", weekNumber: \"weekNumber\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, host: { properties: { \"class.k-datepicker\": \"this.wrapperClasses\", \"class.k-input\": \"this.wrapperClasses\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DatePickerComponent) },\n LocalizationService,\n PickerService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.datepicker'\n }\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }, { propertyName: \"navigationItemTemplate\", first: true, predicate: NavigationItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toggleButton\", first: true, predicate: [\"toggleButton\"], descendants: true, static: true }], exportAs: [\"kendo-datepicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: DateInputComponent, selector: \"kendo-dateinput\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"tabindex\", \"role\", \"ariaReadOnly\", \"tabIndex\", \"format\", \"formatPlaceholder\", \"placeholder\", \"steps\", \"max\", \"min\", \"rangeValidation\", \"autoCorrect\", \"incompleteDateValidation\", \"twoDigitYearMax\", \"value\", \"spinners\", \"isPopupOpen\", \"hasPopup\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"valueUpdate\", \"focus\", \"blur\"], exportAs: [\"kendo-dateinput\"] }, { type: CalendarComponent, selector: \"kendo-calendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"navigation\", \"activeView\", \"bottomView\", \"topView\", \"type\", \"animateNavigation\", \"weekNumber\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"activeViewDateChange\", \"valueChange\"], exportAs: [\"kendo-calendar\"] }, { type: CalendarCustomMessagesComponent, selector: \"kendo-calendar-messages\" }], directives: [{ type: DatePickerLocalizedMessagesDirective, selector: \"[kendoDatePickerLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-datepicker',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DatePickerComponent) },\n LocalizationService,\n PickerService,\n DisabledDatesService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.datepicker'\n }\n ],\n selector: 'kendo-datepicker',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.PopupService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: PickerService }, { type: DisabledDatesService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toggleButton: [{\n type: ViewChild,\n args: ['toggleButton', { static: true }]\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], cellTemplateRef: [{\n type: Input,\n args: ['cellTemplate']\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], monthCellTemplateRef: [{\n type: Input,\n args: ['monthCellTemplate']\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], yearCellTemplateRef: [{\n type: Input,\n args: ['yearCellTemplate']\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], decadeCellTemplateRef: [{\n type: Input,\n args: ['decadeCellTemplate']\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], centuryCellTemplateRef: [{\n type: Input,\n args: ['centuryCellTemplate']\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], weekNumberTemplateRef: [{\n type: Input,\n args: ['weekNumberTemplate']\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], headerTitleTemplateRef: [{\n type: Input,\n args: ['headerTitleTemplate']\n }], navigationItemTemplate: [{\n type: ContentChild,\n args: [NavigationItemTemplateDirective, { static: false }]\n }], navigationItemTemplateRef: [{\n type: Input,\n args: ['navigationItemTemplate']\n }], focusableId: [{\n type: Input\n }], activeView: [{\n type: Input\n }], bottomView: [{\n type: Input\n }], topView: [{\n type: Input\n }], calendarType: [{\n type: Input\n }], animateCalendarNavigation: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], readOnlyInput: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], navigation: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], value: [{\n type: Input\n }], format: [{\n type: Input\n }], twoDigitYearMax: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], title: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], disabledDatesValidation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], wrapperClasses: [{\n type: HostBinding,\n args: ['class.k-datepicker']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }] } });\n\n/**\n * @hidden\n */\nconst TIME_PART = {\n dayperiod: 'dayperiod',\n hour: 'hour',\n millisecond: 'millisecond',\n minute: 'minute',\n second: 'second'\n};\n\n/**\n * @hidden\n */\nconst timeRangeValidator = (min, max) => {\n return (control) => {\n if (!min || !max || !control.value) {\n return null;\n }\n const err = {\n timeRangeError: {\n maxValue: max,\n minValue: min,\n value: control.value\n }\n };\n return isInTimeRange(control.value, min, max) ? null : err;\n };\n};\n\nconst HOURS_IN_DAY = 24;\nconst clampToRange$3 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$3 = clampToRange$3(HOURS_IN_DAY);\nconst stepper$3 = (start, step) => (idx) => clamp$3(start + (idx * step));\nconst distanceFromMin$3 = (value, min) => clamp$3(HOURS_IN_DAY + value - min);\nconst limit$3 = (borderValue) => (barrier, value) => {\n const useBarrier = !value || getDate(barrier).getTime() === getDate(value).getTime();\n return useBarrier ? barrier : setHours$1(barrier, borderValue);\n};\nconst limitDown$3 = limit$3(0);\nconst limitUp$3 = limit$3(HOURS_IN_DAY - 1);\n/**\n * @hidden\n */\nclass HoursService {\n constructor(intl) {\n this.intl = intl;\n this.boundRange = false;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setHours$1(value, candidate.getHours());\n }\n configure(settings) {\n const { boundRange = this.boundRange, insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, part, step = this.step } = settings;\n this.boundRange = boundRange;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (hour) => {\n const date = setHours$1(MIDNIGHT_DATE, hour);\n return {\n text: this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getHour = stepper$3(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getHour(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return this.boundRange ? [limitDown$3(min, value), limitUp$3(max, value)] : [min, max];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastHour(value) === value.getHours();\n return matchMax || !this.isMissing(value);\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastHour(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getHours());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin$3(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setHours$1(this.max, this.lastHour(value)));\n }\n divideByStep(value) {\n return distanceFromMin$3(value.getHours(), this.min.getHours()) / this.step;\n }\n lastHour(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getHours(), max.getHours()];\n }\n}\nHoursService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoursService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nHoursService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoursService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HoursService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst MINUTES_IN_HOUR = 60;\nconst clampToRange$2 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$2 = clampToRange$2(MINUTES_IN_HOUR);\nconst stepper$2 = (start, step) => (idx) => clamp$2(start + (idx * step));\nconst distanceFromMin$2 = (value, min) => clamp$2(MINUTES_IN_HOUR + value - min);\nconst limit$2 = (borderValue) => (barrier, value) => {\n const useBarrier = !value || barrier.getHours() === value.getHours();\n return useBarrier ? barrier : setMinutes(barrier, borderValue);\n};\nconst limitDown$2 = limit$2(0);\nconst limitUp$2 = limit$2(MINUTES_IN_HOUR - 1);\n/**\n * @hidden\n */\nclass MinutesService {\n constructor(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setMinutes(value, candidate.getMinutes());\n }\n configure(settings) {\n const { insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, part, step = this.step } = settings;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (minute) => {\n const date = setMinutes(MIDNIGHT_DATE, minute);\n return {\n text: this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getMinute = stepper$2(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getMinute(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return [limitDown$2(min, value), limitUp$2(max, value)];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastMinute(value) === value.getMinutes();\n return matchMax || !this.isMissing(value);\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastMinute(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getMinutes());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin$2(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setMinutes(this.max, this.lastMinute(value)));\n }\n divideByStep(value) {\n return distanceFromMin$2(value.getMinutes(), this.min.getMinutes()) / this.step;\n }\n lastMinute(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getMinutes(), max.getMinutes()];\n }\n}\nMinutesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MinutesService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nMinutesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MinutesService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MinutesService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst SECONDS_IN_HOUR = 60;\nconst clampToRange$1 = (rangeValue) => (value) => value % rangeValue;\nconst clamp$1 = clampToRange$1(SECONDS_IN_HOUR);\nconst stepper$1 = (start, step) => (idx) => clamp$1(start + (idx * step));\nconst distanceFromMin$1 = (value, min) => clamp$1(SECONDS_IN_HOUR + value - min);\nconst limit$1 = (borderValue) => (barrier, value) => {\n const useBarrier = !value || barrier.getHours() === value.getHours() && barrier.getMinutes() === value.getMinutes();\n return useBarrier ? barrier : setSeconds(barrier, borderValue);\n};\nconst limitDown$1 = limit$1(0);\nconst limitUp$1 = limit$1(SECONDS_IN_HOUR - 1);\n/**\n * @hidden\n */\nclass SecondsService {\n constructor(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setSeconds(value, candidate.getSeconds());\n }\n configure(settings) {\n const { insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, part, step = this.step } = settings;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (second) => {\n const date = setSeconds(MIDNIGHT_DATE, second);\n return {\n text: this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getSecond = stepper$1(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getSecond(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return [limitDown$1(min, value), limitUp$1(max, value)];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastSecond(value) === value.getSeconds();\n return matchMax || !this.isMissing(value);\n }\n divideByStep(value) {\n return distanceFromMin$1(value.getSeconds(), this.min.getSeconds()) / this.step;\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastSecond(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getSeconds());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin$1(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setSeconds(this.max, this.lastSecond(value)));\n }\n lastSecond(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getSeconds(), max.getSeconds()];\n }\n}\nSecondsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SecondsService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nSecondsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SecondsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SecondsService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst MILLISECONDS_IN_SECOND = 1000;\nconst clampToRange = (rangeValue) => (value) => value % rangeValue;\nconst clamp = clampToRange(MILLISECONDS_IN_SECOND);\nconst stepper = (start, step) => (idx) => clamp(start + (idx * step));\nconst distanceFromMin = (value, min) => clamp(MILLISECONDS_IN_SECOND + value - min);\nconst limit = (borderValue) => (barrier, value) => {\n const useBarrier = !value ||\n (barrier.getHours() === value.getHours() &&\n barrier.getMinutes() === value.getMinutes() &&\n barrier.getSeconds() === value.getSeconds());\n return useBarrier ? barrier : setMilliseconds(barrier, borderValue);\n};\nconst limitDown = limit(0);\nconst limitUp = limit(MILLISECONDS_IN_SECOND - 1);\n/**\n * @hidden\n */\nclass MillisecondsService {\n constructor(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n apply(value, candidate) {\n return setMilliseconds(value, candidate.getMilliseconds());\n }\n configure(settings) {\n const { insertUndividedMax = this.insertUndividedMax, min = this.min, max = this.max, step = this.step } = settings;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = (millisecond) => {\n const date = setMilliseconds(MIDNIGHT_DATE, millisecond);\n return {\n text: this.intl.formatDate(date, \"SSS\"),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n }\n data(selectedValue) {\n const [min] = this.range(selectedValue);\n const getMillisecond = stepper(min, this.step);\n const convertToItem = (idx) => (this.toListItem(getMillisecond(idx)));\n const data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n this.addMissing(data, selectedValue);\n return data;\n }\n isRangeChanged(min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n }\n limitRange(min, max, value) {\n return [limitDown(min, value), limitUp(max, value)];\n }\n total(value) {\n const last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n const missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n }\n selectedIndex(value) {\n return Math.ceil(this.divideByStep(value));\n }\n valueInList(value) {\n if (!value) {\n return true;\n }\n const matchMax = this.insertUndividedMax && this.lastMillisecond(value) === value.getMilliseconds();\n return matchMax || !this.isMissing(value);\n }\n divideByStep(value) {\n return distanceFromMin(value.getMilliseconds(), this.min.getMilliseconds()) / this.step;\n }\n addLast(data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastMillisecond(value)));\n }\n return data;\n }\n addMissing(data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n const missingItem = this.toListItem(value.getMilliseconds());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n }\n countFromMin(value) {\n const [min, max] = this.range(value);\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n }\n isMissing(value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n }\n isLastMissing(value) {\n return this.isMissing(setMilliseconds(this.max, this.lastMillisecond(value)));\n }\n lastMillisecond(value) {\n return this.range(value)[1];\n }\n range(value) {\n const [min, max] = this.limitRange(this.min, this.max, value);\n return [min.getMilliseconds(), max.getMilliseconds()];\n }\n}\nMillisecondsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MillisecondsService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nMillisecondsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MillisecondsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MillisecondsService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst setHours = (date, hours) => {\n const clone = cloneDate(date);\n clone.setHours(hours);\n return clone;\n};\nconst isAM = (value) => value !== null && value < 12;\nconst isPM = (value) => value !== null && (!value || value > 11);\nconst inRange = (value, min, max) => ((!min && !max) || (value >= min && value <= max));\nconst inReverseRange = (value, min, max) => ((!min && !max) || value >= min || value <= max);\n/**\n * @hidden\n */\nclass DayPeriodService {\n constructor(intl) {\n this.intl = intl;\n }\n /**\n * @hidden\n */\n apply(value, candidate) {\n const hour = value.getHours();\n const hourAM = isAM(hour);\n const candidateAM = isAM(candidate.getHours());\n if ((hourAM && candidateAM) || (!hourAM && !candidateAM)) {\n return value;\n }\n const [min, max = 24] = this.normalizedRange();\n const result = hour + (candidateAM ? -12 : 12);\n return setHours(value, Math.min(Math.max(min, result), (max || 24)));\n }\n /**\n * @hidden\n */\n configure(settings) {\n const { min = this.min, max = this.max, part = this.part } = settings;\n this.min = min;\n this.max = max;\n this.part = part;\n }\n /**\n * @hidden\n */\n data(_) {\n const names = this.part.names;\n if (!names) {\n return [];\n }\n const data = [];\n const [min, max] = this.normalizedRange();\n const dayPeriod = this.intl.dateFormatNames(names);\n if (isAM(min)) {\n data.push({ text: dayPeriod.am, value: setHours(this.min, min) });\n }\n if (isPM(max)) {\n data.push({ text: dayPeriod.pm, value: setHours(this.min, Math.max(12, max)) });\n }\n return this.min.getHours() !== min ? data.reverse() : data;\n }\n /**\n * @hidden\n */\n isRangeChanged(_, __) {\n return false;\n }\n /**\n * @hidden\n */\n limitRange(min, max, _) {\n return [min, max];\n }\n /**\n * @hidden\n */\n total() {\n const [min, max] = this.normalizedRange();\n if (!min && !max) {\n return 2;\n }\n if (min > 11 || max < 12) {\n return 1;\n }\n return 2;\n }\n /**\n * @hidden\n */\n selectedIndex(value) {\n if (!this.valueInList(value)) {\n return -1;\n }\n const index = Math.floor(value.getHours() / 12);\n return this.min.getHours() === this.normalizedRange()[0] ? index : (index === 0 ? 1 : 0);\n }\n /**\n * @hidden\n */\n valueInList(value) {\n const reverse = this.min.getHours() !== this.normalizedRange()[0];\n const isInRange = reverse ? inReverseRange : inRange;\n return isInRange(value.getHours(), this.min.getHours(), this.max.getHours());\n }\n normalizedRange() {\n const minHour = this.min.getHours();\n const maxHour = this.max.getHours();\n return [\n Math.min(minHour, maxHour),\n Math.max(minHour, maxHour)\n ];\n }\n}\nDayPeriodService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayPeriodService, deps: [{ token: i1.IntlService }], target: i0.ɵɵFactoryTarget.Injectable });\nDayPeriodService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayPeriodService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DayPeriodService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.IntlService }]; } });\n\nconst div = domContainerFactory('div');\nconst ul = domContainerFactory('ul');\nconst li = domContainerFactory('li');\nconst span = domContainerFactory('span');\nconst listTitle = () => span('hour', 'k-title k-timeselector-title');\nconst listItem = () => li('02', 'k-item');\nconst list = () => ul([listItem()], 'k-reset');\nconst scrollable = () => (div([list()], 'k-time-container k-flex k-content k-calendar-content k-scrollable'));\nconst timeListWrapper = () => {\n if (!isDocumentAvailable()) {\n return null;\n }\n return div([listTitle(), div([scrollable()], 'k-time-list')], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });\n};\nconst TIMELIST_WRAPPER = timeListWrapper();\n/**\n * @hidden\n */\nclass TimePickerDOMService {\n ensureHeights() {\n if (this.timeListHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n }\n calculateHeights(container) {\n if (!isDocumentAvailable()) {\n return;\n }\n const listContainer = container && container.querySelector('.k-time-list-container');\n const hostContainer = listContainer || document.body;\n const wrapper = hostContainer.appendChild(TIMELIST_WRAPPER);\n this.timeListHeight = wrapper.querySelector('.k-scrollable').getBoundingClientRect().height;\n this.itemHeight = wrapper.querySelector('li').getBoundingClientRect().height;\n hostContainer.removeChild(wrapper);\n }\n isActive(element) {\n if (!isDocumentAvailable() || !element) {\n return false;\n }\n return (element.nativeElement || element) === document.activeElement;\n }\n}\nTimePickerDOMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerDOMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTimePickerDOMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerDOMService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerDOMService, decorators: [{\n type: Injectable\n }] });\n\n/* eslint-disable @angular-eslint/component-selector */\nconst SNAP_THRESHOLD = 0.05; //% of the item height\nconst SCROLL_THRESHOLD = 2; //< 2px threshold\nconst nil = () => (null);\nconst getters = {\n 35: (data, _) => data[data.length - 1],\n 36: (data, _) => data[0],\n 38: (data, index) => data[index - 1],\n 40: (data, index) => data[index + 1]\n};\nconst services = {\n [TIME_PART.dayperiod]: DayPeriodService,\n [TIME_PART.hour]: HoursService,\n [TIME_PART.minute]: MinutesService,\n [TIME_PART.second]: SecondsService,\n [TIME_PART.millisecond]: MillisecondsService\n};\n/**\n * @hidden\n */\nclass TimeListComponent {\n constructor(element, injector, dom, renderer, zone) {\n this.element = element;\n this.injector = injector;\n this.dom = dom;\n this.renderer = renderer;\n this.zone = zone;\n this.min = cloneDate(MIDNIGHT_DATE);\n this.max = cloneDate(MAX_TIME);\n this.step = 1;\n this.disabled = false;\n this.valueChange = new EventEmitter();\n this.componentClass = true;\n this.animateToIndex = true;\n this.isActive = false;\n this.skip = 0;\n this.total = 60;\n this.data = [];\n this.indexToScroll = -1;\n this.domEvents = [];\n }\n get tabIndex() {\n return this.disabled ? undefined : 0;\n }\n ngOnChanges(changes) {\n if (changes.part) {\n this.service = this.injector.get(services[this.part.type]);\n this.service.configure(this.serviceSettings());\n }\n const value = this.value;\n const valueChanges = changes.value || {};\n const [min, max] = this.service.limitRange(this.min, this.max, value);\n if (this.service.isRangeChanged(min, max) || changes.min || changes.max || changes.step) {\n this.data = [];\n this.service.configure(this.serviceSettings({ min, max }));\n }\n // Skip the rendering of the list whenever possible\n if (!this.data.length || this.hasMissingValue(valueChanges)) {\n this.animateToIndex = false;\n this.data = this.service.data(value);\n }\n this.animateToIndex = this.animateToIndex && this.textHasChanged(valueChanges);\n this.total = this.service.total(value);\n this.indexToScroll = this.selectedIndex(value);\n }\n ngOnInit() {\n this.animateToIndex = true;\n this.dom.ensureHeights();\n this.itemHeight = this.dom.itemHeight;\n this.listHeight = this.dom.timeListHeight;\n this.topOffset = (this.listHeight - this.itemHeight) / 2;\n this.bottomOffset = this.listHeight - this.itemHeight;\n this.topThreshold = this.itemHeight * SNAP_THRESHOLD;\n this.bottomThreshold = this.itemHeight * (1 - SNAP_THRESHOLD);\n const translate = `translateY(${this.topOffset}px)`;\n this.style = { transform: translate, '-ms-transform': translate };\n if (this.element) {\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n ngOnDestroy() {\n this.scrollSubscription.unsubscribe();\n this.domEvents.forEach(unbindCallback => unbindCallback());\n }\n ngAfterViewInit() {\n this.scrollOnce((index) => this.virtualization.scrollToIndex(index));\n }\n ngAfterViewChecked() {\n this.scrollOnce((index) => {\n const action = this.animateToIndex ? 'animateToIndex' : 'scrollToIndex';\n this.virtualization[action](index);\n this.animateToIndex = true;\n });\n }\n handleChange(dataItem) {\n const candidate = this.service.apply(this.value, dataItem.value);\n if (this.value.getTime() === candidate.getTime()) {\n return;\n }\n this.indexToScroll = this.data.indexOf(dataItem);\n this.value = candidate;\n this.valueChange.emit(candidate);\n }\n handleItemClick(args) {\n const item = closestInScope(args.target, node => node.hasAttribute('data-timelist-item-index'), this.element.nativeElement);\n if (item) {\n const index = item.getAttribute('data-timelist-item-index');\n this.handleChange(this.data[index]);\n }\n }\n /**\n * Focuses the host element of the TimeList.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.focus();\n }\n /**\n * Blurs the TimeList component.\n */\n blur() {\n if (!this.element) {\n return;\n }\n this.element.nativeElement.blur();\n }\n itemOffset(scrollTop) {\n const valueIndex = this.selectedIndex(this.value);\n const activeIndex = this.virtualization.activeIndex();\n const offset = this.virtualization.itemOffset(activeIndex);\n const distance = Math.abs(Math.ceil(scrollTop) - offset);\n if (valueIndex === activeIndex && distance < SCROLL_THRESHOLD) {\n return offset;\n }\n const scrollUp = valueIndex > activeIndex;\n const moveToNext = scrollUp && distance >= this.bottomThreshold || !scrollUp && distance > this.topThreshold;\n return moveToNext ? this.virtualization.itemOffset(activeIndex + 1) : offset;\n }\n hasMissingValue({ previousValue, currentValue }) {\n const isPreviousMissing = previousValue && !this.service.valueInList(previousValue);\n const isCurrentMissing = currentValue && !this.service.valueInList(currentValue);\n return isPreviousMissing || isCurrentMissing;\n }\n scrollOnce(action) {\n if (this.indexToScroll !== -1) {\n action(this.indexToScroll);\n this.indexToScroll = -1;\n }\n }\n serviceSettings(settings) {\n const defaults = {\n boundRange: false,\n insertUndividedMax: false,\n max: this.max,\n min: this.min,\n part: this.part,\n step: this.step\n };\n const result = Object.assign({}, defaults, settings);\n result.boundRange = result.part.type !== 'hour';\n return result;\n }\n selectedIndex(value) {\n if (!value) {\n return -1;\n }\n return this.service.selectedIndex(value);\n }\n textHasChanged({ previousValue, currentValue }) {\n if (!previousValue || !currentValue) {\n return false;\n }\n const oldData = this.data[this.selectedIndex(previousValue)];\n const newData = this.data[this.selectedIndex(currentValue)];\n return oldData && newData && oldData.text !== newData.text;\n }\n handleKeyDown(e) {\n const getter = getters[e.keyCode] || nil;\n const dataItem = getter(this.data, this.service.selectedIndex(this.value));\n if (dataItem) {\n this.handleChange(dataItem);\n e.preventDefault();\n }\n }\n bindEvents() {\n this.scrollSubscription = this.virtualization\n .scroll$()\n .pipe(debounceTime(100), map((e) => e.target.scrollTop), map((top) => this.itemOffset(top)), map((itemOffset) => this.virtualization.itemIndex(itemOffset)))\n .subscribe(index => {\n this.virtualization.scrollToIndex(index);\n this.handleChange(this.data[index]);\n });\n const element = this.element.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'mouseover', () => !this.isActive && this.focus()), this.renderer.listen(element, 'click', () => this.focus()), this.renderer.listen(element, 'blur', () => this.isActive = false), this.renderer.listen(element, 'focus', () => this.isActive = true), this.renderer.listen(element, 'keydown', this.handleKeyDown.bind(this)));\n }\n}\nTimeListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeListComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: TimePickerDOMService }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nTimeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeListComponent, selector: \"kendo-timelist\", inputs: { min: \"min\", max: \"max\", part: \"part\", step: \"step\", disabled: \"disabled\", value: \"value\" }, outputs: { valueChange: \"valueChange\" }, host: { properties: { \"attr.tabindex\": \"this.tabIndex\", \"class.k-time-list\": \"this.componentClass\" } }, viewQueries: [{ propertyName: \"virtualization\", first: true, predicate: VirtualizationComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n
    \n
  • \n {{item.text}}\n
  • \n
\n \n `, isInline: true, components: [{ type: VirtualizationComponent, selector: \"kendo-virtualization\", inputs: [\"direction\", \"itemHeight\", \"itemWidth\", \"topOffset\", \"bottomOffset\", \"maxScrollDifference\", \"scrollOffsetSize\", \"scrollDuration\", \"skip\", \"take\", \"total\"], outputs: [\"activeIndexChange\", \"pageChange\", \"scrollChange\"] }], directives: [{ type: i7.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-timelist',\n template: `\n \n
    \n
  • \n {{item.text}}\n
  • \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }, { type: TimePickerDOMService }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { min: [{\n type: Input\n }], max: [{\n type: Input\n }], part: [{\n type: Input\n }], step: [{\n type: Input\n }], disabled: [{\n type: Input\n }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], virtualization: [{\n type: ViewChild,\n args: [VirtualizationComponent, { static: true }]\n }], tabIndex: [{\n type: HostBinding,\n args: [\"attr.tabindex\"]\n }], componentClass: [{\n type: HostBinding,\n args: [\"class.k-time-list\"]\n }] } });\n\nconst isEqualTillMinute = (value, min) => value.getHours() === min.getHours() && value.getMinutes() === min.getMinutes();\nconst isEqualTillSecond = (value, min) => isEqualTillMinute(value, min) && value.getSeconds() === min.getSeconds();\nconst isEqualTillMillisecond = (value, min) => isEqualTillSecond(value, min) && value.getMilliseconds() === min.getMilliseconds();\nconst defaultGetters = [\n {\n type: TIME_PART.hour,\n getter: (value) => value.getHours(),\n minGetter: (_, min) => min.getHours()\n }, {\n type: TIME_PART.minute,\n getter: (value) => value.getMinutes(),\n minGetter: (value, min) => isEqualTillMinute(value, min) ? min.getMinutes() : 0\n }, {\n type: TIME_PART.second,\n getter: (value) => value.getSeconds(),\n minGetter: (value, min) => isEqualTillSecond(value, min) ? min.getSeconds() : 0\n }, {\n type: TIME_PART.millisecond,\n getter: (value) => value.getMilliseconds(),\n minGetter: (value, min) => isEqualTillMillisecond(value, min) ? min.getMilliseconds() : 0\n }\n];\nconst left = getter => (origin, _) => getter(origin);\nconst right = getter => (_, candidate) => getter(candidate);\nconst convertToObject = (parts) => parts.reduce((obj, p) => { obj[p.type] = p.type; return obj; }, {});\nconst getterByPart = parts => g => parts[g.type] ? right(g.getter) : left(g.getter);\nconst gettersFactory = getters => parts => (getters.map(getterByPart(convertToObject(parts))));\nconst snapValue = (getter, minGetter, step) => (date, min) => {\n const value = getter(date);\n const minValue = minGetter(date, min);\n const rest = value - minValue;\n if (rest < 0) {\n return minValue;\n }\n const mod = rest % step;\n return value - mod + (mod > step / 2 ? step : 0);\n};\nconst snappersFactory = (getters) => steps => (getters.map(g => {\n const step = steps[g.type];\n return step ? snapValue(g.getter, g.minGetter, step) : g.getter;\n}));\n/**\n * @hidden\n */\nconst generateGetters = gettersFactory(defaultGetters);\n/**\n * @hidden\n */\nconst generateSnappers = snappersFactory(defaultGetters);\n/**\n * @hidden\n */\nconst valueMerger = getters => (origin, candidate) => {\n origin.setHours(...getters.map(g => g(origin, candidate)));\n return origin;\n};\n/**\n * @hidden\n */\nconst snapTime = snappers => (candidate, min) => {\n const date = cloneDate(candidate);\n date.setHours(...snappers.map(s => s(date, min)));\n return date;\n};\n\n/**\n * @hidden\n */\nclass TimePickerMessages extends ComponentMessages {\n}\nTimePickerMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTimePickerMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerMessages, selector: \"kendo-timepicker-messages-base\", inputs: { accept: \"accept\", acceptLabel: \"acceptLabel\", cancel: \"cancel\", cancelLabel: \"cancelLabel\", now: \"now\", nowLabel: \"nowLabel\", toggle: \"toggle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-timepicker-messages-base'\n }]\n }], propDecorators: { accept: [{\n type: Input\n }], acceptLabel: [{\n type: Input\n }], cancel: [{\n type: Input\n }], cancelLabel: [{\n type: Input\n }], now: [{\n type: Input\n }], nowLabel: [{\n type: Input\n }], toggle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TimeSelectorLocalizedMessagesDirective extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nTimeSelectorLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nTimeSelectorLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeSelectorLocalizedMessagesDirective, selector: \"[kendoTimeSelectorLocalizedMessages]\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoTimeSelectorLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst listReducer = (state, list, idx, all) => {\n if (state.length || !list.isActive) {\n return state;\n }\n return [{\n next: all[idx + 1] || list,\n prev: all[idx - 1] || list\n }];\n};\nvar Direction;\n(function (Direction) {\n Direction[Direction[\"Left\"] = 0] = \"Left\";\n Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n *\n * Represents the Kendo UI TimeSelector component for Angular.\n */\nclass TimeSelectorComponent {\n constructor(localization, cdr, element, intl, dom, zone, renderer, pickerService) {\n this.localization = localization;\n this.cdr = cdr;\n this.element = element;\n this.intl = intl;\n this.dom = dom;\n this.zone = zone;\n this.renderer = renderer;\n this.pickerService = pickerService;\n /**\n * Specifies the time format used to display the time list columns.\n */\n this.format = 't';\n /**\n * Specifies the smallest valid time value.\n */\n this.min = cloneDate(MIN_TIME);\n /**\n * Specifies the biggest valid time value.\n */\n this.max = cloneDate(MAX_TIME);\n /**\n * Determines whether to display the **Cancel** button in the popup.\n */\n this.cancelButton = true;\n /**\n * Determines whether to display the **Set** button in the popup.\n */\n this.setButton = true;\n /**\n * Determines whether to display the **Now** button in the popup.\n *\n * > If the current time is out of range or the incremental step is greater than `1`, the **Now** button will be hidden.\n */\n this.nowButton = true;\n /**\n * Sets or gets the `disabled` property of the TimeSelector and determines whether the component is active.\n */\n this.disabled = false;\n /**\n * Specifies the value of the TimeSelector component.\n */\n this.value = null;\n /**\n * Fires each time the user selects a new value.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user cancels the selected value.\n */\n this.valueReject = new EventEmitter();\n this.isActive = false;\n this.showNowButton = true;\n this._activeListIndex = -1;\n this._steps = {};\n this.domEvents = [];\n if (this.pickerService) {\n this.pickerService.timeSelector = this;\n }\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * Configures the incremental steps of the TimeSelector.\n *\n * The available options are:\n * - `hour: Number`—Controls the incremental step of the hour value.\n * - `minute: Number`—Controls the incremental step of the minute value.\n * - `second: Number`—Controls the incremental step of the second value.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public steps = { hour: 2, minute: 15, second: 15 };\n * }\n * ```\n *\n * > If the incremental step is greater than `1`, the **Now** button will be hidden.\n */\n set steps(steps) {\n this._steps = steps || {};\n }\n get steps() {\n return this._steps;\n }\n set current(value) {\n this._current = timeInRange(this.snapTime(cloneDate(value || MIDNIGHT_DATE), this.min), this.min, this.max);\n if (!NgZone.isInAngularZone()) {\n this.cdr.detectChanges();\n }\n }\n get current() {\n return this._current;\n }\n get activeListIndex() {\n return this._activeListIndex;\n }\n set activeListIndex(value) {\n this._activeListIndex = value;\n if (!this.timeListWrappers || !this.timeListWrappers.length) {\n return;\n }\n this.timeListWrappers.forEach(listWrapper => {\n this.renderer.removeClass(listWrapper.nativeElement, 'k-state-focused');\n });\n if (value >= 0) {\n const listIndex = this.listIndex(value);\n const focusedWrapper = this.timeListWrappers.toArray()[listIndex];\n if (focusedWrapper) {\n this.renderer.addClass(focusedWrapper.nativeElement, 'k-state-focused');\n }\n }\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.subscriptions = this.intl.changes.subscribe(this.intlChange.bind(this));\n if (this.localization) {\n this.subscriptions.add(this.localization\n .changes\n .subscribe(() => this.cdr.markForCheck()));\n }\n this.renderer.addClass(this.element.nativeElement, 'k-timeselector');\n this.dom.calculateHeights(this.element.nativeElement);\n this.init();\n this.bindEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(_) {\n this.init();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.pickerService) {\n this.pickerService.timeSelector = null;\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n }\n /**\n * Focuses the TimeSelector component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n const list = this.timeLists.first;\n if (!list) {\n return;\n }\n list.focus();\n }\n /**\n * Blurs the TimeSelector component.\n */\n blur() {\n const list = this.timeLists.first;\n if (!list) {\n return;\n }\n list.blur();\n }\n /**\n * @hidden\n */\n handleAccept() {\n this.handleChange(this.mergeValue(cloneDate(this.value || getDate(getNow())), this.current));\n }\n /**\n * @hidden\n */\n handleNow() {\n this.current = getNow();\n this.handleChange(this.current);\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleReject() {\n this.current = this.value;\n this.valueReject.emit();\n }\n /**\n * @hidden\n */\n handleFocus(args) {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n this.emitFocus(args);\n }\n /**\n * @hidden\n */\n handleListFocus(args) {\n const index = parseInt(args.target.getAttribute('data-timelist-index'), 10);\n this.activeListIndex = index;\n this.handleFocus(args);\n }\n /**\n * @hidden\n */\n handleBlur(args) {\n const currentTarget = currentFocusTarget(args);\n if (currentTarget && this.containsElement(currentTarget)) {\n return;\n }\n this.activeListIndex = -1;\n this.isActive = false;\n this.emitBlur(args);\n }\n /**\n * @hidden\n */\n containsElement(element) {\n return Boolean(closest(element, node => node === this.element.nativeElement));\n }\n partStep(part) {\n return this.steps[part.type] || 1;\n }\n init(changes) {\n if (!changes || hasChange(changes, 'format')) {\n this.dateFormatParts = this.intl.splitDateFormat(this.format);\n this.mergeValue = valueMerger(generateGetters(this.dateFormatParts));\n }\n if (!changes || hasChange(changes, 'steps')) {\n this.snapTime = snapTime(generateSnappers(this.steps));\n }\n if (!changes || hasChange(changes, 'value')) {\n this.current = this.value;\n }\n this.showNowButton = !this.hasSteps() && this.nowButton && isInTimeRange(getNow(), this.min, this.max);\n }\n focusList(dir) {\n if (!this.timeLists.length) {\n return;\n }\n this.timeLists.reduce(listReducer, [])\n .map(state => dir === Direction.Right ? state.next : state.prev)\n .map(list => list && list.focus());\n }\n handleChange(value) {\n this.value = value;\n this.valueChange.emit(cloneDate(value));\n }\n hasActiveButton() {\n if (!this.accept) {\n return false;\n }\n return [this.accept, this.cancel, this.now].reduce((isActive, el) => isActive || this.dom.isActive(el), false);\n }\n hasSteps() {\n const keys = Object.keys(this.steps);\n return keys.length !== keys.reduce((acc, k) => acc + this.steps[k], 0);\n }\n intlChange() {\n this.dateFormatParts = this.intl.splitDateFormat(this.format);\n this.mergeValue = valueMerger(generateGetters(this.dateFormatParts));\n this.cdr.markForCheck();\n }\n bindEvents() {\n if (this.element) {\n this.zone.runOutsideAngular(() => {\n this.domEvents.push(this.renderer.listen(this.element.nativeElement, 'keydown', this.handleKeydown.bind(this)));\n });\n }\n }\n handleKeydown(args) {\n const { keyCode, altKey } = args;\n // reserve the alt + arrow key commands for the picker\n const arrowKeyPressed = [Keys.ArrowLeft, Keys.ArrowRight].indexOf(keyCode) !== -1;\n if (isPresent(this.pickerService) && arrowKeyPressed && altKey) {\n return;\n }\n if (keyCode === Keys.Enter && !this.hasActiveButton()) {\n this.handleAccept();\n }\n else if (keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight) {\n this.focusList(keyCode === Keys.ArrowLeft ? Direction.Left : Direction.Right);\n }\n }\n emitBlur(args) {\n if (this.pickerService) {\n this.pickerService.onBlur.emit(args);\n }\n }\n emitFocus(args) {\n if (this.pickerService) {\n this.pickerService.onFocus.emit(args);\n }\n }\n listIndex(partIndex) {\n let listIdx = 0;\n let partIdx = 0;\n while (partIdx < partIndex) {\n if (this.dateFormatParts[partIdx].type !== 'literal') {\n listIdx++;\n }\n partIdx++;\n }\n return listIdx;\n }\n}\nTimeSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.IntlService }, { token: TimePickerDOMService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nTimeSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeSelectorComponent, selector: \"kendo-timeselector\", inputs: { format: \"format\", min: \"min\", max: \"max\", cancelButton: \"cancelButton\", setButton: \"setButton\", nowButton: \"nowButton\", disabled: \"disabled\", steps: \"steps\", value: \"value\" }, outputs: { valueChange: \"valueChange\", valueReject: \"valueReject\" }, host: { properties: { \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timeselector'\n }\n ], viewQueries: [{ propertyName: \"accept\", first: true, predicate: [\"accept\"], descendants: true }, { propertyName: \"cancel\", first: true, predicate: [\"cancel\"], descendants: true }, { propertyName: \"now\", first: true, predicate: [\"now\"], descendants: true }, { propertyName: \"timeLists\", predicate: TimeListComponent, descendants: true }, { propertyName: \"timeListWrappers\", predicate: [\"listWrapper\"], descendants: true }], exportAs: [\"kendo-timeselector\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
\n \n {{ intl.formatDate(current, format) }}\n \n {{localization.get('now')}}\n
\n
\n \n \n \n {{intl.dateFieldName(part)}}\n \n
\n
\n {{part.pattern}}\n
\n
\n
\n \n `, isInline: true, components: [{ type: TimeListComponent, selector: \"kendo-timelist\", inputs: [\"min\", \"max\", \"part\", \"step\", \"disabled\", \"value\"], outputs: [\"valueChange\"] }], directives: [{ type: TimeSelectorLocalizedMessagesDirective, selector: \"[kendoTimeSelectorLocalizedMessages]\" }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-timeselector',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timeselector'\n }\n ],\n selector: 'kendo-timeselector',\n template: `\n \n \n
\n \n {{ intl.formatDate(current, format) }}\n \n {{localization.get('now')}}\n
\n
\n \n \n \n {{intl.dateFieldName(part)}}\n \n
\n
\n {{part.pattern}}\n
\n \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.IntlService }, { type: TimePickerDOMService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: PickerService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { accept: [{\n type: ViewChild,\n args: ['accept', { static: false }]\n }], cancel: [{\n type: ViewChild,\n args: ['cancel', { static: false }]\n }], now: [{\n type: ViewChild,\n args: ['now', { static: false }]\n }], timeLists: [{\n type: ViewChildren,\n args: [TimeListComponent]\n }], timeListWrappers: [{\n type: ViewChildren,\n args: ['listWrapper']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], format: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }], setButton: [{\n type: Input\n }], nowButton: [{\n type: Input\n }], disabled: [{\n type: Input\n }], steps: [{\n type: Input\n }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], valueReject: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n *\n * Custom component messages override default component messages.\n */\nclass TimeSelectorCustomMessagesComponent extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nTimeSelectorCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTimeSelectorCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimeSelectorCustomMessagesComponent, selector: \"kendo-timeselector-messages\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimeSelectorCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimeSelectorCustomMessagesComponent)\n }\n ],\n selector: 'kendo-timeselector-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass TimePickerLocalizedMessagesDirective extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nTimePickerLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nTimePickerLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerLocalizedMessagesDirective, selector: \"[kendoTimePickerLocalizedMessages]\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerLocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerLocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerLocalizedMessagesDirective)\n }\n ],\n selector: '[kendoTimePickerLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst VALUE_DOC_LINK$1 = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/timepicker/#toc-integration-with-json';\nconst INTL_DATE_FORMAT = 'https://github.com/telerik/kendo-intl/blob/master/docs/date-formatting/index.md';\nconst formatRegExp = new RegExp(`${TIME_PART.hour}|${TIME_PART.minute}|${TIME_PART.second}|${TIME_PART.millisecond}|${TIME_PART.dayperiod}|literal`);\n/**\n * Represents the [Kendo UI TimePicker component for Angular]({% slug overview_timepicker %}#toc-basic-usage).\n */\nclass TimePickerComponent {\n constructor(zone, localization, cdr, popupService, wrapper, renderer, injector, pickerService, intl, touchEnabled) {\n this.zone = zone;\n this.localization = localization;\n this.cdr = cdr;\n this.popupService = popupService;\n this.wrapper = wrapper;\n this.renderer = renderer;\n this.injector = injector;\n this.pickerService = pickerService;\n this.intl = intl;\n this.touchEnabled = touchEnabled;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets or gets the `disabled` property of the TimePicker and\n * determines whether the component is active\n * ([see example]({% slug disabled_timepicker %})).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the TimePicker\n * ([see example]({% slug readonly_timepicker %}#toc-read-only-timepicker)).\n */\n this.readonly = false;\n /**\n * Sets the read-only state of the TimePicker input field\n * ([see example]({% slug readonly_timepicker %}#toc-read-only-input)).\n *\n * > Note that if you set the [`readonly`]({% slug api_dateinputs_timepickercomponent %}#toc-readonly) property value to `true`,\n * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.\n */\n this.readOnlyInput = false;\n /**\n * Specifies the time format that is used to display the input value\n * ([see example]({% slug formats_timepicker %})).\n */\n this.format = 't';\n /**\n * Specifies the hint the TimePicker displays when its value is `null`.\n * For more information, refer to the article on\n * [placeholders]({% slug placeholders_timepicker %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n this.placeholder = null;\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * Determines whether to display the **Cancel** button in the popup.\n */\n this.cancelButton = true;\n /**\n * Determines whether to display the **Now** button in the popup.\n *\n * > If the current time is out of range or the incremental step is greater than `1`, the **Now** button will be hidden.\n */\n this.nowButton = true;\n /**\n * Sets or gets the `tabindex` property of the TimePicker.\n */\n this.tabindex = 0;\n /**\n * Sets the title of the input element of the TimePicker.\n */\n this.title = \"\";\n /**\n * Determines whether the built-in min or max validators are enforced when a form is being validated.\n */\n this.rangeValidation = true;\n /**\n * Fires each time the user selects a new value.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user focuses the input element.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n *\n * > To wire the event programmatically, use the `onFocus` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleFocus(): void {\n * console.log(\"Component is focused\");\n * }\n * }\n * ```\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the input element gets blurred.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n *\n * > To wire the event programmatically, use the `onBlur` property.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * export class AppComponent {\n * public handleBlur(): void {\n * console.log(\"Component is blurred\");\n * }\n * }\n * ```\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n * For more information, refer to the section on\n * [events]({% slug overview_timepicker %}#toc-events).\n */\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.wrapperClasses = true;\n this.popupUID = guid();\n this.onControlChange = noop$2;\n this.onControlTouched = noop$2;\n this.onValidatorChange = noop$2;\n this.resolvedPromise = Promise.resolve(null);\n this.timeRangeValidateFn = noop$2;\n this.incompleteValidator = noop$2;\n this._min = cloneDate(MIN_TIME);\n this._max = cloneDate(MAX_TIME);\n this._popupSettings = { animate: true };\n this._show = false;\n this._steps = {};\n this._value = null;\n this._active = false;\n this.domEvents = [];\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n validatePackage(packageMetadata);\n this.pickerSubscriptions = this.pickerService.onFocus.subscribe(this.handleFocus.bind(this));\n this.pickerSubscriptions.add(this.pickerService.onBlur.subscribe(this.handleBlur.bind(this)));\n this.pickerSubscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));\n }\n /**\n * Specifies the smallest valid time value\n * ([see example]({% slug timeranges_timepicker %})).\n */\n set min(min) {\n this._min = cloneDate(min || MIN_TIME);\n }\n get min() {\n return this._min;\n }\n /**\n * Specifies the biggest valid time value\n * ([see example]({% slug timeranges_timepicker %})).\n */\n set max(max) {\n this._max = cloneDate(max || MAX_TIME);\n }\n get max() {\n return this._max;\n }\n /**\n * Configures the incremental steps of the TimePicker.\n * For more information, refer to the article on\n * [incremental steps]({% slug incrementalsteps_timepicker %}).\n *\n * > If the incremental step is greater than `1`, the **Now** button will be hidden.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public steps = { hour: 2, minute: 15, second: 15, millisecond: 10 };\n * }\n * ```\n *\n */\n set steps(steps) {\n this._steps = steps || {};\n }\n get steps() {\n return this._steps;\n }\n /**\n * Configures the popup of the TimePicker.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `appendTo: 'root' | 'component' | ViewContainerRef`—Controls the popup container. By default, the popup will be appended to the root component.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, { animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Specifies the value of the TimePicker component.\n */\n set value(value) {\n this.verifyValue(value);\n this._value = cloneDate(value);\n }\n get value() {\n return this._value;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.removeClass(this.toggleButton.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${newFillMode}-base`);\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get inputRole() {\n return this.readOnlyInput ? 'listbox' : 'spinbutton';\n }\n get isActive() {\n return this._active;\n }\n set isActive(value) {\n this._active = value;\n if (!this.wrapper) {\n return;\n }\n const element = this.wrapper.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-focus');\n }\n else {\n this.renderer.removeClass(element, 'k-focus');\n }\n }\n get show() {\n return this._show;\n }\n set show(show) {\n if (show && (this.disabled || this.readonly)) {\n return;\n }\n const skipZone = !show && (!this._show || !hasObservers(this.close));\n if (!skipZone) {\n this.zone.run(() => {\n this.togglePopup(show);\n });\n }\n else {\n this.togglePopup(show);\n }\n }\n get input() {\n return this.pickerService.input;\n }\n get timeSelector() {\n return this.pickerService.timeSelector;\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty\n */\n isEmpty() {\n return !this.value && this.input.isEmpty();\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(() => this.cdr.markForCheck());\n this.control = this.injector.get(NgControl, null);\n if (this.wrapper) {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.zone.runOutsideAngular(() => {\n this.bindEvents();\n });\n }\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (changes.min || changes.max || changes.rangeValidation || changes.incompleteDateValidation) {\n this.timeRangeValidateFn = this.rangeValidation ? timeRangeValidator(this.min, this.max) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n if (changes.format) {\n this.verifyFormat();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.isActive = false;\n this.show = false;\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.windowBlurSubscription) {\n this.windowBlurSubscription.unsubscribe();\n }\n this.domEvents.forEach(unbindCallback => unbindCallback());\n this.pickerSubscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n const { altKey, keyCode } = event;\n if (keyCode === Keys.Escape) {\n this.show = false;\n return;\n }\n if (altKey) {\n if (keyCode === Keys.ArrowUp) {\n this.show = false;\n }\n if (keyCode === Keys.ArrowDown && !this.show) {\n this.show = true;\n }\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.verifyValue(value);\n this.value = cloneDate(value);\n this.cdr.markForCheck();\n if (!value && this.input) {\n this.input.placeholder = this.placeholder;\n this.input.writeValue(value);\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.timeRangeValidateFn(control) || this.incompleteValidator(control, this.input && this.input.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * Focuses the TimePicker component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent { }\n * ```\n */\n focus() {\n this.input.focus();\n }\n /**\n * Blurs the TimePicker component.\n */\n blur() {\n (this.timeSelector || this.input)['blur']();\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n *\n * @param show - The state of the popup.\n */\n toggle(show) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.resolvedPromise.then(() => {\n this._toggle((show === undefined) ? !this.show : show);\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this.show;\n }\n /**\n * @hidden\n */\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n handleChange(value) {\n if (isEqual(this.value, value)) {\n this.focusInput();\n this.show = false;\n return;\n }\n this.value = cloneDate(value);\n this.zone.run(() => {\n this.focusInput();\n this.show = false;\n this.onControlChange(cloneDate(value));\n this.valueChange.emit(cloneDate(value));\n });\n }\n /**\n * @hidden\n */\n handleReject() {\n this.show = false;\n }\n /**\n * @hidden\n */\n handleInputChange(value) {\n const val = this.input.formatSections.date ? value : this.mergeTime(value);\n this.handleChange(val);\n }\n /**\n * @hidden\n */\n handleMousedown(args) {\n args.preventDefault();\n }\n /**\n * @hidden\n */\n handleIconClick(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n this.focusInput();\n //XXX: explicit call handleFocus handler here\n //due to async IE focus event\n this.handleFocus();\n this.show = !this.show;\n }\n /**\n * @hidden\n */\n get popupClasses() {\n return [\n 'k-group',\n 'k-reset'\n ].concat(this.popupSettings.popupClass || []);\n }\n /**\n * @hidden\n */\n normalizeTime(date) {\n return setTime(MIDNIGHT_DATE, date);\n }\n /**\n * @hidden\n */\n mergeTime(value) {\n return this.value && value ? setTime(this.value, value) : value;\n }\n togglePopup(show) {\n const event = new PreventableEvent();\n if (!this._show && show) {\n this.open.emit(event);\n }\n else if (this._show && !show) {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this._toggle(show);\n this.toggleFocus();\n }\n _toggle(show) {\n if (show === this.isOpen) {\n return;\n }\n this._show = show;\n this.cdr.markForCheck();\n if (show) {\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: { vertical: 'top', horizontal: direction },\n popupClass: this.popupClasses,\n positionMode: 'absolute'\n });\n this.popupRef.popupElement.setAttribute('id', this.popupUID);\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.show = false);\n }\n else {\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n focusInput() {\n if (this.touchEnabled) {\n return;\n }\n this.input.focus();\n }\n toggleFocus() {\n if (!this.isActive) {\n return;\n }\n if (this.show) {\n if (!this.timeSelector) {\n this.cdr.detectChanges();\n }\n if (this.isActive) {\n this.timeSelector.focus();\n }\n }\n else if (!this.touchEnabled) {\n this.input.focus();\n }\n else if (!this.input.isActive) {\n this.handleBlur();\n }\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (value && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK$1} for possible resolution.`);\n }\n }\n verifyFormat() {\n if (!isDevMode()) {\n return;\n }\n const formatContainsDateParts = this.intl.splitDateFormat(this.format).some(part => !formatRegExp.test(part.type));\n if (formatContainsDateParts) {\n throw new Error(`Provided format is not supported. Supported specifiers are T|t|H|h|m|s|S|a. See ${INTL_DATE_FORMAT}`);\n }\n }\n bindEvents() {\n const element = this.wrapper.nativeElement;\n this.domEvents.push(this.renderer.listen(element, 'keydown', this.handleKeydown.bind(this)));\n if (isWindowAvailable()) {\n this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this));\n }\n }\n handleWindowBlur() {\n if (!this.isOpen) {\n return;\n }\n this.show = false;\n }\n handleFocus() {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n handleBlur(args) {\n const currentTarget = args && currentFocusTarget(args);\n if (currentTarget && (this.input.containsElement(currentTarget) ||\n (this.timeSelector && this.timeSelector.containsElement(currentTarget)))) {\n return;\n }\n if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {\n this.zone.run(() => {\n this.blurComponent();\n this.cdr.markForCheck();\n });\n }\n else {\n this.blurComponent();\n }\n }\n blurComponent() {\n this.isActive = false; // order is important ¯\\_(ツ)_/¯\n this.show = false;\n this.onControlTouched();\n this.onBlur.emit();\n }\n handleDateCompletenessChange() {\n this.cdr.markForCheck();\n this.zone.run(() => this.onValidatorChange());\n }\n setComponentClasses() {\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('button', this.size));\n }\n if (this.rounded) {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode) {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n }\n }\n}\nTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerComponent, deps: [{ token: i0.NgZone }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.PopupService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: PickerService }, { token: i1.IntlService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerComponent, selector: \"kendo-timepicker\", inputs: { focusableId: \"focusableId\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", format: \"format\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", min: \"min\", max: \"max\", incompleteDateValidation: \"incompleteDateValidation\", cancelButton: \"cancelButton\", nowButton: \"nowButton\", steps: \"steps\", popupSettings: \"popupSettings\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", title: \"title\", rangeValidation: \"rangeValidation\", value: \"value\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", onFocus: \"focus\", onBlur: \"blur\", open: \"open\", close: \"close\" }, host: { properties: { \"class.k-timepicker\": \"this.wrapperClasses\", \"class.k-input\": \"this.wrapperClasses\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timepicker'\n },\n PickerService\n ], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true }, { propertyName: \"toggleButton\", first: true, predicate: [\"toggleButton\"], descendants: true, static: true }], exportAs: [\"kendo-timepicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: DateInputComponent, selector: \"kendo-dateinput\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"tabindex\", \"role\", \"ariaReadOnly\", \"tabIndex\", \"format\", \"formatPlaceholder\", \"placeholder\", \"steps\", \"max\", \"min\", \"rangeValidation\", \"autoCorrect\", \"incompleteDateValidation\", \"twoDigitYearMax\", \"value\", \"spinners\", \"isPopupOpen\", \"hasPopup\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"valueUpdate\", \"focus\", \"blur\"], exportAs: [\"kendo-dateinput\"] }, { type: TimeSelectorComponent, selector: \"kendo-timeselector\", inputs: [\"format\", \"min\", \"max\", \"cancelButton\", \"setButton\", \"nowButton\", \"disabled\", \"steps\", \"value\"], outputs: [\"valueChange\", \"valueReject\"], exportAs: [\"kendo-timeselector\"] }, { type: TimeSelectorCustomMessagesComponent, selector: \"kendo-timeselector-messages\" }], directives: [{ type: TimePickerLocalizedMessagesDirective, selector: \"[kendoTimePickerLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kendo-timepicker',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.timepicker'\n },\n PickerService\n ],\n selector: 'kendo-timepicker',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.PopupService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: PickerService }, { type: i1.IntlService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: false }]\n }], toggleButton: [{\n type: ViewChild,\n args: ['toggleButton', { static: true }]\n }], focusableId: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], readOnlyInput: [{\n type: Input\n }], format: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }], nowButton: [{\n type: Input\n }], steps: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], title: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], value: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], wrapperClasses: [{\n type: HostBinding,\n args: ['class.k-timepicker']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-datetimepicker-messages-base\", inputs: { toggle: \"toggle\", dateTab: \"dateTab\", dateTabLabel: \"dateTabLabel\", timeTab: \"timeTab\", timeTabLabel: \"timeTabLabel\", accept: \"accept\", acceptLabel: \"acceptLabel\", cancel: \"cancel\", cancelLabel: \"cancelLabel\", today: \"today\", now: \"now\", nowLabel: \"nowLabel\", prevButtonTitle: \"prevButtonTitle\", nextButtonTitle: \"nextButtonTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: 'kendo-datetimepicker-messages-base'\n }]\n }], propDecorators: { toggle: [{\n type: Input\n }], dateTab: [{\n type: Input\n }], dateTabLabel: [{\n type: Input\n }], timeTab: [{\n type: Input\n }], timeTabLabel: [{\n type: Input\n }], accept: [{\n type: Input\n }], acceptLabel: [{\n type: Input\n }], cancel: [{\n type: Input\n }], cancelLabel: [{\n type: Input\n }], today: [{\n type: Input\n }], now: [{\n type: Input\n }], nowLabel: [{\n type: Input\n }], prevButtonTitle: [{\n type: Input\n }], nextButtonTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"[kendoDateTimePickerLocalizedMessages]\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: '[kendoDateTimePickerLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst timeFormatRegExp = new RegExp(`${TIME_PART.hour}|${TIME_PART.minute}|${TIME_PART.second}|${TIME_PART.dayperiod}|literal`);\nconst VALUE_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/datetimepicker/integration-with-json/';\nconst MIN_MAX_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/datetimepicker/date-time-limits/';\nconst DEFAULT_ACTIVE_TAB = 'date';\nconst DEFAULT_DATEINPUT_FORMAT = 'g';\nconst DEFAULT_TIMESELECTOR_FORMAT = 't';\nconst TWO_DIGIT_YEAR_MAX = 68;\n/**\n * Represents the [Kendo UI DateTimePicker component for Angular]({% slug overview_datetimepicker %}).\n */\nclass DateTimePickerComponent {\n constructor(popupService, intl, cdr, pickerService, ngZone, wrapper, touchEnabled, localization, disabledDatesService, renderer) {\n this.popupService = popupService;\n this.intl = intl;\n this.cdr = cdr;\n this.pickerService = pickerService;\n this.ngZone = ngZone;\n this.wrapper = wrapper;\n this.touchEnabled = touchEnabled;\n this.localization = localization;\n this.disabledDatesService = disabledDatesService;\n this.renderer = renderer;\n /**\n * @hidden\n */\n this.hostClasses = true;\n /**\n * The maximum year to assume to be from the current century when typing two-digit year value\n * ([see example]({% slug formats_datetimepicker %}#toc-two-digit-year-format)).\n *\n * The default value is 68, indicating that typing any value less than 69\n * will be assumed to be 20xx, while 69 and larger will be assumed to be 19xx.\n */\n this.twoDigitYearMax = TWO_DIGIT_YEAR_MAX;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Sets the title of the input element of the DateTimePicker.\n */\n this.title = '';\n /**\n * Sets or gets the `disabled` property of the DateTimePicker and determines whether the component is active\n * ([see example]({% slug disabled_datetimepicker %})).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the DateTimePicker\n * ([see example]({% slug readonly_datetimepicker %}#toc-read-only-datetimepicker)).\n */\n this.readonly = false;\n /**\n * Sets the read-only state of the DateTimePicker input field\n * ([see example]({% slug readonly_datetimepicker %}#toc-read-only-input)).\n *\n * > Note that if you set the [`readonly`]({% slug api_dateinputs_datetimepickercomponent %}#toc-readonly) property value to `true`,\n * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.\n */\n this.readOnlyInput = false;\n /**\n * Determines whether to display the **Cancel** button in the popup\n * ([see example]({% slug datetimepicker_popup_options %}#toc-toggling-the-cancel-button)).\n */\n this.cancelButton = true;\n /**\n * Configures the incremental steps of the DateInput and the popup component of the TimePicker\n * ([see example]({% slug incrementalsteps_datetimepicker %})).\n */\n this.steps = {};\n /**\n * Specifies the Calendar type.\n *\n * The possible values are:\n * - `infinite` (default)\n * - `classic`\n *\n */\n this.calendarType = 'infinite';\n /**\n * Determines whether to enable animation when navigating to previous/next Calendar view.\n * Applies to the [`classic`]({% slug api_dateinputs_datetimepickercomponent %}#toc-calendartype) Calendar only.\n *\n * > This feature uses the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). In order to run the animation in browsers that do not support it, you need the `web-animations-js` polyfill.\n *\n * @default false\n */\n this.animateCalendarNavigation = false;\n /**\n * Determines whether to display a week number column in the `month` view of the popup Calendar\n * ([see example]({% slug datetimepicker_calendar_options %}#toc-week-number-column)).\n */\n this.weekNumber = false;\n /**\n * Determines whether the built-in min or max validators are enforced when validating a form\n * ([see example]({% slug dateranges_datetimepicker %}#toc-prevent-invalid-input)).\n */\n this.rangeValidation = true;\n /**\n * Determines whether the built-in validator for disabled\n * date ranges is enforced when validating a form\n * ([see example]({% slug disabled_dates_datetimepicker %}#toc-validation)).\n */\n this.disabledDatesValidation = true;\n /**\n * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.\n */\n this.incompleteDateValidation = false;\n /**\n * Fires each time the user selects a new value.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event by setting `event.preventDefault()`, the popup will remain closed.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event by setting `event.preventDefault()`, the popup will remain open.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.close = new EventEmitter();\n /**\n * Fires each time the user focuses the component.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the user blurs the component.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n *\n * Controls whether the Calendar or the TimeSelector will be displayed.\n */\n this.activeTab = DEFAULT_ACTIVE_TAB;\n /**\n * @hidden\n *\n * Specifies the stripped time-related format that is used in the TimeSelector.\n * Updates each time the `format` property value changes.\n */\n this.timeSelectorFormat = DEFAULT_TIMESELECTOR_FORMAT;\n /**\n * @hidden\n */\n this.timeSelectorMin = cloneDate(MIN_TIME);\n /**\n * @hidden\n */\n this.timeSelectorMax = cloneDate(MAX_TIME);\n /**\n * @hidden\n */\n this.calendarValue = null;\n /**\n * @hidden\n */\n this.calendarMin = cloneDate(MIN_DATE);\n /**\n * @hidden\n */\n this.calendarMax = lastMillisecondOfDate(MAX_DATE);\n this._popupSettings = { animate: true };\n this._value = null;\n this._format = DEFAULT_DATEINPUT_FORMAT;\n this._tabindex = 0;\n this._defaultTab = DEFAULT_ACTIVE_TAB;\n this._min = mergeDateAndTime(MIN_DATE, MIN_TIME);\n this._max = mergeDateAndTime(MAX_DATE, MAX_TIME);\n this._isActive = false;\n this.onControlTouched = noop$2;\n this.onControlChange = noop$2;\n this.onValidatorChange = noop$2;\n this.minValidateFn = noop$2;\n this.maxValidateFn = noop$2;\n this.disabledDatesValidateFn = noop$2;\n this.incompleteValidator = noop$2;\n this.subscriptions = new Subscription();\n this._size = DEFAULT_SIZE;\n this._rounded = DEFAULT_ROUNDED;\n this._fillMode = DEFAULT_FILL_MODE;\n validatePackage(packageMetadata);\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n get input() {\n return this.pickerService.input;\n }\n /**\n * @hidden\n */\n get calendar() {\n return this.pickerService.calendar;\n }\n /**\n * @hidden\n */\n get timeSelector() {\n return this.pickerService.timeSelector;\n }\n /**\n * Specifies the value of the DateTimePicker component.\n *\n * > The `value` has to be a valid [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) instance.\n */\n set value(value) {\n this.verifyValue(value);\n this._value = cloneDate(value);\n this.setCalendarValue(value);\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the date format for displaying the input value\n * ([see example]({% slug formats_datetimepicker %}))\n *\n * Format value options:\n * - `string` - Provide a `string` if a single format is going to be used regardless whether the input is focused or blurred.\n * - [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) - To display different formats when the component is focused or blurred, provide a settings object with specified `inputFormat` and `displayFormat` values.\n *\n * > If a [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) object is provided, the `displayFormat` value will be used for the popup TimePicker.\n */\n set format(format) {\n this._format = format;\n const displayFormat = this.getDisplayFormat(format);\n this.timeSelectorFormat = this.getTimeSelectorFormat(displayFormat);\n }\n get format() {\n return this._format;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the DateTimePicker.\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Sets the dates of the DateTimePicker that will be disabled\n * ([see example]({% slug disabled_dates_datetimepicker %})).\n */\n set disabledDates(value) {\n this._disabledDates = value;\n this.disabledDatesService.initialize(value);\n }\n get disabledDates() {\n return this._disabledDates;\n }\n /**\n * Configures the popup settings of the DateTimePicker\n * ([see example]({% slug datetimepicker_popup_options %}#toc-customizing-the-popup)).\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `appendTo: 'root' | 'component' | ViewContainerRef`—Controls the popup container. By default, the popup will be appended to the root component.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, { animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Specifies the smallest valid date.\n * The Calendar will not display dates before this value.\n * If the `min` value of the Calendar is selected, the TimePicker will not display\n * time entries before the specified time portion of this value\n * ([see example]({% slug dateranges_datetimepicker %})).\n */\n set min(value) {\n if (!isPresent(value)) {\n return;\n }\n this._min = cloneDate(value);\n this.calendarMin = getDate(value);\n }\n get min() {\n return this._min;\n }\n /**\n * Specifies the biggest valid date.\n * The Calendar will not display dates after this value.\n * If the `max` value of the Calendar is selected, the TimePicker will not display\n * time entries after the specified time portion of this value\n * ([see example]({% slug dateranges_datetimepicker %})).\n */\n set max(value) {\n if (!isPresent(value)) {\n return;\n }\n this._max = cloneDate(value);\n this.calendarMax = lastMillisecondOfDate(value);\n }\n get max() {\n return this._max;\n }\n /**\n * Indicates whether the component is currently open.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n /**\n * Indicates whether the component or its popup content is focused.\n */\n get isActive() {\n return this._isActive;\n }\n set isActive(value) {\n if (value) {\n this.renderer.addClass(this.wrapper.nativeElement, 'k-focus');\n }\n else {\n this.renderer.removeClass(this.wrapper.nativeElement, 'k-focus');\n }\n this._isActive = value;\n }\n /**\n * Sets the active tab on opening the popup\n * ([see example]({% slug datetimepicker_popup_options %}#toc-setting-the-default-tab)).\n */\n set defaultTab(tab) {\n this._defaultTab = tab || DEFAULT_ACTIVE_TAB;\n this.activeTab = this.defaultTab;\n }\n get defaultTab() {\n return this._defaultTab;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.removeClass(this.toggleButton.nativeElement, getSizeClass('input', this.size));\n const newSize = size ? size : DEFAULT_SIZE;\n if (newSize !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n if (newRounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `flat`\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.removeClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n if (newFillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', newFillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${newFillMode}-base`);\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n get tabSwitchTransition() {\n /*\n When the popup is opening, disables the set transition in the themes. When `defaultTab` is set to `time`,\n the popup opens with an active **Time** tab and the animation of the initial transition is undesired.\n Setting the inline transition style to `none` overrides the set animation in the themes.\n Setting the inline transition style to `null` does not apply any inline styles or override the themes CSS.\n */\n return this.isOpen ? null : 'none';\n }\n /**\n * @hidden\n *\n * Indicates whether the Calendar will be disabled.\n * The inactive tab component gets disabled and becomes inaccessible on tab click.\n */\n get disableCalendar() {\n return this.activeTab !== 'date' && !this.calendar.isActive;\n }\n /**\n * @hidden\n */\n get inputRole() {\n return this.readOnlyInput ? 'listbox' : 'spinbutton';\n }\n /**\n * @hidden\n *\n * Indicates whether the TimeSelector will be disabled.\n * The inactive tab component gets disabled and becomes inaccessible on tab click.\n */\n get disableTimeSelector() {\n return this.activeTab !== 'time' && !this.timeSelector.isActive;\n }\n get activeTabComponent() {\n if (!this.isOpen) {\n return;\n }\n if (!(isPresent(this.calendar) || isPresent(this.timeSelector))) {\n this.cdr.detectChanges();\n }\n return this.activeTab === 'date' ? this.calendar : this.timeSelector;\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!isPresent(appendTo) || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n ngOnInit() {\n this.subscriptions.add(this.pickerService.onFocus\n // detect popup changes to disable the inactive view mark-up when the popup is open\n .pipe(tap(this.detectPopupChanges.bind(this)))\n .subscribe(this.handleFocus.bind(this)));\n this.subscriptions.add(this.pickerService.onBlur.subscribe(this.handleBlur.bind(this)));\n this.subscriptions.add(this.pickerService.sameDateSelected.subscribe(this.handleCalendarValueChange.bind(this)));\n this.subscriptions.add(this.localization.changes.subscribe(() => this.cdr.markForCheck()));\n this.subscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));\n if (isWindowAvailable()) {\n this.subscriptions.add(this.ngZone.runOutsideAngular(() => fromEvent(window, 'blur').subscribe(this.handleCancel.bind(this))));\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.min) || isPresent(changes.max)) {\n this.verifyMinMaxRange();\n }\n if (changes.min || changes.max || changes.rangeValidation || changes.disabledDatesValidation || changes.disabledDates || changes.incompleteDateValidation) {\n this.minValidateFn = this.rangeValidation ? minValidator(this.min) : noop$2;\n this.maxValidateFn = this.rangeValidation ? maxValidator(this.max) : noop$2;\n this.disabledDatesValidateFn = this.disabledDatesValidation ? disabledDatesValidator(this.disabledDatesService.isDateDisabled) : noop$2;\n this.incompleteValidator = this.incompleteDateValidation ? incompleteDateValidator() : noop$2;\n this.onValidatorChange();\n }\n }\n ngOnDestroy() {\n if (this.isOpen) {\n this.closePopup();\n }\n this.subscriptions.unsubscribe();\n }\n /**\n * * If the popup is closed, focuses the DateTimePicker input.\n * * If the popup is open, the focus is moved to its content.\n */\n focus() {\n if (this.disabled) {\n return;\n }\n if (this.isOpen) {\n this.activeTabComponent.focus();\n }\n else {\n this.input.focus();\n }\n }\n /**\n * Blurs the DateTimePicker.\n */\n blur() {\n if (this.isOpen && this.activeTabComponent.isActive) {\n this.activeTabComponent.blur();\n }\n else {\n this.input.blur();\n }\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).\n *\n * @param show - The state of the popup.\n */\n toggle(show) {\n if (this.disabled || this.readonly || show === this.isOpen) {\n return;\n }\n const shouldOpen = isPresent(show) ? show : !this.isOpen;\n if (shouldOpen) {\n this.openPopup();\n }\n else {\n this.closePopup();\n // Changes the tab and the calendar or clock icon to the designated default.\n if (this.activeTab !== this.defaultTab) {\n this.activeTab = this.defaultTab;\n this.cdr.detectChanges();\n }\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onControlChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onControlTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(disabled) {\n this.disabled = disabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n validate(control) {\n return this.minValidateFn(control) || this.maxValidateFn(control) || this.disabledDatesValidateFn(control) || this.incompleteValidator(control, this.input && this.input.isDateIncomplete);\n }\n /**\n * @hidden\n */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n /**\n * @hidden\n *\n * Used by the TextBoxContainer to determine if the floating label will render in the input.\n */\n isEmpty() {\n return !isPresent(this.value) && this.input.isEmpty();\n }\n /**\n * @hidden\n */\n handleIconClick(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n // prevents the event default to evade focusing the DateInput input when placed inside a label (FF/IE/Edge)\n event.preventDefault();\n const runInZone = !this.isOpen || hasObservers(this.close);\n this.run(runInZone, () => {\n const shouldOpen = !this.isOpen;\n // handle focus first to maintain correct event order `focus` => `open`\n this.handleFocus();\n this.togglePopup(shouldOpen);\n this.switchFocus();\n });\n }\n /**\n * @hidden\n */\n handleFocus() {\n if (this.isActive) {\n return;\n }\n this.isActive = true;\n if (hasObservers(this.onFocus)) {\n this.ngZone.run(() => this.onFocus.emit());\n }\n }\n /**\n * @hidden\n */\n handleBlur(event) {\n if (!this.isActive || this.focusTargetInComponent(event)) {\n return;\n }\n this.isActive = false;\n const isNgControlUntouched = this.wrapper.nativeElement.classList.contains('ng-untouched');\n const runInZone = isNgControlUntouched || hasObservers(this.onBlur) || (this.isOpen && hasObservers(this.close));\n this.run(runInZone, () => {\n this.onBlur.emit();\n this.onControlTouched();\n this.togglePopup(false);\n this.cdr.markForCheck();\n });\n }\n /**\n * @hidden\n */\n changeActiveTab(tab) {\n if (!this.isOpen || this.activeTab === tab) {\n return;\n }\n // persists the Tcurrent value of the TimeSelector when switching between tabs\n if (!isEqual(this.timeSelector.value, this.timeSelector.current)) {\n this.timeSelector.handleAccept();\n }\n this.activeTab = tab;\n this.cdr.detectChanges();\n this.detectPopupChanges();\n }\n /**\n * @hidden\n */\n handleTabChangeTransitionEnd(dateTimeSelector, event) {\n // handle only the .k-datetime-selector element transition, ignore any child element transitions\n if (event.target !== dateTimeSelector) {\n return;\n }\n this.activeTabComponent.focus();\n }\n /**\n * @hidden\n */\n handleAccept() {\n if (!this.isOpen) {\n return;\n }\n const candidate = mergeDateAndTime(this.calendar.value, this.timeSelector.current);\n const valueChangePresent = !isEqual(this.value, candidate);\n const runInZone = valueChangePresent || hasObservers(this.close);\n this.run(runInZone, () => {\n this.handleValueChange(candidate);\n this.togglePopup(false);\n });\n }\n /**\n * @hidden\n */\n handleCancel() {\n if (!this.isOpen) {\n return;\n }\n const runInZone = hasObservers(this.close);\n this.run(runInZone, () => this.togglePopup(false));\n }\n /**\n * @hidden\n */\n handleInputValueChange(value) {\n this.handleValueChange(value);\n if (this.isOpen) {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n handleCalendarValueChange() {\n this.setTimeSelectorMinMax(this.calendar.value);\n this.changeActiveTab('time');\n }\n /**\n * @hidden\n */\n handleKeyDown(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n const { keyCode, altKey } = event;\n switch (keyCode) {\n case altKey && Keys.ArrowUp:\n case Keys.Escape:\n this.handleCancel();\n break;\n case !this.isOpen && altKey && Keys.ArrowDown:\n this.ngZone.run(() => this.togglePopup(true));\n break;\n case altKey && Keys.ArrowRight:\n this.changeActiveTab('time');\n break;\n case altKey && Keys.ArrowLeft:\n this.changeActiveTab('date');\n break;\n case this.isOpen && this.timeSelector.isActive && isPresent(this.calendarValue) && Keys.Enter:\n this.handleAccept();\n break;\n default: return;\n }\n event.preventDefault();\n }\n /**\n * @hidden\n */\n handleTabOut(event) {\n const { keyCode, shiftKey, target } = event;\n // if no focusable next sibling elements exist in the controls sections, the user is tabbing out of the popup\n const focusableSiblingAvailable = isPresent(target.nextElementSibling) && !target.nextElementSibling.disabled;\n if (keyCode === Keys.Tab && !shiftKey && !focusableSiblingAvailable) {\n this.input.focus();\n this.handleCancel();\n }\n }\n /**\n * @hidden\n */\n handleBackTabOut(event) {\n const { keyCode, shiftKey } = event;\n if (keyCode === Keys.Tab && shiftKey) {\n this.input.focus();\n }\n }\n /**\n * @hidden\n */\n popupButtonsClasses(type) {\n const buttonType = type ? type : 'base';\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''} ${this.fillMode ? 'k-button-' + this.fillMode + ' ' + 'k-button-' + this.fillMode + '-' + buttonType : ''}`;\n }\n /**\n * @hidden\n *\n * Prevents the diversion of the focus from the currently active element in the component.\n */\n preventMouseDown(event) {\n event.preventDefault();\n }\n verifyValue(value) {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(value) && !(value instanceof Date)) {\n throw new Error(`The 'value' should be a valid JavaScript Date instance. Check ${VALUE_DOC_LINK} for possible resolution.`);\n }\n }\n verifyMinMaxRange() {\n if (!isDevMode()) {\n return;\n }\n if (!isValidRange(this.min, this.max)) {\n throw new Error(`The max value should be bigger than the min. See ${MIN_MAX_DOC_LINK}.`);\n }\n }\n /**\n * Extracts the time slots and the literals that are not preceded by date parts\n * and concatenates the resulting parts into a string.\n * If the provided format value does not contain any time parts,\n * returns the designated format of the default popup component of the TimePicker.\n */\n getTimeSelectorFormat(format) {\n const timeSelectorFormat = this.intl\n .splitDateFormat(format)\n .filter(this.timeFormatPartFilter)\n .reduce((format, part) => format += part.pattern, '');\n return timeSelectorFormat || DEFAULT_TIMESELECTOR_FORMAT;\n }\n /**\n * Extracts the `displayFormat` from the provided `string | FormatSettings` value.\n * Fallbacks to the default input value, if a falsy value param is passed.\n */\n getDisplayFormat(format) {\n if (!format) {\n return DEFAULT_DATEINPUT_FORMAT;\n }\n if (typeof format === 'string') {\n return format;\n }\n else {\n return format.displayFormat;\n }\n }\n /**\n * The filter expression that filters out all format parts\n * except for `hour`, `minute`, `second`, `dayperiod`, and specific literals.\n * Literals will be left only if they are not preceded by date parts.\n */\n timeFormatPartFilter(part, index, parts) {\n const previousPart = index >= 1 && parts[index - 1];\n if (previousPart && part.type === 'literal') {\n return timeFormatRegExp.test(previousPart.type);\n }\n return timeFormatRegExp.test(part.type);\n }\n togglePopup(open) {\n if (open === this.isOpen) {\n return;\n }\n const event = new PreventableEvent();\n if (open) {\n this.open.emit(event);\n }\n else {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this.toggle(open);\n this.switchFocus();\n }\n switchFocus() {\n if (!this.isActive) {\n return;\n }\n if (this.isOpen) {\n this.activeTabComponent.focus();\n }\n else if (!this.touchEnabled) {\n this.input.focus();\n }\n else if (!this.input.isActive) {\n this.handleBlur();\n }\n }\n openPopup() {\n this.setCalendarValue(this.value);\n this.setTimeSelectorMinMax(this.value);\n const direction = this.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n content: this.popupTemplate,\n positionMode: 'absolute',\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n popupClass: `k-datetime-container ${this.popupSettings.popupClass || ''}`,\n anchorAlign: { vertical: 'bottom', horizontal: direction },\n popupAlign: { vertical: 'top', horizontal: direction }\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.handleCancel());\n }\n closePopup() {\n if (!this.isOpen) {\n return;\n }\n this.popupRef.close();\n this.popupRef = null;\n }\n handleValueChange(value) {\n if (isEqual(this.value, value)) {\n return;\n }\n this.value = cloneDate(value);\n this.onControlChange(cloneDate(value));\n this.valueChange.emit(cloneDate(value));\n }\n /**\n * Indicates whether the focus target is part of this component,\n * that is, whether the focus target is inside the component or in the popup.\n */\n focusTargetInComponent(event) {\n if (!isPresent(event)) {\n return false;\n }\n const relatedTarget = event.relatedTarget || document.activeElement;\n const focusInPopup = isPresent(this.popupRef) && this.popupRef.popupElement.contains(relatedTarget);\n const focusInWrapper = this.wrapper.nativeElement.contains(relatedTarget);\n return focusInPopup || focusInWrapper;\n }\n setTimeSelectorMinMax(selectedDate) {\n const minDateSelected = isPresent(selectedDate) && isEqual(getDate(selectedDate), getDate(this.min));\n this.timeSelectorMin = cloneDate(minDateSelected ? this.min : MIN_TIME);\n const maxDateSelected = isPresent(selectedDate) && isEqual(getDate(selectedDate), getDate(this.max));\n this.timeSelectorMax = cloneDate(maxDateSelected ? this.max : MAX_TIME);\n }\n setCalendarValue(value) {\n const isInCalendarRange = isPresent(value) && isInRange(value, this.calendarMin, this.calendarMax);\n this.calendarValue = isInCalendarRange ? getDate(value) : null;\n }\n /**\n * If the popup is available, runs a popup change detection.\n */\n detectPopupChanges() {\n if (!this.isOpen) {\n return;\n }\n this.popupRef.popup.changeDetectorRef.detectChanges();\n }\n /**\n * Depending on the predicate `runInZone` value that is passed,\n * runs the provided function either in the Angular or in the current zone.\n */\n run(runInZone, fn) {\n if (runInZone) {\n this.ngZone.run(() => fn());\n }\n else {\n fn();\n }\n }\n handleDateCompletenessChange() {\n this.cdr.markForCheck();\n this.ngZone.run(() => this.onValidatorChange());\n }\n setComponentClasses() {\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n this.renderer.addClass(this.toggleButton.nativeElement, getSizeClass('button', this.size));\n }\n if (this.rounded) {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode) {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, getFillModeClass('button', this.fillMode));\n this.renderer.addClass(this.toggleButton.nativeElement, `k-button-${this.fillMode}-base`);\n }\n }\n}\nDateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: i2.PopupService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: PickerService }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: TOUCH_ENABLED }, { token: i1$1.LocalizationService }, { token: DisabledDatesService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nDateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateTimePickerComponent, selector: \"kendo-datetimepicker\", inputs: { value: \"value\", format: \"format\", twoDigitYearMax: \"twoDigitYearMax\", tabindex: \"tabindex\", disabledDates: \"disabledDates\", popupSettings: \"popupSettings\", focusableId: \"focusableId\", title: \"title\", disabled: \"disabled\", readonly: \"readonly\", readOnlyInput: \"readOnlyInput\", cancelButton: \"cancelButton\", formatPlaceholder: \"formatPlaceholder\", placeholder: \"placeholder\", steps: \"steps\", focusedDate: \"focusedDate\", calendarType: \"calendarType\", animateCalendarNavigation: \"animateCalendarNavigation\", weekNumber: \"weekNumber\", min: \"min\", max: \"max\", rangeValidation: \"rangeValidation\", disabledDatesValidation: \"disabledDatesValidation\", incompleteDateValidation: \"incompleteDateValidation\", defaultTab: \"defaultTab\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-datetimepicker\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"class.k-disabled\": \"this.disabledClass\" } }, providers: [\n PickerService,\n LocalizationService,\n DisabledDatesService,\n { provide: L10N_PREFIX, useValue: 'kendo.datetimepicker' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DateTimePickerComponent) }\n ], queries: [{ propertyName: \"cellTemplate\", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: \"monthCellTemplate\", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: \"yearCellTemplate\", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: \"decadeCellTemplate\", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: \"centuryCellTemplate\", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: \"weekNumberTemplate\", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: \"headerTitleTemplate\", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"toggleButton\", first: true, predicate: [\"toggleButton\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, read: TemplateRef, static: true }], exportAs: [\"kendo-datetimepicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n\n \n \n \n \n \n\n \n\n \n \n
\n
\n \n {{localization.get('dateTab')}}\n \n \n {{localization.get('timeTab')}}\n \n
\n
\n \n
\n \n \n \n \n
\n
\n \n \n \n \n
\n \n \n \n {{localization.get('cancel')}}\n \n \n {{localization.get('accept')}}\n \n \n \n
\n `, isInline: true, components: [{ type: DateInputComponent, selector: \"kendo-dateinput\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"tabindex\", \"role\", \"ariaReadOnly\", \"tabIndex\", \"format\", \"formatPlaceholder\", \"placeholder\", \"steps\", \"max\", \"min\", \"rangeValidation\", \"autoCorrect\", \"incompleteDateValidation\", \"twoDigitYearMax\", \"value\", \"spinners\", \"isPopupOpen\", \"hasPopup\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"valueUpdate\", \"focus\", \"blur\"], exportAs: [\"kendo-dateinput\"] }, { type: CalendarComponent, selector: \"kendo-calendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"disabledDates\", \"navigation\", \"activeView\", \"bottomView\", \"topView\", \"type\", \"animateNavigation\", \"weekNumber\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\", \"navigationItemTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"activeViewDateChange\", \"valueChange\"], exportAs: [\"kendo-calendar\"] }, { type: CalendarCustomMessagesComponent, selector: \"kendo-calendar-messages\" }, { type: TimeSelectorComponent, selector: \"kendo-timeselector\", inputs: [\"format\", \"min\", \"max\", \"cancelButton\", \"setButton\", \"nowButton\", \"disabled\", \"steps\", \"value\"], outputs: [\"valueChange\", \"valueReject\"], exportAs: [\"kendo-timeselector\"] }, { type: TimeSelectorCustomMessagesComponent, selector: \"kendo-timeselector-messages\" }], directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoDateTimePickerLocalizedMessages]\" }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-datetimepicker',\n exportAs: 'kendo-datetimepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n PickerService,\n LocalizationService,\n DisabledDatesService,\n { provide: L10N_PREFIX, useValue: 'kendo.datetimepicker' },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },\n { provide: KendoInput, useExisting: forwardRef(() => DateTimePickerComponent) }\n ],\n template: `\n \n \n\n \n \n \n \n \n\n \n\n \n \n
\n
\n \n {{localization.get('dateTab')}}\n \n \n {{localization.get('timeTab')}}\n \n
\n
\n \n
\n \n \n \n \n
\n
\n \n \n \n \n
\n \n \n \n {{localization.get('cancel')}}\n \n \n {{localization.get('accept')}}\n \n \n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i2.PopupService }, { type: i1.IntlService }, { type: i0.ChangeDetectorRef }, { type: PickerService }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }, { type: i1$1.LocalizationService }, { type: DisabledDatesService }, { type: i0.Renderer2 }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-datetimepicker']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], toggleButton: [{\n type: ViewChild,\n args: ['toggleButton', { static: true }]\n }], value: [{\n type: Input\n }], format: [{\n type: Input\n }], twoDigitYearMax: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], readOnlyInput: [{\n type: Input\n }], cancelButton: [{\n type: Input\n }], formatPlaceholder: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], steps: [{\n type: Input\n }], focusedDate: [{\n type: Input\n }], calendarType: [{\n type: Input\n }], animateCalendarNavigation: [{\n type: Input\n }], weekNumber: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], rangeValidation: [{\n type: Input\n }], disabledDatesValidation: [{\n type: Input\n }], incompleteDateValidation: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], defaultTab: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], cellTemplate: [{\n type: ContentChild,\n args: [CellTemplateDirective, { static: false }]\n }], monthCellTemplate: [{\n type: ContentChild,\n args: [MonthCellTemplateDirective, { static: false }]\n }], yearCellTemplate: [{\n type: ContentChild,\n args: [YearCellTemplateDirective, { static: false }]\n }], decadeCellTemplate: [{\n type: ContentChild,\n args: [DecadeCellTemplateDirective, { static: false }]\n }], centuryCellTemplate: [{\n type: ContentChild,\n args: [CenturyCellTemplateDirective, { static: false }]\n }], weekNumberTemplate: [{\n type: ContentChild,\n args: [WeekNumberCellTemplateDirective, { static: false }]\n }], headerTitleTemplate: [{\n type: ContentChild,\n args: [HeaderTitleTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { read: TemplateRef, static: true }]\n }] } });\n\n/**\n * A directive which renders the content of the DateRange Popup. To define the cell template, nest an\n * `` tag with the `kendoRangePopupTemplate` directive inside the component tag.\n */\nclass DateRangePopupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDateRangePopupTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangePopupTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangePopupTemplateDirective, selector: \"[kendoDateRangePopupTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangePopupTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nconst isActive = (cmp) => (cmp && cmp.isActive) || false;\nconst hasActiveContent = (popup) => popup && popup.hasActiveContent();\n/**\n * A service that handles the communication between the components that are placed inside the DateRangeComponent.\n * For example, the start and end `DateInput` and `DateRangePopup` components.\n */\nclass DateRangeService {\n /** @hidden */\n constructor() {\n /**\n * An Observable instance that notifies when the `activeRangeEnd` state is changed.\n */\n this.activeRangeEnd$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the `focusedDate` is changed.\n */\n this.focusedDate$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the end `DateInput` component is changed.\n * For example, when a new end `DateInput` is attached or when the old one is detached.\n */\n this.endInput$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the start `DateInput` component is changed.\n * For example, when a new start `DateInput` is attached or the old one is detached.\n */\n this.startInput$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the `DateRangePopup` component is changed.\n */\n this.dateRangePopup$ = new BehaviorSubject(null);\n /**\n * An Observable instance that notifies when the state of the selection range is changed.\n */\n this.range$ = new BehaviorSubject(EMPTY_SELECTIONRANGE);\n }\n /**\n * Gets the current `activeRangeEnd` value.\n */\n get activeRangeEnd() {\n return this.activeRangeEnd$.value;\n }\n /**\n * Gets the current `focusedDate` value.\n */\n get focusedDate() {\n return this.focusedDate$.value;\n }\n /**\n * Gets the `min` range value.\n * The `min` value is extracted from the `start` DateInput value or the `min` value of the Calendar.\n */\n get min() {\n return (this.startInput$.value || {}).min || null;\n }\n /**\n * Gets the `max` range value.\n * The `max` value is extracted from the `end` DateInput value or the `max` value of the Calendar.\n */\n get max() {\n return (this.endInput$.value || {}).max || null;\n }\n /**\n * Gets the current `selectionRange` value.\n */\n get selectionRange() {\n return this.range$.value;\n }\n /**\n * Activates the registered `DateRangePopup` component.\n * The method opens the popup and focuses the calendar.\n */\n activatePopup() {\n const dateRangePopup = this.dateRangePopup$.value;\n if (!dateRangePopup) {\n return;\n }\n dateRangePopup.activate();\n }\n /**\n * Deactivates the registered `DateRangePopup` component.\n * The method closes the popup.\n */\n deactivatePopup() {\n const dateRangePopup = this.dateRangePopup$.value;\n if (!(dateRangePopup && dateRangePopup.show)) {\n return;\n }\n dateRangePopup.show = false;\n }\n /**\n * @hidden\n *\n * Deactivates the registered `DateRangePopup` component and fires the `cancel` event.\n * The method closes the popup.\n */\n cancelPopup() {\n const dateRangePopup = this.dateRangePopup$.value;\n if (!(dateRangePopup && dateRangePopup.show)) {\n return;\n }\n dateRangePopup.cancelPopup();\n }\n /**\n * Completes all observables to mitigate possible memory leaks.\n * Calls the method when a component that uses it is destroyed.\n */\n destroy() {\n this.activeRangeEnd$.complete();\n this.dateRangePopup$.complete();\n this.focusedDate$.complete();\n this.endInput$.complete();\n this.startInput$.complete();\n this.range$.complete();\n }\n /**\n * Returns `true` when an active component that is placed inside the `DateRangeComponent` is detected.\n * For example, the opened popup or the focused DateInput.\n *\n * @returns `true` if an active component is present.\n */\n hasActiveComponent() {\n const popup = this.dateRangePopup$.value;\n const isPopup = isActive(popup);\n const isStart = isActive(this.startInput$.value);\n const isEnd = isActive(this.endInput$.value);\n return isPopup || isStart || isEnd || hasActiveContent(popup) || false;\n }\n /**\n * Registers a new start `DateInput` component. Notifies all `startInput$` listeners.\n */\n registerStartInput(startInput) {\n this.startInput$.next(startInput);\n }\n /**\n * Registers a new end `DateInput` component. Notifies all `endInput$` listeners.\n */\n registerEndInput(endInput) {\n this.endInput$.next(endInput);\n }\n /**\n * Registers a new `DateRangePopup` component. Notifies all `dateRangePopup$` listeners.\n */\n registerPopup(dateRangePopup) {\n this.dateRangePopup$.next(dateRangePopup);\n }\n /**\n * Updates the `activeRangeEnd` value. Notifies all `activeRangeEnd$` listeners.\n */\n setActiveRangeEnd(activeRange) {\n if (!activeRange || this.activeRangeEnd === activeRange) {\n return;\n }\n this.activeRangeEnd$.next(activeRange);\n }\n /**\n * Updates the focused date. Notifies all `focusedDate$` listeners.\n */\n setFocusedDate(value) {\n if (isEqual(this.focusedDate$.value, value)) {\n return;\n }\n this.focusedDate$.next(value);\n }\n /**\n * Updates the selection range. Notifies all `range$` listeners.\n */\n setRange(range = EMPTY_SELECTIONRANGE) {\n this.range$.next(range);\n }\n}\nDateRangeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDateRangeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * A directive which manages the MultiViewCalendar range selection.\n */\nclass DateRangeSelectionDirective {\n constructor(calendar, cdr, element, renderer, dateRangeService) {\n this.calendar = calendar;\n this.cdr = cdr;\n this.element = element;\n this.dateRangeService = dateRangeService;\n /**\n * Specifies the auto-correction behavior. If the start date is greater than the end date,\n * the directive fixes the date range to a single date either on input change or on blur\n * ([see example]({% slug autocorrect_daterange %}#toc-configuring-the-calendar-selection-directive)).\n *\n * By default, the auto-correction is triggered on change.\n * To disable this behavior, set the `autoCorrectOn` property to `none`.\n */\n this.autoCorrectOn = 'change';\n /**\n * Fires when the active range end is changed. For more information, refer to\n * the section on [events]({% slug overview_multiviewcalendar %}#toc-events).\n */\n this.activeRangeEndChange = new EventEmitter();\n /**\n * Fires when the selection range is changed. For more information, refer to\n * the section on [events]({% slug overview_multiviewcalendar %}#toc-events).\n */\n this.selectionRangeChange = new EventEmitter();\n this.calendarSubscriptions = new Subscription();\n this.dateRangeService = this.dateRangeService || new DateRangeService();\n renderer.setAttribute(element.nativeElement, 'aria-multiselectable', 'true');\n }\n /**\n * Gets or sets the selection range of the calendar. When a new range is set,\n * the connected DateRangeService notifies all related parties.\n */\n get selectionRange() {\n return this.calendar ? this.calendar.selectionRange : null;\n }\n set selectionRange(range) {\n if (!this.isEqualCalendarRange(range)) {\n this.setSelectionRange(range);\n }\n if (!isEqualRange(this.dateRangeService.selectionRange, range)) {\n this.dateRangeService.setRange(range);\n }\n this.updateFocusedDate(range);\n }\n /**\n * Gets or sets the active end of the selection range. This option determines which range end will be updated on\n * user interaction. When a new active end is set, the connected DateRangeService notifies all related parties.\n */\n /**\n * Specifies which end of the selection range will be marked as active. The active end gets modified upon user\n * interaction. When a new active end is set, the wired DateRangeService notifies all related components. For\n * example, the start and end DateInput components.\n *\n * > If the selection range is undefined, the value is ignored.\n */\n get activeRangeEnd() {\n return this.calendar.activeRangeEnd;\n }\n set activeRangeEnd(activeRange) {\n if (this.dateRangeService.activeRangeEnd === activeRange) {\n return;\n }\n this.calendar.activeRangeEnd = activeRange;\n this.dateRangeService.setActiveRangeEnd(activeRange);\n }\n get calendarRange() {\n return this.selectionRange || EMPTY_SELECTIONRANGE;\n }\n ngOnInit() {\n const calendar = this.calendar;\n const dateRangeService = this.dateRangeService;\n calendar.min = either(dateRangeService.min, calendar.min);\n calendar.max = either(dateRangeService.max, calendar.max);\n this.addSubscriptions(calendar.cellEnter.subscribe((value) => this.handleHover(value)), calendar.valueChange.subscribe((value) => this.handleChange(value)), dateRangeService.focusedDate$.subscribe(focusedDate => {\n if (!isEqual(calendar.focusedDate, focusedDate)) {\n calendar.focusedDate = focusedDate;\n }\n }), dateRangeService.activeRangeEnd$.subscribe(rangeEnd => {\n if (calendar.activeRangeEnd === rangeEnd) {\n return;\n }\n calendar.activeRangeEnd = rangeEnd;\n this.activeRangeEndChange.emit(rangeEnd);\n this.cdr.markForCheck();\n }), dateRangeService.range$.subscribe(range => {\n if (!this.isEqualCalendarRange(range)) {\n this.acceptAndEmit(range);\n }\n this.updateFocusedDate(range);\n }), fromEvent(this.element.nativeElement, 'blur').subscribe(() => this.handleBlur()));\n }\n ngOnDestroy() {\n this.calendarSubscriptions.unsubscribe();\n }\n addSubscriptions(...subscriptions) {\n subscriptions.map(s => this.calendarSubscriptions.add(s));\n }\n isEqualCalendarRange(range) {\n return isEqualRange(this.calendar.selectionRange, range);\n }\n handleBlur() {\n const { start, end } = this.calendarRange;\n const autoCorrect = this.autoCorrectOn === 'blur' && start !== null && end !== null && end < start;\n if (autoCorrect) {\n this.dateRangeService.setRange(clampRange(start));\n }\n }\n handleChange(value) {\n const service = this.dateRangeService;\n const autoCorrect = this.autoCorrectOn === 'change' && this.shouldAutoCorrect(value);\n const activeEnd = this.calendar.activeRangeEnd !== 'end' ? 'end' : (autoCorrect ? 'end' : 'start');\n const range = autoCorrect ? clampRange(value) : this.updateRange(value);\n if (!isEqualRange(service.selectionRange, range)) {\n this.acceptAndEmit(range);\n service.setActiveRangeEnd(activeEnd);\n service.setRange(range);\n }\n }\n handleHover(value) {\n if (this.hasCompleteRange()) {\n return;\n }\n const { start, end } = this.calendarRange;\n const activeRangeEnd = this.calendar.activeRangeEnd;\n const updateRange = (start && activeRangeEnd === 'end') || (end && activeRangeEnd === 'start');\n if (updateRange) {\n this.setSelectionRange(this.updateRange(value));\n }\n }\n hasCompleteRange() {\n const { start, end } = this.dateRangeService.selectionRange || EMPTY_SELECTIONRANGE;\n return Boolean(start) && Boolean(end);\n }\n shouldAutoCorrect(value) {\n const { end, start } = this.calendarRange;\n if (this.calendar.activeRangeEnd !== 'end') {\n return end !== null && value > end;\n }\n else {\n return start !== null && value < start;\n }\n }\n updateFocusedDate(range) {\n if (!range || this.dateRangeService.focusedDate) {\n return;\n }\n this.dateRangeService.setFocusedDate(range.start || range.end);\n }\n updateRange(value) {\n const { end, start } = this.calendarRange;\n return this.calendar.activeRangeEnd !== 'end' ? ({ start: value, end }) : ({ start, end: value });\n }\n setSelectionRange(range) {\n this.calendar.selectionRange = range;\n this.calendar.writeValue(null);\n }\n acceptAndEmit(range) {\n this.setSelectionRange(range);\n this.selectionRangeChange.emit(range);\n }\n}\nDateRangeSelectionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeSelectionDirective, deps: [{ token: MultiViewCalendarComponent }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DateRangeService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangeSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeSelectionDirective, selector: \"[kendoDateRangeSelection]\", inputs: { autoCorrectOn: \"autoCorrectOn\", selectionRange: \"selectionRange\", activeRangeEnd: \"activeRangeEnd\" }, outputs: { activeRangeEndChange: \"activeRangeEndChange\", selectionRangeChange: \"selectionRangeChange\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeSelectionDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeSelection]'\n }]\n }], ctorParameters: function () { return [{ type: MultiViewCalendarComponent }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DateRangeService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { autoCorrectOn: [{\n type: Input\n }], selectionRange: [{\n type: Input\n }], activeRangeEnd: [{\n type: Input\n }], activeRangeEndChange: [{\n type: Output\n }], selectionRangeChange: [{\n type: Output\n }] } });\n\n/**\n * Represents the Kendo UI DateRangePopup component for Angular.\n *\n * @example\n * ```ts\n * import { DateInputsModule, DateRangeService } from '@progress/kendo-angular-dateinputs';\n *\n * _@Component({\n * providers: [DateRangeService],\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent {\n * }\n * ```\n */\nclass DateRangePopupComponent {\n constructor(popupService, dateRangeService, ref, zone, rtl) {\n this.popupService = popupService;\n this.dateRangeService = dateRangeService;\n this.ref = ref;\n this.zone = zone;\n this.rtl = rtl;\n /**\n * Controls the popup animation.\n * By default, the opening and closing animations are enabled.\n * For more information about controlling the popup animations,\n * refer to the article on [animations]({% slug animations_popup %}).\n */\n this.animate = true;\n /**\n * Configures the collision behavior of the popup.\n * For more information, refer to the article on\n * [viewport boundary detection]({% slug viewportboundarydetection_popup %}).\n */\n this.collision = { horizontal: 'fit', vertical: 'flip' };\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n * For more information, refer to the section on\n * [events]({% slug overview_datepicker %}#toc-events).\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n * For more information, refer to the section on\n * [events]({% slug overview_datepicker %}#toc-events).\n */\n this.close = new EventEmitter();\n /**\n * Fires each time the calendar element is blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the calendar element is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the popup is closed either on `ESC` keypress or on leaving the viewport.\n */\n this.cancel = new EventEmitter();\n /**\n * @hidden\n */\n this.popupUID = guid();\n this.calendarSubscriptions = new Subscription();\n this.popupSubscriptions = new Subscription();\n this.resolvedPromise = Promise.resolve();\n }\n /**\n * The active calendar that is visible in the popup.\n *\n * > When the popup is closed, the property returns `null`.\n */\n get calendar() {\n return this._calendar;\n }\n set calendar(calendar) {\n this._calendar = calendar;\n this.subscribeFocusBlur(calendar);\n }\n /**\n * Gets the active state of the component.\n * When the opened calendar is active, returns `true`.\n */\n get isActive() {\n return this.calendar && this.calendar.isActive;\n }\n /**\n * Gets or sets the visibility state of the component.\n */\n set show(show) {\n if (this._show === show) {\n return;\n }\n const event = new PreventableEvent();\n if (show) {\n this.open.emit(event);\n }\n else {\n this.close.emit(event);\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n this._toggle(show);\n }\n get show() {\n return this._show;\n }\n ngOnInit() {\n this.dateRangeService.registerPopup(this);\n }\n ngAfterViewInit() {\n this.calendarSubscriptions.add(this.contentCalendar.changes.subscribe((changes) => this.calendar = changes.first));\n this.calendarSubscriptions.add(this.viewCalendar.changes.subscribe((changes) => this.calendar = changes.first));\n if (isWindowAvailable()) {\n this.zone.runOutsideAngular(() => this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this)));\n }\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.calendarSubscriptions.unsubscribe();\n if (this.activateSubscription) {\n this.activateSubscription.unsubscribe();\n }\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n }\n if (this.windowBlurSubscription) {\n this.windowBlurSubscription.unsubscribe();\n }\n }\n /**\n * Opens the popup component and focuses the calendar.\n */\n activate() {\n if (this.show === true) {\n return;\n }\n if (this.activateSubscription) {\n this.activateSubscription.unsubscribe();\n }\n this.show = true;\n this.ref.markForCheck();\n this.zone.runOutsideAngular(() => {\n this.activateSubscription = merge(this.contentCalendar.changes, this.viewCalendar.changes)\n .pipe(filter(changes => changes && changes.first), map(changes => changes.first))\n .subscribe((calendar) => setTimeout(() => calendar.focus()));\n });\n }\n /**\n * Focuses the calendar (if available).\n */\n focus() {\n if (this.calendar) {\n this.calendar.focus();\n }\n }\n /**\n * Checks if a focused element ids placed inside the popup.\n *\n * @return boolean;\n */\n hasActiveContent() {\n if (!isDocumentAvailable() || !this.popupRef) {\n return false;\n }\n return this.popupRef.popupElement.contains(document.activeElement);\n }\n /**\n * Toggles the visibility of the popup.\n * If you use the `toggle` method to show or hide the popup,\n * the `open` and `close` events do not fire.\n *\n * @param show The state of the popup.\n */\n toggle(show) {\n this.resolvedPromise.then(() => {\n this._toggle((show === undefined) ? !this.show : show);\n });\n }\n /**\n * @hidden\n *\n * Closes the popup and triggers the `cancel` event.\n */\n cancelPopup() {\n this.show = false;\n this.cancel.emit();\n }\n handleWindowBlur() {\n if (!this.show) {\n return;\n }\n if (hasObservers(this.close)) {\n this.zone.run(() => this.show = false);\n }\n else {\n this.show = false;\n }\n }\n handleMouseLeave() {\n this.dateRangeService.setRange(this.dateRangeService.selectionRange);\n }\n handleKeydown(event) {\n const { altKey, keyCode } = event;\n if (keyCode === Keys.Escape || (altKey && keyCode === Keys.ArrowUp)) {\n this.zone.run(() => this.cancelPopup());\n }\n }\n subscribeFocusBlur(calendar) {\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n }\n if (!calendar) {\n return;\n }\n const nativeElement = calendar.element.nativeElement;\n this.blurSubscription = fromEvent(nativeElement, 'blur').subscribe(() => this.onBlur.emit());\n this.focusSubscription = fromEvent(nativeElement, 'focus').subscribe(() => this.onFocus.emit());\n }\n addPopupSubscriptions(...subscriptions) {\n if (!isPresent(this.popupSubscriptions)) {\n this.popupSubscriptions = new Subscription();\n }\n subscriptions.map(s => this.popupSubscriptions.add(s));\n }\n get _appendTo() {\n const appendTo = this.appendTo;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n _toggle(show) {\n this._show = show;\n if (this.popupRef) {\n this.destroyPopup();\n }\n if (this._show) {\n const direction = this.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: this.anchor,\n anchorAlign: this.anchorAlign || { vertical: 'bottom', horizontal: direction },\n animate: this.animate,\n appendTo: this._appendTo,\n collision: this.collision,\n content: (this.contentTemplate || {}).templateRef || this.defaultTemplate,\n margin: this.margin,\n popupAlign: this.popupAlign || { vertical: 'top', horizontal: direction },\n positionMode: 'absolute'\n });\n const { popupElement, popupAnchorViewportLeave } = this.popupRef;\n popupElement.setAttribute('id', this.popupUID);\n this.addPopupSubscriptions(this.zone.runOutsideAngular(() => fromEvent(popupElement, 'keydown').subscribe(this.handleKeydown.bind(this))), fromEvent(popupElement, 'mouseleave').subscribe(this.handleMouseLeave.bind(this)), popupAnchorViewportLeave.subscribe(() => this.cancelPopup()));\n }\n }\n destroyPopup() {\n if (isPresent(this.popupRef)) {\n this.popupRef.close();\n this.popupRef = null;\n }\n if (isPresent(this.popupSubscriptions)) {\n this.popupSubscriptions.unsubscribe();\n }\n }\n}\nDateRangePopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupComponent, deps: [{ token: i2.PopupService }, { token: DateRangeService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDateRangePopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangePopupComponent, selector: \"kendo-daterange-popup\", inputs: { animate: \"animate\", anchor: \"anchor\", anchorAlign: \"anchorAlign\", appendTo: \"appendTo\", collision: \"collision\", popupAlign: \"popupAlign\", margin: \"margin\" }, outputs: { open: \"open\", close: \"close\", onBlur: \"blur\", onFocus: \"focus\", cancel: \"cancel\" }, queries: [{ propertyName: \"contentTemplate\", first: true, predicate: DateRangePopupTemplateDirective, descendants: true }, { propertyName: \"contentCalendar\", predicate: MultiViewCalendarComponent }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef }, { propertyName: \"defaultTemplate\", first: true, predicate: [\"defaultTemplate\"], descendants: true }, { propertyName: \"viewCalendar\", predicate: MultiViewCalendarComponent, descendants: true }], exportAs: [\"kendo-daterange-popup\"], ngImport: i0, template: `\n \n \n \n \n `, isInline: true, components: [{ type: MultiViewCalendarComponent, selector: \"kendo-multiviewcalendar\", inputs: [\"id\", \"focusedDate\", \"min\", \"max\", \"rangeValidation\", \"disabledDatesRangeValidation\", \"selection\", \"value\", \"disabled\", \"tabindex\", \"tabIndex\", \"isActive\", \"disabledDates\", \"activeView\", \"bottomView\", \"topView\", \"showViewHeader\", \"animateNavigation\", \"weekNumber\", \"activeRangeEnd\", \"selectionRange\", \"views\", \"cellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"decadeCellTemplate\", \"centuryCellTemplate\", \"weekNumberTemplate\", \"headerTitleTemplate\"], outputs: [\"activeViewChange\", \"navigate\", \"cellEnter\", \"cellLeave\", \"valueChange\", \"blur\"], exportAs: [\"kendo-multiviewcalendar\"] }], directives: [{ type: DateRangeSelectionDirective, selector: \"[kendoDateRangeSelection]\", inputs: [\"autoCorrectOn\", \"selectionRange\", \"activeRangeEnd\"], outputs: [\"activeRangeEndChange\", \"selectionRangeChange\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangePopupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendo-daterange-popup',\n selector: 'kendo-daterange-popup',\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i2.PopupService }, { type: DateRangeService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: false }]\n }], defaultTemplate: [{\n type: ViewChild,\n args: ['defaultTemplate', { static: false }]\n }], contentTemplate: [{\n type: ContentChild,\n args: [DateRangePopupTemplateDirective, { static: false }]\n }], viewCalendar: [{\n type: ViewChildren,\n args: [MultiViewCalendarComponent]\n }], contentCalendar: [{\n type: ContentChildren,\n args: [MultiViewCalendarComponent]\n }], animate: [{\n type: Input\n }], anchor: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], collision: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], margin: [{\n type: Input\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], cancel: [{\n type: Output\n }] } });\n\n/**\n * Represents the Kendo UI DateRange component for Angular.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public dateRange: any = { start: null, end: null };\n * }\n * ```\n */\nclass DateRangeComponent {\n constructor() {\n this.wrapperClass = true;\n /**\n * @hidden\n */\n this.showDefault = false;\n validatePackage(packageMetadata);\n }\n get hasContentPopup() {\n return this.contentPopup.length > 0;\n }\n ngAfterContentInit() {\n this.showDefault = !this.hasContentPopup;\n this.subscription = this.contentPopup.changes.subscribe(() => {\n this.showDefault = !this.hasContentPopup;\n });\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nDateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeComponent, selector: \"kendo-daterange\", host: { properties: { \"class.k-daterangepicker\": \"this.wrapperClass\" } }, providers: [DateRangeService], queries: [{ propertyName: \"contentPopup\", predicate: DateRangePopupComponent }], ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: DateRangePopupComponent, selector: \"kendo-daterange-popup\", inputs: [\"animate\", \"anchor\", \"anchorAlign\", \"appendTo\", \"collision\", \"popupAlign\", \"margin\"], outputs: [\"open\", \"close\", \"blur\", \"focus\", \"cancel\"], exportAs: [\"kendo-daterange-popup\"] }], directives: [{ type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeComponent, decorators: [{\n type: Component,\n args: [{\n providers: [DateRangeService],\n selector: 'kendo-daterange',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { wrapperClass: [{\n type: HostBinding,\n args: ['class.k-daterangepicker']\n }], contentPopup: [{\n type: ContentChildren,\n args: [DateRangePopupComponent]\n }] } });\n\n/**\n * @hidden\n */\nclass DateRangeInput {\n constructor(activeRangeEnd, dateRangeService, input, element, renderer, zone) {\n this.activeRangeEnd = activeRangeEnd;\n this.dateRangeService = dateRangeService;\n this.input = input;\n this.element = element;\n this.renderer = renderer;\n this.zone = zone;\n this.navigateCalendarOnFocus = false;\n this.popupSubscriptions = new Subscription();\n this.subscriptions = new Subscription();\n }\n get isActiveEnd() {\n return this.dateRangeService.activeRangeEnd === this.activeRangeEnd;\n }\n get popupCalendarActivated() {\n const popup = this.dateRangeService.dateRangePopup$.value;\n return isPresent(popup) && isPresent(popup.calendar);\n }\n init() {\n if (this.input.value) {\n this.dateRangeService.setRange(this.getRange(this.input.value));\n }\n [\n this.input.onBlur.subscribe(() => this.deactivate()),\n this.input.onFocus.pipe(filter(() => !this.popupCalendarActivated)).subscribe(() => this.activate()),\n this.input.valueUpdate.subscribe(value => this.updateRange(value, 'change')),\n this.dateRangeService.activeRangeEnd$.subscribe(() => {\n if (this.navigateCalendarOnFocus) {\n this.focusActiveDate();\n }\n this.toggleActiveClass(this.isActiveEnd);\n }),\n this.dateRangeService.dateRangePopup$.subscribe(popup => this.initPopup(popup)),\n this.dateRangeService.range$.subscribe(range => this.updateInputValue(range)),\n fromEvent(this.element.nativeElement, 'click').subscribe(() => this.activate()),\n fromEvent(this.element.nativeElement, 'keydown').subscribe((event) => this.togglePopup(event || {}))\n ].map(s => this.subscriptions.add(s));\n }\n destroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribePopup();\n }\n initPopup(popup) {\n if (!popup) {\n this.unsubscribePopup();\n return;\n }\n if (!popup.anchor) {\n popup.anchor = this.element.nativeElement;\n }\n [\n popup.cancel.subscribe(() => this.isActiveEnd && this.input.focus()),\n popup.onFocus.subscribe(() => this.toggleActiveClass(this.isActiveEnd)),\n popup.onBlur.subscribe(() => this.deactivate())\n ].map(s => this.popupSubscriptions.add(s));\n }\n unsubscribePopup() {\n this.popupSubscriptions.unsubscribe();\n this.popupSubscriptions = new Subscription();\n }\n activate() {\n this.dateRangeService.setActiveRangeEnd(this.activeRangeEnd);\n this.dateRangeService.activatePopup();\n }\n deactivate() {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.updateRange(this.input.value, 'blur');\n if (this.dateRangeService.hasActiveComponent()) {\n return;\n }\n this.toggleActiveClass(false);\n this.zone.run(() => this.dateRangeService.deactivatePopup());\n });\n });\n }\n updateRange(value, correctOn) {\n const range = this.getRange(value, correctOn);\n if (range) {\n this.focusActiveDate();\n this.dateRangeService.setRange(range);\n }\n }\n togglePopup({ altKey, keyCode }) {\n if (keyCode === Keys.Escape) {\n this.dateRangeService.cancelPopup();\n }\n else if (altKey && keyCode === Keys.ArrowDown) {\n this.dateRangeService.activatePopup();\n }\n }\n focusActiveDate() {\n if (this.input.value && this.isActiveEnd) {\n this.dateRangeService.setFocusedDate(cloneDate(this.input.value));\n }\n }\n toggleActiveClass(show) {\n const action = show ? 'addClass' : 'removeClass';\n const nativeElement = this.element.nativeElement;\n if (nativeElement && nativeElement.querySelector) {\n this.renderer[action](nativeElement, 'k-focus');\n }\n }\n}\n\n/**\n * A directive which manages the end range selection.\n *\n * > You can use the DateRangeEndInputDirective only with a DateInput component.\n */\nclass DateRangeEndInputDirective extends DateRangeInput {\n constructor(rangeService, dateInput, element, renderer, zone) {\n super('end', rangeService, dateInput, element, renderer, zone);\n this.rangeService = rangeService;\n this.dateInput = dateInput;\n /**\n * Specifies the navigation behavior of the calendar when the active end is changed on input focus. When enabled,\n * the calendar navigates to the value of the focused input. Otherwise, the calendar displays the last picked date.\n *\n * By default, the automatic navigation behavior on input focus is disabled.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
Toggle input focus to see the calendar navigating between range ends.
\n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public start: Date = new Date(2018, 3, 10);\n * public end: Date = new Date(2018, 10, 20);\n * }\n * ```\n */\n this.navigateCalendarOnFocus = false;\n }\n ngOnInit() {\n this.rangeService.registerEndInput(this.dateInput);\n super.init();\n }\n ngOnDestroy() {\n super.destroy();\n }\n getRange(value, correctOn) {\n const { min, max } = this.dateInput;\n if (!isInRange(value, min, max)) {\n return null;\n }\n const { start } = this.rangeService.selectionRange || EMPTY_SELECTIONRANGE;\n const shouldClamp = this.autoCorrectOn === correctOn && isPresent(value) && value < start;\n return shouldClamp ? clampRange(value) : { start, end: cloneDate(value) };\n }\n updateInputValue(range) {\n const { end } = range || EMPTY_SELECTIONRANGE;\n const { min, max } = this.dateInput;\n if (isEqual(this.dateInput.value, end) || !isInRange(end, min, max)) {\n return;\n }\n this.dateInput.writeValue(cloneDate(end));\n this.dateInput.notify();\n }\n}\nDateRangeEndInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeEndInputDirective, deps: [{ token: DateRangeService }, { token: DateInputComponent }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangeEndInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeEndInputDirective, selector: \"[kendoDateRangeEndInput]\", inputs: { autoCorrectOn: \"autoCorrectOn\", navigateCalendarOnFocus: \"navigateCalendarOnFocus\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeEndInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeEndInput]'\n }]\n }], ctorParameters: function () { return [{ type: DateRangeService }, { type: DateInputComponent }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { autoCorrectOn: [{\n type: Input\n }], navigateCalendarOnFocus: [{\n type: Input\n }] } });\n\n/**\n * A directive which manages the start selection range.\n *\n * > You can use the DateRangeStartInputDirective only with a DateInput component.\n */\nclass DateRangeStartInputDirective extends DateRangeInput {\n constructor(rangeService, dateInput, element, renderer, zone) {\n super('start', rangeService, dateInput, element, renderer, zone);\n this.rangeService = rangeService;\n this.dateInput = dateInput;\n /**\n * Specifies the navigation behavior of the calendar when the active end is changed on input focus.\n * When enabled, the calendar navigates to the value of the focused input. Otherwise, the calendar\n * displays the last picked date.\n *\n * By default, the automatic navigation behavior on input focus is disabled.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
Toggle input focus to see the calendar navigating between range ends.
\n * \n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public start: Date = new Date(2018, 3, 10);\n * public end: Date = new Date(2018, 10, 20);\n * }\n * ```\n */\n this.navigateCalendarOnFocus = false;\n }\n ngOnInit() {\n this.rangeService.registerStartInput(this.dateInput);\n super.init();\n }\n ngOnDestroy() {\n super.destroy();\n }\n getRange(value, correctOn) {\n const { min, max } = this.dateInput;\n if (!isInRange(value, min, max)) {\n return null;\n }\n const { end } = this.rangeService.selectionRange || EMPTY_SELECTIONRANGE;\n const shouldClamp = this.autoCorrectOn === correctOn && end && value > end;\n return shouldClamp ? clampRange(value) : { start: cloneDate(value), end };\n }\n updateInputValue(range) {\n const { start } = range || EMPTY_SELECTIONRANGE;\n const { min, max } = this.dateInput;\n if (isEqual(this.dateInput.value, start) || !isInRange(start, min, max)) {\n return;\n }\n this.dateInput.writeValue(cloneDate(start));\n this.dateInput.notify();\n }\n}\nDateRangeStartInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeStartInputDirective, deps: [{ token: DateRangeService }, { token: DateInputComponent }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nDateRangeStartInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateRangeStartInputDirective, selector: \"[kendoDateRangeStartInput]\", inputs: { autoCorrectOn: \"autoCorrectOn\", navigateCalendarOnFocus: \"navigateCalendarOnFocus\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeStartInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDateRangeStartInput]'\n }]\n }], ctorParameters: function () { return [{ type: DateRangeService }, { type: DateInputComponent }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { autoCorrectOn: [{\n type: Input\n }], navigateCalendarOnFocus: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `HeaderComponent`—The component that renders the UI for vertical navigation.\n * - `ViewComponent`—The component that renders the active Calendar view.\n */\nclass CalendarCommonModule {\n}\nCalendarCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, declarations: [KForOf,\n HeaderComponent,\n ViewComponent], imports: [CommonModule, EventsModule], exports: [KForOf,\n HeaderComponent,\n ViewComponent] });\nCalendarCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, imports: [[CommonModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarCommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n KForOf,\n HeaderComponent,\n ViewComponent\n ],\n exports: [\n KForOf,\n HeaderComponent,\n ViewComponent\n ],\n imports: [CommonModule, EventsModule]\n }]\n }] });\n\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `CellTemplateDirective`—The month cell template directive.\n * - `MonthCellTemplateDirective`—The month cell template directive.\n * - `YearCellTemplateDirective`—The year cell template directive.\n * - `DecadeCellTemplateDirective`—The decade cell template directive.\n * - `CenturyCellTemplateDirective`—The century cell template directive.\n * - `WeekNumberCellTemplateDirective`—The month week number cell template directive.\n * - `HeaderTitleTemplateDirective`—The header title template directive.\n * - `NavigationItemTemplateDirective`—The navigation item template directive.\n */\nclass TemplatesModule {\n}\nTemplatesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTemplatesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule, declarations: [CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective], exports: [CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective] });\nTemplatesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplatesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective\n ],\n exports: [\n CellTemplateDirective,\n MonthCellTemplateDirective,\n YearCellTemplateDirective,\n DecadeCellTemplateDirective,\n CenturyCellTemplateDirective,\n WeekNumberCellTemplateDirective,\n HeaderTitleTemplateDirective,\n NavigationItemTemplateDirective\n ]\n }]\n }] });\n\n/**\n * The package exports:\n * - `CellTemplateDirective`—The month cell template directive.\n * - `MonthCellTemplateDirective`—The month cell template directive.\n * - `YearCellTemplateDirective`—The year cell template directive.\n * - `DecadeCellTemplateDirective`—The decade cell template directive.\n * - `CenturyCellTemplateDirective`—The century cell template directive.\n * - `WeekNumberCellTemplateDirective`—The month week number cell template directive.\n * - `HeaderTitleTemplateDirective`—The header title template directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the MultiViewCalendar module\n * import { MultiViewCalendarModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, MultiViewCalendarModule], // import MultiViewCalendar module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n */\nclass MultiViewCalendarModule {\n}\nMultiViewCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMultiViewCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, declarations: [HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent], imports: [CommonModule,\n CalendarCommonModule,\n IntlModule,\n TemplatesModule,\n PopupModule,\n EventsModule], exports: [HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent,\n CalendarCommonModule,\n TemplatesModule] });\nMultiViewCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, providers: [\n NavigationService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ], imports: [[\n CommonModule,\n CalendarCommonModule,\n IntlModule,\n TemplatesModule,\n PopupModule,\n EventsModule\n ], CalendarCommonModule,\n TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiViewCalendarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent\n ],\n exports: [\n HorizontalViewListComponent,\n MultiViewCalendarLocalizedMessagesDirective,\n MultiViewCalendarCustomMessagesComponent,\n MultiViewCalendarComponent,\n CalendarCommonModule,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n CalendarCommonModule,\n IntlModule,\n TemplatesModule,\n PopupModule,\n EventsModule\n ],\n providers: [\n NavigationService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ]\n }]\n }] });\n\nconst COMPONENT_DIRECTIVES$3 = [\n VirtualizationComponent\n];\n/**\n * @hidden\n *\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Virtualization component.\n */\nclass VirtualizationModule {\n}\nVirtualizationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nVirtualizationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, declarations: [VirtualizationComponent], imports: [CommonModule], exports: [VirtualizationComponent] });\nVirtualizationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: VirtualizationModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$3],\n exports: [COMPONENT_DIRECTIVES$3],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * The exported package module.\n *\n * The package exports:\n * - `CellTemplateDirective`—The month cell template directive.\n * - `MonthCellTemplateDirective`—The month cell template directive.\n * - `YearCellTemplateDirective`—The year cell template directive.\n * - `DecadeCellTemplateDirective`—The decade cell template directive.\n * - `CenturyCellTemplateDirective`—The century cell template directive.\n * - `WeekNumberCellTemplateDirective`—The month week number cell template directive.\n * - `HeaderTitleTemplateDirective`—The header title template directive.\n * - `NavigationItemTemplateDirective`—The navigation item template directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Calendar module\n * import { CalendarModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, CalendarModule], // import Calendar module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass CalendarModule {\n}\nCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, declarations: [CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent], imports: [CommonModule,\n CalendarCommonModule,\n MultiViewCalendarModule,\n IntlModule,\n TemplatesModule,\n VirtualizationModule,\n EventsModule,\n ResizeSensorModule], exports: [CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent,\n CalendarCommonModule,\n TemplatesModule] });\nCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, providers: [\n CalendarDOMService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ], imports: [[\n CommonModule,\n CalendarCommonModule,\n MultiViewCalendarModule,\n IntlModule,\n TemplatesModule,\n VirtualizationModule,\n EventsModule,\n ResizeSensorModule\n ], CalendarCommonModule,\n TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent\n ],\n exports: [\n CalendarComponent,\n NavigationComponent,\n CalendarCustomMessagesComponent,\n CalendarLocalizedMessagesDirective,\n ViewListComponent,\n CalendarCommonModule,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n CalendarCommonModule,\n MultiViewCalendarModule,\n IntlModule,\n TemplatesModule,\n VirtualizationModule,\n EventsModule,\n ResizeSensorModule\n ],\n providers: [\n CalendarDOMService,\n CenturyViewService,\n DecadeViewService,\n MonthViewService,\n YearViewService,\n WeekNamesService\n ]\n }]\n }] });\n\n/**\n * The exported package module.\n *\n * The package exports:\n * - `CalendarModule`—The calendar module.\n * - `MultiViewCalendarModule`—The multi-view calendar module.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Calendars module\n * import { CalendarsModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, CalendarsModule], // import the Calendars module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass CalendarsModule {\n}\nCalendarsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, imports: [CalendarModule,\n MultiViewCalendarModule], exports: [CalendarModule,\n MultiViewCalendarModule] });\nCalendarsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, imports: [[\n CalendarModule,\n MultiViewCalendarModule\n ], CalendarModule,\n MultiViewCalendarModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CalendarsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n CalendarModule,\n MultiViewCalendarModule\n ],\n imports: [\n CalendarModule,\n MultiViewCalendarModule\n ]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass DateInputCustomMessagesComponent extends DateInputMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nDateInputCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateInputCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateInputCustomMessagesComponent, selector: \"kendo-dateinput-messages\", providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: DateInputMessages,\n useExisting: forwardRef(() => DateInputCustomMessagesComponent)\n }\n ],\n selector: 'kendo-dateinput-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DateInput component.\n */\nclass DateInputModule {\n}\nDateInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, declarations: [DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective], imports: [CommonModule, IntlModule, EventsModule], exports: [DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective] });\nDateInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, imports: [[CommonModule, IntlModule, EventsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective\n ],\n exports: [\n DateInputComponent,\n DateInputCustomMessagesComponent,\n DateInputLocalizedMessagesDirective\n ],\n imports: [CommonModule, IntlModule, EventsModule]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass DatePickerCustomMessagesComponent extends DatePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nDatePickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDatePickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DatePickerCustomMessagesComponent, selector: \"kendo-datepicker-messages\", providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: DatePickerMessages,\n useExisting: forwardRef(() => DatePickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-datepicker-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DatePicker component.\n */\nclass DatePickerModule {\n}\nDatePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, declarations: [DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective], imports: [CommonModule,\n DateInputModule,\n CalendarModule,\n IntlModule,\n PopupModule,\n TemplatesModule,\n EventsModule], exports: [DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective,\n TemplatesModule] });\nDatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }], imports: [[\n CommonModule,\n DateInputModule,\n CalendarModule,\n IntlModule,\n PopupModule,\n TemplatesModule,\n EventsModule\n ], TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DatePickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective\n ],\n exports: [\n DatePickerComponent,\n DatePickerCustomMessagesComponent,\n DatePickerLocalizedMessagesDirective,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n DateInputModule,\n CalendarModule,\n IntlModule,\n PopupModule,\n TemplatesModule,\n EventsModule\n ],\n providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]\n }]\n }] });\n\nconst COMPONENT_DIRECTIVES$2 = [\n DateRangeComponent,\n DateRangePopupComponent,\n DateRangePopupTemplateDirective,\n DateRangeSelectionDirective,\n DateRangeStartInputDirective,\n DateRangeEndInputDirective\n];\nconst COMPONENT_MODULES$2 = [\n MultiViewCalendarModule,\n DateInputModule,\n PopupModule,\n EventsModule\n];\n/**\n * The exported package module.\n *\n * The package exports:\n * - `DateRangeComponent`—The DateRange component class.\n * - `DateRangePopupComponent`—The DateRangePopup component class.\n * - `DateRangeSelectionDirective`—The MultiviewCalendar date range selection directive.\n * - `DateRangeEndInputDirective`—The end DateInput date range selection directive.\n * - `DateRangeStartInputDirective`—The start DateInput date range selection directive.\n * - `DateRangePopupTemplateDirective`—The DateRangePopup content template directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the DateRange module\n * import { DateRangeModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, DateRangeModule], // import DateRange module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DateRangeModule {\n}\nDateRangeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateRangeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, declarations: [DateRangeComponent,\n DateRangePopupComponent,\n DateRangePopupTemplateDirective,\n DateRangeSelectionDirective,\n DateRangeStartInputDirective,\n DateRangeEndInputDirective], imports: [CommonModule, MultiViewCalendarModule,\n DateInputModule,\n PopupModule,\n EventsModule], exports: [DateRangeComponent,\n DateRangePopupComponent,\n DateRangePopupTemplateDirective,\n DateRangeSelectionDirective,\n DateRangeStartInputDirective,\n DateRangeEndInputDirective] });\nDateRangeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, imports: [[CommonModule, COMPONENT_MODULES$2]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateRangeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$2],\n exports: [COMPONENT_DIRECTIVES$2],\n imports: [CommonModule, COMPONENT_MODULES$2]\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass TimePickerCustomMessagesComponent extends TimePickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nTimePickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTimePickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TimePickerCustomMessagesComponent, selector: \"kendo-timepicker-messages\", providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TimePickerMessages,\n useExisting: forwardRef(() => TimePickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-timepicker-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst COMPONENT_DIRECTIVES$1 = [\n TimePickerLocalizedMessagesDirective,\n TimeListComponent,\n TimePickerCustomMessagesComponent,\n TimePickerComponent,\n TimeSelectorLocalizedMessagesDirective,\n TimeSelectorCustomMessagesComponent,\n TimeSelectorComponent\n];\nconst COMPONENT_MODULES$1 = [\n DateInputModule,\n IntlModule,\n PopupModule,\n VirtualizationModule,\n EventsModule\n];\nconst providers = [\n TimePickerDOMService,\n HoursService,\n MinutesService,\n SecondsService,\n MillisecondsService,\n DayPeriodService,\n {\n provide: TOUCH_ENABLED,\n useValue: touchEnabled\n }\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the TimePicker component.\n */\nclass TimePickerModule {\n}\nTimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, declarations: [TimePickerLocalizedMessagesDirective,\n TimeListComponent,\n TimePickerCustomMessagesComponent,\n TimePickerComponent,\n TimeSelectorLocalizedMessagesDirective,\n TimeSelectorCustomMessagesComponent,\n TimeSelectorComponent], imports: [CommonModule, DateInputModule,\n IntlModule,\n PopupModule,\n VirtualizationModule,\n EventsModule], exports: [TimePickerLocalizedMessagesDirective,\n TimeListComponent,\n TimePickerCustomMessagesComponent,\n TimePickerComponent,\n TimeSelectorLocalizedMessagesDirective,\n TimeSelectorCustomMessagesComponent,\n TimeSelectorComponent] });\nTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, providers: providers, imports: [[CommonModule, ...COMPONENT_MODULES$1]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TimePickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$1],\n exports: [COMPONENT_DIRECTIVES$1],\n imports: [CommonModule, ...COMPONENT_MODULES$1],\n providers: providers\n }]\n }] });\n\n/**\n * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).\n */\nclass DateTimePickerCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nDateTimePickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDateTimePickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DateTimePickerCustomMessagesComponent, selector: \"kendo-datetimepicker-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => DateTimePickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => DateTimePickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-datetimepicker-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\nconst COMPONENT_DIRECTIVES = [\n DateTimePickerComponent,\n DateTimePickerCustomMessagesComponent,\n LocalizedMessagesDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the DateTimePicker component.\n */\nclass DateTimePickerModule {\n}\nDateTimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, declarations: [DateTimePickerComponent,\n DateTimePickerCustomMessagesComponent,\n LocalizedMessagesDirective], imports: [CommonModule,\n IntlModule,\n DateInputModule,\n CalendarModule,\n TimePickerModule,\n PopupModule,\n EventsModule,\n TemplatesModule], exports: [DateTimePickerComponent,\n DateTimePickerCustomMessagesComponent,\n LocalizedMessagesDirective, TemplatesModule] });\nDateTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, providers: [\n { provide: TOUCH_ENABLED, useValue: touchEnabled }\n ], imports: [[\n CommonModule,\n IntlModule,\n DateInputModule,\n CalendarModule,\n TimePickerModule,\n PopupModule,\n EventsModule,\n TemplatesModule\n ], TemplatesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateTimePickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n ...COMPONENT_DIRECTIVES\n ],\n exports: [\n ...COMPONENT_DIRECTIVES,\n TemplatesModule\n ],\n imports: [\n CommonModule,\n IntlModule,\n DateInputModule,\n CalendarModule,\n TimePickerModule,\n PopupModule,\n EventsModule,\n TemplatesModule\n ],\n providers: [\n { provide: TOUCH_ENABLED, useValue: touchEnabled }\n ]\n }]\n }] });\n\nconst COMPONENT_MODULES = [\n CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Date Inputs components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Date Inputs module\n * import { DateInputsModule } from '@progress/kendo-angular-dateinputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare the app component\n * imports: [BrowserModule, DateInputsModule], // import the Date Inputs module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DateInputsModule {\n}\nDateInputsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDateInputsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, imports: [CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule], exports: [CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule] });\nDateInputsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, imports: [COMPONENT_MODULES, CalendarsModule,\n DateInputModule,\n DatePickerModule,\n TimePickerModule,\n DateRangeModule,\n DateTimePickerModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DateInputsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: COMPONENT_MODULES,\n imports: COMPONENT_MODULES\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CalendarCommonModule, CalendarComponent, CalendarCustomMessagesComponent, CalendarLocalizedMessagesDirective, CalendarModule, CalendarsModule, CellTemplateDirective, CenturyCellTemplateDirective, DateInputComponent, DateInputCustomMessagesComponent, DateInputLocalizedMessagesDirective, DateInputModule, DateInputsModule, DatePickerComponent, DatePickerCustomMessagesComponent, DatePickerLocalizedMessagesDirective, DatePickerModule, DateRangeComponent, DateRangeEndInputDirective, DateRangeModule, DateRangePopupComponent, DateRangePopupTemplateDirective, DateRangeSelectionDirective, DateRangeService, DateRangeStartInputDirective, DateTimePickerComponent, DateTimePickerCustomMessagesComponent, DateTimePickerModule, DecadeCellTemplateDirective, HeaderComponent, HeaderTitleTemplateDirective, HorizontalViewListComponent, KForOf, LocalizedMessagesDirective, MonthCellTemplateDirective, MultiViewCalendarComponent, MultiViewCalendarCustomMessagesComponent, MultiViewCalendarLocalizedMessagesDirective, MultiViewCalendarModule, NavigationComponent, NavigationItemTemplateDirective, PreventableEvent, TemplatesModule, TimeListComponent, TimePickerComponent, TimePickerCustomMessagesComponent, TimePickerLocalizedMessagesDirective, TimePickerModule, TimeSelectorComponent, TimeSelectorCustomMessagesComponent, TimeSelectorLocalizedMessagesDirective, ViewComponent, ViewListComponent, WeekNumberCellTemplateDirective, YearCellTemplateDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, TemplateRef, Component, Input, Output, HostBinding, InjectionToken, Injectable, Inject, Optional, Directive, forwardRef, ContentChildren, ViewChildren, ViewChild, isDevMode, Renderer2, Host, HostListener, ContentChild, NgModule } from '@angular/core';\nimport * as i2 from '@angular/animations';\nimport { style, animate, keyframes, trigger, state, transition } from '@angular/animations';\nimport { of, Subscription, Subject, merge } from 'rxjs';\nimport { delay, takeUntil, take, filter, map, share, tap, switchMap } from 'rxjs/operators';\nimport * as i6 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX, RTL, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1$1 from '@progress/kendo-angular-common';\nimport { DraggableDirective, isChanged, isDocumentAvailable, DraggableModule } from '@progress/kendo-angular-common';\nimport { offset, scrollPosition, positionWithScroll, getDocumentElement, getWindowViewPort } from '@progress/kendo-popup-common';\nimport { Button } from '@progress/kendo-angular-buttons';\n\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isTruthy = (value) => !!value;\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\nconst focusableRegex = /^(?:a|input|select|textarea|button|object)$/i;\n/**\n * @hidden\n */\nvar Keys;\n(function (Keys) {\n Keys[Keys[\"esc\"] = 27] = \"esc\";\n Keys[Keys[\"tab\"] = 9] = \"tab\";\n Keys[Keys[\"enter\"] = 13] = \"enter\";\n Keys[Keys[\"space\"] = 32] = \"space\";\n Keys[Keys[\"ctrl\"] = 17] = \"ctrl\";\n Keys[Keys[\"shift\"] = 16] = \"shift\";\n Keys[Keys[\"left\"] = 37] = \"left\";\n Keys[Keys[\"up\"] = 38] = \"up\";\n Keys[Keys[\"right\"] = 39] = \"right\";\n Keys[Keys[\"down\"] = 40] = \"down\";\n})(Keys || (Keys = {}));\n/**\n * @hidden\n */\nconst DIALOG_ELEMENTS_HANDLING_ESC_KEY = 'k-dialog-wrapper k-dialog-buttongroup k-dialog-action';\n/**\n * @hidden\n */\nconst DIALOG_ELEMENTS_HANDLING_ARROWS = 'k-dialog-buttongroup';\n/**\n * @hidden\n */\nconst WINDOW_CLASSES = 'k-window';\n/**\n * @hidden\n */\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n/**\n * @hidden\n */\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n return !!(rect.width && rect.height) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n/**\n * @hidden\n */\nconst isFocusable = (element, checkVisibility = true) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const validTabIndex = tabIndex !== null && !isNaN(tabIndex) && tabIndex > -1;\n let focusable = false;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled;\n }\n else {\n focusable = validTabIndex;\n }\n return focusable && (!checkVisibility || isVisible(element));\n }\n return false;\n};\n/**\n * @hidden\n */\nconst setHTMLAttributes = (attributes, renderer, element) => {\n for (const attribute in attributes) {\n if (attribute) {\n renderer.setAttribute(element, attribute, attributes[attribute]);\n }\n }\n};\n/**\n * Receives CSS class declarations either as an object, string or array and returns an array of the class names.\n *\n * @hidden\n */\nconst parseCSSClassNames = (value) => {\n if (isObject(value)) {\n return parseObjectClassNames(value);\n }\n if (isString(value)) {\n return parseStringClassNames(value);\n }\n if (Array.isArray(value)) {\n return parseArrayClassNames(value);\n }\n};\nconst parseObjectClassNames = (value) => {\n const classes = [];\n Object.keys(value).forEach(className => {\n const currentClassName = splitStringToArray(className);\n if (value[className] && currentClassName[0]) {\n classes.push(...currentClassName);\n }\n });\n return classes;\n};\nconst parseStringClassNames = (value) => {\n const classes = [];\n const classesArray = splitStringToArray(value);\n classesArray.forEach(className => {\n classes.push(className);\n });\n return classes;\n};\nconst parseArrayClassNames = (value) => {\n const classes = [];\n value.forEach((className) => {\n const current = splitStringToArray(className);\n if (current[0]) {\n classes.push(...current);\n }\n });\n return classes;\n};\n/**\n * @hidden\n */\nconst focusableSelector = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '*[tabindex]',\n '*[contenteditable]'\n].join(',');\n/**\n * @hidden\n */\nconst preventDefault = ({ originalEvent: event }) => {\n event.stopPropagation();\n event.preventDefault();\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nconst preventOnDblClick = release => (mouseDown) => of(mouseDown).pipe(delay(150), takeUntil(release));\n/**\n * @hidden\n */\nconst RESIZE_DIRECTIONS = ['n', 'e', 's', 'w', 'se', 'sw', 'ne', 'nw'];\n/**\n * @hidden\n */\nconst OFFSET_STYLES = ['top', 'left', 'width', 'height'];\n/**\n * @hidden\n */\nconst isString = (value) => value instanceof String || typeof value === 'string';\n/**\n * @hidden\n */\nconst isObject = (value) => isPresent(value) && !Array.isArray(value) && typeof value === 'object';\n/**\n * @hidden\n */\nconst isNumber = (value) => typeof value === 'number' && isFinite(value);\n/**\n * @hidden\n */\nconst createValueWithUnit = (value) => value + (isNumber(value) ? 'px' : '');\n/**\n * @hidden\n */\nconst splitStringToArray = (value) => value.trim().replace(/\\s+/g, \" \").split(' ');\n/**\n * @hidden\n */\nconst findPrimaryButton = (buttons) => {\n for (let i = buttons.length - 1; i >= 0; i--) {\n const classList = buttons[i].classList;\n for (let j = 0; j < classList.length; j++) {\n if (classList[j].endsWith('-primary')) {\n return buttons[i];\n }\n }\n }\n};\n\n/**\n * Specifies the action buttons of the Dialog\n * ([see example]({% slug actionbuttons_dialog %})).\n */\nclass DialogActionsComponent {\n constructor(el) {\n this.el = el;\n /**\n * Specifies the possible layout of the action buttons.\n */\n this.layout = 'stretched';\n /**\n * Fires when the user clicks an action button.\n */\n this.action = new EventEmitter();\n this.buttonGroupClassName = true;\n }\n /**\n * Allows the declarative specification of the actions.\n */\n set actions(value) {\n if (value instanceof TemplateRef) {\n this.actionsTemplate = value;\n }\n else if (Array.isArray(value)) {\n this.actionsArray = value;\n }\n else {\n throw new Error('\"actions\" must be either TemplateRef or DialogAction[] instance.');\n }\n }\n get className() {\n return this.layout === 'stretched';\n }\n /**\n * @hidden\n */\n onButtonClick(action, _e) {\n this.action.emit(action);\n }\n /**\n * @hidden\n */\n buttonClass(action) {\n let classes = ['k-button k-button-md k-rounded-md'];\n const fillMode = action.fillMode ? action.fillMode : 'solid';\n const themeColor = action.themeColor ? action.themeColor : 'base';\n const cssClasses = action.cssClass ? parseCSSClassNames(action.cssClass) : [];\n classes.push(`k-button-${fillMode} k-button-${fillMode}-${themeColor}`);\n if (cssClasses.length > 0) {\n classes = classes.concat(cssClasses);\n }\n return classes.join(' ');\n }\n}\nDialogActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogActionsComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nDialogActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: { actions: \"actions\", layout: \"layout\" }, outputs: { action: \"action\" }, host: { properties: { \"class.k-dialog-buttongroup\": \"this.buttonGroupClassName\", \"class.k-actions\": \"this.buttonGroupClassName\", \"class.k-actions-stretched\": \"this.className\" } }, ngImport: i0, template: `\n \n \n \n {{ action.text }}\n \n \n \n `, isInline: true, directives: [{ type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i6.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i6.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogActionsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-dialog-actions',\n template: `\n \n \n \n {{ action.text }}\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { actions: [{\n type: Input\n }], layout: [{\n type: Input\n }], action: [{\n type: Output\n }], buttonGroupClassName: [{\n type: HostBinding,\n args: ['class.k-dialog-buttongroup']\n }, {\n type: HostBinding,\n args: ['class.k-actions']\n }], className: [{\n type: HostBinding,\n args: ['class.k-actions-stretched']\n }] } });\n\nclass PreventableEvent {\n /**\n * @hidden\n */\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nconst DIALOG_LOCALIZATION_SERVICE = new InjectionToken('Dialog LocalizationService');\n\n/**\n * @hidden\n */\nclass TitleBarLocalizationService extends LocalizationService {\n constructor(prefix, messageService, rtl, dialogLocalization) {\n super(prefix, messageService, rtl);\n this.dialogLocalization = dialogLocalization;\n }\n get(shortKey) {\n if (this.dialogLocalization) {\n return this.dialogLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n}\nTitleBarLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleBarLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }, { token: DIALOG_LOCALIZATION_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nTitleBarLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleBarLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TitleBarLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }, { type: i1.LocalizationService, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIALOG_LOCALIZATION_SERVICE]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendo-dialog-messages-base\", inputs: { closeTitle: \"closeTitle\", restoreTitle: \"restoreTitle\", maximizeTitle: \"maximizeTitle\", minimizeTitle: \"minimizeTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-dialog-messages-base'\n }]\n }], propDecorators: { closeTitle: [{\n type: Input\n }], restoreTitle: [{\n type: Input\n }], maximizeTitle: [{\n type: Input\n }], minimizeTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `\n [kendoDialogLocalizedMessages],\n [kendoWindowLocalizedMessages],\n [kendoDialogTitleBarLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [Kendo UI DialogTitleBar component for Angular]({% slug api_dialog_dialogtitlebarcomponent %}).\n *\n * It is used as part of the Dialog content when the component is created dynamically by using an [Angular service]({% slug service_dialog %}).\n */\nclass DialogTitleBarComponent {\n constructor(zone, hostElement, localizationService) {\n this.zone = zone;\n this.hostElement = hostElement;\n this.localizationService = localizationService;\n /**\n * Fires when the close button of the title-bar is clicked.\n */\n this.close = new EventEmitter();\n }\n get className() {\n return true;\n }\n get closeButtonTitle() {\n return this.closeTitle || this.localizationService.get('closeTitle');\n }\n ngAfterViewInit() {\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n const element = this.hostElement.nativeElement.querySelector('.k-dialog-title');\n element.setAttribute('id', this.id);\n });\n }\n /**\n * @hidden\n */\n onCloseClick(e) {\n e.preventDefault();\n const eventArgs = new PreventableEvent();\n this.close.emit(eventArgs);\n }\n}\nDialogTitleBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogTitleBarComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDialogTitleBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: { id: \"id\", closeTitle: \"closeTitle\" }, outputs: { close: \"close\" }, host: { properties: { \"class.k-window-titlebar\": \"this.className\", \"class.k-dialog-titlebar\": \"this.className\" } }, providers: [\n TitleBarLocalizationService,\n {\n provide: LocalizationService,\n useExisting: TitleBarLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ], ngImport: i0, template: `\n \n
\n \n
\n\n
\n \n \n \n
\n \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogTitleBarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-dialog-titlebar',\n providers: [\n TitleBarLocalizationService,\n {\n provide: LocalizationService,\n useExisting: TitleBarLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ],\n template: `\n \n
\n \n
\n\n
\n \n \n \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.LocalizationService, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { close: [{\n type: Output\n }], id: [{\n type: Input\n }], closeTitle: [{\n type: Input\n }], className: [{\n type: HostBinding,\n args: ['class.k-window-titlebar']\n }, {\n type: HostBinding,\n args: ['class.k-dialog-titlebar']\n }] } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-dialog',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1654175123,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Indicates that the **Close** button is clicked. Used when the results from\n * the Dialogs that are opened through `DialogService` are filtered\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogCloseResult {\n}\n\n/**\n * @hidden\n */\nfunction animations(duration, direction, animationType) {\n switch (animationType) {\n case 'slide':\n const translate = direction === 'left' || direction === 'right' ? 'translateX' : 'translateY';\n const start = direction === 'right' || direction === 'down' ? -100 : 100;\n const end = 0;\n return [\n style({ transform: `${translate}(${start}%)` }),\n animate(`${duration}ms ease-in`, style({ transform: `${translate}(${end}%)` }))\n ];\n case 'expand':\n const scale = direction === 'up' || direction === 'down' ? 'scaleY' : 'scaleX';\n const startScale = 0;\n const endScale = 1;\n let origin;\n if (direction === 'down') {\n origin = 'top';\n }\n else if (direction === 'left') {\n origin = 'right';\n }\n else if (direction === 'right') {\n origin = 'left';\n }\n else {\n origin = 'bottom';\n }\n return [\n style({ transform: `${scale}(${startScale})`, transformOrigin: origin }),\n animate(`${duration}ms ease-in`, style({ transform: `${scale}(${endScale})` }))\n ];\n case 'zoom':\n const startZoom = 0;\n const endZoom = 1;\n return [\n animate(duration, keyframes([\n style({ transform: `scale(${startZoom})` }),\n style({ transform: `scale(${endZoom})` })\n ]))\n ];\n case 'fade':\n const startFade = 0;\n const endFade = 1;\n return [\n animate(duration, keyframes([\n style({ opacity: `${startFade}` }),\n style({ opacity: `${endFade}` })\n ]))\n ];\n case 'translate':\n return [\n style({ transform: 'translate(0, -10%)' }),\n animate(`${duration}ms cubic-bezier(.2, 1, .2, 1)`)\n ];\n default:\n return [\n style({ transform: 'translate(0, -10%)' }),\n animate(`${duration}ms cubic-bezier(.2, 1, .2, 1)`)\n ];\n }\n}\n\n/**\n * @hidden\n */\nconst createPlayer = (builder, animation, animatedElement) => {\n const factory = builder.build(animation);\n let player = factory.create(animatedElement);\n player.onDone(() => {\n if (player) {\n player.destroy();\n player = null;\n }\n });\n return player;\n};\n\n/**\n * @hidden\n */\nconst animateContent = (animation, defAnimationConfig, animatedElement, builder) => {\n let animationConfig = defAnimationConfig;\n if (typeof animation !== 'boolean') {\n animationConfig = animation;\n animationConfig.duration = animationConfig.duration ? animationConfig.duration : defAnimationConfig.duration;\n }\n const animationSpecs = animations(animationConfig.duration, animationConfig.direction, animationConfig.type);\n const player = createPlayer(builder, animationSpecs, animatedElement);\n player.play();\n};\n\nconst DEFAULT_ANIMATION_CONFIG = { duration: 300, type: 'translate' };\n/**\n * Represents the [Kendo UI Dialog component for Angular]({% slug overview_dialog_dialogs %}).\n */\nclass DialogComponent {\n constructor(wrapper, renderer, localization, cdr, ngZone, builder) {\n this.wrapper = wrapper;\n this.renderer = renderer;\n this.cdr = cdr;\n this.ngZone = ngZone;\n this.builder = builder;\n /**\n * Specifies the layout of the action buttons in the Dialog.\n * This option is only applicable if the action buttons are specified through the `actions` options.\n *\n * @default 'stretched'\n */\n this.actionsLayout = 'stretched';\n /**\n * Configures the Dialog opening animation ([see example]({% slug animations_dialog %})).\n * By default the animation type is set to `translate` and its duration is `300ms`.\n *\n * @default true\n */\n this.animation = true;\n /**\n * @hidden\n */\n this.titleId = null;\n /**\n * @hidden\n */\n this.contentId = null;\n /**\n * Fires when the user clicks an action button of the Dialog.\n * The event is fired only when the action buttons are specified through the `actions` options.\n */\n this.action = new EventEmitter();\n /**\n * Fires when the user clicks the **Close** button of the Dialog or the **ESC** key.\n */\n this.close = new EventEmitter();\n this.tabIndex = 0;\n this.subscriptions = [];\n this.domSubs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscriptions.push(localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n this.titleId = this.generateTitleId();\n this.contentId = this.generateContentId();\n }\n /**\n * @hidden\n */\n set htmlAttributes(attributes) {\n setHTMLAttributes(attributes, this.renderer, this.wrapper.nativeElement);\n const el = this.wrapper.nativeElement;\n const dir = el.getAttribute('dir');\n const tIndex = el.getAttribute('tabindex');\n if (this.direction !== dir && dir) {\n this.direction = dir;\n }\n if (this.tabIndex !== tIndex && tIndex) {\n this.tabIndex = tIndex;\n }\n this._htmlAttributes = attributes;\n }\n get htmlAttributes() {\n return this._htmlAttributes;\n }\n /**\n * @hidden\n */\n set cssClass(classes) {\n this.setServiceClasses(this._cssClass, classes);\n this._cssClass = classes;\n }\n get cssClass() {\n return this._cssClass;\n }\n get dir() {\n return this.direction;\n }\n ngAfterContentInit() {\n this.bubble('close', this.titlebarContent.first);\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-describedby', this.contentId);\n if (this.titlebarContent.first) {\n this.titlebarContent.first.id = this.titleId;\n }\n else {\n this.subscriptions.push(this.titlebarContent.changes.subscribe(() => {\n if (isPresent(this.titlebarContent.first)) {\n this.titlebarContent.first.id = this.titleId;\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.bubble('close', this.titlebarContent.first);\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-labelledby', this.titleId);\n });\n }\n }));\n }\n }\n ngAfterViewInit() {\n this.handleInitialFocus();\n this.bubble('close', this.titlebarView.first);\n this.bubble('action', this.actionsView);\n if (this.titlebarView.first || this.titlebarContent.first) {\n //Needed for Dialogs created via service\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-labelledby', this.titleId);\n }\n else {\n this.subscriptions.push(this.titlebarView.changes.subscribe(() => {\n if (isPresent(this.titlebarView.first)) {\n this.titlebarView.first.id = this.titleId;\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.bubble('close', this.titlebarView.first);\n this.renderer.setAttribute(this.wrapper.nativeElement.querySelector('.k-dialog'), 'aria-labelledby', this.titleId);\n });\n }\n }));\n }\n this.initDomEvents();\n }\n ngOnInit() {\n if (this.animation) {\n animateContent(this.animation, DEFAULT_ANIMATION_CONFIG, this.dialog.nativeElement, this.builder);\n }\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'title');\n this.cdr.detectChanges();\n }\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n this.subscriptions = [];\n if (this.domSubs) {\n this.domSubs.unsubscribe();\n }\n }\n /**\n * Focuses the wrapper of the Dialog component.\n */\n focus() {\n const wrapper = this.wrapper.nativeElement;\n if (isPresent(wrapper)) {\n wrapper.focus();\n }\n }\n initDomEvents() {\n if (!this.wrapper) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.domSubs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', (ev) => {\n this.onKeyDown(ev);\n }));\n });\n }\n onKeyDown(event) {\n const target = event.target;\n const parent = target.parentElement;\n if (hasClasses(target, DIALOG_ELEMENTS_HANDLING_ESC_KEY) || hasClasses(parent, DIALOG_ELEMENTS_HANDLING_ESC_KEY)) {\n if (event.keyCode === Keys.esc) {\n this.ngZone.run(() => {\n this.close.emit(new DialogCloseResult());\n });\n }\n }\n if (hasClasses(target, 'k-button') && hasClasses(parent, DIALOG_ELEMENTS_HANDLING_ARROWS) &&\n (event.keyCode === Keys.left || event.keyCode === Keys.right)) {\n this.ngZone.run(() => {\n this.handleActionButtonFocus(parent, event.keyCode);\n });\n }\n if (event.keyCode === Keys.tab) {\n this.ngZone.run(() => {\n this.keepFocusWithinComponent(target, event);\n });\n }\n }\n setServiceClasses(prevValue, value) {\n const el = this.wrapper.nativeElement;\n if (prevValue) {\n parseCSSClassNames(prevValue).forEach(className => {\n this.renderer.removeClass(el, className);\n });\n }\n if (value) {\n parseCSSClassNames(value).forEach(className => {\n this.renderer.addClass(el, className);\n });\n }\n }\n /**\n * @hidden\n */\n handleInitialFocus() {\n const wrapper = this.wrapper.nativeElement;\n const primaryButton = this.findPrimary(wrapper);\n if (this.autoFocusedElement) {\n const initiallyFocusedElement = wrapper.querySelector(this.autoFocusedElement);\n if (initiallyFocusedElement) {\n initiallyFocusedElement.focus();\n }\n }\n else if (this.shouldFocusPrimary(primaryButton)) {\n primaryButton.focus();\n }\n else {\n wrapper.focus();\n }\n }\n /**\n * @hidden\n */\n findPrimary(wrapper) {\n const actionBtns = wrapper.querySelectorAll('.k-actions .k-button');\n return findPrimaryButton(actionBtns);\n }\n /**\n * @hidden\n */\n handleActionButtonFocus(parent, key) {\n const focusableActionButtons = this.getAllFocusableChildren(parent);\n for (let i = 0; i < focusableActionButtons.length; i++) {\n const current = focusableActionButtons[i];\n if (current === document.activeElement) {\n if (key === Keys.left && i > 0) {\n focusableActionButtons[i - 1].focus();\n break;\n }\n if (key === Keys.right && i < focusableActionButtons.length - 1) {\n focusableActionButtons[i + 1].focus();\n break;\n }\n }\n }\n }\n /**\n * @hidden\n */\n keepFocusWithinComponent(target, event) {\n const wrapper = this.wrapper.nativeElement;\n const [firstFocusable, lastFocusable] = this.getFirstAndLastFocusable(wrapper);\n const tabAfterLastFocusable = !event.shiftKey && target === lastFocusable;\n const shiftTabAfterFirstFocusable = event.shiftKey && target === firstFocusable;\n if (tabAfterLastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n if (shiftTabAfterFirstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n }\n /**\n * @hidden\n */\n shouldFocusPrimary(el) {\n return isPresent(el) && isFocusable(el);\n }\n /**\n * @hidden\n */\n getAllFocusableChildren(parent) {\n return parent.querySelectorAll(focusableSelector);\n }\n /**\n * @hidden\n */\n getFirstAndLastFocusable(parent) {\n const all = this.getAllFocusableChildren(parent);\n const firstFocusable = all.length > 0 ? all[0] : parent;\n const lastFocusable = all.length > 0 ? all[all.length - 1] : parent;\n return [firstFocusable, lastFocusable];\n }\n /**\n * @hidden\n */\n generateTitleId() {\n return 'kendo-dialog-title-' + Math.ceil(Math.random() * 1000000).toString();\n }\n /**\n * @hidden\n */\n generateContentId() {\n return 'kendo-dialog-content-' + Math.ceil(Math.random() * 1000000).toString();\n }\n get wrapperClass() {\n return true;\n }\n get styles() {\n const styles = {};\n if (this.width) {\n styles.width = createValueWithUnit(this.width);\n }\n if (this.height) {\n styles.height = createValueWithUnit(this.height);\n }\n if (this.minWidth) {\n styles.minWidth = createValueWithUnit(this.minWidth);\n }\n if (this.maxWidth) {\n styles.maxWidth = createValueWithUnit(this.maxWidth);\n }\n if (this.minHeight) {\n styles.minHeight = createValueWithUnit(this.minHeight);\n }\n if (this.maxHeight) {\n styles.maxHeight = createValueWithUnit(this.maxHeight);\n }\n return styles;\n }\n bubble(eventName, component) {\n if (component) {\n const emit = e => this[eventName].emit(e);\n const s = component[eventName].subscribe(emit);\n this.subscriptions.push(s);\n }\n }\n}\nDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Component });\nDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogComponent, selector: \"kendo-dialog\", inputs: { actions: \"actions\", actionsLayout: \"actionsLayout\", autoFocusedElement: \"autoFocusedElement\", title: \"title\", width: \"width\", minWidth: \"minWidth\", maxWidth: \"maxWidth\", height: \"height\", minHeight: \"minHeight\", maxHeight: \"maxHeight\", animation: \"animation\" }, outputs: { action: \"action\", close: \"close\" }, host: { properties: { \"attr.dir\": \"this.dir\", \"attr.tabIndex\": \"this.tabIndex\", \"class.k-dialog-wrapper\": \"this.wrapperClass\" } }, providers: [\n LocalizationService,\n {\n provide: DIALOG_LOCALIZATION_SERVICE,\n useExisting: LocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ], queries: [{ propertyName: \"titlebarContent\", predicate: DialogTitleBarComponent }], viewQueries: [{ propertyName: \"actionsView\", first: true, predicate: DialogActionsComponent, descendants: true }, { propertyName: \"dialog\", first: true, predicate: [\"dialog\"], descendants: true, static: true }, { propertyName: \"titlebarView\", predicate: DialogTitleBarComponent, descendants: true }], exportAs: [\"kendoDialog\"], ngImport: i0, template: `\n \n
\n\n
\n {{ title }}\n \n\n
\n \n \n
\n\n \n \n
\n \n `, isInline: true, components: [{ type: DialogTitleBarComponent, selector: \"kendo-dialog-titlebar\", inputs: [\"id\", \"closeTitle\"], outputs: [\"close\"] }, { type: DialogActionsComponent, selector: \"kendo-dialog-actions\", inputs: [\"actions\", \"layout\"], outputs: [\"action\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \" }, { type: i6.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], animations: [\n trigger('overlayAppear', [\n state('in', style({ opacity: 1 })),\n transition('void => *', [style({ opacity: 0.1 }), animate('.3s cubic-bezier(.2, .6, .4, 1)')])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('overlayAppear', [\n state('in', style({ opacity: 1 })),\n transition('void => *', [style({ opacity: 0.1 }), animate('.3s cubic-bezier(.2, .6, .4, 1)')])\n ])\n ],\n exportAs: 'kendoDialog',\n providers: [\n LocalizationService,\n {\n provide: DIALOG_LOCALIZATION_SERVICE,\n useExisting: LocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dialog'\n }\n ],\n selector: 'kendo-dialog',\n template: `\n \n
\n\n
\n {{ title }}\n \n\n
\n \n \n
\n\n \n \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i2.AnimationBuilder }]; }, propDecorators: { actions: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], autoFocusedElement: [{\n type: Input\n }], title: [{\n type: Input\n }], width: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], maxWidth: [{\n type: Input\n }], height: [{\n type: Input\n }], minHeight: [{\n type: Input\n }], maxHeight: [{\n type: Input\n }], animation: [{\n type: Input\n }], action: [{\n type: Output\n }], close: [{\n type: Output\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], titlebarContent: [{\n type: ContentChildren,\n args: [DialogTitleBarComponent, { descendants: false }]\n }], titlebarView: [{\n type: ViewChildren,\n args: [DialogTitleBarComponent]\n }], actionsView: [{\n type: ViewChild,\n args: [DialogActionsComponent, { static: false }]\n }], dialog: [{\n type: ViewChild,\n args: ['dialog', { static: true }]\n }], wrapperClass: [{\n type: HostBinding,\n args: ['class.k-dialog-wrapper']\n }] } });\n\n/**\n * Holds references to the object instance and published events of the Dialog.\n * Controls the Dialogs that were opened through the `DialogService`\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogRef {\n}\n\n/**\n * The base class which will be extended by a component that is provided as content through `content`\n * ([see example]({% slug service_dialog %}#toc-passing-title-content-and-actions-as-a-single-component)).\n */\nclass DialogContentBase {\n constructor(dialog) {\n this.dialog = dialog;\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n if (this.dialogTitleBar) {\n // when opening component inside dialog with service AND the component has defined its own titlebar\n this.dialogTitleBar.close.pipe(filter((e) => !e.isDefaultPrevented())).subscribe(() => {\n this.dialog.close();\n });\n }\n if (this.dialogActions) {\n if (this.dialogActions.actions) {\n this.dialogActions.action.subscribe(action => this.dialog.dialog.instance.action.emit(action));\n }\n }\n }\n}\nDialogContentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContentBase, deps: [{ token: DialogRef }], target: i0.ɵɵFactoryTarget.Directive });\nDialogContentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogContentBase, viewQueries: [{ propertyName: \"dialogTitleBar\", first: true, predicate: DialogTitleBarComponent, descendants: true }, { propertyName: \"dialogActions\", first: true, predicate: DialogActionsComponent, descendants: true }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContentBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: DialogRef }]; }, propDecorators: { dialogTitleBar: [{\n type: ViewChild,\n args: [DialogTitleBarComponent, { static: false }]\n }], dialogActions: [{\n type: ViewChild,\n args: [DialogActionsComponent, { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass DialogContainerService {\n set container(container) {\n DialogContainerService.container = container;\n }\n get container() {\n return DialogContainerService.container;\n }\n}\nDialogContainerService.container = null;\nDialogContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDialogContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * The settings for the Dialog actions when the Dialog is opened through `DialogService`\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogAction {\n}\n\n/**\n * The settings that can be used when the Dialog is opened through `DialogService`.\n * ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n */\nclass DialogSettings {\n}\n\n// eslint-disable max-line-length\nconst isNotComponent$1 = (component) => isString(component) || component instanceof TemplateRef;\nclass DialogInjector {\n constructor(getDialogRef, parentInjector) {\n this.getDialogRef = getDialogRef;\n this.parentInjector = parentInjector;\n }\n get(token, notFoundValue) {\n if (token === DialogRef) {\n return this.getDialogRef();\n }\n return this.parentInjector.get(token, notFoundValue);\n }\n}\n/**\n * A service for opening Dialog windows dynamically\n * ([see example]({% slug service_dialog %})).\n */\nclass DialogService {\n constructor(\n /**\n * @hidden\n */\n resolver, containerService) {\n this.resolver = resolver;\n this.containerService = containerService;\n }\n /**\n * Opens a Dialog window. Requires an element in the application that uses the\n * [`kendoDialogContainer`]({% slug api_dialog_dialogcontainerdirective %}) directive.\n * Created Dialogs will be mounted in the DOM directly after that element.\n *\n * @param {DialogAction} options - The options that define the Dialog.\n * @returns {DialogRef} - A reference to the Dialog object and the convenience properties.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n *
\n * `\n * })\n * export class AppComponent {\n * constructor( private dialogService: DialogService ) {}\n *\n * public open() {\n * var dialog = this.dialogService.open({\n * title: \"Please confirm\",\n * content: \"Are you sure?\",\n * actions: [\n * { text: \"No\" },\n * { text: \"Yes\", themeColor: 'primary' }\n * ]\n * });\n *\n * dialog.result.subscribe((result) => {\n * if (result instanceof DialogCloseResult) {\n * console.log(\"close\");\n * } else {\n * console.log(\"action\", result);\n * }\n * });\n * }\n * }\n * ```\n *\n */\n open(options) {\n const factory = this.resolver.resolveComponentFactory(DialogComponent);\n const container = options.appendTo || this.containerService.container;\n if (!container) {\n throw new Error(`\nCannot attach dialog to the page.\nAdd an element that uses the kendoDialogContainer directive, or set the 'appendTo' property.\nSee https://www.telerik.com/kendo-angular-ui/components/dialogs/dialog/service/.\n `);\n }\n // create DialogRef to (1) pass as result, (2) provide through injector\n const dialogRef = {\n close: () => {\n /* noop */\n },\n content: null,\n dialog: null,\n result: null\n };\n return this.initializeDialog(options.content, factory, container, dialogRef, options);\n }\n initializeDialog(component, factory, container, dialogRef, options) {\n const content = this.contentFrom(component, container, dialogRef);\n const dialog = container.createComponent(factory, undefined, undefined, content.nodes);\n dialogRef.dialog = dialog;\n dialog.changeDetectorRef.markForCheck();\n // copy @Input options to dialog instance\n this.applyOptions(dialog.instance, options);\n // create close handler and result stream\n const apiClose = new Subject();\n const close = (e) => {\n if (e instanceof PreventableEvent) {\n e = new DialogCloseResult();\n }\n apiClose.next(e || new DialogCloseResult());\n if (content.componentRef) {\n content.componentRef.destroy();\n }\n dialog.destroy();\n };\n const result = merge(apiClose, \n // triggered when the titlebar or actions are defined in DialogSettings\n merge(dialog.instance.close, dialog.instance.action).pipe(map(e => (e instanceof PreventableEvent ? new DialogCloseResult() : e)), filter(e => {\n if (options.preventAction) {\n // add dialogRef only when using component\n const dialogRefParameter = isNotComponent$1(component) ? undefined : dialogRef;\n return !options.preventAction(e, dialogRefParameter);\n }\n return true;\n }))).pipe(take(1), \n // Takes care for multiple subscriptions:\n // We subscribe internaly and the user may subscribe to get a close result - dialog.result.subscribe().\n // This causes multiple subscriptions to the same source and thus multiple emissions. share() solves that.\n share());\n result.subscribe(close);\n dialogRef.close = close;\n dialogRef.result = result;\n if (component && isDevMode()) {\n const hasContentTitle = content.nodes[0] && content.nodes[0].length > 0;\n const hasContentActions = content.nodes[2] && content.nodes[2].length > 0;\n const multipleTitles = options.title && hasContentTitle;\n const multipleActions = options.actions && hasContentActions;\n if (component.prototype instanceof DialogContentBase) {\n // content component extends DialogContentBase\n if (multipleTitles || multipleActions) {\n console.warn(`\n Multiple Title and/or Actions configurations detected.\n When using a component as content, provide the title and actions either in the component's markup\n or via the title and actions properties of the DialogSettings object, but not both.\n See https://www.telerik.com/kendo-angular-ui/components/dialogs/dialog/service/#toc-passing-title-content-and-actions-as-a-single-component'`);\n }\n }\n else {\n if (hasContentTitle || hasContentActions) {\n console.warn(`\n When Title and/or Actions markup is provided in content component's template,\n the component needs to inherit the DialogContentBase class to ensure that close and result events are properly hooked.\n See https://www.telerik.com/kendo-angular-ui/components/dialogs/dialog/service/#toc-passing-title-content-and-actions-as-a-single-component'`);\n }\n }\n }\n return dialogRef;\n }\n applyOptions(instance, options) {\n instance.title = options.title;\n instance.actions = options.actions;\n instance.actionsLayout = options.actionsLayout || 'stretched';\n instance.width = options.width;\n instance.minWidth = options.minWidth;\n instance.maxWidth = options.maxWidth;\n instance.height = options.height;\n instance.minHeight = options.minHeight;\n instance.maxHeight = options.maxHeight;\n instance.autoFocusedElement = options.autoFocusedElement;\n instance.closeTitle = options.closeTitle;\n instance.cssClass = options.cssClass;\n instance.htmlAttributes = options.htmlAttributes;\n instance.animation = options.animation !== undefined ? options.animation : true;\n if (options.content instanceof TemplateRef) {\n instance.contentTemplate = options.content;\n }\n }\n contentFrom(content, container, dialogRef) {\n const renderer = container.injector.get(Renderer2);\n let nodes = [];\n let titleNodes = [];\n let actionNodes = [];\n let componentRef = null;\n if (typeof content === 'string') {\n nodes = [renderer.createText(content)];\n }\n else if (content && !(content instanceof TemplateRef)) {\n // Component\n const injector = new DialogInjector(() => dialogRef, container.injector);\n const factory = this.resolver.resolveComponentFactory(content);\n componentRef = container.createComponent(factory, undefined, injector);\n titleNodes = Array.from(componentRef.location.nativeElement.querySelectorAll('kendo-dialog-titlebar'));\n nodes = [componentRef.location.nativeElement];\n actionNodes = Array.from(componentRef.location.nativeElement.querySelectorAll('kendo-dialog-actions'));\n dialogRef.content = componentRef;\n }\n return {\n componentRef,\n nodes: [\n titleNodes,\n nodes,\n actionNodes // \n ]\n };\n }\n}\nDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogService, deps: [{ token: i0.ComponentFactoryResolver }, { token: DialogContainerService }], target: i0.ɵɵFactoryTarget.Injectable });\nDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: DialogContainerService, decorators: [{\n type: Inject,\n args: [DialogContainerService]\n }] }]; } });\n\n/**\n * @hidden\n */\nlet newZIndex = 10002;\n/**\n * @hidden\n */\nconst DEFAULT_OPTIONS = {\n draggable: true,\n height: null,\n left: null,\n minHeight: 100,\n minWidth: 120,\n position: 'absolute',\n resizable: true,\n state: 'default',\n top: null,\n width: null\n};\n/**\n * @hidden\n */\nconst createMoveStream = (el, ev) => mouseDown => {\n return el.kendoDrag\n .pipe(takeUntil(el.kendoRelease.pipe(tap(() => { ev.emit(); }))), map(({ pageX, pageY }) => ({\n originalX: mouseDown.pageX,\n originalY: mouseDown.pageY,\n pageX,\n pageY\n })));\n};\n/**\n * @hidden\n */\nclass DragResizeService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.close = new EventEmitter();\n this.focus = new EventEmitter();\n this.change = new EventEmitter();\n this.stateChange = new EventEmitter();\n this.dragStart = new EventEmitter();\n this.dragEnd = new EventEmitter();\n this.resizeStart = new EventEmitter();\n this.resizeEnd = new EventEmitter();\n this.options = Object.assign({}, DEFAULT_OPTIONS);\n this.lastAction = null;\n this.subscriptions = new Subscription();\n this.dragSubscription = new Subscription();\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.dragSubscription) {\n this.dragSubscription.unsubscribe();\n }\n }\n init(el) {\n const state = this.options.state;\n let options = this.options;\n this.window = el;\n if (state !== 'default') {\n this.restoreOptions = Object.assign({}, options);\n }\n if (state === 'minimized') {\n options.height = 0;\n options.minHeight = 0;\n }\n if (state === 'maximized') {\n options.position = 'fixed';\n }\n }\n onDrag(el) {\n this.subscriptions.add(this.ngZone.runOutsideAngular(() => {\n let startPosition;\n let dragStarted;\n this.dragSubscription = el.kendoPress\n .pipe(tap((ev) => {\n if (!ev.isTouch) {\n preventDefault(ev);\n }\n this.focus.emit();\n startPosition = this.currentPosition();\n dragStarted = false;\n }), switchMap(createMoveStream(el, this.dragEnd)))\n .subscribe(({ pageX, pageY, originalX, originalY }) => {\n if (!dragStarted) {\n this.ensureWidth();\n this.dragStart.emit();\n dragStarted = true;\n }\n this.handleDrag({\n originalX, originalY,\n pageX, pageY, startPosition\n });\n });\n }));\n }\n handleDrag({ originalX, originalY, pageX, pageY, startPosition }) {\n this.options.left = startPosition.x + pageX - originalX;\n this.options.top = startPosition.y + pageY - originalY;\n if (this.options.state === 'minimized' && isPresent(this.restoreOptions)) {\n this.restoreOptions.left = this.options.left;\n this.restoreOptions.top = this.options.top;\n }\n this.change.emit({\n left: startPosition.x + pageX - originalX,\n top: startPosition.y + pageY - originalY\n });\n }\n onResize(handle, direction) {\n this.subscriptions.add(this.ngZone.runOutsideAngular(() => {\n let startOffsetAndPosition;\n let resizeStarted = false;\n handle.kendoPress.pipe(tap((ev) => {\n preventDefault(ev);\n this.focus.emit();\n startOffsetAndPosition = this.currentOffsetAndPosition();\n resizeStarted = false;\n }), switchMap(createMoveStream(handle, this.resizeEnd)))\n .subscribe(({ pageX, pageY, originalX, originalY }) => {\n if (!resizeStarted) {\n this.resizeStart.emit(direction);\n resizeStarted = true;\n }\n let deltaX = pageX - originalX;\n let deltaY = pageY - originalY;\n this.handleResize(startOffsetAndPosition, direction, deltaX, deltaY);\n });\n }));\n }\n handleResize(initial, dir, deltaX, deltaY) {\n const old = this.options;\n let ev = {};\n if (dir.indexOf('e') >= 0) {\n const newWidth = initial.width + deltaX;\n if (newWidth !== old.width && newWidth >= old.minWidth) {\n ev.width = newWidth;\n }\n }\n if (dir.indexOf('n') >= 0) {\n const newHeight = initial.height - deltaY;\n const newTop = initial.y + deltaY;\n if (newHeight !== old.height && newHeight >= old.minHeight && newTop !== old.top) {\n ev.height = newHeight;\n ev.top = newTop;\n }\n }\n if (dir.indexOf('s') >= 0) {\n const newHeight = initial.height + deltaY;\n if (newHeight !== old.height && newHeight >= old.minHeight) {\n ev.height = newHeight;\n }\n }\n if (dir.indexOf('w') >= 0) {\n const newLeft = initial.x + deltaX;\n const newWidth = initial.width - deltaX;\n if (newWidth !== old.width && newWidth >= old.minWidth && newLeft !== old.left) {\n ev.width = newWidth;\n ev.left = newLeft;\n }\n }\n if (isPresent(ev.width) || isPresent(ev.height)) {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(ev[style])) {\n this.options[style] = ev[style];\n }\n });\n this.change.emit(ev);\n }\n }\n restoreAction() {\n this.lastAction = 'restore';\n this.defaultState();\n }\n defaultState() {\n if (isPresent(this.restoreOptions)) {\n this.options = Object.assign({}, this.restoreOptions);\n }\n this.options.state = 'default';\n this.stateChange.emit('default');\n }\n storeOptions() {\n this.restoreOptions = Object.assign({}, this.options);\n }\n maximizeAction() {\n this.lastAction = 'maximize';\n this.maximizeState();\n }\n maximizeState() {\n this.storeOptions();\n const wnd = this.windowViewPort;\n this.options = Object.assign({}, this.options, {\n height: wnd.height,\n left: 0,\n position: 'fixed',\n state: 'maximized',\n top: 0,\n width: wnd.width\n });\n this.stateChange.emit('maximized');\n }\n minimizeAction() {\n this.lastAction = 'minimize';\n this.minimizeState();\n }\n minimizeState() {\n this.storeOptions();\n this.options = Object.assign({}, this.options, {\n height: null,\n minHeight: 0,\n state: 'minimized'\n });\n this.stateChange.emit('minimized');\n }\n /**\n * Handles manual changes of the 'state' property.\n * Required to distinguish them from action clicks.\n */\n applyManualState() {\n const state = this.options.state;\n switch (state) {\n case 'default':\n this.clearHeight();\n this.defaultState();\n break;\n case 'maximized':\n this.clearHeight();\n this.maximizeState();\n break;\n case 'minimized':\n this.minimizeState();\n break;\n default:\n break;\n }\n }\n closeAction() {\n this.close.emit();\n }\n ensureWidth() {\n const windowOffset = offset(this.window.nativeElement);\n if (!isPresent(this.options.width)) {\n this.options.width = windowOffset.width;\n this.change.emit({ width: windowOffset.width });\n }\n }\n clearHeight() {\n if (this.options.height === 0) {\n delete this.options.height;\n }\n if (this.options.minHeight === 0) {\n delete this.options.minHeight;\n }\n }\n center() {\n if (this.options.state === 'maximized') {\n return;\n }\n let scroll = scrollPosition(this.window.nativeElement);\n let wnd = this.windowViewPort;\n let wrapper = offset(this.window.nativeElement);\n let ev = {};\n if (!isPresent(this.options.left)) {\n this.options.left = scroll.x + Math.max(0, (wnd.width - wrapper.width) / 2);\n ev.left = this.options.left;\n }\n if (!isPresent(this.options.top)) {\n this.options.top = scroll.y + Math.max(0, (wnd.height - wrapper.height) / 2);\n ev.top = this.options.top;\n }\n this.change.emit(ev);\n }\n currentOffsetAndPosition() {\n const o = this.options;\n const off = offset(this.window.nativeElement);\n return Object.assign({}, this.currentPosition(), {\n height: o.height ? o.height : off.height,\n width: o.width ? o.width : off.width\n });\n }\n currentPosition() {\n const o = this.options;\n if (!o.top || !o.left) {\n this.setPosition();\n }\n return {\n x: this.options.left,\n y: this.options.top\n };\n }\n setPosition() {\n const wrapper = positionWithScroll(this.window.nativeElement, getDocumentElement(this.window.nativeElement));\n this.options.left = wrapper.left;\n this.options.top = wrapper.top;\n }\n setRestoreOption(style, value) {\n if (isPresent(this.restoreOptions)) {\n this.restoreOptions[style] = value;\n }\n }\n get nextPossibleZIndex() {\n return newZIndex;\n }\n get nextZIndex() {\n return newZIndex++;\n }\n get windowViewPort() {\n return getWindowViewPort(this.window.nativeElement);\n }\n}\nDragResizeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragResizeService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nDragResizeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragResizeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragResizeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nclass ResizeHandleDirective {\n constructor(draggable, el, renderer, service) {\n this.draggable = draggable;\n this.el = el;\n this.renderer = renderer;\n this.service = service;\n this.subscriptions = new Subscription();\n }\n get hostClass() {\n return true;\n }\n ngOnInit() {\n this.setDisplay();\n this.renderer.addClass(this.el.nativeElement, 'k-resize-' + this.direction);\n this.subscriptions.add(of(this.draggable).subscribe(handle => {\n this.service.onResize(handle, this.direction);\n }));\n this.subscriptions.add(this.service.resizeStart.subscribe((dir) => {\n if (dir !== this.direction) {\n this.setDisplay('none');\n }\n }));\n this.subscriptions.add(this.service.dragStart.subscribe(() => {\n this.setDisplay('none');\n }));\n this.subscriptions.add(merge(this.service.resizeEnd, this.service.dragEnd).subscribe(() => {\n this.setDisplay('block');\n }));\n this.subscriptions.add(this.service.stateChange.subscribe((state) => {\n this.setDisplay(state === 'default' ? 'block' : 'none');\n }));\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n setDisplay(value = 'block') {\n this.renderer.setStyle(this.el.nativeElement, 'display', this.service.options.state === 'default' ? value : 'none');\n }\n}\nResizeHandleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeHandleDirective, deps: [{ token: i1$1.DraggableDirective, host: true }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService }], target: i0.ɵɵFactoryTarget.Directive });\nResizeHandleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ResizeHandleDirective, selector: \"[kendoWindowResizeHandle]\", inputs: { direction: \"direction\" }, host: { properties: { \"class.k-resize-handle\": \"this.hostClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeHandleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoWindowResizeHandle]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService }]; }, propDecorators: { direction: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-resize-handle']\n }] } });\n\nclass WindowTitleBarComponent {\n constructor(el, service, ngZone) {\n this.el = el;\n this.ngZone = ngZone;\n this.service = service;\n }\n ngOnInit() {\n this.dragDirective = new DraggableDirective(this.el, this.ngZone);\n this.dragDirective.ngOnInit();\n if (this.isDraggable) {\n this.subscribeDrag();\n }\n this.subscribeStateChange();\n }\n ngOnDestroy() {\n this.dragDirective.ngOnDestroy();\n this.unsubscribeDrag();\n this.unsubscribeState();\n }\n /**\n * @hidden\n */\n subscribeDrag() {\n this.unsubscribeDrag();\n this.dragSubscription = of(this.dragDirective).subscribe(titleBar => {\n this.service.onDrag(titleBar);\n });\n }\n /**\n * @hidden\n */\n subscribeStateChange() {\n this.stateSubscription = this.service.stateChange.subscribe((state) => {\n if (this.service.options.draggable) {\n if (state === 'maximized') {\n this.unsubscribeDrag();\n }\n else {\n this.subscribeDrag();\n }\n }\n });\n }\n /**\n * @hidden\n */\n unsubscribeDrag() {\n if (this.dragSubscription) {\n this.service.dragSubscription.unsubscribe();\n this.dragSubscription.unsubscribe();\n this.dragSubscription = null;\n }\n }\n /**\n * @hidden\n */\n unsubscribeState() {\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n this.stateSubscription = null;\n }\n }\n get className() {\n return true;\n }\n get touchAction() {\n if (this.isDraggable) {\n return 'none';\n }\n }\n /**\n * @hidden\n */\n handle(ev) {\n const target = ev.target;\n const state = this.service.options.state;\n if (!hasClasses(target, 'k-icon') && !isFocusable(target, false) && this.service.options.resizable) {\n if (state === 'default') {\n this.service.maximizeAction();\n }\n else if (state === 'maximized') {\n this.service.restoreAction();\n }\n }\n }\n get isDraggable() {\n const options = this.service.options;\n return options.draggable && options.state !== 'maximized';\n }\n}\nWindowTitleBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowTitleBarComponent, deps: [{ token: i0.ElementRef }, { token: DragResizeService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nWindowTitleBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowTitleBarComponent, selector: \"kendo-window-titlebar\", inputs: { template: \"template\" }, host: { listeners: { \"dblclick\": \"handle($event)\" }, properties: { \"class.k-window-titlebar\": \"this.className\", \"class.k-dialog-titlebar\": \"this.className\", \"style.touch-action\": \"this.touchAction\" } }, ngImport: i0, template: `\n \n \n
\n `, isInline: true, directives: [{ type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowTitleBarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-window-titlebar',\n template: `\n \n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragResizeService }, { type: i0.NgZone }]; }, propDecorators: { template: [{\n type: Input\n }], className: [{\n type: HostBinding,\n args: ['class.k-window-titlebar']\n }, {\n type: HostBinding,\n args: ['class.k-dialog-titlebar']\n }], touchAction: [{\n type: HostBinding,\n args: ['style.touch-action']\n }], handle: [{\n type: HostListener,\n args: ['dblclick', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(window, ngZone) {\n this.window = window;\n this.ngZone = ngZone;\n }\n process(ev) {\n const key = ev.keyCode;\n switch (key) {\n case Keys.up:\n case Keys.down:\n case Keys.left:\n case Keys.right: {\n ev.preventDefault();\n this.ngZone.run(() => {\n this.handleArrow(key, ev);\n });\n break;\n }\n case Keys.esc:\n this.ngZone.run(() => {\n this.handleEscape();\n });\n break;\n default:\n break;\n }\n }\n handleArrow(key, ev) {\n const options = this.window.options;\n if (ev.altKey) {\n this.handleStateChange(key, options.state);\n return;\n }\n if ((ev.ctrlKey || ev.metaKey) && options.state === 'default') {\n this.handleResize(key);\n }\n else {\n this.handleDrag(key);\n }\n }\n handleEscape() {\n this.window.closeAction();\n }\n handleDrag(key) {\n let options = this.window.options;\n if (!options.draggable) {\n return;\n }\n const offset = this.window.currentOffsetAndPosition();\n let restoreOptions = this.window.restoreOptions;\n let ev = {};\n let delta = 10;\n if (key === Keys.left || key === Keys.up) {\n delta *= -1;\n }\n switch (key) {\n case Keys.left:\n case Keys.right: {\n ev.left = offset.x + delta;\n options.left = ev.left;\n break;\n }\n case Keys.up:\n case Keys.down: {\n ev.top = offset.y + delta;\n options.top = ev.top;\n break;\n }\n default:\n break;\n }\n if (options.state === 'minimized' && isPresent(restoreOptions)) {\n restoreOptions.left = options.left;\n restoreOptions.top = options.top;\n }\n this.window.change.emit(ev);\n }\n handleResize(key) {\n const options = this.window.options;\n if (!options.resizable) {\n return;\n }\n const offset = this.window.currentOffsetAndPosition();\n let newWidth;\n let newHeight;\n let ev = {};\n let delta = 10;\n if (key === Keys.left || key === Keys.up) {\n delta *= -1;\n }\n switch (key) {\n case Keys.left:\n case Keys.right: {\n newWidth = offset.width + delta;\n if (newWidth !== options.width && newWidth >= options.minWidth) {\n ev.width = newWidth;\n }\n break;\n }\n case Keys.up:\n case Keys.down: {\n newHeight = offset.height + delta;\n if (newHeight !== options.height && newHeight >= options.minHeight) {\n ev.height = newHeight;\n }\n break;\n }\n default:\n break;\n }\n if (isPresent(ev.width) || isPresent(ev.height)) {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(ev[style])) {\n this.window.options[style] = ev[style];\n }\n });\n this.window.change.emit(ev);\n }\n }\n handleStateChange(key, state) {\n if ((state === 'minimized' && key === Keys.up) ||\n (state === 'maximized' && key === Keys.down)) {\n this.window.restoreAction();\n return;\n }\n if (state === 'default') {\n if (key === Keys.up) {\n this.window.maximizeAction();\n }\n else if (key === Keys.down) {\n this.window.minimizeAction();\n }\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: DragResizeService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DragResizeService }, { type: i0.NgZone }]; } });\n\nclass WindowMinimizeActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'window-minimize';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.minimizeAction();\n }\n }\n get visible() {\n return this.window.options.state === 'default' ? 'inline-flex' : 'none';\n }\n}\nWindowMinimizeActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMinimizeActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowMinimizeActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowMinimizeActionDirective, selector: \"button[kendoWindowMinimizeAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\", \"style.display\": \"this.visible\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowMinimizeAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMinimizeActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowMinimizeAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowMinimizeAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] } });\n\nclass WindowMaximizeActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'window-maximize';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.maximizeAction();\n }\n }\n get visible() {\n return this.window.options.state === 'default' ? 'inline-flex' : 'none';\n }\n}\nWindowMaximizeActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMaximizeActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowMaximizeActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowMaximizeActionDirective, selector: \"button[kendoWindowMaximizeAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\", \"style.display\": \"this.visible\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowMaximizeAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowMaximizeActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowMaximizeAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowMaximizeAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] } });\n\nclass WindowRestoreActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'window-restore';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.restoreAction();\n }\n }\n get visible() {\n return this.window.options.state === 'default' ? 'none' : 'inline-flex';\n }\n}\nWindowRestoreActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowRestoreActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowRestoreActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowRestoreActionDirective, selector: \"button[kendoWindowRestoreAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\", \"style.display\": \"this.visible\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowRestoreAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowRestoreActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowRestoreAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowRestoreAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], visible: [{\n type: HostBinding,\n args: ['style.display']\n }] } });\n\nclass WindowCloseActionDirective extends Button {\n constructor(el, renderer, _service, localization, ngZone) {\n super(el, renderer, null, localization, ngZone);\n this.buttonType = 'button';\n this.window = _service;\n this.fillMode = 'flat';\n this.icon = 'close';\n }\n /**\n * @hidden\n */\n onClick() {\n if (!this.isDisabled) {\n this.window.closeAction();\n }\n }\n}\nWindowCloseActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowCloseActionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService, optional: true }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nWindowCloseActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowCloseActionDirective, selector: \"button[kendoWindowCloseAction]\", inputs: { window: \"window\" }, host: { listeners: { \"click\": \"onClick()\" }, properties: { \"attr.type\": \"this.buttonType\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ], exportAs: [\"kendoWindowCloseAction\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowCloseActionDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'kendoWindowCloseAction',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.button'\n }\n ],\n selector: 'button[kendoWindowCloseAction]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService, decorators: [{\n type: Optional\n }] }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { window: [{\n type: Input\n }], buttonType: [{\n type: HostBinding,\n args: ['attr.type']\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }] } });\n\n/**\n * Represents the [Kendo UI Window component for Angular]({% slug overview_window_dialogs %}).\n */\nclass WindowComponent {\n constructor(el, renderer, service, navigation, ngZone, localization) {\n this.el = el;\n this.renderer = renderer;\n this.service = service;\n this.navigation = navigation;\n this.ngZone = ngZone;\n this.localization = localization;\n /**\n * Specifies if the content of the component is persisted in the DOM when minimized.\n * @default false\n */\n this.keepContent = false;\n /**\n * Fires when the user starts to move the Window.\n */\n this.dragStart = new EventEmitter();\n /**\n * Fires when the Window was moved by the user.\n */\n this.dragEnd = new EventEmitter();\n /**\n * Fires when the user starts to resize the Window.\n */\n this.resizeStart = new EventEmitter();\n /**\n * Fires when the Window was resized by the user.\n */\n this.resizeEnd = new EventEmitter();\n /**\n * Fires when the user closes the Window.\n */\n this.close = new EventEmitter();\n /**\n * Fires when the `width` property of the component was updated. The event is triggered only after the resizing\n * has ended. The event data contains the new width. Allows a two-way binding of the `width` property.\n */\n this.widthChange = new EventEmitter();\n /**\n * Fires when the `height` property of the component was updated. The event is triggered only after the resizing\n * has ended. The event data contains the new height. Allows a two-way binding of the `height` property.\n */\n this.heightChange = new EventEmitter();\n /**\n * Fires when the `top` property of the component was updated. The event is triggered only after the dragging\n * and resizing have ended. The event data contains the new top offset. Allows a two-way binding of the `top` property.\n */\n this.topChange = new EventEmitter();\n /**\n * Fires when the `left` property of the component was updated. The event is triggered only after the dragging\n * and resizing have ended. The event data contains the new left offset. Allows a two-way binding of the `left` property.\n */\n this.leftChange = new EventEmitter();\n /**\n * Fires when the `state` property of the component was updated. The event data contains the new state. Allows a\n * two-way binding of the `state` property.\n */\n this.stateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.messages = {};\n this.tabIndex = 0;\n this.draged = false;\n this.resized = false;\n this.windowSubscription = new Subscription();\n this.domSubs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = this.localization.rtl ? 'rtl' : 'ltr';\n this.localizationChangeSubscription = this.localization.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n this.resizeDirections = RESIZE_DIRECTIONS;\n this.subscribeEvents();\n }\n /**\n * Specifies whether the user will be able to drag the component.\n * @default true\n */\n set draggable(value) {\n this.options.draggable = value;\n }\n get draggable() {\n return this.options.draggable;\n }\n /**\n * Specifies whether the user will be able to resize the component.\n * @default true\n */\n set resizable(value) {\n this.options.resizable = value;\n }\n get resizable() {\n return this.options.resizable;\n }\n /**\n * @hidden\n */\n set cssClass(classes) {\n this.setServiceClasses(this._cssClass, classes);\n this._cssClass = classes;\n }\n get cssClass() {\n return this._cssClass;\n }\n /**\n * @hidden\n */\n set htmlAttributes(attributes) {\n setHTMLAttributes(attributes, this.renderer, this.el.nativeElement);\n const el = this.el.nativeElement;\n const dir = el.getAttribute('dir');\n const tIndex = el.getAttribute('tabindex');\n if (this.direction !== dir) {\n this.direction = dir;\n }\n if (this.tabIndex !== tIndex) {\n this.tabIndex = tIndex;\n }\n this._htmlAttributes = attributes;\n }\n get htmlAttributes() {\n return this._htmlAttributes;\n }\n /**\n * Specifies the initial state of the component.\n * If not specified, the value is set to `default`.\n *\n * The possible values are:\n * * `minimized`\n * * `maximized`\n * * `default`\n */\n set state(value) {\n this.options.state = value;\n }\n get state() {\n return this.options.state;\n }\n /**\n * Specifies the minimum width of the component.\n * The `minWidth` property has to be set in pixels.\n * @default 120\n */\n set minWidth(value) {\n this.setOption('minWidth', value);\n }\n get minWidth() {\n return this.options.minWidth;\n }\n /**\n * Specifies the minimum height of the Window.\n * The `minHeight` property has to be set in pixels.\n * @default 100\n */\n set minHeight(value) {\n this.setOption('minHeight', value);\n }\n get minHeight() {\n return this.options.minHeight;\n }\n /**\n * Specifies the width of the Window.\n * The `width` property has to be set in pixels.\n */\n set width(value) {\n this.setOption('width', value);\n }\n get width() {\n return this.options.width;\n }\n /**\n * Specifies the height of the Window.\n * The `height` property has to be set in pixels.\n */\n set height(value) {\n this.setOption('height', value);\n }\n get height() {\n return this.options.height;\n }\n /**\n * Specifies the initial top offset of the Window.\n * The `top` property has to be set in pixels.\n */\n set top(value) {\n this.setOption('top', value);\n }\n get top() {\n return this.options.top;\n }\n /**\n * Specifies the initial left offset of the Window.\n * Numeric values are treated as pixels.\n */\n set left(value) {\n this.setOption('left', value);\n }\n get left() {\n return this.options.left;\n }\n get closeButtonTitle() {\n if (this.messages && this.messages.closeTitle) {\n return this.messages.closeTitle;\n }\n return this.localization.get('closeTitle');\n }\n get restoreButtonTitle() {\n if (this.messages && this.messages.restoreTitle) {\n return this.messages.restoreTitle;\n }\n return this.localization.get('restoreTitle');\n }\n get maximizeButtonTitle() {\n if (this.messages && this.messages.maximizeTitle) {\n return this.messages.maximizeTitle;\n }\n return this.localization.get('maximizeTitle');\n }\n get minimizeButtonTitle() {\n if (this.messages && this.messages.minimizeTitle) {\n return this.messages.minimizeTitle;\n }\n return this.localization.get('minimizeTitle');\n }\n get hostClasses() {\n return true;\n }\n get dir() {\n return this.direction;\n }\n ngAfterViewInit() {\n this.setNextZIndex();\n this.handleInitialFocus();\n this.ngZone.runOutsideAngular(() => Promise.resolve(null).then(() => this.setInitialOffset()));\n this.initDomEvents();\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.el.nativeElement, 'title');\n this.service.init(this.el);\n }\n ngOnChanges(changes) {\n OFFSET_STYLES.forEach((style) => {\n if (isChanged(style, changes)) {\n this.setStyle(style, this.options[style]);\n }\n });\n if (isChanged('draggable', changes)) {\n const titleBar = isPresent(this.titleBarContent) ? this.titleBarContent : this.titleBarView;\n if (isTruthy(changes.draggable.currentValue)) {\n titleBar.subscribeDrag();\n }\n else {\n titleBar.unsubscribeDrag();\n }\n }\n if (isChanged('state', changes)) {\n if (isPresent(this.service.lastAction)) {\n this.service.lastAction = null;\n }\n else {\n this.service.applyManualState();\n this.updateAllOffset();\n }\n }\n }\n ngOnDestroy() {\n if (this.windowSubscription) {\n this.windowSubscription.unsubscribe();\n }\n if (this.domSubs) {\n this.domSubs.unsubscribe();\n }\n this.localizationChangeSubscription.unsubscribe();\n }\n /**\n * Focuses the wrapper of the Window component.\n */\n focus() {\n const wrapper = this.el.nativeElement;\n if (isPresent(wrapper)) {\n wrapper.focus();\n }\n }\n /**\n * Brings the current Window component on top of other Window components on the page.\n */\n bringToFront() {\n this.setNextZIndex();\n }\n /**\n * Manually updates the `width` or `height` option of the Window.\n * The required style will be applied to the Window wrapper element and the\n * corresponding property of the component instance will be updated.\n * This method is intended to be used for sizing dynamically created components using the\n * [`WindowService`]({% slug api_dialog_windowservice %})\n * @param {WindowDimensionSetting} dimension - The option that will be updated\n * @param {number} value - The value set in pixels\n */\n setDimension(dimension, value) {\n this.setOption(dimension, value);\n this.setStyle(dimension, value);\n }\n /**\n * Manually updates the `top` or `left` offset of the Window.\n * The required style will be applied to the Window wrapper element and the\n * corresponding property of the component instance will be updated.\n * This method is intended to be used for positioning dynamically created components using the\n * [`WindowService`]({% slug api_dialog_windowservice %})\n * @param {WindowOffsetSetting} offset - The option that will be updated\n * @param {number} value - The value set in pixels\n */\n setOffset(offset, value) {\n this.setOption(offset, value);\n this.setStyle(offset, value);\n }\n get showDefaultTitleBar() {\n return !isPresent(this.titleBarContent);\n }\n get styleMinWidth() {\n return this.minWidth + 'px';\n }\n get styleMinHeight() {\n return this.minHeight + 'px';\n }\n get stylePosition() {\n return this.options.position;\n }\n get wrapperMaximizedClass() {\n return this.state === 'maximized';\n }\n get wrapperMinimizedClass() {\n return this.state === 'minimized';\n }\n /**\n * @hidden\n */\n onComponentFocus() {\n this.renderer.addClass(this.el.nativeElement, 'k-focus');\n this.setNextZIndex();\n }\n /**\n * @hidden\n */\n onComponentBlur() {\n this.renderer.removeClass(this.el.nativeElement, 'k-focus');\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.windowSubscription.add(this.service.focus.subscribe(() => {\n this.el.nativeElement.focus();\n }));\n this.windowSubscription.add(this.service.dragStart.subscribe(() => {\n this.draged = true;\n this.ngZone.run(() => {\n this.dragStart.emit();\n });\n }));\n this.windowSubscription.add(this.service.dragEnd.subscribe(() => {\n if (this.draged) {\n this.draged = false;\n this.ngZone.run(() => {\n this.dragEnd.emit();\n });\n }\n }));\n this.windowSubscription.add(this.service.close.subscribe(() => {\n this.close.emit();\n }));\n this.windowSubscription.add(this.service.resizeStart.subscribe(() => {\n this.resized = true;\n this.ngZone.run(() => {\n this.resizeStart.emit();\n });\n }));\n this.windowSubscription.add(this.service.resizeEnd.subscribe(() => {\n if (this.resized) {\n this.resized = false;\n this.ngZone.run(() => {\n this.resizeEnd.emit();\n });\n }\n }));\n this.windowSubscription.add(this.service.change.subscribe((ev) => {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(ev[style])) {\n this.setStyle(style, ev[style]);\n if (this.state !== 'maximized') {\n const emitter = this[style + 'Change'];\n if (emitter.observers.length) {\n this.ngZone.run(() => {\n emitter.emit(ev[style]);\n });\n }\n }\n }\n });\n }));\n this.windowSubscription.add(this.service.stateChange.subscribe((state) => {\n if (isPresent(this.service.lastAction)) {\n this.updateAllOffset();\n this.stateChange.emit(state);\n }\n }));\n }\n initDomEvents() {\n if (!this.el) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.domSubs.add(this.renderer.listen(this.el.nativeElement, 'keydown', (ev) => {\n this.onKeyDown(ev);\n }));\n });\n }\n onKeyDown(event) {\n if (hasClasses(event.target, WINDOW_CLASSES)) {\n this.navigation.process(event);\n }\n }\n setServiceClasses(prevValue, value) {\n const el = this.el.nativeElement;\n if (prevValue) {\n parseCSSClassNames(prevValue).forEach(className => {\n this.renderer.removeClass(el, className);\n });\n }\n if (value) {\n parseCSSClassNames(value).forEach(className => {\n this.renderer.addClass(el, className);\n });\n }\n }\n setNextZIndex() {\n const currentZIndex = this.el.nativeElement.style['z-index'];\n const nextPossibleZIndex = this.service.nextPossibleZIndex;\n if (!currentZIndex || (nextPossibleZIndex - currentZIndex > 1)) {\n this.renderer.setStyle(this.el.nativeElement, \"z-index\", this.service.nextZIndex);\n }\n }\n setInitialOffset() {\n if (this.state !== 'maximized') {\n this.updateAllOffset();\n if (!isPresent(this.left) || !isPresent(this.top)) {\n this.service.center();\n }\n }\n else {\n const viewPort = this.service.windowViewPort;\n this.setStyle('width', viewPort.width);\n this.setStyle('height', viewPort.height);\n this.setStyle('top', 0);\n this.setStyle('left', 0);\n }\n }\n updateAllOffset() {\n OFFSET_STYLES.forEach((style) => {\n if (isPresent(this[style])) {\n this.setStyle(style, this[style]);\n }\n else {\n this.removeStyle(style);\n }\n });\n }\n setStyle(style, value) {\n this.renderer.setStyle(this.el.nativeElement, style, value + 'px');\n }\n removeStyle(style) {\n this.renderer.removeStyle(this.el.nativeElement, style);\n }\n get options() {\n return this.service.options;\n }\n setOption(style, value) {\n if (typeof value !== 'number' && typeof value !== 'string') {\n return;\n }\n const parsedValue = (typeof value === 'number') ? value : parseInt(value, 10);\n this.options[style] = parsedValue;\n this.service.setRestoreOption(style, parsedValue);\n }\n handleInitialFocus() {\n const wrapper = this.el.nativeElement;\n if (this.autoFocusedElement) {\n const initiallyFocusedElement = wrapper.querySelector(this.autoFocusedElement);\n if (initiallyFocusedElement) {\n initiallyFocusedElement.focus();\n }\n }\n else {\n this.focus();\n }\n }\n}\nWindowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DragResizeService }, { token: NavigationService }, { token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nWindowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowComponent, selector: \"kendo-window\", inputs: { autoFocusedElement: \"autoFocusedElement\", title: \"title\", draggable: \"draggable\", resizable: \"resizable\", keepContent: \"keepContent\", state: \"state\", minWidth: \"minWidth\", minHeight: \"minHeight\", width: \"width\", height: \"height\", top: \"top\", left: \"left\" }, outputs: { dragStart: \"dragStart\", dragEnd: \"dragEnd\", resizeStart: \"resizeStart\", resizeEnd: \"resizeEnd\", close: \"close\", widthChange: \"widthChange\", heightChange: \"heightChange\", topChange: \"topChange\", leftChange: \"leftChange\", stateChange: \"stateChange\" }, host: { listeners: { \"focus\": \"onComponentFocus()\", \"blur\": \"onComponentBlur()\" }, properties: { \"attr.tabIndex\": \"this.tabIndex\", \"class.k-window\": \"this.hostClasses\", \"attr.dir\": \"this.dir\", \"style.minWidth\": \"this.styleMinWidth\", \"style.minHeight\": \"this.styleMinHeight\", \"style.position\": \"this.stylePosition\", \"class.k-window-maximized\": \"this.wrapperMaximizedClass\", \"class.k-window-minimized\": \"this.wrapperMinimizedClass\" } }, providers: [\n DragResizeService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.window'\n }\n ], queries: [{ propertyName: \"titleBarContent\", first: true, predicate: WindowTitleBarComponent, descendants: true }], viewQueries: [{ propertyName: \"titleBarView\", first: true, predicate: WindowTitleBarComponent, descendants: true }, { propertyName: \"resizeHandles\", predicate: ResizeHandleDirective, descendants: true }], exportAs: [\"kendoWindow\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n\n \n
{{ title }}
\n
\n \n \n \n \n
\n
\n \n\n
\n \n \n
\n\n \n
\n
\n
\n `, isInline: true, components: [{ type: WindowTitleBarComponent, selector: \"kendo-window-titlebar\", inputs: [\"template\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDialogLocalizedMessages],\\n [kendoWindowLocalizedMessages],\\n [kendoDialogTitleBarLocalizedMessages]\\n \" }, { type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: WindowMinimizeActionDirective, selector: \"button[kendoWindowMinimizeAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowMinimizeAction\"] }, { type: WindowMaximizeActionDirective, selector: \"button[kendoWindowMaximizeAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowMaximizeAction\"] }, { type: WindowRestoreActionDirective, selector: \"button[kendoWindowRestoreAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowRestoreAction\"] }, { type: WindowCloseActionDirective, selector: \"button[kendoWindowCloseAction]\", inputs: [\"window\"], exportAs: [\"kendoWindowCloseAction\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i6.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: ResizeHandleDirective, selector: \"[kendoWindowResizeHandle]\", inputs: [\"direction\"] }, { type: i1$1.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoWindow',\n providers: [\n DragResizeService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.window'\n }\n ],\n selector: 'kendo-window',\n template: `\n \n \n\n \n
{{ title }}
\n
\n \n \n \n \n
\n
\n \n\n
\n \n \n
\n\n \n
\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DragResizeService }, { type: NavigationService }, { type: i0.NgZone }, { type: i1.LocalizationService }]; }, propDecorators: { autoFocusedElement: [{\n type: Input\n }], title: [{\n type: Input\n }], draggable: [{\n type: Input\n }], resizable: [{\n type: Input\n }], keepContent: [{\n type: Input\n }], state: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], minHeight: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], top: [{\n type: Input\n }], left: [{\n type: Input\n }], dragStart: [{\n type: Output\n }], dragEnd: [{\n type: Output\n }], resizeStart: [{\n type: Output\n }], resizeEnd: [{\n type: Output\n }], close: [{\n type: Output\n }], widthChange: [{\n type: Output\n }], heightChange: [{\n type: Output\n }], topChange: [{\n type: Output\n }], leftChange: [{\n type: Output\n }], stateChange: [{\n type: Output\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-window']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], titleBarView: [{\n type: ViewChild,\n args: [WindowTitleBarComponent, { static: false }]\n }], titleBarContent: [{\n type: ContentChild,\n args: [WindowTitleBarComponent, { static: false }]\n }], resizeHandles: [{\n type: ViewChildren,\n args: [ResizeHandleDirective]\n }], styleMinWidth: [{\n type: HostBinding,\n args: ['style.minWidth']\n }], styleMinHeight: [{\n type: HostBinding,\n args: ['style.minHeight']\n }], stylePosition: [{\n type: HostBinding,\n args: ['style.position']\n }], wrapperMaximizedClass: [{\n type: HostBinding,\n args: ['class.k-window-maximized']\n }], wrapperMinimizedClass: [{\n type: HostBinding,\n args: ['class.k-window-minimized']\n }], onComponentFocus: [{\n type: HostListener,\n args: ['focus']\n }], onComponentBlur: [{\n type: HostListener,\n args: ['blur']\n }] } });\n\n/**\n * Indicates that the **Close** button of a Window that is opened through `WindowService` is clicked.\n */\nclass WindowCloseResult {\n}\n\n/**\n * Holds references to the object instance of the Window.\n * Controls the Windows that were opened through `WindowService`\n * ([see example]({% slug api_dialog_windowservice %}#toc-open)).\n */\nclass WindowRef {\n}\n\n/**\n * The settings for the Window actions when the Window is opened through `WindowService`\n * ([see example]({% slug api_dialog_windowservice %}#toc-open)).\n */\nclass WindowSettings {\n}\n\n/**\n * @hidden\n */\nclass WindowContainerService {\n set container(container) {\n WindowContainerService.container = container;\n }\n get container() {\n return WindowContainerService.container;\n }\n}\nWindowContainerService.container = null;\nWindowContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nWindowContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerService, decorators: [{\n type: Injectable\n }] });\n\nconst isNotComponent = (component) => isString(component) || component instanceof TemplateRef;\nclass WindowInjector {\n constructor(getWindowRef, parentInjector) {\n this.getWindowRef = getWindowRef;\n this.parentInjector = parentInjector;\n }\n get(token, notFoundValue) {\n if (token === WindowRef) {\n return this.getWindowRef();\n }\n return this.parentInjector.get(token, notFoundValue);\n }\n}\n/**\n * A service for opening Windows dynamically\n * ([see example]({% slug service_window %})).\n */\nclass WindowService {\n constructor(\n /**\n * @hidden\n */\n resolver, containerService) {\n this.resolver = resolver;\n this.containerService = containerService;\n }\n /**\n * Opens a Window component.\n *\n * @param {WindowSettings} settings - The settings that define the Window.\n * @returns {WindowRef} - A reference to the Window object.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n *
\n * `\n * })\n * export class AppComponent {\n * constructor( private windowService: WindowService ) {}\n *\n * public open() {\n * var window = this.windowService.open({\n * title: \"My window\",\n * content: \"My content!\"\n * });\n *\n * window.result.subscribe((result) => {\n * if (result instanceof WindowCloseResult) {\n * console.log(\"Window was closed\");\n * }\n * });\n * }\n * }\n * ```\n *\n */\n open(settings) {\n const factory = this.resolver.resolveComponentFactory(WindowComponent);\n const container = settings.appendTo || this.containerService.container;\n if (!container) {\n throw new Error(`Cannot attach window to the page.\n Add an element that uses the kendoWindowContainer directive, or set the 'appendTo' property.\n See https://www.telerik.com/kendo-angular-ui/components/dialogs/window/service/\n `);\n }\n const windowRef = {\n close: () => { },\n content: null,\n result: null,\n window: null\n };\n const content = this.contentFrom(settings.content, container, windowRef);\n const window = container.createComponent(factory, undefined, undefined, content.nodes);\n windowRef.window = window;\n this.applyOptions(window.instance, settings);\n const apiClose = new Subject();\n const close = (e) => {\n apiClose.next(e || new WindowCloseResult());\n if (content.componentRef) {\n content.componentRef.destroy();\n }\n window.destroy();\n };\n const result = merge(apiClose, window.instance.close.pipe(map(e => (e ? e : new WindowCloseResult())), filter((e) => {\n if (settings.preventClose) {\n // add windowRef only when using component\n const windowRefParameter = isNotComponent(settings.content) ? undefined : windowRef;\n return !settings.preventClose(e, windowRefParameter);\n }\n return true;\n }))).pipe(take(1), \n // Takes care for multiple subscriptions:\n // We subscribe internally and the user may subscribe to get a close result - window.result.subscribe().\n // This causes multiple subscriptions to the same source and thus multiple emissions. share() solves that.\n share());\n result.subscribe(close);\n windowRef.close = close;\n windowRef.result = result;\n window.changeDetectorRef.markForCheck();\n return windowRef;\n }\n applyOptions(instance, options) {\n if (isPresent(options.htmlAttributes)) {\n instance.htmlAttributes = options.htmlAttributes;\n }\n if (isPresent(options.cssClass)) {\n instance.cssClass = options.cssClass;\n }\n if (isPresent(options.title)) {\n instance.title = options.title;\n }\n if (isPresent(options.keepContent)) {\n instance.keepContent = options.keepContent;\n }\n if (isPresent(options.width)) {\n instance.width = options.width;\n }\n if (isPresent(options.minWidth)) {\n instance.minWidth = options.minWidth;\n }\n if (isPresent(options.height)) {\n instance.height = options.height;\n }\n if (isPresent(options.minHeight)) {\n instance.minHeight = options.minHeight;\n }\n if (isPresent(options.left)) {\n instance.left = options.left;\n }\n if (isPresent(options.top)) {\n instance.top = options.top;\n }\n if (isPresent(options.draggable)) {\n instance.draggable = options.draggable;\n }\n if (isPresent(options.resizable)) {\n instance.resizable = options.resizable;\n }\n if (isPresent(options.messages && options.messages.closeTitle)) {\n instance.messages.closeTitle = options.messages.closeTitle;\n }\n if (isPresent(options.messages && options.messages.restoreTitle)) {\n instance.messages.restoreTitle = options.messages.restoreTitle;\n }\n if (isPresent(options.messages && options.messages.maximizeTitle)) {\n instance.messages.maximizeTitle = options.messages.maximizeTitle;\n }\n if (isPresent(options.messages && options.messages.minimizeTitle)) {\n instance.messages.minimizeTitle = options.messages.minimizeTitle;\n }\n if (isPresent(options.autoFocusedElement)) {\n instance.autoFocusedElement = options.autoFocusedElement;\n }\n if (isPresent(options.state)) {\n instance.state = options.state;\n if (options.state === 'minimized') {\n instance.keepContent = true;\n }\n }\n if (options.content instanceof TemplateRef) {\n instance.contentTemplate = options.content;\n }\n if (options.titleBarContent instanceof TemplateRef) {\n instance.titleBarTemplate = options.titleBarContent;\n }\n }\n contentFrom(content, container, windowRef) {\n const renderer = container.injector.get(Renderer2);\n let nodes = [];\n let componentRef = null;\n if (typeof content === 'string') {\n nodes = [renderer.createText(content)];\n }\n else if (content && !(content instanceof TemplateRef)) {\n const injector = new WindowInjector(() => windowRef, container.injector);\n const factory = this.resolver.resolveComponentFactory(content);\n componentRef = container.createComponent(factory, undefined, injector);\n nodes = [componentRef.location.nativeElement];\n windowRef.content = componentRef;\n }\n return {\n componentRef,\n nodes: [\n [],\n nodes // Content\n ]\n };\n }\n}\nWindowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowService, deps: [{ token: i0.ComponentFactoryResolver }, { token: WindowContainerService }], target: i0.ɵɵFactoryTarget.Injectable });\nWindowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: WindowContainerService, decorators: [{\n type: Inject,\n args: [WindowContainerService]\n }] }]; } });\n\n/**\n * Provides an insertion point for the Dialogs which are created through the\n * Dialog service ([see example]({% slug api_dialog_dialogservice %}#toc-open)).\n * Created Dialogs will be mounted after that element.\n *\n * @example\n * ```html-no-run\n *
\n * ```\n */\nclass DialogContainerDirective {\n constructor(container, service) {\n service.container = container;\n }\n}\nDialogContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerDirective, deps: [{ token: i0.ViewContainerRef }, { token: DialogContainerService }], target: i0.ɵɵFactoryTarget.Directive });\nDialogContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DialogContainerDirective, selector: \"[kendoDialogContainer]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDialogContainer]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: DialogContainerService }]; } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug globalization_dialogs %}#toc-localization)).\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nCustomMessagesComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-dialog-messages, kendo-window-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-dialog-messages, kendo-window-messages'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nconst SHARED_DIRECTIVES = [\n DialogActionsComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [DialogActionsComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective], imports: [CommonModule], exports: [DialogActionsComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective, CommonModule] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[CommonModule], CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES, CommonModule],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nconst DIALOG_DIRECTIVES = [\n DialogComponent,\n DialogTitleBarComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Dialog component that includes all Dialog components and directives.\n * Imports `DialogModule` into the [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity)\n * of your application or into any other sub-module that will use the Dialog component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { DialogModule } from '@progress/kendo-angular-dialog';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, DialogModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass DialogModule {\n}\nDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, declarations: [DialogComponent,\n DialogTitleBarComponent, DialogContainerDirective], imports: [SharedModule], exports: [DialogComponent,\n DialogTitleBarComponent, DialogActionsComponent, CustomMessagesComponent, LocalizedMessagesDirective, DialogContainerDirective] });\nDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, providers: [DialogContainerService, DialogService], imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DIALOG_DIRECTIVES, DialogContainerDirective],\n entryComponents: [DIALOG_DIRECTIVES],\n exports: [DIALOG_DIRECTIVES, SHARED_DIRECTIVES, DialogContainerDirective],\n imports: [SharedModule],\n providers: [DialogContainerService, DialogService]\n }]\n }] });\n\n/**\n * Provides an insertion point for the Windows which are created through the\n * Window service ([see example]({% slug api_dialog_windowservice %}#toc-open)).\n * Created Windows will be mounted after that element.\n *\n * @example\n * ```html-no-run\n *
\n * ```\n */\nclass WindowContainerDirective {\n constructor(container, service) {\n service.container = container;\n }\n}\nWindowContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerDirective, deps: [{ token: i0.ViewContainerRef }, { token: WindowContainerService }], target: i0.ɵɵFactoryTarget.Directive });\nWindowContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: WindowContainerDirective, selector: \"[kendoWindowContainer]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoWindowContainer]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: WindowContainerService }]; } });\n\nconst WINDOW_DIRECTIVES = [\n ResizeHandleDirective,\n WindowComponent,\n WindowTitleBarComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective\n];\nconst ENTRY_COMPONENTS = [\n WindowComponent,\n WindowTitleBarComponent\n];\nconst exportedModules = [\n WindowComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective,\n WindowTitleBarComponent\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Window component. Imports `WindowModule` into the\n * [root module]({{ site.data.urls.angular['ngmodules'] }}#angular-modularity)\n * of your application or into any other sub-module that will use the Window component.\n *\n * @example\n * ```ts-no-run\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from '@angular/platform-browser';\n * import { WindowModule } from '@progress/kendo-angular-window';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * bootstrap: [AppComponent],\n * declarations: [AppComponent],\n * imports: [BrowserModule, WindowModule]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass WindowModule {\n}\nWindowModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nWindowModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, declarations: [ResizeHandleDirective,\n WindowComponent,\n WindowTitleBarComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective, WindowContainerDirective], imports: [SharedModule, DraggableModule], exports: [WindowComponent,\n WindowCloseActionDirective,\n WindowMinimizeActionDirective,\n WindowMaximizeActionDirective,\n WindowRestoreActionDirective,\n WindowTitleBarComponent, DialogActionsComponent, CustomMessagesComponent, LocalizedMessagesDirective, WindowContainerDirective] });\nWindowModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, providers: [WindowContainerService, WindowService], imports: [[SharedModule, DraggableModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: WindowModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [WINDOW_DIRECTIVES, WindowContainerDirective],\n entryComponents: [ENTRY_COMPONENTS],\n exports: [exportedModules, SHARED_DIRECTIVES, WindowContainerDirective],\n imports: [SharedModule, DraggableModule],\n providers: [WindowContainerService, WindowService]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Dialogs components.\n *\n * @example\n *\n * ```ts-no-run\n * import { DialogsModule } from '@progress/kendo-angular-dialog';\n *\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { NgModule } from '@angular/core';\n *\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * declarations: [AppComponent],\n * imports: [BrowserModule, DialogsModule],\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DialogsModule {\n}\nDialogsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDialogsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, exports: [DialogModule, WindowModule] });\nDialogsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, imports: [DialogModule, WindowModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DialogsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [DialogModule, WindowModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CustomMessagesComponent, DialogAction, DialogActionsComponent, DialogCloseResult, DialogComponent, DialogContainerDirective, DialogContentBase, DialogModule, DialogRef, DialogService, DialogSettings, DialogTitleBarComponent, DialogsModule, LocalizedMessagesDirective, Messages, PreventableEvent, WindowCloseActionDirective, WindowCloseResult, WindowComponent, WindowContainerDirective, WindowMaximizeActionDirective, WindowMinimizeActionDirective, WindowModule, WindowRef, WindowRestoreActionDirective, WindowService, WindowSettings, WindowTitleBarComponent };\n\n","export function not(pred, thisArg) {\n return (value, index) => !pred.call(thisArg, value, index);\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function skipWhile(predicate) {\n return operate((source, subscriber) => {\n let taking = false;\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => (taking || (taking = !predicate(value, index++))) && subscriber.next(value)));\n });\n}\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Injectable, Directive, Optional, Component, HostBinding, Input, Output, forwardRef, isDevMode, ViewContainerRef, ChangeDetectionStrategy, ViewChild, ContentChild, Host, NgModule } from '@angular/core';\nimport { isDocumentAvailable, Keys, guid, anyChanged, hasObservers, isChanged } from '@progress/kendo-angular-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { Subject, of, Subscription, EMPTY, BehaviorSubject, merge } from 'rxjs';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter, setter } from '@progress/kendo-common';\nimport * as i8 from '@progress/kendo-angular-inputs';\nimport { InputsModule } from '@progress/kendo-angular-inputs';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { filter, tap, switchMap, delay, takeUntil, catchError, finalize, take, map } from 'rxjs/operators';\nimport * as i9 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport Draggable from '@progress/kendo-draggable';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-treeview',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1655884840,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nclass DataChangeNotificationService {\n constructor() {\n this.changes = new EventEmitter();\n }\n notify() {\n this.changes.emit();\n }\n}\n\n/**\n * @hidden\n */\nconst hasChildren = () => false;\n/**\n * @hidden\n */\nconst isChecked = () => 'none';\n/**\n * @hidden\n */\nconst isDisabled = () => false;\n/**\n * @hidden\n */\nconst isExpanded = () => true;\n/**\n * @hidden\n */\nconst isSelected = () => false;\n/**\n * @hidden\n */\nconst isVisible = () => true;\n/**\n * @hidden\n */\nconst trackBy = (_, item) => item;\n\n/**\n * @hidden\n */\nclass ExpandStateService {\n constructor() {\n this.changes = new Subject();\n }\n expand(index, dataItem) {\n this.changes.next({ dataItem, index, expand: true });\n }\n collapse(index, dataItem) {\n this.changes.next({ dataItem, index, expand: false });\n }\n}\nExpandStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nExpandStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandStateService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandStateService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass IndexBuilderService {\n constructor() {\n this.INDEX_SEPARATOR = '_';\n }\n nodeIndex(index = '', parentIndex = '') {\n return `${parentIndex}${parentIndex ? this.INDEX_SEPARATOR : ''}${index}`;\n }\n indexForLevel(index, level) {\n return index.split(this.INDEX_SEPARATOR).slice(0, level).join(this.INDEX_SEPARATOR);\n }\n lastLevelIndex(index = '') {\n const parts = index.split(this.INDEX_SEPARATOR);\n if (!parts.length) {\n return NaN;\n }\n return parseInt(parts[parts.length - 1], 10);\n }\n level(index) {\n return index.split(this.INDEX_SEPARATOR).length;\n }\n}\nIndexBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IndexBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nIndexBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IndexBuilderService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: IndexBuilderService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass LoadingNotificationService {\n constructor() {\n this.changes = new Subject();\n }\n notifyLoaded(index) {\n this.changes.next(index);\n }\n}\nLoadingNotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingNotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLoadingNotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingNotificationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingNotificationService, decorators: [{\n type: Injectable\n }] });\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\n/**\n * @hidden\n */\nconst match = (element, selector) => {\n const matcher = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (!matcher) {\n return false;\n }\n return matcher.call(element, selector);\n};\n/**\n * @hidden\n */\nconst closestWithMatch = (element, selector) => {\n if (!document.documentElement.contains(element)) {\n return null;\n }\n let parent = element;\n while (parent !== null && parent.nodeType === 1) {\n if (match(parent, selector)) {\n return parent;\n }\n parent = parent.parentElement || parent.parentNode;\n }\n return null;\n};\n/**\n * @hidden\n */\nconst noop = () => { };\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isBlank = (value) => value === null || value === undefined;\n/**\n * @hidden\n */\nconst isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nconst isNullOrEmptyString = (value) => isBlank(value) || value.trim().length === 0;\n/**\n * @hidden\n */\nconst isBoolean = (value) => typeof value === 'boolean';\n/**\n * @hidden\n */\nconst closestNode = (element) => {\n const selector = 'li.k-treeview-item';\n if (!isDocumentAvailable()) {\n return null;\n }\n if (element.closest) {\n return element.closest(selector);\n }\n else {\n return closestWithMatch(element, selector);\n }\n};\n/**\n * @hidden\n */\nconst isFocusable = (element) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const skipTab = tabIndex === '-1';\n let focusable = tabIndex !== null && !skipTab;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled && !skipTab;\n }\n return focusable;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst isContent = (element) => {\n const scopeSelector = '.k-treeview-leaf:not(.k-treeview-load-more-button),.k-treeview-item,.k-treeview';\n if (!isDocumentAvailable()) {\n return null;\n }\n let node = element;\n while (node && !match(node, scopeSelector)) {\n node = node.parentNode;\n }\n if (node) {\n return match(node, '.k-treeview-leaf:not(.k-treeview-load-more-button)');\n }\n};\n/**\n * @hidden\n *\n * Returns the nested .k-treeview-leaf:not(.k-treeview-load-more-button) element.\n * If the passed parent item is itself a content node, it is returned.\n */\nconst getContentElement = (parent) => {\n if (!isPresent(parent)) {\n return null;\n }\n const selector = '.k-treeview-leaf:not(.k-treeview-load-more-button)';\n if (match(parent, selector)) {\n return parent;\n }\n return parent.querySelector(selector);\n};\n/**\n * @hidden\n */\nconst isLoadMoreButton = (element) => {\n return isPresent(closestWithMatch(element, '.k-treeview-leaf.k-treeview-load-more-button'));\n};\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst hasParent = (element, container) => {\n return Boolean(closest(element, (node) => node === container));\n};\n/**\n * @hidden\n */\nconst focusableNode = (element) => element.nativeElement.querySelector('li[tabindex=\"0\"]');\n/**\n * @hidden\n */\nconst hasActiveNode = (target, node) => {\n const closestItem = node || closestNode(target);\n return closestItem && (closestItem === target || target.tabIndex < 0);\n};\n/**\n * @hidden\n */\nconst nodeId = (node) => node ? node.getAttribute('data-treeindex') : '';\n/**\n * @hidden\n */\nconst nodeIndex = (item) => (item || {}).index;\n/**\n * @hidden\n */\nconst dataItemsEqual = (first, second) => {\n if (!isPresent(first) && !isPresent(second)) {\n return true;\n }\n return isPresent(first) && isPresent(second) && first.item.dataItem === second.item.dataItem;\n};\n/**\n * @hidden\n */\nconst getDataItem = (lookup) => {\n if (!isPresent(lookup)) {\n return lookup;\n }\n return lookup.item.dataItem;\n};\n/**\n * @hidden\n */\nconst isArrayWithAtLeastOneItem = v => v && Array.isArray(v) && v.length !== 0;\n/**\n * @hidden\n * A recursive tree-filtering algorithm that returns:\n * - all child nodes of matching nodes\n * - a chain parent nodes from the match to the root node\n */\nconst filterTree = (items, term, { operator, ignoreCase, mode }, textField, depth = 0) => {\n const field = typeof textField === \"string\" ? textField : textField[depth];\n items.forEach((wrapper) => {\n const matcher = typeof operator === \"string\" ? matchByFieldAndCase(field, operator, ignoreCase) : operator;\n const isMatch = matcher(wrapper.dataItem, term);\n wrapper.isMatch = isMatch;\n wrapper.visible = isMatch;\n wrapper.containsMatches = false;\n if (isMatch) {\n setParentChain(wrapper.parent);\n }\n if (wrapper.children && wrapper.children.length > 0) {\n if (mode === \"strict\" || !isMatch) {\n filterTree(wrapper.children, term, { operator, ignoreCase, mode }, textField, depth + 1);\n }\n else {\n makeAllVisible(wrapper.children);\n }\n }\n });\n};\nconst setParentChain = (node) => {\n if (!isPresent(node)) {\n return;\n }\n node.containsMatches = true;\n node.visible = true;\n if (isPresent(node.parent) && !node.parent.containsMatches) {\n setParentChain(node.parent);\n }\n};\nconst makeAllVisible = (nodes) => {\n nodes.forEach(node => {\n node.visible = true;\n if (node.children) {\n makeAllVisible(node.children);\n }\n });\n};\nconst operators = {\n contains: (a, b) => a.indexOf(b) >= 0,\n doesnotcontain: (a, b) => a.indexOf(b) === -1,\n startswith: (a, b) => a.lastIndexOf(b, 0) === 0,\n doesnotstartwith: (a, b) => a.lastIndexOf(b, 0) === -1,\n endswith: (a, b) => a.indexOf(b, a.length - b.length) >= 0,\n doesnotendwith: (a, b) => a.indexOf(b, a.length - b.length) < 0\n};\nconst matchByCase = (matcher, ignoreCase) => (a, b) => {\n if (ignoreCase) {\n return matcher(a.toLowerCase(), b.toLowerCase());\n }\n return matcher(a, b);\n};\nconst matchByFieldAndCase = (field, operator, ignoreCase) => (dataItem, term) => matchByCase(operators[operator], ignoreCase)(getter(field)(dataItem), term);\n/**\n * @hidden\n */\nconst buildTreeIndex = (parentIndex, itemIndex) => {\n return [parentIndex, itemIndex].filter(part => isPresent(part)).join('_');\n};\n/**\n * @hidden\n */\nconst buildTreeItem = (dataItem, currentLevelIndex, parentIndex) => {\n if (!isPresent(dataItem)) {\n return null;\n }\n return {\n dataItem,\n index: buildTreeIndex(parentIndex, currentLevelIndex)\n };\n};\n/**\n * @hidden\n *\n * Retrieves all descendant nodes' lookups which are currently registered in the provided lookup item as a flat array.\n */\nconst fetchLoadedDescendants = (lookup, filterExpression) => {\n if (!isPresent(lookup) || lookup.children.length === 0) {\n return [];\n }\n let descendants = lookup.children;\n if (isPresent(filterExpression)) {\n descendants = descendants.filter(filterExpression);\n }\n descendants.forEach(child => descendants = descendants.concat(fetchLoadedDescendants(child, filterExpression)));\n return descendants;\n};\n/**\n * @hidden\n *\n * Compares two Seets to determine whether all unique elements in one, are present in the other.\n * Important:\n * - it disregards the element order\n */\nconst sameValues = (as, bs) => {\n if (as.size !== bs.size) {\n return false;\n }\n return Array.from(as).every(v => bs.has(v));\n};\n/**\n * @hidden\n * Returns the size class based on the component and size input.\n */\nconst getSizeClass = (component, size) => {\n const SIZE_CLASSES = {\n 'small': `k-${component}-sm`,\n 'medium': `k-${component}-md`,\n 'large': `k-${component}-lg`\n };\n return SIZE_CLASSES[size];\n};\n\nconst safe = node => (node || {});\nconst safeChildren = node => (safe(node).children || []);\nconst lastVisibleNode = (nodes) => {\n if (!Array.isArray(nodes) || nodes.length === 0) {\n return null;\n }\n const nodesCount = nodes.length;\n const lastIndex = nodesCount - 1;\n for (let index = lastIndex; index >= 0; index -= 1) {\n const node = nodes[index];\n if (node.visible) {\n return node;\n }\n }\n return null;\n};\n/**\n * @hidden\n */\nclass NavigationModel {\n constructor() {\n this.ib = new IndexBuilderService();\n this.nodes = [];\n }\n firstVisibleNode() {\n return (this.nodes || []).find(node => node.visible);\n }\n lastVisibleNode() {\n let node = lastVisibleNode(this.nodes);\n while (isPresent(node) && safeChildren(node).length > 0) {\n const children = safeChildren(node);\n const lastVisibleChild = lastVisibleNode(children);\n if (!isPresent(lastVisibleChild)) {\n return node;\n }\n node = lastVisibleChild;\n }\n return node;\n }\n closestNode(index) {\n const { prev } = safe(this.findNode(index));\n const sibling = prev || this.firstVisibleNode();\n return safe(sibling).index === index ? this.visibleSibling(sibling, 1) : sibling;\n }\n firstFocusableNode() {\n return this.nodes.find((node) => {\n return !node.disabled && node.visible;\n });\n }\n findNode(index) {\n return this.find(index, this.nodes);\n }\n findParent(index) {\n const parentLevel = this.ib.level(index) - 1;\n return this.findNode(this.ib.indexForLevel(index, parentLevel));\n }\n findVisibleChild(index) {\n const node = this.findNode(index);\n const children = safeChildren(node);\n return children.find((child) => child.visible);\n }\n findVisiblePrev(item) {\n const index = item.index;\n const parent = this.findParent(index);\n const levelIndex = this.ib.lastLevelIndex(index);\n const prevNodes = this.container(parent).slice(0, levelIndex);\n const prevNodesHidden = prevNodes.every(node => !node.visible);\n if (levelIndex === 0 || prevNodesHidden) {\n return parent;\n }\n const currentNode = this.findNode(index);\n let prev = this.visibleSibling(currentNode, -1);\n if (prev) {\n let children = this.container(prev);\n while (children.length > 0 && children.some(node => node.visible)) {\n prev = lastVisibleNode(children);\n children = this.container(prev);\n }\n }\n return prev;\n }\n findVisibleNext(item) {\n const children = this.container(item);\n const hasVisibleChildren = children.some(child => child.visible);\n if (children.length === 0 || !hasVisibleChildren) {\n return this.visibleSibling(item, 1);\n }\n return children.find(child => child.visible);\n }\n registerItem(id, index, disabled, loadMoreButton = false, visible = true) {\n const children = [];\n const level = this.ib.level(index);\n const parent = this.findParent(index);\n if (parent || level === 1) {\n const node = { id, children, index, parent, disabled, loadMoreButton, visible };\n this.insert(node, parent);\n }\n }\n unregisterItem(id, index) {\n const node = this.find(index, this.nodes);\n if (!node || node.id !== id) {\n return;\n }\n const children = this.container(node.parent);\n children.splice(children.indexOf(node), 1);\n }\n childLevel(nodes) {\n const children = nodes.filter(node => isPresent(node));\n if (!children || !children.length) {\n return 1;\n }\n return this.ib.level(children[0].index);\n }\n container(node) {\n return node ? node.children : this.nodes;\n }\n find(index, nodes) {\n const childLevel = this.childLevel(nodes);\n const indexToMatch = this.ib.indexForLevel(index, childLevel);\n const isLeaf = childLevel === this.ib.level(index);\n const node = nodes.find(n => n && n.index === indexToMatch);\n if (!node) {\n return null;\n }\n return isLeaf ? node : this.find(index, node.children);\n }\n insert(node, parent) {\n const nodes = this.container(parent);\n nodes.splice(this.ib.lastLevelIndex(node.index), 0, node);\n }\n visibleSibling(node, offset) {\n if (!node) {\n return null;\n }\n const parent = this.findParent(node.index);\n const container = this.container(parent);\n let nextItemIndex = container.indexOf(node) + offset;\n let nextItem = container[nextItemIndex];\n while (isPresent(nextItem)) {\n if (nextItem.visible) {\n return nextItem;\n }\n nextItemIndex += offset;\n nextItem = container[nextItemIndex];\n }\n return this.visibleSibling(parent, offset);\n }\n}\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(localization) {\n this.localization = localization;\n this.expands = new Subject();\n this.moves = new Subject();\n this.checks = new Subject();\n this.selects = new Subject();\n this.loadMore = new Subject();\n this.navigable = true;\n this.actions = {\n [Keys.ArrowUp]: () => this.activate(this.model.findVisiblePrev(this.focusableItem), true),\n [Keys.ArrowDown]: () => this.activate(this.model.findVisibleNext(this.focusableItem), true),\n [Keys.ArrowLeft]: () => !this.isLoadMoreButton && (this.expand({\n expand: this.localization.rtl,\n intercept: this.localization.rtl ? this.moveToFirstVisibleChild : this.moveToParent\n })),\n [Keys.ArrowRight]: () => !this.isLoadMoreButton && (this.expand({\n expand: !this.localization.rtl,\n intercept: this.localization.rtl ? this.moveToParent : this.moveToFirstVisibleChild\n })),\n [Keys.Home]: () => this.activate(this.model.firstVisibleNode(), true),\n [Keys.End]: () => this.activate(this.model.lastVisibleNode(), true),\n [Keys.Enter]: () => this.handleEnter(),\n [Keys.Space]: () => this.handleSpace()\n };\n this.isFocused = false;\n this.shouldScroll = false;\n this._model = new NavigationModel();\n this.moveToFirstVisibleChild = this.moveToFirstVisibleChild.bind(this);\n this.moveToParent = this.moveToParent.bind(this);\n }\n get model() {\n return this._model;\n }\n set model(model) {\n this._model = model;\n }\n get activeIndex() {\n return nodeIndex(this.activeItem) || null;\n }\n get isActiveExpanded() {\n return this.activeItem && this.activeItem.children.length > 0;\n }\n get isLoadMoreButton() {\n return this.activeItem && this.activeItem.loadMoreButton;\n }\n get focusableItem() {\n return this.activeItem || this.model.firstFocusableNode();\n }\n activate(item, shouldScroll = false) {\n if (!this.navigable || !item || this.isActive(nodeIndex(item))) {\n return;\n }\n this.isFocused = true;\n this.activeItem = item || this.activeItem;\n this.shouldScroll = shouldScroll;\n this.notifyMove();\n }\n activateParent(index) {\n this.activate(this.model.findParent(index));\n }\n activateIndex(index) {\n if (!index) {\n return;\n }\n this.activate(this.model.findNode(index));\n }\n activateClosest(index) {\n if (!index || nodeIndex(this.focusableItem) !== index) {\n return;\n }\n this.activeItem = this.model.closestNode(index);\n this.notifyMove();\n }\n activateFocusable() {\n if (this.activeItem) {\n return;\n }\n this.activeItem = this.model.firstVisibleNode();\n this.notifyMove();\n }\n deactivate() {\n if (!this.navigable || !this.isFocused) {\n return;\n }\n this.isFocused = false;\n this.notifyMove();\n }\n checkIndex(index) {\n if (!this.isDisabled(index)) {\n this.checks.next(index);\n }\n }\n selectIndex(index) {\n if (!this.isDisabled(index)) {\n this.selects.next(index);\n }\n }\n notifyLoadMore(index) {\n if (!isPresent(index)) {\n return;\n }\n this.loadMore.next(index);\n }\n isActive(index) {\n if (!index) {\n return false;\n }\n return this.isFocused && this.activeIndex === index;\n }\n isFocusable(index) {\n return nodeIndex(this.focusableItem) === index;\n }\n isDisabled(index) {\n if (!index) {\n return false;\n }\n return this.model.findNode(index).disabled;\n }\n registerItem(id, index, disabled, loadMoreButton = false, visible = true) {\n const itemAtIndex = this.model.findNode(index);\n if (isPresent(itemAtIndex)) {\n this.model.unregisterItem(itemAtIndex.id, itemAtIndex.index);\n if (this.isActive(index)) {\n this.deactivate();\n }\n }\n this.model.registerItem(id, index, disabled, loadMoreButton, visible);\n }\n updateItem(index, disabled, visible = true) {\n const itemAtIndex = this.model.findNode(index);\n if (isPresent(itemAtIndex)) {\n if (this.isActive(index)) {\n this.deactivate();\n }\n }\n itemAtIndex.disabled = disabled;\n itemAtIndex.visible = visible;\n }\n unregisterItem(id, index) {\n if (this.isActive(index)) {\n this.activateParent(index);\n }\n this.model.unregisterItem(id, index);\n }\n move(e) {\n if (!this.navigable) {\n return;\n }\n const moveAction = this.actions[e.keyCode];\n if (!moveAction) {\n return;\n }\n moveAction();\n e.preventDefault();\n }\n expand({ expand, intercept }) {\n const index = nodeIndex(this.activeItem);\n if (!index || intercept(index)) {\n return;\n }\n this.notifyExpand(expand);\n }\n moveToParent() {\n if (this.isActiveExpanded) {\n return false;\n }\n this.activate(this.model.findParent(nodeIndex(this.activeItem)));\n return true;\n }\n moveToFirstVisibleChild() {\n if (!this.isActiveExpanded) {\n return false;\n }\n this.activate(this.model.findVisibleChild(nodeIndex(this.activeItem)));\n return true;\n }\n notifyExpand(expand) {\n this.expands.next(this.navigationState(expand));\n }\n notifyMove() {\n this.moves.next(this.navigationState());\n }\n navigationState(expand = false) {\n return ({ expand, index: this.activeIndex, isFocused: this.isFocused, shouldScroll: this.shouldScroll });\n }\n handleEnter() {\n if (!this.navigable) {\n return;\n }\n if (this.isLoadMoreButton) {\n this.notifyLoadMore(this.activeIndex);\n }\n else {\n this.selectIndex(this.activeIndex);\n }\n }\n handleSpace() {\n if (!this.navigable) {\n return;\n }\n if (this.isLoadMoreButton) {\n this.notifyLoadMore(this.activeIndex);\n }\n else {\n this.checkIndex(this.activeIndex);\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass NodeChildrenService {\n constructor() {\n this.changes = new Subject();\n }\n childrenLoaded(item, children) {\n this.changes.next({ item, children });\n }\n}\nNodeChildrenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeChildrenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNodeChildrenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeChildrenService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeChildrenService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Represents the template for the TreeView nodes ([more information and example]({% slug nodetemplate_treeview %})).\n * The template helps to customize the content of the nodes. To define the node template, nest an ``\n * tag with the `kendoTreeViewNodeTemplate` directive inside a `` tag.\n *\n *\n * The node data item and its hierarchical index are available as context variables:\n *\n * - `let-dataItem` (`any`) - available as implicit context variable\n * - `let-index=\"index\"` (`string`)\n *\n *\n * @example\n * ```ts\n *\n * import { Component } from '@angular/core';\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ index }}: {{ dataItem.text }}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * {\n * text: \"Inbox\",\n * items: [{ text: \"Read Mail\" }]\n * },\n * {\n * text: \"Drafts\"\n * },\n * {\n * text: \"Search Folders\",\n * items: [\n * { text: \"Categorized Mail\" },\n * { text: \"Large Mail\" },\n * { text: \"Unread Mail\"}\n * ]\n * },\n * { text: \"Settings\" }\n * ];\n * }\n *\n * ```\n */\nclass NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNodeTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNodeTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NodeTemplateDirective, selector: \"[kendoTreeViewNodeTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewNodeTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for the TreeView load more buttons.\n * To define a button template, nest an ``\n * tag with the `kendoTreeViewLoadMoreButtonTemplate` directive inside a `` tag\n * ([see example]({% slug loadmorebutton_treeview %}#toc-button-template)).\n *\n * The hierarchical index of the load more button node is available as a context variable:\n *\n * - `let-index=\"index\"` (`string`)\n */\nclass LoadMoreButtonTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nLoadMoreButtonTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreButtonTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nLoadMoreButtonTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadMoreButtonTemplateDirective, selector: \"[kendoTreeViewLoadMoreButtonTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreButtonTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewLoadMoreButtonTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n *\n * An injection token used by the data binding directives to interface with\n * the TreeView or the DropDownTree components.\n */\nclass DataBoundComponent {\n}\nDataBoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDataBoundComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBoundComponent });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataBoundComponent, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n *\n * An injection token used by the expand-directive to interface with\n * the TreeView or the DropDownTree components.\n */\nclass ExpandableComponent {\n}\nExpandableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandableComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nExpandableComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandableComponent });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandableComponent, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass SelectionService {\n constructor() {\n this.changes = new Subject();\n }\n isFirstSelected(index) {\n return this.firstIndex === index;\n }\n setFirstSelected(index, selected) {\n if (this.firstIndex === index && selected === false) {\n this.firstIndex = null;\n }\n else if (!this.firstIndex && selected) {\n this.firstIndex = index;\n }\n }\n select(index, dataItem) {\n this.changes.next({ dataItem, index });\n }\n}\nSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }] });\n\nconst INDEX_REGEX = /\\d+$/;\n/**\n * @hidden\n */\nclass TreeViewLookupService {\n constructor() {\n this.map = new Map();\n }\n reset() {\n this.map.clear();\n }\n registerItem(item, parent) {\n const currentLookup = {\n children: [],\n item,\n parent: this.item(nodeIndex(parent))\n };\n this.map.set(item.index, currentLookup);\n }\n registerChildren(index, children) {\n const item = this.item(index);\n if (!item) {\n return;\n }\n item.children = children;\n }\n unregisterItem(index, dataItem) {\n const current = this.item(index);\n if (current && current.item.dataItem === dataItem) {\n this.map.delete(index);\n if (current.parent && current.parent.children) {\n current.parent.children = current.parent.children.filter(item => item.dataItem !== dataItem);\n }\n }\n }\n replaceItem(index, item, parent) {\n if (!item) {\n return;\n }\n this.unregisterItem(index, item.dataItem);\n this.registerItem(item, parent);\n this.addToParent(item, parent);\n }\n itemLookup(index) {\n const item = this.item(index);\n if (!item) {\n return null;\n }\n return {\n children: this.mapChildren(item.children),\n item: item.item,\n parent: item.parent\n };\n }\n hasItem(index) {\n return this.map.has(index);\n }\n item(index) {\n return this.map.get(index) || null;\n }\n addToParent(item, parent) {\n if (parent) {\n const parentItem = this.item(parent.index);\n const index = parseInt(INDEX_REGEX.exec(item.index)[0], 10);\n parentItem.children = parentItem.children || [];\n parentItem.children.splice(index, 0, item);\n }\n }\n mapChildren(children = []) {\n return children.map(c => {\n const { item, parent, children } = this.item(c.index);\n return {\n children: this.mapChildren(children),\n item,\n parent\n };\n });\n }\n}\nTreeViewLookupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewLookupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTreeViewLookupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewLookupService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewLookupService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n *\n * Represents the CheckBox component of the Kendo UI TreeView for Angular.\n *\n */\nclass CheckBoxComponent {\n constructor(element, renderer, changeDetector) {\n this.element = element;\n this.renderer = renderer;\n this.changeDetector = changeDetector;\n /**\n * Specifies the [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) of the component.\n */\n this.id = `_${guid()}`;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Specifies the size of the component.\n */\n this.size = 'medium';\n /**\n * Fires when the user changes the check state of the component.\n */\n this.checkStateChange = new EventEmitter();\n this.checkState = 'none';\n }\n //XXX: implement ComponentValueAccessor\n //XXX: focus/blur methods\n get classWrapper() { return true; }\n get indeterminate() {\n return this.checkState === 'indeterminate';\n }\n get checked() {\n return this.checkState === 'checked';\n }\n get checkBoxClasses() {\n return `k-checkbox ${this.size ? getSizeClass('checkbox', this.size) : ''} k-rounded-md`;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.element.nativeElement, \"tabindex\");\n }\n ngDoCheck() {\n this.checkState = this.isChecked(this.node, this.index);\n }\n handleChange(e) {\n const state = e.target.checked ? 'checked' : 'none';\n // update the View State so that Angular updates the input if the isChecked value is the same\n this.checkState = state;\n this.changeDetector.detectChanges();\n this.checkStateChange.emit(state);\n }\n}\nCheckBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nCheckBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckBoxComponent, selector: \"kendo-checkbox\", inputs: { id: \"id\", isChecked: \"isChecked\", node: \"node\", index: \"index\", labelText: \"labelText\", tabindex: \"tabindex\", size: \"size\" }, outputs: { checkStateChange: \"checkStateChange\" }, host: { properties: { \"class.k-checkbox-wrapper\": \"this.classWrapper\" } }, ngImport: i0, template: `\n \n {{labelText}}\n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-checkbox',\n template: `\n \n {{labelText}}\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { classWrapper: [{\n type: HostBinding,\n args: ['class.k-checkbox-wrapper']\n }], id: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], node: [{\n type: Input\n }], index: [{\n type: Input\n }], labelText: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], checkStateChange: [{\n type: Output\n }] } });\n\nconst buildItem = (index, dataItem) => ({ dataItem, index });\nlet id = 0;\nconst TREE_ITEM_ROLE = 'treeitem';\nconst BUTTON_ROLE = 'button';\n/**\n * @hidden\n *\n * A directive which manages the expanded state of the TreeView.\n */\nclass TreeViewItemDirective {\n constructor(element, expandService, navigationService, selectionService, lookupService, renderer, ib) {\n this.element = element;\n this.expandService = expandService;\n this.navigationService = navigationService;\n this.selectionService = selectionService;\n this.lookupService = lookupService;\n this.renderer = renderer;\n this.ib = ib;\n this.role = TREE_ITEM_ROLE;\n this.loadOnDemand = true;\n this.isDisabled = false;\n this.isVisible = true;\n this.ariaChecked = 'false';\n this.id = id++;\n this.isInitialized = false;\n this.subscriptions = [];\n this.subscribe();\n }\n set isChecked(checked) {\n if (checked === 'checked') {\n this.ariaChecked = 'true';\n }\n else if (checked === 'indeterminate') {\n this.ariaChecked = 'mixed';\n }\n else {\n this.ariaChecked = 'false';\n }\n }\n get isExpanded() {\n return this._isExpanded || false;\n }\n set isExpanded(isExpanded) {\n this._isExpanded = isExpanded;\n }\n get isSelected() {\n return this._isSelected || false;\n }\n set isSelected(isSelected) {\n this._isSelected = isSelected;\n }\n get isButton() {\n return this.role === BUTTON_ROLE;\n }\n get treeItem() {\n return buildItem(this.index, this.dataItem);\n }\n get parentTreeItem() {\n return this.parentDataItem ? buildItem(this.parentIndex, this.parentDataItem) : null;\n }\n ngOnInit() {\n if (this.loadOnDemand && !this.isButton) {\n this.lookupService.registerItem(this.treeItem, this.parentTreeItem);\n }\n this.registerNavigationItem();\n this.isInitialized = true;\n this.setAttribute('role', this.role);\n this.setAriaAttributes();\n this.updateTabIndex();\n }\n ngOnChanges(changes) {\n const { index } = changes;\n if (anyChanged(['index', 'checkable', 'isChecked', 'expandable', 'isExpanded', 'selectable', 'isSelected'], changes)) {\n this.setAriaAttributes();\n }\n if (this.loadOnDemand && !this.isButton) {\n this.moveLookupItem(changes);\n }\n this.moveNavigationItem(index);\n if (anyChanged(['isDisabled', 'isVisible'], changes)) {\n this.updateNodeAvailability();\n }\n }\n ngOnDestroy() {\n this.navigationService.unregisterItem(this.id, this.index);\n if (this.loadOnDemand && !this.isButton) {\n this.lookupService.unregisterItem(this.index, this.dataItem);\n }\n this.subscriptions = this.subscriptions.reduce((list, callback) => (callback.unsubscribe(), list), []);\n }\n subscribe() {\n this.subscriptions = [\n this.navigationService.moves\n .subscribe((navState) => {\n this.updateTabIndex();\n this.focusItem(navState.shouldScroll);\n }),\n this.navigationService.expands\n .pipe(filter(({ index }) => index === this.index && !this.isDisabled))\n .subscribe(({ expand }) => this.expand(expand))\n ];\n }\n registerNavigationItem() {\n this.navigationService.registerItem(this.id, this.index, this.isDisabled, this.isButton, this.isVisible);\n this.activateItem();\n }\n activateItem() {\n if (this.isDisabled) {\n return;\n }\n const navigationService = this.navigationService;\n const selectionService = this.selectionService;\n const index = this.index;\n selectionService.setFirstSelected(index, this.isSelected);\n if (!navigationService.isActive(index) && selectionService.isFirstSelected(index)) {\n navigationService.activateIndex(index);\n }\n }\n expand(shouldExpand) {\n this.expandService[shouldExpand ? 'expand' : 'collapse'](this.index, this.dataItem);\n }\n isFocusable() {\n return !this.isDisabled && this.navigationService.isFocusable(this.index);\n }\n focusItem(scrollIntoView = false) {\n if (this.isInitialized && this.navigationService.isActive(this.index)) {\n this.element.nativeElement.focus({ preventScroll: !scrollIntoView });\n }\n }\n moveLookupItem(changes = {}) {\n const { dataItem, index, parentDataItem, parentIndex } = changes;\n if ((index && index.firstChange) || //skip first change\n (!dataItem && !index && !parentDataItem && !parentIndex)) {\n return;\n }\n const oldIndex = (index || {}).previousValue || this.index;\n this.lookupService.replaceItem(oldIndex, this.treeItem, this.parentTreeItem);\n }\n moveNavigationItem(indexChange = {}) {\n const { currentValue, firstChange, previousValue } = indexChange;\n if (!firstChange && isPresent(currentValue) && isPresent(previousValue)) {\n this.navigationService.unregisterItem(this.id, previousValue);\n this.navigationService.registerItem(this.id, currentValue, this.isDisabled, this.isButton);\n }\n }\n updateNodeAvailability() {\n const service = this.navigationService;\n if (this.isDisabled || !this.isVisible) {\n service.activateClosest(this.index); // activate before updating the item\n }\n else {\n service.activateFocusable();\n }\n service.updateItem(this.index, this.isDisabled, this.isVisible);\n }\n setAriaAttributes() {\n this.setAttribute('aria-level', this.ib.level(this.index).toString());\n // don't render attributes when the component configuration doesn't allow the specified state\n this.setAttribute('aria-expanded', this.expandable ? this.isExpanded.toString() : null);\n this.setAttribute('aria-selected', this.selectable ? this.isSelected.toString() : null);\n this.setAttribute('aria-checked', this.checkable ? this.ariaChecked : null);\n }\n updateTabIndex() {\n this.setAttribute('tabIndex', this.isFocusable() ? '0' : '-1');\n }\n setAttribute(attr, value) {\n if (!isPresent(value)) {\n this.renderer.removeAttribute(this.element.nativeElement, attr);\n return;\n }\n this.renderer.setAttribute(this.element.nativeElement, attr, value);\n }\n}\nTreeViewItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemDirective, deps: [{ token: i0.ElementRef }, { token: ExpandStateService }, { token: NavigationService }, { token: SelectionService }, { token: TreeViewLookupService }, { token: i0.Renderer2 }, { token: IndexBuilderService }], target: i0.ɵɵFactoryTarget.Directive });\nTreeViewItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewItemDirective, selector: \"[kendoTreeViewItem]\", inputs: { dataItem: \"dataItem\", index: \"index\", parentDataItem: \"parentDataItem\", parentIndex: \"parentIndex\", role: \"role\", loadOnDemand: \"loadOnDemand\", checkable: \"checkable\", selectable: \"selectable\", expandable: \"expandable\", isChecked: \"isChecked\", isDisabled: \"isDisabled\", isVisible: \"isVisible\", isExpanded: \"isExpanded\", isSelected: \"isSelected\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewItem]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ExpandStateService }, { type: NavigationService }, { type: SelectionService }, { type: TreeViewLookupService }, { type: i0.Renderer2 }, { type: IndexBuilderService }]; }, propDecorators: { dataItem: [{\n type: Input\n }], index: [{\n type: Input\n }], parentDataItem: [{\n type: Input\n }], parentIndex: [{\n type: Input\n }], role: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], checkable: [{\n type: Input\n }], selectable: [{\n type: Input\n }], expandable: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isSelected: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LoadingIndicatorDirective {\n constructor(expandService, loadingService, cd) {\n this.expandService = expandService;\n this.loadingService = loadingService;\n this.cd = cd;\n this._loading = false;\n }\n get loading() {\n return this._loading;\n }\n set loading(value) {\n this._loading = value;\n this.cd.markForCheck();\n }\n ngOnInit() {\n const loadingNotifications = this.loadingService\n .changes\n .pipe(filter(index => index === this.index));\n this.subscription = this.expandService\n .changes\n .pipe(filter(({ index }) => index === this.index), tap(({ expand }) => {\n if (!expand && this.loading) {\n this.loading = false;\n }\n }), filter(({ expand }) => expand), switchMap(x => of(x).pipe(delay(100), takeUntil(loadingNotifications))))\n .subscribe(() => this.loading = true);\n this.subscription.add(loadingNotifications.subscribe(() => this.loading = false));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nLoadingIndicatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingIndicatorDirective, deps: [{ token: ExpandStateService }, { token: LoadingNotificationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nLoadingIndicatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadingIndicatorDirective, selector: \"[kendoTreeViewLoading]\", inputs: { index: [\"kendoTreeViewLoading\", \"index\"] }, host: { properties: { \"class.k-i-loading\": \"this.loading\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadingIndicatorDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewLoading]' }]\n }], ctorParameters: function () { return [{ type: ExpandStateService }, { type: LoadingNotificationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { loading: [{\n type: HostBinding,\n args: [\"class.k-i-loading\"]\n }], index: [{\n type: Input,\n args: [\"kendoTreeViewLoading\"]\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the expanded state of the TreeView.\n */\nclass TreeViewItemContentDirective {\n constructor(element, navigationService, selectionService, renderer) {\n this.element = element;\n this.navigationService = navigationService;\n this.selectionService = selectionService;\n this.renderer = renderer;\n this.initialSelection = false;\n this.isSelected = isSelected;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.navigationService.moves\n .subscribe(this.updateFocusClass.bind(this)));\n this.subscriptions.add(this.navigationService.selects\n .pipe(filter((index) => index === this.index))\n .subscribe((index) => this.selectionService.select(index, this.dataItem)));\n this.subscriptions.add(this.selectionService.changes\n .subscribe(() => {\n this.updateSelectionClass(this.isSelected(this.dataItem, this.index));\n }));\n }\n ngOnChanges(changes) {\n if (changes.initialSelection) {\n this.updateSelectionClass(this.initialSelection);\n }\n if (changes.index) {\n this.updateFocusClass();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n updateFocusClass() {\n this.render(this.navigationService.isActive(this.index), 'k-focus');\n }\n updateSelectionClass(selected) {\n this.render(selected, 'k-selected');\n }\n render(addClass, className) {\n const action = addClass ? 'addClass' : 'removeClass';\n this.renderer[action](this.element.nativeElement, className);\n }\n}\nTreeViewItemContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemContentDirective, deps: [{ token: i0.ElementRef }, { token: NavigationService }, { token: SelectionService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nTreeViewItemContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewItemContentDirective, selector: \"[kendoTreeViewItemContent]\", inputs: { dataItem: \"dataItem\", index: \"index\", initialSelection: \"initialSelection\", isSelected: \"isSelected\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewItemContentDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewItemContent]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NavigationService }, { type: SelectionService }, { type: i0.Renderer2 }]; }, propDecorators: { dataItem: [{\n type: Input\n }], index: [{\n type: Input\n }], initialSelection: [{\n type: Input\n }], isSelected: [{\n type: Input\n }] } });\n\nconst TOP_ITEM = 'k-treeview-top';\nconst MID_ITEM = 'k-treeview-mid';\nconst BOT_ITEM = 'k-treeview-bot';\n/**\n * @hidden\n */\nclass TreeViewGroupComponent {\n constructor(expandService, loadingService, indexBuilder, treeViewLookupService, navigationService, nodeChildrenService, dataChangeNotification, changeDetectorRef) {\n this.expandService = expandService;\n this.loadingService = loadingService;\n this.indexBuilder = indexBuilder;\n this.treeViewLookupService = treeViewLookupService;\n this.navigationService = navigationService;\n this.nodeChildrenService = nodeChildrenService;\n this.dataChangeNotification = dataChangeNotification;\n this.changeDetectorRef = changeDetectorRef;\n this.kGroupClass = true;\n this.role = 'group';\n this.loadOnDemand = true;\n this.textField = \"\";\n this.size = 'medium';\n this.initialNodesLoaded = false;\n this.loadingMoreNodes = false;\n this.isItemExpandable = (node, index) => this.expandDisabledNodes || !this.isItemDisabled(node, index);\n this._data = [];\n this.singleRecordSubscriptions = new Subscription();\n this.isChecked = () => 'none';\n this.isDisabled = () => false;\n this.isExpanded = () => false;\n this.isVisible = () => true;\n this.isSelected = () => false;\n this.children = () => of([]);\n this.hasChildren = () => false;\n }\n get moreNodesAvailable() {\n if (!isPresent(this.loadMoreService) || this.data.length === 0) {\n return false;\n }\n return this.pageSize < this.totalNodesCount;\n }\n get pageSize() {\n if (!isPresent(this.loadMoreService)) {\n return null;\n }\n return this.loadMoreService.getGroupSize(this.parentDataItem);\n }\n set pageSize(pageSize) {\n this.loadMoreService.setGroupSize(this.parentDataItem, pageSize);\n }\n get data() {\n if (isPresent(this.pageSize)) {\n const normalizedSizeValue = this.pageSize > 0 ? this.pageSize : 0;\n return this._data.slice(0, normalizedSizeValue);\n }\n return this._data;\n }\n set data(data) {\n this._data = data;\n this.registerLoadedNodes(this.data);\n }\n get loadMoreButtonIndex() {\n if (!this.loadMoreService) {\n return null;\n }\n return this.nodeIndex(this.data.length);\n }\n /**\n * Represents the total number of nodes for the current level.\n */\n get totalNodesCount() {\n if (!this.loadMoreService) {\n return this.data.length;\n }\n return this.loadMoreService.getTotalNodesCount(this.parentDataItem, this._data.length);\n }\n get hasTemplate() {\n return isPresent(this.nodeTemplateRef);\n }\n expandNode(index, dataItem, expand) {\n if (expand) {\n this.expandService.expand(index, dataItem);\n }\n else {\n this.expandService.collapse(index, dataItem);\n }\n }\n checkNode(index) {\n this.navigationService.checkIndex(index);\n this.navigationService.activateIndex(index);\n }\n nodeIndex(index) {\n return this.indexBuilder.nodeIndex(index.toString(), this.parentIndex);\n }\n nodeText(dataItem) {\n const textField = isArray(this.textField) ? this.textField[0] : this.textField;\n return getter(textField)(dataItem);\n }\n ngOnDestroy() {\n if (isPresent(this.nodesSubscription)) {\n this.nodesSubscription.unsubscribe();\n }\n if (isPresent(this.loadMoreNodesSubscription)) {\n this.loadMoreNodesSubscription.unsubscribe();\n }\n this.singleRecordSubscriptions.unsubscribe();\n }\n ngOnInit() {\n this.subscribeToNodesChange();\n this.singleRecordSubscriptions.add(this.dataChangeNotification\n .changes\n .subscribe(this.subscribeToNodesChange.bind(this)));\n this.singleRecordSubscriptions.add(this.navigationService.loadMore\n .pipe(filter(index => index === this.loadMoreButtonIndex))\n .subscribe(this.loadMoreNodes.bind(this)));\n }\n ngOnChanges(changes) {\n if (changes.parentIndex && this.loadOnDemand) {\n this.setNodeChildren(this.mapToTreeItem(this.data));\n }\n }\n fetchChildren(node, index) {\n return this.children(node)\n .pipe(catchError(() => {\n this.loadingService.notifyLoaded(index);\n return EMPTY;\n }), tap(() => this.loadingService.notifyLoaded(index)));\n }\n get nextFields() {\n if (isArray(this.textField)) {\n return this.textField.length > 1 ? this.textField.slice(1) : this.textField;\n }\n return [this.textField];\n }\n loadMoreNodes() {\n if (isPresent(this.loadMoreService.loadMoreNodes)) {\n this.fetchMoreNodes();\n }\n else {\n this.loadMoreLocalNodes();\n }\n }\n /**\n * @hidden\n */\n isItemDisabled(node, index) {\n return (this.disabled && !this.disableParentNodesOnly) || this.isDisabled(node, this.nodeIndex(index));\n }\n /**\n * @hidden\n */\n setItemClasses(dataLength, index) {\n if (dataLength === 1) {\n return this.parentIndex ? BOT_ITEM : `${TOP_ITEM} ${BOT_ITEM}`;\n }\n if (index === 0) {\n return TOP_ITEM;\n }\n if (index > 0 && index < dataLength - 1) {\n return MID_ITEM;\n }\n return index === this.totalNodesCount - 1 ? BOT_ITEM : MID_ITEM;\n }\n loadMoreLocalNodes() {\n const initialLoadMoreButtonIndex = this.loadMoreButtonIndex;\n this.pageSize += this.loadMoreService.getInitialPageSize(this.parentDataItem);\n this.registerLoadedNodes(this.data);\n // forces the new items to be registered before the focus is changed\n this.changeDetectorRef.detectChanges();\n this.reselectItemAt(initialLoadMoreButtonIndex);\n }\n fetchMoreNodes() {\n if (this.loadingMoreNodes) {\n return;\n }\n this.loadingMoreNodes = true;\n if (isPresent(this.loadMoreNodesSubscription)) {\n this.loadMoreNodesSubscription.unsubscribe();\n }\n this.loadMoreNodesSubscription = this.loadMoreService\n .loadMoreNodes({\n dataItem: this.parentDataItem,\n skip: this.data.length,\n take: this.loadMoreService.getInitialPageSize(this.parentDataItem)\n })\n .pipe(finalize(() => this.loadingMoreNodes = false))\n .subscribe(items => {\n if (!(Array.isArray(items) && items.length > 0)) {\n return;\n }\n const initialLoadMoreButtonIndex = this.loadMoreButtonIndex;\n this.pageSize += items.length;\n this.data = this.data.concat(items);\n if (this.navigationService.isActive(initialLoadMoreButtonIndex)) {\n // forces the new items to be registered before the focus is changed\n this.changeDetectorRef.detectChanges();\n this.reselectItemAt(initialLoadMoreButtonIndex);\n }\n });\n }\n setNodeChildren(children) {\n this.treeViewLookupService.registerChildren(this.parentIndex, children);\n }\n mapToTreeItem(data) {\n if (!this.parentIndex) {\n return [];\n }\n return data.map((dataItem, idx) => ({ dataItem, index: this.nodeIndex(idx) }));\n }\n emitChildrenLoaded(children) {\n if (!this.parentIndex) {\n return;\n }\n // ignores the registered load-more button\n const contentChildren = children.filter(item => item.dataItem);\n this.nodeChildrenService.childrenLoaded({ dataItem: this.parentDataItem, index: this.parentIndex }, contentChildren);\n }\n subscribeToNodesChange() {\n if (this.nodesSubscription) {\n this.nodesSubscription.unsubscribe();\n }\n this.nodesSubscription = this.nodes(this.parentDataItem, this.parentIndex)\n .subscribe(data => {\n this.data = data;\n this.initialNodesLoaded = true;\n });\n }\n reselectItemAt(index) {\n if (!isPresent(index)) {\n return;\n }\n // make sure the old index is cleared first\n this.navigationService.deactivate();\n this.navigationService.activateIndex(index);\n }\n registerLoadedNodes(nodes = []) {\n const mappedChildren = this.mapToTreeItem(nodes);\n if (this.loadOnDemand) {\n this.setNodeChildren(mappedChildren);\n }\n this.emitChildrenLoaded(mappedChildren);\n }\n}\nTreeViewGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewGroupComponent, deps: [{ token: ExpandStateService }, { token: LoadingNotificationService }, { token: IndexBuilderService }, { token: TreeViewLookupService }, { token: NavigationService }, { token: NodeChildrenService }, { token: DataChangeNotificationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTreeViewGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewGroupComponent, selector: \"[kendoTreeViewGroup]\", inputs: { checkboxes: \"checkboxes\", expandIcons: \"expandIcons\", disabled: \"disabled\", selectable: \"selectable\", touchActions: \"touchActions\", disableParentNodesOnly: \"disableParentNodesOnly\", loadOnDemand: \"loadOnDemand\", trackBy: \"trackBy\", nodes: \"nodes\", textField: \"textField\", parentDataItem: \"parentDataItem\", parentIndex: \"parentIndex\", nodeTemplateRef: \"nodeTemplateRef\", loadMoreButtonTemplateRef: \"loadMoreButtonTemplateRef\", loadMoreService: \"loadMoreService\", size: \"size\", expandDisabledNodes: \"expandDisabledNodes\", isChecked: \"isChecked\", isDisabled: \"isDisabled\", isExpanded: \"isExpanded\", isVisible: \"isVisible\", isSelected: \"isSelected\", children: \"children\", hasChildren: \"hasChildren\" }, host: { properties: { \"class.k-treeview-group\": \"this.kGroupClass\", \"attr.role\": \"this.role\" } }, usesOnChanges: true, ngImport: i0, template: `\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n {{nodeText(node)}}\n \n \n \n \n
\n \n \n \n \n
\n \n \n \n \n \n \n \n Load more\n \n \n \n
\n \n `, isInline: true, components: [{ type: CheckBoxComponent, selector: \"kendo-checkbox\", inputs: [\"id\", \"isChecked\", \"node\", \"index\", \"labelText\", \"tabindex\", \"size\"], outputs: [\"checkStateChange\"] }, { type: TreeViewGroupComponent, selector: \"[kendoTreeViewGroup]\", inputs: [\"checkboxes\", \"expandIcons\", \"disabled\", \"selectable\", \"touchActions\", \"disableParentNodesOnly\", \"loadOnDemand\", \"trackBy\", \"nodes\", \"textField\", \"parentDataItem\", \"parentIndex\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"loadMoreService\", \"size\", \"expandDisabledNodes\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isVisible\", \"isSelected\", \"children\", \"hasChildren\"] }], directives: [{ type: i9.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TreeViewItemDirective, selector: \"[kendoTreeViewItem]\", inputs: [\"dataItem\", \"index\", \"parentDataItem\", \"parentIndex\", \"role\", \"loadOnDemand\", \"checkable\", \"selectable\", \"expandable\", \"isChecked\", \"isDisabled\", \"isVisible\", \"isExpanded\", \"isSelected\"] }, { type: i9.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: LoadingIndicatorDirective, selector: \"[kendoTreeViewLoading]\", inputs: [\"kendoTreeViewLoading\"] }, { type: TreeViewItemContentDirective, selector: \"[kendoTreeViewItemContent]\", inputs: [\"dataItem\", \"index\", \"initialSelection\", \"isSelected\"] }, { type: i9.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i9.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i9.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i9.NgSwitchDefault, selector: \"[ngSwitchDefault]\" }], animations: [\n trigger('toggle', [\n transition('void => *', [\n style({ height: 0 }),\n animate('0.1s ease-in', style({ height: \"*\" }))\n ]),\n transition('* => void', [\n style({ height: \"*\" }),\n animate('0.1s ease-in', style({ height: 0 }))\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewGroupComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('toggle', [\n transition('void => *', [\n style({ height: 0 }),\n animate('0.1s ease-in', style({ height: \"*\" }))\n ]),\n transition('* => void', [\n style({ height: \"*\" }),\n animate('0.1s ease-in', style({ height: 0 }))\n ])\n ])\n ],\n // eslint-disable-next-line\n selector: '[kendoTreeViewGroup]',\n template: `\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n {{nodeText(node)}}\n \n \n \n \n
\n \n \n \n \n
\n \n \n \n \n \n \n \n Load more\n \n \n \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: ExpandStateService }, { type: LoadingNotificationService }, { type: IndexBuilderService }, { type: TreeViewLookupService }, { type: NavigationService }, { type: NodeChildrenService }, { type: DataChangeNotificationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { kGroupClass: [{\n type: HostBinding,\n args: [\"class.k-treeview-group\"]\n }], role: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], checkboxes: [{\n type: Input\n }], expandIcons: [{\n type: Input\n }], disabled: [{\n type: Input\n }], selectable: [{\n type: Input\n }], touchActions: [{\n type: Input\n }], disableParentNodesOnly: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], nodes: [{\n type: Input\n }], textField: [{\n type: Input\n }], parentDataItem: [{\n type: Input\n }], parentIndex: [{\n type: Input\n }], nodeTemplateRef: [{\n type: Input\n }], loadMoreButtonTemplateRef: [{\n type: Input\n }], loadMoreService: [{\n type: Input\n }], size: [{\n type: Input\n }], expandDisabledNodes: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], children: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }] } });\n\nconst LOAD_MORE_DOC_LINK$1 = 'http://www.telerik.com/kendo-angular-ui/components/treeview/load-more-button/';\nconst providers = [\n ExpandStateService,\n IndexBuilderService,\n TreeViewLookupService,\n LoadingNotificationService,\n NodeChildrenService,\n NavigationService,\n SelectionService,\n DataChangeNotificationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.treeview'\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => TreeViewComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => TreeViewComponent)\n }\n];\n/**\n * Represents the [Kendo UI TreeView component for Angular]({% slug overview_treeview %}).\n *\n * @example\n * {% meta height:450 %}\n * {% embed_file get-started/app.component.ts preview %}\n * {% embed_file get-started/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n */\nclass TreeViewComponent {\n constructor(element, changeDetectorRef, expandService, navigationService, nodeChildrenService, selectionService, treeViewLookupService, ngZone, renderer, dataChangeNotification, localization) {\n this.element = element;\n this.changeDetectorRef = changeDetectorRef;\n this.expandService = expandService;\n this.navigationService = navigationService;\n this.nodeChildrenService = nodeChildrenService;\n this.selectionService = selectionService;\n this.treeViewLookupService = treeViewLookupService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.dataChangeNotification = dataChangeNotification;\n this.localization = localization;\n this.classNames = true;\n this.role = 'tree';\n /**\n * The hint which is displayed when the component is empty.\n */\n this.filterInputPlaceholder = \"\";\n /** @hidden */\n this.fetchNodes = () => this.data;\n /**\n * Fires when the children of the expanded node are loaded.\n */\n this.childrenLoaded = new EventEmitter();\n /**\n * Fires when the user blurs the component.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the user focuses the component.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when the user expands a TreeView node.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the user collapses a TreeView node.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires just before the dragging of the node starts ([see example]({% slug draganddrop_treeview %}#toc-setup)). This event is preventable.\n * If you prevent the event default, no drag hint will be created and the subsequent drag-related events will not be fired.\n */\n this.nodeDragStart = new EventEmitter();\n /**\n * Fires when an item is being dragged ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n */\n this.nodeDrag = new EventEmitter();\n /**\n * Emits when the built-in filtering mechanism in the data-binding directives updates the node's visibility.\n * Used for the built-in auto-expand functionalities of the component and available for custom implementations.\n */\n this.filterStateChange = new EventEmitter();\n /**\n * Fires on the target TreeView when a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * This event is preventable. If you prevent the event default (`event.preventDefualt()`) or invalidate its state (`event.setValid(false)`),\n * the `addItem` and `removeItem` events will not be triggered.\n *\n * Both operations cancel the default drop operation, but the indication to the user is different. `event.setValid(false)` indicates that the operation was\n * unsuccessful by animating the drag clue to its original position. `event.preventDefault()` simply removes the clue, as if it has been dropped successfully.\n * As a general rule, use `preventDefault` to manually handle the add and remove operations, and `setValid(false)` to indicate the operation was unsuccessful.\n */\n this.nodeDrop = new EventEmitter();\n /**\n * Fires on the source TreeView after the dragged item has been dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n */\n this.nodeDragEnd = new EventEmitter();\n /**\n * Fires after a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * Called on the TreeView where the item is dropped.\n */\n this.addItem = new EventEmitter();\n /**\n * Fires after a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * Called on the TreeView from where the item is dragged.\n */\n this.removeItem = new EventEmitter();\n /**\n * Fires when the user selects a TreeView node checkbox\n * ([see example]({% slug checkboxes_treeview %}#toc-modifying-the-checked-state)).\n */\n this.checkedChange = new EventEmitter();\n /**\n * Fires when the user selects a TreeView node\n * ([see example]({% slug selection_treeview %}#toc-modifying-the-selection)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires when the user clicks a TreeView node.\n */\n this.nodeClick = new EventEmitter();\n /**\n * Fires when the user double clicks a TreeView node.\n */\n this.nodeDblClick = new EventEmitter();\n /**\n * A function that defines how to track node changes.\n * By default, the TreeView tracks the nodes by data item object reference.\n *\n * @example\n * ```ts\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n *
\n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * { text: \"Furniture\" },\n * { text: \"Decor\" }\n * ];\n *\n * public trackBy(index: number, item: any): any {\n * return item.text;\n * }\n * }\n * ```\n */\n this.trackBy = trackBy;\n /**\n * A function which determines if a specific node is disabled.\n */\n this.isDisabled = isDisabled;\n /**\n * A callback which determines whether a TreeView node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isVisible = isVisible;\n /**\n * Determines whether the TreeView keyboard navigable is enabled.\n */\n this.navigable = true;\n /**\n * A function which provides the child nodes for a given parent node\n * ([see example]({% slug databinding_treeview %})).\n */\n this.children = () => of([]);\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default true\n */\n this.loadOnDemand = true;\n /**\n * Renders the built-in input element for filtering the TreeView.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the TreeView manually]({% slug filtering_treeview %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoTreeViewHierarchyBinding`]({% slug api_treeview_hierarchybindingdirective %}) and [`kendoTreeViewFlatDataBinding`]({% slug api_treeview_flatdatabindingdirective %}) directives.\n */\n this.filterable = false;\n /**\n * Sets an initial value of the built-in input element used for filtering.\n */\n this.filter = '';\n /**\n * Indicates whether only parent nodes should be disabled or their child nodes as well\n * @default false\n */\n this.disableParentNodesOnly = false;\n this.checkboxes = false;\n this.expandIcons = false;\n this.selectable = false;\n this.touchActions = true;\n this.isActive = false;\n this.data = new BehaviorSubject([]);\n this._animate = true;\n this._size = 'medium';\n this.subscriptions = new Subscription();\n this.domSubscriptions = [];\n validatePackage(packageMetadata);\n }\n /** @hidden */\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Determines whether the content animation is enabled.\n */\n set animate(value) {\n this._animate = value;\n }\n get animate() {\n return !this._animate;\n }\n /**\n * @hidden\n *\n * Defines the template for each node.\n * Takes precedence over nested templates in the TreeView tag.\n */\n set nodeTemplateRef(template) {\n this._nodeTemplateRef = template;\n }\n get nodeTemplateRef() {\n return this._nodeTemplateRef || this.nodeTemplateQuery;\n }\n /**\n * @hidden\n *\n * Defines the template for each load-more button.\n * Takes precedence over nested templates in the TreeView tag.\n */\n set loadMoreButtonTemplateRef(template) {\n this._loadMoreButtonTemplateRef = template;\n }\n get loadMoreButtonTemplateRef() {\n return this._loadMoreButtonTemplateRef || this.loadMoreButtonTemplateQuery;\n }\n /**\n * The nodes which will be displayed by the TreeView\n * ([see example]({% slug databinding_treeview %})).\n */\n set nodes(value) {\n this.data.next(value || []);\n this.dataChangeNotification.notify();\n }\n get nodes() {\n return this.data.value;\n }\n /**\n * A function which determines if a specific node has child nodes\n * ([see example]({% slug databinding_treeview %})).\n */\n get hasChildren() {\n return this._hasChildren || hasChildren;\n }\n set hasChildren(callback) {\n this._hasChildren = callback;\n this.expandIcons = Boolean(this._isExpanded && this._hasChildren);\n }\n /**\n * A function which determines if a specific node is checked\n * ([see example]({% slug checkboxes_treeview %}#toc-modifying-the-checked-state)).\n */\n get isChecked() {\n return this._isChecked || isChecked;\n }\n set isChecked(callback) {\n this._isChecked = callback;\n this.checkboxes = Boolean(this._isChecked);\n }\n /**\n * A function which determines if a specific node is expanded.\n */\n get isExpanded() {\n return this._isExpanded || isExpanded;\n }\n set isExpanded(callback) {\n this._isExpanded = callback;\n this.expandIcons = Boolean(this._isExpanded && this._hasChildren);\n }\n /**\n * A function which determines if a specific node is selected\n * ([see example]({% slug selection_treeview %}#toc-modifying-the-selection)).\n */\n get isSelected() {\n return this._isSelected || isSelected;\n }\n set isSelected(callback) {\n this._isSelected = callback;\n this.selectable = Boolean(this._isSelected);\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : 'medium';\n if (this.size !== 'none') {\n this.renderer.removeClass(this.element.nativeElement, getSizeClass('treeview', this.size));\n }\n this.renderer.addClass(this.element.nativeElement, getSizeClass('treeview', newSize));\n this._size = size;\n }\n get size() {\n return this._size;\n }\n ngOnChanges(changes) {\n this.navigationService.navigable = Boolean(this.navigable);\n // TODO: should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'children', 'hasChildren', 'loadOnDemand'], changes, false) && !this.loadOnDemand) {\n this.preloadChildNodes();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.domSubscriptions.forEach(subscription => subscription());\n }\n ngOnInit() {\n this.subscriptions.add(this.nodeChildrenService\n .changes\n .subscribe((x) => this.childrenLoaded.emit(x)));\n this.subscriptions.add(this.expandService.changes\n .subscribe(({ index, dataItem, expand }) => expand\n ? this.expand.emit({ index, dataItem })\n : this.collapse.emit({ index, dataItem })));\n this.subscriptions.add(this.navigationService.checks\n .subscribe((x) => this.checkedChange.emit(this.treeViewLookupService.itemLookup(x))));\n this.subscriptions.add(this.selectionService.changes\n .subscribe((x) => {\n if (hasObservers(this.selectionChange)) {\n this.ngZone.run(() => {\n this.selectionChange.emit(x);\n });\n }\n }));\n if (this.element) {\n this.ngZone.runOutsideAngular(() => {\n this.attachDomHandlers();\n });\n }\n if (this.size) {\n this.renderer.addClass(this.element.nativeElement, getSizeClass('treeview', this.size));\n }\n }\n /**\n * Blurs the focused TreeView item.\n */\n blur() {\n if (!isDocumentAvailable()) {\n return;\n }\n const target = focusableNode(this.element);\n if (document.activeElement === target) {\n target.blur();\n }\n }\n /**\n * Focuses the first focusable item in the TreeView component if no hierarchical index is provided.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * { text: \"Furniture\" },\n * { text: \"Decor\" }\n * ];\n * }\n * ```\n */\n focus(index) {\n const focusIndex = index || nodeIndex(this.navigationService.focusableItem);\n this.navigationService.activateIndex(focusIndex);\n const target = focusableNode(this.element);\n if (target) {\n target.focus();\n }\n }\n /**\n * Based on the specified index, returns the TreeItemLookup node.\n *\n * @param index - The index of the node.\n * @returns {TreeItemLookup} - The item that was searched (looked up).\n */\n itemLookup(index) {\n return this.treeViewLookupService.itemLookup(index);\n }\n /**\n * Triggers the [`children`]({% slug api_treeview_treeviewcomponent %}#toc-children) function for every expanded node,\n * causing all rendered child nodes to be fetched again.\n */\n rebindChildren() {\n this.dataChangeNotification.notify();\n }\n /**\n * Triggers the `expand` event for the provided node and displays it's loading indicator.\n */\n expandNode(item, index) {\n this.expandService.expand(index, item);\n }\n /**\n * Triggers the `collapse` event for the provided node.\n */\n collapseNode(item, index) {\n this.expandService.collapse(index, item);\n }\n /**\n * Gets the current page size of the checked data item children collection\n * ([see example]({% slug loadmorebutton_treeview %}#toc-managing-page-sizes)).\n *\n * > Since the root nodes collection is not associated with any parent data item, pass `null` as `dataItem` param to get its page size.\n *\n * @param dataItem {any} - The parent data item of the targeted collection.\n * @returns {number} - The page size of the checked data item children collection.\n */\n getNodePageSize(dataItem) {\n this.verifyLoadMoreService();\n return this.loadMoreService.getGroupSize(dataItem);\n }\n /**\n * Sets the page size of the targeted data item children collection\n * ([see example]({% slug loadmorebutton_treeview %}#toc-managing-page-sizes)).\n *\n * > Since the root nodes collection is not associated with any parent data item, pass `null` as `dataItem` param to target its page size.\n *\n * @param dataItem {any} - The parent data item of the targeted collection.\n * @param pageSize {number} - The new page size.\n */\n setNodePageSize(dataItem, pageSize) {\n this.verifyLoadMoreService();\n this.loadMoreService.setGroupSize(dataItem, pageSize);\n }\n /**\n * @hidden\n *\n * Clears the current TreeViewLookupService node map and re-registers all nodes anew.\n * Child nodes are acquired through the provided `children` callback.\n */\n preloadChildNodes() {\n this.treeViewLookupService.reset();\n this.registerLookupItems(this.nodes);\n }\n attachDomHandlers() {\n const element = this.element.nativeElement;\n this.clickHandler = this.clickHandler.bind(this);\n this.domSubscriptions.push(this.renderer.listen(element, 'contextmenu', this.clickHandler), this.renderer.listen(element, 'click', this.clickHandler), this.renderer.listen(element, 'dblclick', this.clickHandler), this.renderer.listen(element, 'focusin', this.focusHandler.bind(this)), this.renderer.listen(element, 'focusout', this.blurHandler.bind(this)), this.renderer.listen(element, 'keydown', this.keydownHandler.bind(this)));\n }\n focusHandler(e) {\n let focusItem;\n if (match(e.target, '.k-treeview-item')) {\n focusItem = e.target;\n }\n else if (!isFocusable(e.target)) { // with compliments to IE\n focusItem = closestNode(e.target);\n }\n if (focusItem) {\n const nodeIndex = nodeId(e.target);\n if (this.navigationService.isDisabled(nodeIndex)) {\n return;\n }\n this.navigationService.activateIndex(nodeIndex);\n if (!this.isActive && hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n this.isActive = true;\n }\n }\n blurHandler(e) {\n if (this.isActive && match(e.target, '.k-treeview-item') &&\n (!e.relatedTarget || !match(e.relatedTarget, '.k-treeview-item') || !hasParent(e.relatedTarget, this.element.nativeElement))) {\n this.navigationService.deactivate();\n this.isActive = false;\n if (hasObservers(this.onBlur)) {\n this.ngZone.run(() => {\n this.onBlur.emit();\n });\n }\n }\n }\n clickHandler(e) {\n const target = e.target;\n if ((e.type === 'contextmenu' && !hasObservers(this.nodeClick)) ||\n (e.type === 'click' && !hasObservers(this.nodeClick) && !hasObservers(this.selectionChange) && !isLoadMoreButton(target)) ||\n (e.type === 'dblclick' && !hasObservers(this.nodeDblClick)) || isFocusable(target) ||\n (!isContent(target) && !isLoadMoreButton(target)) || !hasParent(target, this.element.nativeElement)) {\n return;\n }\n const index = nodeId(closestNode(target));\n // the disabled check is probably not needed due to the k-disabled styles\n if (!index || this.navigationService.isDisabled(index)) {\n return;\n }\n this.ngZone.run(() => {\n // record this value before emitting selectionChange (`this.navigationService.selectIndex`), as the treeview state may be changed on its emission\n const lookup = this.treeViewLookupService.itemLookup(index);\n if (e.type === 'click') {\n const loadMoreButton = this.navigationService.model.findNode(index).loadMoreButton;\n if (loadMoreButton) {\n this.navigationService.notifyLoadMore(index);\n return;\n }\n else {\n this.navigationService.selectIndex(index);\n }\n }\n const emitter = e.type === 'dblclick' ? this.nodeDblClick : this.nodeClick;\n emitter.emit({\n item: lookup.item,\n originalEvent: e,\n type: e.type\n });\n });\n }\n keydownHandler(e) {\n if (this.isActive && this.navigable) {\n this.ngZone.run(() => {\n this.navigationService.move(e);\n });\n }\n }\n verifyLoadMoreService() {\n if (isDevMode() && !isPresent(this.loadMoreService)) {\n throw new Error(`To use the TreeView paging functionality, you need to assign the \\`kendoTreeViewLoadMore\\` directive. See ${LOAD_MORE_DOC_LINK$1}.`);\n }\n }\n registerLookupItems(data, parentItem = null) {\n if (!isPresent(data) || data.length === 0) {\n return;\n }\n const parentIndex = nodeIndex(parentItem);\n const treeItems = data.map((node, index) => buildTreeItem(node, index, parentIndex));\n if (isPresent(parentItem)) {\n this.treeViewLookupService.registerChildren(parentIndex, treeItems);\n }\n treeItems.forEach(item => {\n this.treeViewLookupService.registerItem(item, parentItem);\n if (this.hasChildren(item.dataItem)) {\n this.children(item.dataItem)\n .subscribe(children => this.registerLookupItems(children, item));\n }\n });\n }\n}\nTreeViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: ExpandStateService }, { token: NavigationService }, { token: NodeChildrenService }, { token: SelectionService }, { token: TreeViewLookupService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: DataChangeNotificationService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTreeViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TreeViewComponent, selector: \"kendo-treeview\", inputs: { filterInputPlaceholder: \"filterInputPlaceholder\", expandDisabledNodes: \"expandDisabledNodes\", animate: \"animate\", nodeTemplateRef: [\"nodeTemplate\", \"nodeTemplateRef\"], loadMoreButtonTemplateRef: [\"loadMoreButtonTemplate\", \"loadMoreButtonTemplateRef\"], trackBy: \"trackBy\", nodes: \"nodes\", textField: \"textField\", hasChildren: \"hasChildren\", isChecked: \"isChecked\", isDisabled: \"isDisabled\", isExpanded: \"isExpanded\", isSelected: \"isSelected\", isVisible: \"isVisible\", navigable: \"navigable\", children: \"children\", loadOnDemand: \"loadOnDemand\", filterable: \"filterable\", filter: \"filter\", size: \"size\", disableParentNodesOnly: \"disableParentNodesOnly\" }, outputs: { childrenLoaded: \"childrenLoaded\", onBlur: \"blur\", onFocus: \"focus\", expand: \"expand\", collapse: \"collapse\", nodeDragStart: \"nodeDragStart\", nodeDrag: \"nodeDrag\", filterStateChange: \"filterStateChange\", nodeDrop: \"nodeDrop\", nodeDragEnd: \"nodeDragEnd\", addItem: \"addItem\", removeItem: \"removeItem\", checkedChange: \"checkedChange\", selectionChange: \"selectionChange\", filterChange: \"filterChange\", nodeClick: \"nodeClick\", nodeDblClick: \"nodeDblClick\" }, host: { properties: { \"class.k-treeview\": \"this.classNames\", \"attr.role\": \"this.role\", \"attr.dir\": \"this.direction\", \"@.disabled\": \"this.animate\" } }, providers: providers, queries: [{ propertyName: \"nodeTemplateQuery\", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: \"loadMoreButtonTemplateQuery\", first: true, predicate: LoadMoreButtonTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"assetsContainer\", first: true, predicate: [\"assetsContainer\"], descendants: true, read: ViewContainerRef, static: true }], exportAs: [\"kendoTreeView\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n
    \n
\n \n `, isInline: true, components: [{ type: i8.TextBoxComponent, selector: \"kendo-textbox\", inputs: [\"focusableId\", \"title\", \"disabled\", \"readonly\", \"tabindex\", \"value\", \"selectOnFocus\", \"showSuccessIcon\", \"showErrorIcon\", \"clearButton\", \"successIcon\", \"errorIcon\", \"clearButtonIcon\", \"size\", \"rounded\", \"fillMode\", \"tabIndex\", \"placeholder\", \"maxlength\"], outputs: [\"valueChange\", \"inputFocus\", \"inputBlur\", \"focus\", \"blur\"], exportAs: [\"kendoTextBox\"] }, { type: TreeViewGroupComponent, selector: \"[kendoTreeViewGroup]\", inputs: [\"checkboxes\", \"expandIcons\", \"disabled\", \"selectable\", \"touchActions\", \"disableParentNodesOnly\", \"loadOnDemand\", \"trackBy\", \"nodes\", \"textField\", \"parentDataItem\", \"parentIndex\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"loadMoreService\", \"size\", \"expandDisabledNodes\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isVisible\", \"isSelected\", \"children\", \"hasChildren\"] }], directives: [{ type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i8.TextBoxPrefixTemplateDirective, selector: \"[kendoTextBoxPrefixTemplate]\" }], changeDetection: i0.ChangeDetectionStrategy.Default });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.Default,\n exportAs: 'kendoTreeView',\n providers: providers,\n selector: 'kendo-treeview',\n template: `\n \n \n \n \n \n \n \n
    \n
\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: ExpandStateService }, { type: NavigationService }, { type: NodeChildrenService }, { type: SelectionService }, { type: TreeViewLookupService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: DataChangeNotificationService }, { type: i1.LocalizationService }]; }, propDecorators: { classNames: [{\n type: HostBinding,\n args: [\"class.k-treeview\"]\n }], role: [{\n type: HostBinding,\n args: [\"attr.role\"]\n }], direction: [{\n type: HostBinding,\n args: [\"attr.dir\"]\n }], assetsContainer: [{\n type: ViewChild,\n args: ['assetsContainer', { read: ViewContainerRef, static: true }]\n }], filterInputPlaceholder: [{\n type: Input\n }], expandDisabledNodes: [{\n type: Input\n }], animate: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['@.disabled']\n }], childrenLoaded: [{\n type: Output\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], nodeDragStart: [{\n type: Output\n }], nodeDrag: [{\n type: Output\n }], filterStateChange: [{\n type: Output\n }], nodeDrop: [{\n type: Output\n }], nodeDragEnd: [{\n type: Output\n }], addItem: [{\n type: Output\n }], removeItem: [{\n type: Output\n }], checkedChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], nodeClick: [{\n type: Output\n }], nodeDblClick: [{\n type: Output\n }], nodeTemplateQuery: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], nodeTemplateRef: [{\n type: Input,\n args: ['nodeTemplate']\n }], loadMoreButtonTemplateQuery: [{\n type: ContentChild,\n args: [LoadMoreButtonTemplateDirective, { static: false }]\n }], loadMoreButtonTemplateRef: [{\n type: Input,\n args: ['loadMoreButtonTemplate']\n }], trackBy: [{\n type: Input\n }], nodes: [{\n type: Input\n }], textField: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], isChecked: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }], isSelected: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], navigable: [{\n type: Input\n }], children: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], filterable: [{\n type: Input\n }], filter: [{\n type: Input\n }], size: [{\n type: Input\n }], disableParentNodesOnly: [{\n type: Input\n }] } });\n\nconst indexChecked = (keys, index) => keys.filter(k => k === index).length > 0;\nconst matchKey = index => k => {\n if (index === k) {\n return true;\n }\n if (!k.split) {\n return false;\n }\n return k.split('_').reduce(({ key, result }, part) => {\n key += part;\n if (index === key || result) {\n return { result: true };\n }\n key += \"_\";\n return { key, result: false };\n }, { key: \"\", result: false }).result;\n};\n/**\n * A directive which manages the in-memory checked state of the TreeView node\n * ([see example]({% slug checkboxes_treeview %})).\n */\nclass CheckDirective {\n constructor(treeView, zone) {\n this.treeView = treeView;\n this.zone = zone;\n /**\n * Fires when the `checkedKeys` collection was updated.\n */\n this.checkedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n this.checkActions = {\n 'multiple': (e) => this.checkMultiple(e),\n 'single': (e) => this.checkSingle(e)\n };\n /**\n * Reflectes the internal `checkedKeys` state.\n */\n this.state = new Set();\n this.subscriptions.add(this.treeView.checkedChange\n .subscribe((e) => this.check(e)));\n let expandedItems = [];\n this.subscriptions.add(this.treeView.childrenLoaded\n .pipe(filter(() => this.options.checkChildren && this.treeView.loadOnDemand), tap(item => expandedItems.push(item)), switchMap(() => this.zone.onStable.pipe(take(1))))\n .subscribe(() => this.addCheckedItemsChildren(expandedItems)));\n this.treeView.isChecked = this.isItemChecked.bind(this);\n }\n /**\n * @hidden\n */\n set isChecked(value) {\n this.treeView.isChecked = value;\n }\n get options() {\n const defaultOptions = {\n checkChildren: true,\n checkParents: true,\n enabled: true,\n mode: \"multiple\"\n };\n if (!isPresent(this.checkable) || typeof this.checkable === 'string') {\n return defaultOptions;\n }\n const checkSettings = isBoolean(this.checkable)\n ? { enabled: this.checkable }\n : this.checkable;\n return Object.assign(defaultOptions, checkSettings);\n }\n ngOnChanges(changes) {\n if (changes.checkable) {\n this.treeView.checkboxes = this.options.enabled;\n this.toggleCheckOnClick();\n }\n if (isChanged('checkedKeys', changes, false) && changes.checkedKeys.currentValue !== this.lastChange) {\n this.state = new Set(changes.checkedKeys.currentValue);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribeClick();\n }\n isItemChecked(dataItem, index) {\n if (!this.checkKey) {\n return this.isIndexChecked(index);\n }\n const hasKey = this.state.has(this.itemKey({ dataItem, index }));\n return hasKey ? 'checked' : 'none';\n }\n isIndexChecked(index) {\n const checkedKeys = Array.from(this.state).filter(matchKey(index));\n if (indexChecked(checkedKeys, index)) {\n return 'checked';\n }\n const { mode, checkParents } = this.options;\n if (mode === 'multiple' && checkParents && checkedKeys.length) {\n return 'indeterminate';\n }\n return 'none';\n }\n itemKey(item) {\n if (!isPresent(this.checkKey)) {\n return item.index;\n }\n if (typeof this.checkKey === \"string\" && isPresent(item.dataItem)) {\n return item.dataItem[this.checkKey];\n }\n if (typeof this.checkKey === \"function\") {\n return this.checkKey(item);\n }\n }\n check(e) {\n const { enabled, mode } = this.options;\n const performSelection = this.checkActions[mode] || noop;\n if (!enabled) {\n return;\n }\n performSelection(e);\n }\n checkSingle(node) {\n const key = this.itemKey(node.item);\n const hasKey = this.state.has(key);\n this.state.clear();\n if (!hasKey) {\n this.state.add(key);\n }\n this.notify();\n }\n checkMultiple(node) {\n this.checkNode(node);\n if (this.options.checkParents) {\n this.checkParents(node.parent);\n }\n this.notify();\n }\n toggleCheckOnClick() {\n this.unsubscribeClick();\n if (this.options.checkOnClick) {\n this.clickSubscription = this.treeView.nodeClick.subscribe(args => {\n if (args.type === 'click') {\n const lookup = this.treeView.itemLookup(args.item.index);\n this.check(lookup);\n }\n });\n }\n }\n unsubscribeClick() {\n if (this.clickSubscription) {\n this.clickSubscription.unsubscribe();\n this.clickSubscription = null;\n }\n }\n checkNode(node) {\n if (!isPresent(node.item.dataItem) || this.treeView.isDisabled(node.item.dataItem, node.item.index)) {\n return;\n }\n const currentKey = this.itemKey(node.item);\n if (!isPresent(currentKey)) {\n return;\n }\n const pendingCheck = [currentKey];\n if (this.options.checkChildren) {\n const descendants = fetchLoadedDescendants(node, ({ item }) => (this.treeView.disableParentNodesOnly || this.options.checkDisabledChildren ?\n this.treeView.isVisible(item.dataItem, item.index) :\n this.treeView.isVisible(item.dataItem, item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index)));\n pendingCheck.push(...descendants.filter((item) => this.options.checkDisabledChildren || !this.treeView.isDisabled(item.item.dataItem, item.item.index))\n .map(({ item }) => this.itemKey(item)));\n }\n const shouldCheck = !this.state.has(currentKey);\n pendingCheck.forEach(key => {\n if (shouldCheck) {\n this.state.add(key);\n }\n else {\n this.state.delete(key);\n }\n });\n }\n checkParents(parent) {\n if (!isPresent(parent)) {\n return;\n }\n let currentParent = parent;\n while (currentParent) {\n const parentKey = this.itemKey(currentParent.item);\n const isDisabled = this.treeView.isDisabled(currentParent.item.dataItem, currentParent.item.index);\n const allChildrenSelected = currentParent.children.every(item => this.state.has(this.itemKey(item)));\n if ((!isDisabled || this.options.checkDisabledChildren) && allChildrenSelected) {\n this.state.add(parentKey);\n }\n else {\n this.state.delete(parentKey);\n }\n currentParent = currentParent.parent;\n }\n }\n allChildrenSelected(children) {\n return children.every(item => {\n const childrenSel = this.allChildrenSelected(item.children);\n return this.state.has(this.itemKey(item.item)) && childrenSel;\n });\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.checkedKeysChange.emit(this.lastChange);\n }\n addCheckedItemsChildren(lookups) {\n if (!isPresent(lookups) || lookups.length === 0) {\n return;\n }\n const initiallyCheckedItemsCount = this.state.size;\n const disabledItems = new Set();\n lookups.forEach(lookup => {\n const itemKey = this.itemKey(lookup.item);\n if (!this.state.has(itemKey)) {\n return;\n }\n lookup.children.forEach(item => {\n // ensure both the parent item and each child node is enabled\n if ((!this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index)) ||\n this.treeView.disableParentNodesOnly || this.options.checkDisabledChildren) {\n this.state.add(this.itemKey(item));\n }\n if (this.treeView.disableParentNodesOnly &&\n !this.options.checkDisabledChildren &&\n this.treeView.isDisabled(item.dataItem, item.index)) {\n disabledItems.add(this.itemKey(item));\n }\n });\n });\n disabledItems.forEach(item => this.state.delete(item));\n const hasNewlyCheckedItems = initiallyCheckedItemsCount !== this.state.size;\n if (hasNewlyCheckedItems) {\n this.zone.run(() => this.notify());\n }\n }\n}\nCheckDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, deps: [{ token: TreeViewComponent }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckDirective, selector: \"[kendoTreeViewCheckable]\", inputs: { isChecked: \"isChecked\", checkKey: [\"checkBy\", \"checkKey\"], checkedKeys: \"checkedKeys\", checkable: [\"kendoTreeViewCheckable\", \"checkable\"] }, outputs: { checkedKeysChange: \"checkedKeysChange\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewCheckable]' }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }, { type: i0.NgZone }]; }, propDecorators: { isChecked: [{\n type: Input\n }], checkKey: [{\n type: Input,\n args: [\"checkBy\"]\n }], checkedKeys: [{\n type: Input\n }], checkable: [{\n type: Input,\n args: ['kendoTreeViewCheckable']\n }], checkedKeysChange: [{\n type: Output\n }] } });\n\n/**\n * A directive which manages the disabled in-memory state of the TreeView node\n * ([see example]({% slug disabledstate_treeview %})).\n */\nclass DisableDirective {\n constructor(treeView, cdr) {\n this.treeView = treeView;\n this.cdr = cdr;\n /**\n * Defines the collection that will store the disabled keys.\n */\n this.disabledKeys = [];\n this.treeView.isDisabled = (dataItem, index) => (this.disabledKeys.indexOf(this.itemKey({ dataItem, index })) > -1);\n }\n /**\n * @hidden\n */\n set isDisabled(value) {\n this.treeView.isDisabled = value;\n }\n ngOnChanges(changes = {}) {\n const { disabledKeys } = changes;\n if (disabledKeys && !disabledKeys.firstChange) {\n this.cdr.markForCheck();\n }\n }\n itemKey(e) {\n if (!this.disableKey) {\n return e.index;\n }\n if (typeof this.disableKey === \"string\") {\n return e.dataItem[this.disableKey];\n }\n if (typeof this.disableKey === \"function\") {\n return this.disableKey(e);\n }\n }\n}\nDisableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisableDirective, deps: [{ token: TreeViewComponent }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nDisableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DisableDirective, selector: \"[kendoTreeViewDisable]\", inputs: { isDisabled: \"isDisabled\", disableKey: [\"kendoTreeViewDisable\", \"disableKey\"], disabledKeys: \"disabledKeys\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisableDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewDisable]' }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { isDisabled: [{\n type: Input\n }], disableKey: [{\n type: Input,\n args: [\"kendoTreeViewDisable\"]\n }], disabledKeys: [{\n type: Input\n }] } });\n\nconst DEFAULT_FILTER_EXPAND_SETTINGS = {\n maxAutoExpandResults: -1,\n expandMatches: false,\n expandedOnClear: \"none\"\n};\n/**\n * A directive which manages the expanded state of the TreeView.\n * ([see example]({% slug expandedstate_treeview %})).\n */\nclass ExpandDirective {\n constructor(component) {\n this.component = component;\n /**\n * Whether or not to auto-expand the nodes leading from the root node to each filter result.\n * To fine-tune this behavior, pass a [`FilterExpandSettings`]({% slug api_treeview_filterexpandsettings %}) object to this input.\n * @default false\n */\n this.expandOnFilter = false;\n /**\n * Fires when the `expandedKeys` collection was updated.\n */\n this.expandedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n /**\n * Reflectes the internal `expandedKeys` state.\n */\n this.state = new Set();\n this.originalExpandedKeys = new Set();\n this.isFiltered = false;\n /**\n * Fills array with the correct expand keys according to wrapper metadata.\n */\n this.updateExpandedNodes = (collection, node, autoExpandMatches) => {\n if (node.containsMatches || node.isMatch && autoExpandMatches && isArrayWithAtLeastOneItem(node.children)) {\n collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));\n }\n if (isArrayWithAtLeastOneItem(node.children)) {\n node.children.forEach(child => {\n this.updateExpandedNodes(collection, child, autoExpandMatches);\n });\n }\n };\n /**\n * Fills array with the expand key of every node.\n */\n this.getEveryExpandKey = (collection, node) => {\n if (isArrayWithAtLeastOneItem(node.children)) {\n collection.push(this.itemKey({ dataItem: node.dataItem, index: node.index }));\n }\n if (isArrayWithAtLeastOneItem(node.children)) {\n node.children.forEach(child => {\n this.getEveryExpandKey(collection, child);\n });\n }\n };\n this.subscriptions.add(merge(this.component.expand.pipe(map(e => (Object.assign({ expand: true }, e)))), this.component.collapse.pipe(map(e => (Object.assign({ expand: false }, e))))).subscribe(this.toggleExpand.bind(this)));\n if (this.component.filterStateChange) {\n this.subscriptions.add(this.component.filterStateChange.subscribe(this.handleAutoExpand.bind(this)));\n }\n this.component.isExpanded = (dataItem, index) => this.state.has(this.itemKey({ dataItem, index }));\n }\n /**\n * @hidden\n */\n set isExpanded(value) {\n this.component.isExpanded = value;\n }\n get filterExpandSettings() {\n const settings = isBoolean(this.expandOnFilter) ? { enabled: this.expandOnFilter } : Object.assign(Object.assign({}, this.expandOnFilter), { enabled: true });\n return Object.assign({}, DEFAULT_FILTER_EXPAND_SETTINGS, settings);\n }\n ngOnChanges(changes) {\n if (isChanged('expandedKeys', changes, false) && changes.expandedKeys.currentValue !== this.lastChange) {\n this.state = new Set(changes.expandedKeys.currentValue);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n itemKey(e) {\n if (this.expandKey) {\n if (typeof this.expandKey === \"string\") {\n return e.dataItem[this.expandKey];\n }\n if (typeof this.expandKey === \"function\") {\n return this.expandKey(e);\n }\n }\n return e.index;\n }\n toggleExpand({ index, dataItem, expand }) {\n const key = this.itemKey({ index, dataItem });\n const isExpanded = this.state.has(key);\n let notify = false;\n if (isExpanded && !expand) {\n this.state.delete(key);\n notify = true;\n }\n else if (!isExpanded && expand) {\n this.state.add(key);\n notify = true;\n }\n if (notify) {\n this.notify();\n }\n }\n handleAutoExpand({ nodes, matchCount, term }) {\n if (!this.filterExpandSettings.enabled) {\n return;\n }\n const { maxAutoExpandResults, expandMatches: autoExpandMatches, expandedOnClear } = this.filterExpandSettings;\n if (!this.isFiltered) {\n this.originalExpandedKeys = new Set(this.state);\n }\n const exitingFilteredState = this.isFiltered && !term;\n const maxExceeded = maxAutoExpandResults !== -1 && matchCount > maxAutoExpandResults;\n const exitAutoExpandedState = exitingFilteredState || maxExceeded;\n if (exitAutoExpandedState) {\n switch (expandedOnClear) {\n case \"initial\": {\n if (!sameValues(this.state, this.originalExpandedKeys)) {\n this.state = this.originalExpandedKeys;\n this.notify();\n }\n break;\n }\n case \"all\": {\n this.state = new Set(nodes.reduce((acc, rootNode) => {\n this.getEveryExpandKey(acc, rootNode);\n return acc;\n }, []));\n this.notify();\n break;\n }\n case \"unchanged\": {\n break;\n }\n case \"none\":\n default: {\n if (this.state.size !== 0) {\n this.state.clear();\n this.notify();\n }\n break;\n }\n }\n this.isFiltered = false;\n return;\n }\n const indicesToExpand = new Set(nodes.reduce((acc, rootNode) => {\n this.updateExpandedNodes(acc, rootNode, autoExpandMatches);\n return acc;\n }, []));\n if (!sameValues(this.state, indicesToExpand)) {\n this.state = indicesToExpand;\n this.notify();\n }\n this.isFiltered = true;\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.expandedKeysChange.emit(this.lastChange);\n }\n}\nExpandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandDirective, deps: [{ token: ExpandableComponent }], target: i0.ɵɵFactoryTarget.Directive });\nExpandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ExpandDirective, selector: \"[kendoTreeViewExpandable]\", inputs: { isExpanded: \"isExpanded\", expandKey: [\"expandBy\", \"expandKey\"], expandOnFilter: \"expandOnFilter\", expandedKeys: \"expandedKeys\" }, outputs: { expandedKeysChange: \"expandedKeysChange\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ExpandDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewExpandable]' }]\n }], ctorParameters: function () { return [{ type: ExpandableComponent }]; }, propDecorators: { isExpanded: [{\n type: Input\n }], expandKey: [{\n type: Input,\n args: [\"expandBy\"]\n }], expandOnFilter: [{\n type: Input\n }], expandedKeysChange: [{\n type: Output\n }], expandedKeys: [{\n type: Input\n }] } });\n\n/**\n * A directive which manages the in-memory selection state of the TreeView node\n * ([see example]({% slug selection_treeview %})).\n */\nclass SelectDirective {\n constructor(treeView) {\n this.treeView = treeView;\n /**\n * Fires when the `selectedKeys` collection was updated.\n */\n this.selectedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n this.selectActions = {\n 'multiple': (e) => this.selectMultiple(e),\n 'single': (e) => this.selectSingle(e)\n };\n /**\n * Reflectes the internal `selectedKeys` state.\n */\n this.state = new Set();\n this.subscriptions.add(this.treeView.selectionChange.subscribe(this.select.bind(this)));\n this.treeView.isSelected = (dataItem, index) => (this.state.has(this.itemKey({ dataItem, index })));\n }\n /**\n * @hidden\n */\n set isSelected(value) {\n this.treeView.isSelected = value;\n }\n get getAriaMultiselectable() {\n return this.options.mode === 'multiple';\n }\n get options() {\n const defaultOptions = {\n enabled: true,\n mode: 'single'\n };\n if (!isPresent(this.selection) || typeof this.selection === 'string') {\n return defaultOptions;\n }\n const selectionSettings = isBoolean(this.selection) ? { enabled: this.selection } : this.selection;\n return Object.assign(defaultOptions, selectionSettings);\n }\n ngOnChanges(changes) {\n if (isChanged('selectedKeys', changes, false) && changes.selectedKeys.currentValue !== this.lastChange) {\n this.state = new Set(changes.selectedKeys.currentValue);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n itemKey(e) {\n if (!this.selectKey) {\n return e.index;\n }\n if (typeof this.selectKey === 'string') {\n return e.dataItem[this.selectKey];\n }\n if (typeof this.selectKey === 'function') {\n return this.selectKey(e);\n }\n }\n select(e) {\n const { enabled, mode } = this.options;\n const performSelection = this.selectActions[mode] || noop;\n if (!enabled) {\n return;\n }\n performSelection(e);\n }\n selectSingle(node) {\n const key = this.itemKey(node);\n if (!this.state.has(key)) {\n this.state.clear();\n this.state.add(key);\n this.notify();\n }\n }\n selectMultiple(node) {\n const key = this.itemKey(node);\n const isSelected = this.state.has(key);\n if (!isPresent(key)) {\n return;\n }\n if (isSelected) {\n this.state.delete(key);\n }\n else {\n this.state.add(key);\n }\n this.notify();\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.selectedKeysChange.emit(this.lastChange);\n }\n}\nSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectDirective, deps: [{ token: TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectDirective, selector: \"[kendoTreeViewSelectable]\", inputs: { isSelected: \"isSelected\", selectKey: [\"selectBy\", \"selectKey\"], selection: [\"kendoTreeViewSelectable\", \"selection\"], selectedKeys: \"selectedKeys\" }, outputs: { selectedKeysChange: \"selectedKeysChange\" }, host: { properties: { \"attr.aria-multiselectable\": \"this.getAriaMultiselectable\" } }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewSelectable]' }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }]; }, propDecorators: { isSelected: [{\n type: Input\n }], selectKey: [{\n type: Input,\n args: ['selectBy']\n }], selection: [{\n type: Input,\n args: ['kendoTreeViewSelectable']\n }], selectedKeys: [{\n type: Input\n }], selectedKeysChange: [{\n type: Output\n }], getAriaMultiselectable: [{\n type: HostBinding,\n args: ['attr.aria-multiselectable']\n }] } });\n\n/**\n * Describes the attempted drop action during dragging.\n * Passed as `action` value to the [`kendoTreeViewDragClueTemplate`]({% slug api_treeview_dragcluetemplatedirective %}) directive.\n * By default, this value defines the rendered icon in the drag clue.\n */\nvar DropAction;\n(function (DropAction) {\n DropAction[DropAction[\"Add\"] = 0] = \"Add\";\n DropAction[DropAction[\"InsertTop\"] = 1] = \"InsertTop\";\n DropAction[DropAction[\"InsertBottom\"] = 2] = \"InsertBottom\";\n DropAction[DropAction[\"InsertMiddle\"] = 3] = \"InsertMiddle\";\n DropAction[DropAction[\"Invalid\"] = 4] = \"Invalid\";\n})(DropAction || (DropAction = {}));\n\n/**\n * Describes where the dragged item is dropped relative to the drop target item.\n */\nvar DropPosition;\n(function (DropPosition) {\n DropPosition[DropPosition[\"Over\"] = 0] = \"Over\";\n DropPosition[DropPosition[\"Before\"] = 1] = \"Before\";\n DropPosition[DropPosition[\"After\"] = 2] = \"After\";\n})(DropPosition || (DropPosition = {}));\n\n/**\n * @hidden\n */\nvar ScrollDirection;\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Up\"] = -1] = \"Up\";\n ScrollDirection[ScrollDirection[\"Down\"] = 1] = \"Down\";\n})(ScrollDirection || (ScrollDirection = {}));\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDrop`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrop) event.\n */\nclass TreeItemDropEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(initializer, originalEvent) {\n super();\n /**\n * @hidden\n */\n this.isValid = true;\n Object.assign(this, initializer);\n this.originalEvent = originalEvent;\n }\n /**\n * Specifies if the drop action should be marked as valid.\n * If set to `false`, the [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and\n * [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem) events will not be fired and the drag clue\n * will be animated back to the source item to indicate the action is marked as invalid.\n */\n setValid(isValid) {\n this.isValid = isValid;\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDragStart`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragstart) event.\n */\nclass TreeItemDragStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(initializer) {\n super();\n Object.assign(this, initializer);\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDrag`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrag) and\n * [`nodeDragEnd`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragend) events.\n */\nclass TreeItemDragEvent {\n /** @hidden */\n constructor() { }\n}\n\n/**\n * Checks if the browser supports relative stacking context.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n */\nconst hasRelativeStackingContext = memoize(() => {\n if (!(isDocumentAvailable() && isPresent(document.body))) {\n return false;\n }\n const top = 10;\n const parent = document.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
child
`;\n document.body.appendChild(parent);\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n});\n/**\n * Stores the result of the passed function's first invokation and returns it instead of invoking it again afterwards.\n */\nfunction memoize(fn) {\n let result;\n let called = false;\n return (...args) => {\n if (called) {\n return result;\n }\n result = fn(...args);\n called = true;\n return result;\n };\n}\n/**\n * @hidden\n *\n * Gets the offset of the parent element if the latter has the `transform` CSS prop applied.\n * Transformed parents create new stacking context and the `fixed` children must be position based on the transformed parent.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n *\n * If no parent container is `transform`-ed the function will return `{ left: 0, top: 0 }`;\n */\nconst getContainerOffset = (element) => {\n if (!(element && hasRelativeStackingContext())) {\n return { left: 0, top: 0 };\n }\n let offsetParent = element.parentElement;\n while (offsetParent) {\n if (window.getComputedStyle(offsetParent).transform !== 'none') {\n break;\n }\n offsetParent = offsetParent.parentElement;\n }\n if (offsetParent) {\n const rect = offsetParent.getBoundingClientRect();\n return {\n left: rect.left - offsetParent.scrollLeft,\n top: rect.top - offsetParent.scrollTop\n };\n }\n return { left: 0, top: 0 };\n};\n/**\n * @hidden\n */\nconst getDropAction = (dropPosition, dropTarget) => {\n if (!(isPresent(dropPosition) && isPresent(dropTarget))) {\n return DropAction.Invalid;\n }\n switch (dropPosition) {\n case DropPosition.Over:\n return DropAction.Add;\n case DropPosition.Before:\n return isPresent(closestNode(dropTarget).previousElementSibling) ? DropAction.InsertMiddle : DropAction.InsertTop;\n case DropPosition.After:\n return isPresent(closestNode(dropTarget).nextElementSibling) ? DropAction.InsertMiddle : DropAction.InsertBottom;\n default:\n return DropAction.Invalid;\n }\n};\n/**\n * @hidden\n */\nconst getDropPosition = (draggedItem, target, clientY, targetTreeView, containerOffset) => {\n if (!(isPresent(draggedItem) && isPresent(target) && isPresent(targetTreeView) && isPresent(containerOffset))) {\n return;\n }\n // the .k-treeview-mid element starts just after the checkbox/expand arrow and stretches till the end of the treeview on the right\n const item = closestWithMatch(target, '.k-treeview-top, .k-treeview-mid, .k-treeview-bot');\n if (!isPresent(item)) {\n return;\n }\n // the content element (.k-treeview-leaf:not(.k-treeview-load-more-button)) holds just the treeview item text\n const content = getContentElement(item);\n const targetChildOfDraggedItem = hasParent(item, closestNode(draggedItem));\n if (!isPresent(content) || (content === draggedItem) || targetChildOfDraggedItem) {\n return;\n }\n const itemViewPortCoords = content.getBoundingClientRect();\n /*\n if the user is hovering a treeview item, split the item height into four parts:\n - dropping into the top quarter should insert the dragged item before the drop target\n - dropping into the bottom quarter should insert the dragged item after the drop target\n - dropping into the second or third quarter should add the item as child node of the drop target\n\n if the user is NOT hovering a treeview item (he's dragging somewhere on the right), split the item height to just two parts:\n - dropping should insert before or after\n */\n const itemDivisionHeight = itemViewPortCoords.height / (isContent(target) ? 4 : 2);\n // clear any possible container offset created by parent elements with `transform` css property set\n const pointerPosition = clientY - containerOffset.top;\n const itemTop = itemViewPortCoords.top - containerOffset.top;\n if (pointerPosition < itemTop + itemDivisionHeight) {\n return DropPosition.Before;\n }\n if (pointerPosition >= itemTop + itemViewPortCoords.height - itemDivisionHeight) {\n return DropPosition.After;\n }\n return DropPosition.Over;\n};\n/**\n * @hidden\n */\nconst treeItemFromEventTarget = (treeView, dropTarget) => {\n if (!(isPresent(treeView) && isPresent(dropTarget))) {\n return null;\n }\n const node = closestNode(dropTarget);\n const index = nodeId(node);\n const lookup = treeView.itemLookup(index);\n if (!(isPresent(lookup) && isPresent(lookup.item.dataItem))) {\n return null;\n }\n return lookup;\n};\n/**\n * @hidden\n *\n * Emits `collapse` on the specified TreeView node if the latter is left empty after its last child node was dragged out.\n */\nconst collapseEmptyParent = (parent, parentNodes, treeview) => {\n if (isPresent(parent) && parentNodes.length === 0 && treeview.isExpanded(parent.item.dataItem, parent.item.index)) {\n treeview.collapseNode(parent.item.dataItem, parent.item.index);\n }\n};\n/**\n * @hidden\n *\n * Expands the node if it's dropped into and it's not yet expanded.\n */\nconst expandDropTarget = (dropTarget, treeView) => {\n if (!treeView.isExpanded(dropTarget.item.dataItem, dropTarget.item.index)) {\n treeView.expandNode(dropTarget.item.dataItem, dropTarget.item.index);\n }\n};\n/**\n * @hidden\n *\n * Extracts the event target from the viewport coords. Required for touch devices\n * where the `event.target` of a `pointermove` event is always the initially dragged item.\n */\nconst getDropTarget = (event) => {\n if (!(isDocumentAvailable() && isPresent(document.elementFromPoint))) {\n return event.target;\n }\n return document.elementFromPoint(event.clientX, event.clientY);\n};\n/**\n * @hidden\n *\n * Checks if the original index is before the new one and corrects the new one by decrementing the index for the level, where the original item stood.\n */\nconst updateMovedItemIndex = (newIndex, originalIndex) => {\n const movedItemNewIndexParts = newIndex.split('_');\n const originalItemIndexParts = originalIndex.split('_');\n // if the original item was moved from a deeper level, there's no need for index correction\n // e.g. 4_0_1 is moved to 5_0 => removing 4_0_1 will not cause 5_0 to be moved\n if (movedItemNewIndexParts.length < originalItemIndexParts.length) {\n return newIndex;\n }\n // check if the parent item paths are the same - index correction is not required when the original item path differs from the path of the moved item - they belong to different hierarchies\n // e.g. 4_1 is moved to 5_1 - the parent item paths are differen (4 compared to 5) => removing 4_1 will not cause 5_1 to be moved\n // e.g 4_1 is moved to 4_3 - the parent paths are the same (both 4) => removing 4_1 will cause 4_3 to be moved\n const originalItemParentPathLength = originalItemIndexParts.length - 1;\n const originalItemParentPath = originalItemIndexParts.slice(0, originalItemParentPathLength).join('_');\n const movedItemParentPath = movedItemNewIndexParts.slice(0, originalItemParentPathLength).join('_');\n // check if the the index of the level where the original item is taken from is greater than the one of the moved item\n // e.g. 4_5 is moved to 4_1 (comapre 5 and 1) => removing 4_5 will not cause 4_1 to be moved\n // e.g. 4_1 is moved to 4_5 (comapre 1 and 5) => removing 4_1 will cause 4_5 to be moved\n const originalItemIndexLevel = originalItemIndexParts.length - 1;\n const originalItemLevelIndex = Number(originalItemIndexParts[originalItemIndexLevel]);\n const movedItemLevelIndex = Number(movedItemNewIndexParts[originalItemIndexLevel]);\n if ((originalItemParentPath === movedItemParentPath) && (movedItemLevelIndex > originalItemLevelIndex)) {\n // if the removed item causes the dropped item to be moved a position up - decrement the index at that level\n movedItemNewIndexParts[originalItemIndexLevel] = String(movedItemLevelIndex - 1);\n return movedItemNewIndexParts.join('_');\n }\n return newIndex;\n};\n/**\n * @hidden\n */\nconst SCROLLBAR_REG_EXP = new RegExp('(auto|scroll)');\n/**\n * @hidden\n *\n * Retrives the first scrollable element starting the search from the provided one, traversing to the top of the DOM tree.\n */\nconst getScrollableContainer = (node) => {\n while (isPresent(node) && node.nodeName !== 'HTML') {\n const hasOverflow = node.scrollHeight > node.clientHeight;\n const hasScrollbar = SCROLLBAR_REG_EXP.test(getComputedStyle(node).overflowY);\n if (hasOverflow && hasScrollbar) {\n return node;\n }\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n *\n * Checks if the top of the scrollable element is reached.\n * Floors the scrollTop value.\n */\nconst isTopReached = (element) => Math.floor(element.scrollTop) <= 0;\n/**\n * @hidden\n *\n * Checks if the bottom of the scrollable element is reached.\n * Ceils the scrollTop value.\n */\nconst isBottomReached = (element) => Math.ceil(element.scrollTop) >= element.scrollHeight - element.clientHeight;\n/**\n * @hidden\n *\n * Scrolls the element in the given direction by the provided step.\n *\n * If the targeted scroll incrementation doesn't yield any result due to device pixel ratio issues (https://github.com/dimitar-pechev/RenderingIndependentScrollOffsets#readme),\n * increments the step with 1px and again attempts to change the scrollTop of the element, until the content is actually scrolled.\n *\n * Cuts the operation short after 20 unsuccessful attempts to prevent infinite loops in possible corner-case scenarios.\n */\nconst scrollElementBy = (element, step, direction) => {\n if (!(isPresent(element) && isDocumentAvailable())) {\n return;\n }\n const initialScrollTop = element.scrollTop;\n let currentStep = step;\n let iterations = 0;\n while (initialScrollTop === element.scrollTop &&\n !(direction === ScrollDirection.Up && isTopReached(element)) &&\n !(direction === ScrollDirection.Down && isBottomReached(element)) &&\n iterations < 20 // as the bulgarian saying goes - to ties our underpants\n ) {\n element.scrollTop += (currentStep * direction);\n currentStep += 1;\n iterations += 1;\n }\n};\n\n/**\n * @hidden\n */\nconst copyPageSize = (treeview, source, target) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const sourceGroupSize = treeview.getNodePageSize(source);\n treeview.setNodePageSize(target, sourceGroupSize);\n};\n/**\n * @hidden\n */\nconst incrementPageSize = (treeview, dataItem) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const currentPageSize = treeview.getNodePageSize(dataItem);\n treeview.setNodePageSize(dataItem, currentPageSize + 1);\n};\n/**\n * @hidden\n */\nconst decrementPageSize = (treeview, dataItem) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const currentPageSize = treeview.getNodePageSize(dataItem);\n treeview.setNodePageSize(dataItem, currentPageSize - 1);\n};\n\n/**\n * @hidden\n */\nclass HierarchyEditingService {\n constructor(hierarchyBinding) {\n this.hierarchyBinding = hierarchyBinding;\n }\n add({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }) {\n // shallow clone the item as not to mistake it for its 'older' version when the remove handler kicks in to splice the item at its old position\n const clonedSourceDataItem = Object.assign({}, getDataItem(sourceItem));\n if (dropPosition === DropPosition.Over) {\n // expand the item that was dropped into\n expandDropTarget(destinationItem, destinationTree);\n const destinationChildren = this.childrenFor(getDataItem(destinationItem));\n // add the moved node just before the load more button if load more is enabled\n const targetIndex = isPresent(destinationTree.loadMoreService) ?\n Math.min(destinationTree.loadMoreService.getGroupSize(getDataItem(destinationItem)), destinationChildren.length) : // the page size might be greater than the actual children array length\n destinationChildren.length;\n destinationChildren.splice(targetIndex, 0, clonedSourceDataItem);\n setter(this.hierarchyBinding.childrenField)(getDataItem(destinationItem), destinationChildren);\n this.movedItemNewIndex = buildTreeIndex(destinationItem.item.index, targetIndex);\n }\n else {\n const destinationParentNodes = this.getParentNodes(destinationItem, destinationTree);\n const shiftIndex = dropPosition === DropPosition.After ? 1 : 0;\n const targetIndex = destinationParentNodes.indexOf(getDataItem(destinationItem)) + shiftIndex;\n destinationParentNodes.splice(targetIndex, 0, clonedSourceDataItem);\n const parentIndex = destinationItem.parent ? destinationItem.parent.item.index : null;\n this.movedItemNewIndex = buildTreeIndex(parentIndex, targetIndex);\n }\n // increment the parent page size => an item is moved into it\n const updatedParent = dropPosition === DropPosition.Over ? getDataItem(destinationItem) : getDataItem(destinationItem.parent);\n incrementPageSize(destinationTree, updatedParent);\n // the page sizes are stored by data-item reference => copy the old item ref page size to the new item reference\n copyPageSize(destinationTree, getDataItem(sourceItem), clonedSourceDataItem);\n // the source tree nodes are reloaded on `removeItem` - reload the destination tree nodes if the soruce and the destination tree are different\n if (sourceTree !== destinationTree && !destinationTree.loadOnDemand) {\n destinationTree.preloadChildNodes();\n }\n // if the source and destination trees are the same, focusing the moved item here will not have the desired effect\n // as the `remove` handler has not yet kicked-in to remove the item from its old position\n if (sourceTree !== destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n destinationTree.focus(this.movedItemNewIndex);\n }\n }\n remove({ sourceItem, sourceTree, destinationTree }) {\n const sourceParentNodes = this.getParentNodes(sourceItem, sourceTree);\n const sourceItemIndex = sourceParentNodes.indexOf(getDataItem(sourceItem));\n sourceParentNodes.splice(sourceItemIndex, 1);\n // emit collapse for the parent node if its last child node was spliced\n collapseEmptyParent(sourceItem.parent, sourceParentNodes, sourceTree);\n // decrement source item parent page size => an item has been removed from it\n decrementPageSize(sourceTree, getDataItem(sourceItem.parent));\n // reload the treeview nodes\n if (!sourceTree.loadOnDemand) {\n sourceTree.preloadChildNodes();\n }\n // if the source and destination trees are different we want to focus only the moved item in the destination tree\n if (sourceTree === destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n // after the source item is removed from its original position, the candidate index might have to be corrected\n const index = updateMovedItemIndex(this.movedItemNewIndex, sourceItem.item.index);\n destinationTree.focus(index);\n }\n }\n getParentNodes(node, treeView) {\n return isPresent(node.parent) ?\n this.childrenFor(getDataItem(node.parent)) :\n treeView.nodes;\n }\n childrenFor(dataItem) {\n return getter(this.hierarchyBinding.childrenField)(dataItem) || [];\n }\n}\n\n/**\n * @hidden\n */\nconst DEFAULT_FILTER_SETTINGS = {\n operator: 'contains',\n ignoreCase: true,\n mode: \"lenient\"\n};\n\n/**\n * @hidden\n */\nclass FilteringBase {\n constructor(component) {\n this.component = component;\n this.visibleNodes = new Set();\n this._filterSettings = DEFAULT_FILTER_SETTINGS;\n }\n /**\n * The settings which are applied when performing a filter on the component's data.\n */\n set filterSettings(settings) {\n this._filterSettings = Object.assign(Object.assign({}, DEFAULT_FILTER_SETTINGS), settings);\n }\n get filterSettings() {\n return this._filterSettings;\n }\n /**\n * Applies a filter and changes the visibility of the component's nodes accordingly.\n */\n set filter(term) {\n this.handleFilterChange(term);\n }\n /**\n * @hidden\n */\n handleFilterChange(term) {\n if (!this.filterData) {\n return;\n }\n this.resetNodesVisibility(this.filterData);\n if (term) {\n filterTree(this.filterData, term, this.filterSettings, this.component.textField);\n }\n this.updateVisibleNodes(this.filterData);\n if (isPresent(this.component.filterStateChange)) {\n this.component.filterStateChange.emit({\n nodes: this.filterData,\n matchCount: this.visibleNodes.size,\n term,\n filterSettings: this.filterSettings\n });\n }\n }\n updateVisibleNodes(items) {\n items.forEach((wrapper) => {\n if (wrapper.visible) {\n this.visibleNodes.add(wrapper.dataItem);\n }\n if (wrapper.children) {\n this.updateVisibleNodes(wrapper.children);\n }\n });\n }\n resetNodesVisibility(items) {\n this.visibleNodes.clear();\n items.forEach((wrapper) => {\n wrapper.visible = true;\n if (wrapper.children) {\n this.resetNodesVisibility(wrapper.children);\n }\n });\n }\n}\nFilteringBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilteringBase, deps: [{ token: DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nFilteringBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilteringBase, inputs: { filterSettings: \"filterSettings\", filter: \"filter\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilteringBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: DataBoundComponent }]; }, propDecorators: { filterSettings: [{\n type: Input\n }], filter: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass DragClueComponent {\n constructor(cdr) {\n this.cdr = cdr;\n this.hostClasses = true;\n this.posistionStyle = 'fixed';\n }\n get statusIconClass() {\n switch (this.action) {\n case DropAction.Add: return 'k-i-plus';\n case DropAction.InsertTop: return 'k-i-insert-up';\n case DropAction.InsertBottom: return 'k-i-insert-down';\n case DropAction.InsertMiddle: return 'k-i-insert-middle';\n case DropAction.Invalid:\n default: return 'k-i-cancel';\n }\n }\n // exposed as a public method that can be called from outside as the component uses `OnPush` strategy\n detectChanges() {\n this.cdr.detectChanges();\n }\n}\nDragClueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDragClueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragClueComponent, selector: \"kendo-treeview-drag-clue\", host: { properties: { \"class.k-header\": \"this.hostClasses\", \"class.k-drag-clue\": \"this.hostClasses\", \"style.position\": \"this.posistionStyle\" } }, ngImport: i0, template: `\n \n \n {{text}}\n \n\n \n
\n `, isInline: true, directives: [{ type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-treeview-drag-clue',\n template: `\n \n \n {{text}}\n \n\n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-header']\n }, {\n type: HostBinding,\n args: ['class.k-drag-clue']\n }], posistionStyle: [{\n type: HostBinding,\n args: ['style.position']\n }] } });\n\n/**\n * @hidden\n */\nclass DragAndDropAssetService {\n get componentRef() {\n if (!isPresent(this._componentRef)) {\n throw new Error('The `initalize` method must be called before calling other service methods.');\n }\n return this._componentRef;\n }\n set componentRef(componentRef) {\n this._componentRef = componentRef;\n }\n get element() {\n return this.componentRef.location.nativeElement;\n }\n ngOnDestroy() {\n if (!isPresent(this._componentRef)) {\n return;\n }\n this.element.parentElement.removeChild(this.element);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n move(left, top, offset = 0) {\n this.element.style.left = `${left + offset}px`;\n this.element.style.top = `${top + offset}px`;\n }\n}\nDragAndDropAssetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropAssetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDragAndDropAssetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropAssetService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropAssetService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst CLUE_OFFSET = 10;\n/**\n * @hidden\n */\nconst RETURN_ANIMATION_DURATION = 200;\n/**\n * @hidden\n */\nclass DragClueService extends DragAndDropAssetService {\n constructor(componentFactoryResolver) {\n super();\n this.componentFactoryResolver = componentFactoryResolver;\n }\n initialize(container, template) {\n if (isPresent(this._componentRef)) {\n this.ngOnDestroy();\n }\n const clueComponentFactory = this.componentFactoryResolver.resolveComponentFactory(DragClueComponent);\n this.componentRef = container.createComponent(clueComponentFactory);\n this.hide();\n this.componentRef.instance.template = template;\n this.componentRef.changeDetectorRef.detectChanges();\n }\n ngOnDestroy() {\n this.cancelReturnAnimation();\n this.cancelScroll();\n super.ngOnDestroy();\n }\n move(left, top) {\n super.move(left, top, CLUE_OFFSET);\n }\n animateDragClueToElementPosition(target) {\n if (!(isPresent(target) && isPresent(this.element.animate))) {\n this.hide();\n return;\n }\n const targetElementViewPortCoords = target.getBoundingClientRect();\n const clueElementViewPortCoords = this.element.getBoundingClientRect();\n this.returnAnimation = this.element.animate([\n { transform: 'translate(0, 0)' },\n { transform: `translate(${targetElementViewPortCoords.left - clueElementViewPortCoords.left}px, ${targetElementViewPortCoords.top - clueElementViewPortCoords.top}px)` }\n ], RETURN_ANIMATION_DURATION);\n this.returnAnimation.onfinish = () => this.hide();\n }\n cancelReturnAnimation() {\n if (!isPresent(this.returnAnimation)) {\n return;\n }\n this.returnAnimation.cancel();\n this.returnAnimation = null;\n }\n updateDragClueData(action, sourceItem, destinationItem) {\n const dragClue = this.componentRef.instance;\n if (action === dragClue.action && dataItemsEqual(sourceItem, dragClue.sourceItem) && dataItemsEqual(destinationItem, dragClue.destinationItem)) {\n return;\n }\n dragClue.action = action;\n dragClue.sourceItem = sourceItem;\n dragClue.destinationItem = destinationItem;\n dragClue.detectChanges();\n }\n updateText(text) {\n if (text === this.componentRef.instance.text) {\n return;\n }\n this.componentRef.instance.text = text;\n this.componentRef.instance.detectChanges();\n }\n /**\n * Triggers the first scrollable parent to scroll upwards or downwards.\n * Uses setInterval, so should be called outside the angular zone.\n */\n scrollIntoView({ step, interval }) {\n this.cancelScroll();\n const scrollableContainer = getScrollableContainer(this.element);\n if (!isPresent(scrollableContainer)) {\n return;\n }\n const containerRect = scrollableContainer.getBoundingClientRect();\n const clueRect = this.element.getBoundingClientRect();\n // if the beginning of the scrollable container is above the current viewport, fall-back to 0\n const firstVisibleClientTopPart = Math.max(containerRect.top, 0);\n // start scrolling up when the first visible item is dragged over\n const topLimit = firstVisibleClientTopPart + clueRect.height;\n // if the end of the scrollable container is beneath the current viewport, fall-back to its client height\n // add the distance from the start of the viewport to the beginning of the container to ensure scrolling bottom begins when the actual end of the container is reached\n const bottomLimit = firstVisibleClientTopPart + Math.min(containerRect.bottom, scrollableContainer.clientHeight);\n if (clueRect.top < topLimit) {\n this.scrollInterval = setInterval(() => scrollElementBy(scrollableContainer, step, ScrollDirection.Up), interval);\n }\n else if (clueRect.bottom > bottomLimit) {\n this.scrollInterval = setInterval(() => scrollElementBy(scrollableContainer, step, ScrollDirection.Down), interval);\n }\n }\n /**\n * Cancels out the on-going scroll animation, if present.\n */\n cancelScroll() {\n if (isPresent(this.scrollInterval)) {\n clearInterval(this.scrollInterval);\n this.scrollInterval = null;\n }\n }\n}\nDragClueService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });\nDragClueService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; } });\n\n/**\n * @hidden\n */\nclass DropHintComponent {\n constructor(changeDetectorRef) {\n this.changeDetectorRef = changeDetectorRef;\n this.hostClass = true;\n this.position = 'fixed';\n this.pointerEvents = 'none';\n }\n // exposed as a public method that can be called from outside as the component uses `OnPush` strategy\n detectChanges() {\n this.changeDetectorRef.detectChanges();\n }\n}\nDropHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nDropHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropHintComponent, selector: \"kendo-treeview-drop-hint\", host: { properties: { \"class.k-drop-hint-container\": \"this.hostClass\", \"style.position\": \"this.position\", \"style.pointer-events\": \"this.pointerEvents\" } }, ngImport: i0, template: `\n \n
\n
\n \n\n \n \n `, isInline: true, directives: [{ type: i9.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-treeview-drop-hint',\n template: `\n \n
\n
\n \n\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-drop-hint-container']\n }], position: [{\n type: HostBinding,\n args: ['style.position']\n }], pointerEvents: [{\n type: HostBinding,\n args: ['style.pointer-events']\n }] } });\n\n/**\n * @hidden\n */\nclass DropHintService extends DragAndDropAssetService {\n constructor(componentFactoryResolver) {\n super();\n this.componentFactoryResolver = componentFactoryResolver;\n }\n initialize(container, template) {\n if (isPresent(this._componentRef)) {\n this.ngOnDestroy();\n }\n const hintComponentFactory = this.componentFactoryResolver.resolveComponentFactory(DropHintComponent);\n this.componentRef = container.createComponent(hintComponentFactory);\n this.hide();\n this.componentRef.instance.template = template;\n this.componentRef.changeDetectorRef.detectChanges();\n }\n updateDropHintData(action, sourceItem, destinationItem) {\n const dropHint = this.componentRef.instance;\n if (action === dropHint.action && dataItemsEqual(sourceItem, dropHint.sourceItem) && dataItemsEqual(destinationItem, dropHint.destinationItem)) {\n return;\n }\n dropHint.action = action;\n dropHint.sourceItem = sourceItem;\n dropHint.destinationItem = destinationItem;\n dropHint.detectChanges();\n }\n}\nDropHintService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });\nDropHintService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; } });\n\n/**\n * Represents the template for the TreeView drag clue when an item is dragged. To define the clue template,\n * nest an `` tag with the `kendoTreeViewDragClueTemplate` directive inside a `` tag\n * ([see example]({% slug draganddrop_treeview %}#toc-templates)).\n *\n *\n * The text, attempted drop action, source item and destination item are available as context variables in the template:\n *\n *\n * - `let-text=\"text\"` (`string`)\n * - `let-action=\"action\"` ([`DropAction`]({% slug api_treeview_dropaction %}))\n * - `let-sourceItem=\"sourceItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n * - `let-destinationItem=\"destinationItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n */\nclass DragClueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDragClueTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDragClueTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragClueTemplateDirective, selector: \"[kendoTreeViewDragClueTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragClueTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragClueTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents the template for the TreeView drop hint when an item is dragged. To define the hint template,\n * nest an `` tag with the `kendoTreeViewDropHintTemplate` directive inside a `` tag\n * ([see example]({% slug draganddrop_treeview %}#toc-templates)).\n *\n * The attempted drop action, source item and destination item are available as context variables in the template:\n *\n * - `let-action=\"action\"` ([`DropAction`]({% slug api_treeview_dropaction %}))\n * - `let-sourceItem=\"sourceItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n * - `let-destinationItem=\"destinationItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n */\nclass DropHintTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDropHintTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDropHintTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropHintTemplateDirective, selector: \"[kendoTreeViewDropHintTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropHintTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDropHintTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\nconst DEFAULT_SCROLL_SETTINGS = {\n enabled: true,\n step: 1,\n interval: 1\n};\n/**\n * A directive which enables the dragging and dropping items inside the current TreeView or between multiple linked TreeView component instances\n * ([see example]({% slug draganddrop_treeview %})).\n *\n * Triggers the [`nodeDragStart`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragstart),\n * [`nodeDrag`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrag),\n * [`nodeDrop`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrop),\n * [`nodeDragEnd`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragend),\n * [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and\n * [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem)\n * events when the corresponding actions occur on the respective TreeView instance.\n */\nclass DragAndDropDirective {\n constructor(element, zone, treeview, dragClueService, dropHintService) {\n this.element = element;\n this.zone = zone;\n this.treeview = treeview;\n this.dragClueService = dragClueService;\n this.dropHintService = dropHintService;\n /**\n * Specifies whether the `removeItem` event will be fired after an item is dropped when the `ctrl` key is pressed.\n * If enabled, the `removeItem` event will not be fired on the source TreeView\n * ([see example]({% slug draganddrop_treeview %}#toc-multiple-treeviews)).\n *\n * @default false\n */\n this.allowCopy = false;\n /**\n * Specifes the TreeViewComponent instances into which dragged items from the current TreeViewComponent can be dropped\n * ([see example]({% slug draganddrop_treeview %}#toc-multiple-treeviews)).\n */\n this.dropZoneTreeViews = [];\n /**\n * Specifies the distance in pixels from the initial item pointerdown event, before the dragging is initiated.\n * The `nodeDragStart` and all consequent TreeView drag events will not be fired until the actual dragging begins.\n *\n * @default 5\n */\n this.startDragAfter = 5;\n /**\n * Controlls the auto-scrolling behavior during drag-and-drop ([see example]({% slug draganddrop_treeview %}#toc-auto-scrolling)).\n * Enbaled by default. To turn the auto-scrolling off, set this prop to `false`.\n *\n * By default, the scrolling will be performed by 1 pixel at every 1 millisecond, when the dragged item reaches the top or the bottom of the scrollable container.\n * The `step` and `interval` can be overridden by providing a `DragAndDropScrollSettings` object to this prop.\n *\n * @default true\n */\n this.autoScroll = true;\n /**\n * @hidden\n */\n this.userSelectStyle = 'none';\n /**\n * Describes the offset of the parent element if the latter has the `transform` CSS prop applied.\n * Transformed parents create new stacking context and the fixed children must be position based on the transformed parent.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n */\n this.containerOffset = { top: 0, left: 0 };\n this.treeview.touchActions = false;\n }\n get scrollSettings() {\n const userProvidedSettings = typeof this.autoScroll === 'boolean' ?\n { enabled: this.autoScroll } :\n this.autoScroll;\n return Object.assign({}, DEFAULT_SCROLL_SETTINGS, userProvidedSettings);\n }\n ngAfterContentInit() {\n this.initalizeDraggable();\n this.dragClueService.initialize(this.treeview.assetsContainer, this.dragClueTemplate && this.dragClueTemplate.templateRef);\n this.dropHintService.initialize(this.treeview.assetsContainer, this.dropHintTemplate && this.dropHintTemplate.templateRef);\n }\n ngOnDestroy() {\n this.draggable.destroy();\n }\n /**\n * @hidden\n */\n handlePress({ originalEvent }) {\n if (!isContent(originalEvent.target)) {\n return;\n }\n // store the drag target on press, show it only when it's actually dragged\n this.draggedItem = closestWithMatch(originalEvent.target, '.k-treeview-leaf');\n // record the current pointer down coords - copared to the `startDragAfter` value to calculate whether to initiate dragging\n this.pendingDragStartEvent = originalEvent;\n }\n /**\n * @hidden\n */\n handleDrag({ originalEvent, clientX, clientY }) {\n if (this.shouldInitiateDragStart({ clientX, clientY })) {\n this.initiateDragStart();\n }\n if (!isPresent(this.draggedItem) || isPresent(this.pendingDragStartEvent)) {\n return;\n }\n const dropTarget = getDropTarget(originalEvent);\n if (hasObservers(this.treeview.nodeDrag)) {\n this.zone.run(() => this.notifyDrag(originalEvent, dropTarget));\n }\n const targetTreeView = this.getTargetTreeView(dropTarget);\n const dropPosition = getDropPosition(this.draggedItem, dropTarget, clientY, targetTreeView, this.containerOffset);\n const dropHintAnchor = closestWithMatch(dropTarget, '.k-treeview-top, .k-treeview-mid, .k-treeview-bot');\n const dropAction = getDropAction(dropPosition, dropTarget);\n const sourceItem = treeItemFromEventTarget(this.treeview, this.draggedItem);\n const destinationItem = treeItemFromEventTarget(targetTreeView, dropTarget);\n this.updateDropHintState(dropPosition, dropHintAnchor, dropAction, sourceItem, destinationItem);\n this.updateDragClueState(dropAction, clientX, clientY, sourceItem, destinationItem);\n if (this.scrollSettings.enabled) {\n this.dragClueService.scrollIntoView(this.scrollSettings);\n }\n }\n /**\n * @hidden\n */\n handleRelease({ originalEvent, clientY }) {\n if (this.scrollSettings.enabled) {\n this.dragClueService.cancelScroll();\n }\n if (!isPresent(this.draggedItem) || isPresent(this.pendingDragStartEvent)) {\n this.pendingDragStartEvent = null;\n this.draggedItem = null;\n return;\n }\n const dropTarget = getDropTarget(originalEvent);\n const sourceTree = this.treeview;\n const destinationTree = this.getTargetTreeView(dropTarget);\n const dropPosition = getDropPosition(this.draggedItem, dropTarget, clientY, this.getTargetTreeView(dropTarget), this.containerOffset);\n const sourceItem = treeItemFromEventTarget(sourceTree, this.draggedItem);\n const destinationItem = treeItemFromEventTarget(destinationTree, dropTarget);\n if (isPresent(destinationItem) && isPresent(dropPosition)) {\n this.zone.run(() => this.notifyDrop({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }, originalEvent));\n }\n else {\n this.dragClueService.animateDragClueToElementPosition(this.draggedItem);\n }\n if (hasObservers(this.treeview.nodeDragEnd)) {\n this.zone.run(() => this.notifyDragEnd({ sourceItem, destinationItem, originalEvent }));\n }\n this.dropHintService.hide();\n this.draggedItem = null;\n }\n updateDropHintState(dropPosition, dropHintAnchor, dropAction, sourceItem, destinationItem) {\n if (!isPresent(dropHintAnchor) || dropPosition === DropPosition.Over || !isPresent(dropPosition)) {\n this.dropHintService.hide();\n return;\n }\n const anchorViewPortCoords = dropHintAnchor.getBoundingClientRect();\n const insertBefore = dropPosition === DropPosition.Before;\n const top = insertBefore ? anchorViewPortCoords.top : (anchorViewPortCoords.top + anchorViewPortCoords.height);\n this.dropHintService.updateDropHintData(dropAction, sourceItem, destinationItem);\n // clear any possible container offset created by parent elements with `transform` css property set\n this.dropHintService.move(anchorViewPortCoords.left - this.containerOffset.left, top - this.containerOffset.top);\n this.dropHintService.show();\n }\n updateDragClueState(dropAction, clientX, clientY, sourceItem, destinationItem) {\n // clear any possible container offset created by parent elements with `transform` css property set\n this.dragClueService.move(clientX - this.containerOffset.left, clientY - this.containerOffset.top);\n this.dragClueService.updateDragClueData(dropAction, sourceItem, destinationItem);\n this.dragClueService.show();\n }\n initalizeDraggable() {\n this.draggable = new Draggable({\n press: this.handlePress.bind(this),\n drag: this.handleDrag.bind(this),\n release: this.handleRelease.bind(this)\n });\n this.zone.runOutsideAngular(() => this.draggable.bindTo(this.element.nativeElement));\n }\n notifyDragStart(originalEvent, dropTarget) {\n const sourceItem = treeItemFromEventTarget(this.treeview, dropTarget);\n const event = new TreeItemDragStartEvent({ sourceItem, originalEvent });\n this.treeview.nodeDragStart.emit(event);\n return event;\n }\n notifyDrag(originalEvent, dropTarget) {\n const dragEvent = {\n sourceItem: treeItemFromEventTarget(this.treeview, this.draggedItem),\n destinationItem: treeItemFromEventTarget(this.getTargetTreeView(dropTarget), dropTarget),\n originalEvent\n };\n this.treeview.nodeDrag.emit(dragEvent);\n }\n notifyDrop(args, originalEvent) {\n const event = new TreeItemDropEvent(args, originalEvent);\n args.destinationTree.nodeDrop.emit(event);\n // disable the animations on drop and restore them afterwards (if they were initially turned on)\n this.disableAnimationsForNextTick(args.destinationTree);\n if (args.sourceTree !== args.destinationTree) {\n this.disableAnimationsForNextTick(args.sourceTree);\n }\n if (!event.isDefaultPrevented() && event.isValid) {\n this.dragClueService.hide();\n // order matters in a flat data binding scenario (first add, then remove)\n args.destinationTree.addItem.emit(args);\n if (!(originalEvent.ctrlKey && this.allowCopy)) {\n args.sourceTree.removeItem.emit(args);\n }\n }\n else if (event.isDefaultPrevented()) {\n // directly hide the clue if the default is prevented\n this.dragClueService.hide();\n }\n else if (!event.isValid) {\n // animate the clue back to the source item position if marked as invalid\n this.dragClueService.animateDragClueToElementPosition(this.draggedItem);\n }\n }\n notifyDragEnd(dragEndEvent) {\n this.treeview.nodeDragEnd.emit(dragEndEvent);\n }\n getTargetTreeView(dropTarget) {\n const treeViewTagName = this.treeview.element.nativeElement.tagName;\n const targetTreeView = closestWithMatch(dropTarget, treeViewTagName);\n return [this.treeview, ...this.dropZoneTreeViews].find(treeView => isPresent(treeView) && treeView.element.nativeElement === targetTreeView);\n }\n disableAnimationsForNextTick(treeView) {\n // the treeView.animate getter returns `true` when the animations are turned off\n // confusing, but seems on purpose (the `animate` prop sets the value of the @.disabled host-bound attribute)\n if (treeView.animate) {\n return;\n }\n treeView.animate = false;\n this.zone.runOutsideAngular(() => setTimeout(() => treeView.animate = true));\n }\n shouldInitiateDragStart(currentPointerCoords) {\n if (!isPresent(this.pendingDragStartEvent)) {\n return false;\n }\n const distanceFromPointerDown = Math.sqrt(Math.pow((this.pendingDragStartEvent.clientX - currentPointerCoords.clientX), 2) +\n Math.pow((this.pendingDragStartEvent.clientY - currentPointerCoords.clientY), 2));\n return distanceFromPointerDown >= this.startDragAfter;\n }\n initiateDragStart() {\n if (hasObservers(this.treeview.nodeDragStart)) {\n const dragStartEvent = this.zone.run(() => this.notifyDragStart(this.pendingDragStartEvent, getDropTarget(this.pendingDragStartEvent)));\n if (dragStartEvent.isDefaultPrevented()) {\n this.pendingDragStartEvent = null;\n this.draggedItem = null;\n return;\n }\n }\n this.dragClueService.cancelReturnAnimation();\n this.dragClueService.updateText(this.draggedItem.innerText);\n this.containerOffset = getContainerOffset(this.draggedItem);\n this.pendingDragStartEvent = null;\n }\n}\nDragAndDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: TreeViewComponent }, { token: DragClueService }, { token: DropHintService }], target: i0.ɵɵFactoryTarget.Directive });\nDragAndDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragAndDropDirective, selector: \"[kendoTreeViewDragAndDrop]\", inputs: { allowCopy: \"allowCopy\", dropZoneTreeViews: \"dropZoneTreeViews\", startDragAfter: \"startDragAfter\", autoScroll: \"autoScroll\" }, host: { properties: { \"style.user-select\": \"this.userSelectStyle\", \"style.-ms-user-select\": \"this.userSelectStyle\", \"style.-moz-user-select\": \"this.userSelectStyle\", \"style.-webkit-user-select\": \"this.userSelectStyle\" } }, providers: [\n DragClueService,\n DropHintService\n ], queries: [{ propertyName: \"dragClueTemplate\", first: true, predicate: DragClueTemplateDirective, descendants: true }, { propertyName: \"dropHintTemplate\", first: true, predicate: DropHintTemplateDirective, descendants: true }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragAndDrop]',\n providers: [\n DragClueService,\n DropHintService\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: TreeViewComponent }, { type: DragClueService }, { type: DropHintService }]; }, propDecorators: { allowCopy: [{\n type: Input\n }], dropZoneTreeViews: [{\n type: Input\n }], startDragAfter: [{\n type: Input\n }], autoScroll: [{\n type: Input\n }], dragClueTemplate: [{\n type: ContentChild,\n args: [DragClueTemplateDirective, { static: false }]\n }], dropHintTemplate: [{\n type: ContentChild,\n args: [DropHintTemplateDirective, { static: false }]\n }], userSelectStyle: [{\n type: HostBinding,\n args: ['style.user-select']\n }, {\n type: HostBinding,\n args: ['style.-ms-user-select']\n }, {\n type: HostBinding,\n args: ['style.-moz-user-select']\n }, {\n type: HostBinding,\n args: ['style.-webkit-user-select']\n }] } });\n\nconst indexBuilder$1 = new IndexBuilderService();\nconst mapToWrappers = (currentLevelNodes, childrenField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = indexBuilder$1.nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToWrappers(getter(childrenField)(node), childrenField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of child nodes.\n */\nclass HierarchyBindingDirective extends FilteringBase {\n constructor(component, dragAndDropDirective) {\n super(component);\n this.component = component;\n this.dragAndDropDirective = dragAndDropDirective;\n /**\n * @hidden\n */\n this.loadOnDemand = true;\n this.originalData = [];\n const shouldFilter = !isPresent(this.dragAndDropDirective);\n this.component.isVisible = shouldFilter ? (node) => this.visibleNodes.has(node) : isVisible;\n }\n /**\n * The field name which holds the data items of the child component.\n */\n set childrenField(value) {\n if (!value) {\n throw new Error(\"'childrenField' cannot be empty\");\n }\n this._childrenField = value;\n }\n /**\n * @hidden\n * A callback which determines whether a TreeView node should be rendered as hidden.\n */\n set isVisible(fn) {\n this.component.isVisible = fn;\n }\n /**\n * The field name which holds the data items of the child component.\n */\n get childrenField() {\n return this._childrenField;\n }\n ngOnInit() {\n if (isPresent(this.childrenField)) {\n this.component.children = item => of(getter(this.childrenField)(item));\n this.component.hasChildren = item => {\n const children = getter(this.childrenField)(item);\n return Boolean(children && children.length);\n };\n this.component.editService = new HierarchyEditingService(this);\n this.component.filterChange.subscribe(this.handleFilterChange.bind(this));\n if (this.component.filter) {\n this.handleFilterChange(this.component.filter);\n }\n if (!this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n }\n ngOnChanges(changes) {\n if (isChanged('childrenField', changes, false)) {\n this.nodes = this.originalData;\n this.updateNodes(this.originalData);\n }\n if (isChanged('nodes', changes, false)) {\n this.updateNodes(changes.nodes.currentValue);\n }\n // should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'loadOnDemand'], changes) && !this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n /**\n * @hidden\n */\n updateNodes(values) {\n this.originalData = values || [];\n this.filterData = mapToWrappers(values, this.childrenField) || [];\n this.updateVisibleNodes(this.filterData);\n }\n}\nHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HierarchyBindingDirective, deps: [{ token: DataBoundComponent }, { token: DragAndDropDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HierarchyBindingDirective, selector: \"[kendoTreeViewHierarchyBinding]\", inputs: { childrenField: \"childrenField\", nodes: \"nodes\", isVisible: \"isVisible\", loadOnDemand: \"loadOnDemand\" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HierarchyBindingDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[kendoTreeViewHierarchyBinding]' }]\n }], ctorParameters: function () { return [{ type: DataBoundComponent }, { type: DragAndDropDirective, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { childrenField: [{\n type: Input\n }], nodes: [{\n type: Input\n }], isVisible: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions must have a unary.\n */\nconst compose = (...args) => (data) => args.reduceRight((acc, curr) => curr(acc), data);\n\n/**\n * @hidden\n */\nclass FlatEditingService {\n constructor(flatBinding) {\n this.flatBinding = flatBinding;\n }\n add({ sourceItem, destinationItem, dropPosition, sourceTree, destinationTree }) {\n // shallow clone the item as not to mistake it for its 'older' version when the remove handler kicks in to splice the item at its old position\n const clonedSourceDataItem = Object.assign({}, getDataItem(sourceItem));\n if (dropPosition === DropPosition.Over) {\n // expand the item that was dropped into\n expandDropTarget(destinationItem, destinationTree);\n const destinationItemId = getter(this.flatBinding.idField)(getDataItem(destinationItem));\n setter(this.flatBinding.parentIdField)(clonedSourceDataItem, destinationItemId);\n const lastChildNodeIndex = this.getLastVisibleChildNodeIndex(destinationTree, this.flatBinding.originalData, getDataItem(destinationItem));\n // insert after the last visible child\n const targetIndex = lastChildNodeIndex + 1;\n this.flatBinding.originalData.splice(targetIndex, 0, clonedSourceDataItem);\n // rebind the treeview data before searching for the focus target index\n this.rebindData();\n const focusTarget = this.fetchChildNodes(getDataItem(destinationItem), destinationTree).indexOf(clonedSourceDataItem);\n this.movedItemNewIndex = buildTreeIndex(destinationItem.item.index, focusTarget);\n }\n else {\n const shiftIndex = dropPosition === DropPosition.After ? 1 : 0;\n const targetIndex = this.flatBinding.originalData.indexOf(getDataItem(destinationItem)) + shiftIndex;\n this.flatBinding.originalData.splice(targetIndex, 0, clonedSourceDataItem);\n const destinationItemParentId = getter(this.flatBinding.parentIdField)(getDataItem(destinationItem));\n setter(this.flatBinding.parentIdField)(clonedSourceDataItem, destinationItemParentId);\n // rebind the treeview data before searching for the focus target index\n this.rebindData();\n const parentIndex = destinationItem.parent ?\n destinationItem.parent.item.index :\n null;\n const parentContainer = destinationItem.parent ?\n this.fetchChildNodes(getDataItem(destinationItem.parent), destinationTree) :\n destinationTree.nodes;\n const focusTarget = parentContainer.indexOf(clonedSourceDataItem);\n this.movedItemNewIndex = buildTreeIndex(parentIndex, focusTarget);\n }\n if (sourceTree !== destinationTree) {\n this.addChildNodes(clonedSourceDataItem, sourceTree);\n }\n // increment the parent page size => an item is moved into it\n const updatedParent = dropPosition === DropPosition.Over ? getDataItem(destinationItem) : getDataItem(destinationItem.parent);\n incrementPageSize(destinationTree, updatedParent);\n // the page sizes are stored by data-item reference => copy the old item ref page size to the new item reference\n copyPageSize(destinationTree, getDataItem(sourceItem), clonedSourceDataItem);\n // the source tree nodes are reloaded on `removeItem` - reload the destination tree nodes if the soruce and the destination tree are different\n if (sourceTree !== destinationTree && !destinationTree.loadOnDemand) {\n destinationTree.preloadChildNodes();\n }\n // if the source and destination trees are the same, focusing the moved item here will not have the desired effect\n // as the `remove` handler has not yet kicked-in to remove the item from its old position\n if (sourceTree !== destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n destinationTree.focus(this.movedItemNewIndex);\n }\n }\n remove({ sourceItem, sourceTree, destinationTree }) {\n const sourceDataItem = getDataItem(sourceItem);\n const sourceItemIndex = this.flatBinding.originalData.indexOf(sourceDataItem);\n this.flatBinding.originalData.splice(sourceItemIndex, 1);\n if (sourceTree !== destinationTree) {\n this.removeChildNodes(sourceDataItem, sourceTree);\n }\n this.rebindData();\n // emit collapse for the parent node if its last child node was spliced\n const parentChildren = sourceItem.parent ? sourceItem.parent.children : [];\n collapseEmptyParent(sourceItem.parent, parentChildren, sourceTree);\n // decrement source item parent page size => an item has been removed from it\n decrementPageSize(sourceTree, getDataItem(sourceItem.parent));\n // reload the treeview nodes\n if (!sourceTree.loadOnDemand) {\n sourceTree.preloadChildNodes();\n }\n // if the source and destination trees are different we want to focus only the moved item in the destination tree\n if (sourceTree === destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n // after the source item is removed from its original position, the candidate index might have to be corrected\n const index = updateMovedItemIndex(this.movedItemNewIndex, sourceItem.item.index);\n destinationTree.focus(index);\n }\n }\n addChildNodes(dataItem, source) {\n const itemChildren = this.fetchAllDescendantNodes(dataItem, source);\n this.flatBinding.originalData.push(...itemChildren);\n }\n removeChildNodes(dataItem, source) {\n const sourceChildren = this.fetchAllDescendantNodes(dataItem, source);\n sourceChildren.forEach(item => {\n const index = this.flatBinding.originalData.indexOf(item);\n this.flatBinding.originalData.splice(index, 1);\n });\n }\n fetchAllDescendantNodes(node, treeview) {\n let nodes = this.fetchChildNodes(node, treeview);\n nodes.forEach(node => nodes = nodes.concat(this.fetchAllDescendantNodes(node, treeview) || []));\n return nodes;\n }\n fetchChildNodes(node, treeview) {\n if (!node) {\n return [];\n }\n let nodes = [];\n treeview\n .children(node)\n .pipe(take(1))\n .subscribe(children => nodes = nodes.concat(children || []));\n return nodes;\n }\n getLastVisibleChildNodeIndex(treeview, data, node) {\n if (!isPresent(treeview.loadMoreService) || !treeview.hasChildren(node)) {\n return data.length;\n }\n const visibleNodesCount = treeview.loadMoreService.getGroupSize(node);\n const visibleChildren = this.fetchChildNodes(node, treeview).slice(0, visibleNodesCount);\n const lastNode = visibleChildren[visibleChildren.length - 1];\n const lastNodeIndex = data.indexOf(lastNode);\n return lastNodeIndex;\n }\n rebindData() {\n this.flatBinding.nodes = this.flatBinding.originalData;\n this.flatBinding.updateNodes(this.flatBinding.originalData);\n }\n}\n\nconst findChildren = (prop, nodes, value) => nodes.filter((x) => prop(x) === value);\nconst indexBuilder = new IndexBuilderService();\nconst mapToTree = (currentLevelNodes, allNodes, parentIdField, idField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = indexBuilder.nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToTree(findChildren(getter(parentIdField), allNodes || [], getter(idField)(node)), allNodes, parentIdField, idField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of the child nodes.\n */\nclass FlatDataBindingDirective extends FilteringBase {\n constructor(component) {\n super(component);\n this.component = component;\n /**\n * @hidden\n */\n this.loadOnDemand = true;\n /**\n * @hidden\n */\n this.originalData = [];\n this.component.isVisible = (node) => this.visibleNodes.has(node);\n }\n /**\n * @hidden\n * A callback which determines whether a TreeView node should be rendered as hidden.\n */\n set isVisible(fn) {\n this.component.isVisible = fn;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (isPresent(this.parentIdField) && isPresent(this.idField)) {\n const fetchChildren = (node) => findChildren(getter(this.parentIdField), this.originalData || [], getter(this.idField)(node));\n this.component.hasChildren = (node) => fetchChildren(node).length > 0;\n this.component.children = (node) => of(fetchChildren(node));\n this.component.editService = new FlatEditingService(this);\n this.component.filterChange.subscribe(this.handleFilterChange.bind(this));\n if (this.component.filter) {\n this.handleFilterChange(this.component.filter);\n }\n if (!this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (isChanged('parentIdField', changes, false)) {\n this.nodes = this.originalData;\n this.updateNodes(this.originalData);\n }\n if (isChanged('nodes', changes, false)) {\n this.updateNodes(changes.nodes.currentValue);\n }\n // should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'loadOnDemand'], changes) && !this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n /**\n * @hidden\n */\n updateNodes(values) {\n this.originalData = values || [];\n if (!isNullOrEmptyString(this.parentIdField)) {\n const prop = getter(this.parentIdField);\n this.component.nodes = this.originalData.filter(compose(isBlank, prop));\n this.filterData = mapToTree(this.component.nodes, this.originalData, this.parentIdField, this.idField);\n this.updateVisibleNodes(this.filterData);\n }\n else {\n this.component.nodes = this.originalData.slice(0);\n }\n }\n}\nFlatDataBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatDataBindingDirective, deps: [{ token: DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nFlatDataBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FlatDataBindingDirective, selector: \"[kendoTreeViewFlatDataBinding]\", inputs: { nodes: \"nodes\", parentIdField: \"parentIdField\", idField: \"idField\", loadOnDemand: \"loadOnDemand\", isVisible: \"isVisible\" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FlatDataBindingDirective, decorators: [{\n type: Directive,\n args: [{ selector: \"[kendoTreeViewFlatDataBinding]\" }]\n }], ctorParameters: function () { return [{ type: DataBoundComponent }]; }, propDecorators: { nodes: [{\n type: Input\n }], parentIdField: [{\n type: Input\n }], idField: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], isVisible: [{\n type: Input\n }] } });\n\nconst COMPONENT_DIRECTIVES$1 = [\n CheckBoxComponent\n];\n/**\n * @hidden\n *\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the CheckBox component.\n */\nclass CheckBoxModule {\n}\nCheckBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCheckBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, declarations: [CheckBoxComponent], exports: [CheckBoxComponent] });\nCheckBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES$1],\n exports: [COMPONENT_DIRECTIVES$1]\n }]\n }] });\n\n/**\n * A directive which enables the update of the initially provided data array during drag-and-drop.\n *\n * Either use this directive in combination with one of the data binding directives ([`kendoTreeViewHierarchyBinding`]({% slug api_treeview_hierarchybindingdirective %})\n * or [`kendoTreeViewFlatDataBinding`]({% slug api_treeview_flatdatabindingdirective %})) which set their own edit handlers, or provide\n * your own [`editService`]({% slug api_treeview_editservice %}) to this directive. The latter subscribes to and calls the\n * [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem)\n * handlers when the corresponding events are triggered by the TreeView component.\n */\nclass DragAndDropEditingDirective {\n constructor(treeview) {\n this.treeview = treeview;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.treeview.addItem.subscribe(this.handleAdd.bind(this)));\n this.subscriptions.add(this.treeview.removeItem.subscribe(this.handleRemove.bind(this)));\n }\n /**\n * Specifies the handlers called on drag-and-drop [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem)\n * and [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem) events.\n */\n set editService(service) {\n this.treeview.editService = service;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n handleAdd(args) {\n if (!isPresent(this.treeview.editService)) {\n throw new Error('No `editService` provided. Either provide your own implementation or use this directive in combination with one of the data binding directives (`kendoTreeViewHierarchyBinding` or `kendoTreeViewFlatDataBinding`).');\n }\n this.treeview.editService.add(args);\n }\n handleRemove(args) {\n if (!isPresent(this.treeview.editService)) {\n throw new Error('No `editService` provided. Either provide your own implementation or use this directive in combination with one of the data binding directives (`kendoTreeViewHierarchyBinding` or `kendoTreeViewFlatDataBinding`).');\n }\n this.treeview.editService.remove(args);\n }\n}\nDragAndDropEditingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropEditingDirective, deps: [{ token: TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDragAndDropEditingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DragAndDropEditingDirective, selector: \"[kendoTreeViewDragAndDropEditing]\", inputs: { editService: \"editService\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DragAndDropEditingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewDragAndDropEditing]'\n }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }]; }, propDecorators: { editService: [{\n type: Input\n }] } });\n\nconst LOAD_MORE_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/treeview/load-more-button/';\n/**\n * A directive that enables the display of only a limited amount of nodes per level\n * ([see example]({% slug loadmorebutton_treeview %})).\n */\nclass LoadMoreDirective {\n constructor(treeview) {\n this.treeview = treeview;\n /**\n * Keeps track of the current page size of each node over expand/collapse cycles.\n */\n this.pageSizes = new Map();\n /**\n * Used as an identifier for the root page size as the root collection of nodes is not associated with a data item.\n */\n this.rootLevelId = guid();\n this.treeview.loadMoreService = {\n getInitialPageSize: this.getInitalPageSize.bind(this),\n getGroupSize: this.getGroupSize.bind(this),\n setGroupSize: this.setGroupSize.bind(this),\n getTotalNodesCount: this.getTotalNodesCount.bind(this)\n };\n }\n /**\n * Specifies the callback that will be called when the load more button is clicked.\n * Providing a function is only required when additional nodes are fetched on demand\n * ([see example]({% slug loadmorebutton_treeview %}#toc-remote-data)).\n */\n set loadMoreNodes(loadMoreNodes) {\n if (typeof loadMoreNodes === 'string') {\n return;\n }\n this.treeview.loadMoreService.loadMoreNodes = loadMoreNodes;\n }\n ngOnChanges() {\n this.verifySettings();\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isPresent(this.pageSize)) {\n throw new Error(`To use the TreeView \\`kendoTreeViewLoadMore\\` directive, you need to assign a \\`pageSize\\` value. See ${LOAD_MORE_DOC_LINK}.`);\n }\n const loadMoreNodes = this.treeview.loadMoreService.loadMoreNodes;\n if (isPresent(loadMoreNodes) && typeof loadMoreNodes !== 'function') {\n throw new Error(`The passed value to the \\`kendoTreeViewLoadMore\\` directive must be a function that retrieves additional nodes. See ${LOAD_MORE_DOC_LINK}.`);\n }\n if (isPresent(loadMoreNodes) && !isPresent(this.totalField)) {\n throw new Error(`When a function to fetch additional nodes is provided to the \\`kendoTreeViewLoadMore\\` directive, the \\`totalField\\` and \\`totalRootNodes\\` values must also be provided. See ${LOAD_MORE_DOC_LINK}.`);\n }\n }\n getGroupSize(dataItem) {\n const itemKey = dataItem || this.rootLevelId;\n return this.pageSizes.has(itemKey) ? this.pageSizes.get(itemKey) : this.pageSize;\n }\n setGroupSize(dataItem, pageSize) {\n const itemKey = dataItem || this.rootLevelId;\n const normalizedSizeValue = pageSize > 0 ? pageSize : 0;\n this.pageSizes.set(itemKey, normalizedSizeValue);\n }\n getTotalNodesCount(dataItem, loadedNodesCount) {\n if (isPresent(dataItem) && isPresent(this.totalField)) {\n return dataItem[this.totalField];\n }\n else if (!isPresent(dataItem) && isPresent(this.totalRootNodes)) {\n return this.totalRootNodes;\n }\n else {\n return loadedNodesCount;\n }\n }\n getInitalPageSize() {\n return this.pageSize;\n }\n}\nLoadMoreDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreDirective, deps: [{ token: TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nLoadMoreDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LoadMoreDirective, selector: \"[kendoTreeViewLoadMore]\", inputs: { loadMoreNodes: [\"kendoTreeViewLoadMore\", \"loadMoreNodes\"], pageSize: \"pageSize\", totalRootNodes: \"totalRootNodes\", totalField: \"totalField\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LoadMoreDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTreeViewLoadMore]'\n }]\n }], ctorParameters: function () { return [{ type: TreeViewComponent }]; }, propDecorators: { loadMoreNodes: [{\n type: Input,\n args: ['kendoTreeViewLoadMore']\n }], pageSize: [{\n type: Input\n }], totalRootNodes: [{\n type: Input\n }], totalField: [{\n type: Input\n }] } });\n\nconst COMPONENT_DIRECTIVES = [\n TreeViewComponent,\n TreeViewGroupComponent,\n TreeViewItemDirective,\n TreeViewItemContentDirective,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n LoadingIndicatorDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DragClueComponent,\n DropHintTemplateDirective,\n DropHintComponent,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [TreeViewComponent,\n TreeViewGroupComponent,\n TreeViewItemDirective,\n TreeViewItemContentDirective,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n LoadingIndicatorDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DragClueComponent,\n DropHintTemplateDirective,\n DropHintComponent,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective], imports: [CommonModule,\n CheckBoxModule,\n InputsModule], exports: [TreeViewComponent,\n TreeViewGroupComponent,\n TreeViewItemDirective,\n TreeViewItemContentDirective,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n LoadingIndicatorDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DragClueComponent,\n DropHintTemplateDirective,\n DropHintComponent,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[\n CommonModule,\n CheckBoxModule,\n InputsModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n exports: [COMPONENT_DIRECTIVES],\n imports: [\n CommonModule,\n CheckBoxModule,\n InputsModule\n ],\n entryComponents: [\n DragClueComponent,\n DropHintComponent\n ]\n }]\n }] });\n\nconst EXPORTS = [\n TreeViewComponent,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DropHintTemplateDirective,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the TreeView component.\n */\nclass TreeViewModule {\n}\nTreeViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTreeViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, imports: [SharedModule], exports: [TreeViewComponent,\n NodeTemplateDirective,\n CheckDirective,\n DisableDirective,\n ExpandDirective,\n SelectDirective,\n HierarchyBindingDirective,\n FlatDataBindingDirective,\n DragAndDropDirective,\n DragClueTemplateDirective,\n DropHintTemplateDirective,\n DragAndDropEditingDirective,\n LoadMoreDirective,\n LoadMoreButtonTemplateDirective] });\nTreeViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TreeViewModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [EXPORTS],\n imports: [SharedModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CheckDirective, DataBoundComponent, DisableDirective, DragAndDropDirective, DragAndDropEditingDirective, DragClueService, DragClueTemplateDirective, DropAction, DropHintService, DropHintTemplateDirective, DropPosition, ExpandDirective, ExpandableComponent, FlatDataBindingDirective, HierarchyBindingDirective, LoadMoreButtonTemplateDirective, LoadMoreDirective, NodeTemplateDirective, SelectDirective, TreeItemDragEvent, TreeItemDragStartEvent, TreeItemDropEvent, TreeViewComponent, TreeViewModule };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, Input, Output, ViewChild, HostBinding, Directive, Injectable, InjectionToken, HostListener, ViewChildren, forwardRef, isDevMode, ViewContainerRef, Optional, Inject, ContentChild, ContentChildren, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport * as i9 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, Keys, isChanged, hasObservers, KendoInput, anyChanged, guid as guid$1, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';\nimport * as i8 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter as getter$1, pointers, touchEnabled } from '@progress/kendo-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { merge, fromEvent, Subject, Subscription, of, interval } from 'rxjs';\nimport * as i2 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nexport { PopupComponent } from '@progress/kendo-angular-popup';\nimport { map, switchMap, take, auditTime, tap, filter, partition, throttleTime, catchError, skipWhile, concatMap, takeUntil } from 'rxjs/operators';\nimport * as i11 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1$1 from '@progress/kendo-angular-treeview';\nimport { DataBoundComponent, ExpandableComponent, FlatDataBindingDirective, HierarchyBindingDirective, ExpandDirective, TreeViewModule } from '@progress/kendo-angular-treeview';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-dropdowns',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1654848651,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isNumber = (value) => !isNaN(value);\n/**\n * @hidden\n */\nconst guid = () => {\n let id = \"\";\n let i;\n let random;\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\n/**\n * @hidden\n */\nconst combineStr = (begin, end) => {\n return begin.concat(end.substr(end.toLowerCase().indexOf(begin.toLowerCase()) + begin.length));\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => typeof window !== 'undefined';\n/**\n * @hidden\n */\nconst isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nconst isObject = (value) => isPresent(value) && typeof value === 'object';\n/**\n * @hidden\n */\nconst isEmptyString = (value) => typeof value === 'string' && value.length === 0;\n/**\n * @hidden\n */\nconst resolveValuesInArray = (values, data = [], valueField) => values\n .map(value => {\n return data.find(item => getter(item, valueField) === value);\n})\n .filter(value => value !== undefined);\n/**\n * @hidden\n */\nconst validateComplexValues = (values, valueField) => isArray(values) && values.filter(item => {\n return isObject(item) && isPresent(getter(item, valueField));\n});\n/**\n * @hidden\n */\nconst resolveAllValues = (value, data, valueField) => {\n const customValues = validateComplexValues(value, valueField) || [];\n const resolvedValues = resolveValuesInArray(value, data, valueField) || [];\n return resolvedValues.concat(customValues);\n};\n/**\n * @hidden\n */\nconst isObjectArray = (values) => {\n return isArray(values) && values.every(item => isObject(item));\n};\n/**\n * @hidden\n */\nconst selectedIndices = (values, data, valueField) => {\n const extractedValues = data.map(item => {\n return isPresent(item) && isPresent(getter(item, valueField)) ? getter(item, valueField) : item;\n });\n return values.reduce((arr, item) => {\n const value = isPresent(item) && isPresent(getter(item, valueField)) ? getter(item, valueField) : item;\n const index = extractedValues.indexOf(value);\n if (index !== -1) {\n arr.push(index);\n }\n return arr;\n }, []);\n};\n/**\n * @hidden\n */\nconst getter = (dataItem, field) => {\n if (!isPresent(dataItem)) {\n return null;\n }\n if (!isPresent(field) || !isObject(dataItem)) {\n return dataItem;\n }\n // creates a field accessor supporting nested fields processing\n const valueFrom = getter$1(field);\n return valueFrom(dataItem);\n};\n/**\n * @hidden\n */\nconst resolveValue = (args) => {\n let dataItem;\n if (isPresent(args.value)) {\n const data = [args.defaultItem, ...args.data];\n dataItem = data.find(element => getter(element, args.valueField) === args.value);\n return {\n dataItem: dataItem,\n focused: args.data.indexOf(dataItem),\n selected: args.data.indexOf(dataItem)\n };\n }\n else if (args.index) {\n dataItem = args.data[args.index];\n return {\n dataItem: args.data[args.index],\n focused: args.index,\n selected: args.index\n };\n }\n return {\n dataItem: args.defaultItem,\n focused: -1,\n selected: -1\n };\n};\n/**\n * @hidden\n */\nconst sameCharsOnly = (word, character) => {\n for (let idx = 0; idx < word.length; idx++) {\n if (word.charAt(idx) !== character) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nconst shuffleData = (data, splitIndex, defaultItem) => {\n let result = data;\n if (defaultItem) {\n result = [defaultItem].concat(result);\n }\n return result.slice(splitIndex).concat(result.slice(0, splitIndex));\n};\n/**\n * @hidden\n */\nconst matchText = (text, word, ignoreCase) => {\n if (!isPresent(text)) {\n return false;\n }\n let temp = String(text);\n if (ignoreCase) {\n temp = temp.toLowerCase();\n }\n return temp.indexOf(word) === 0;\n};\n/**\n * @hidden\n */\nconst elementFromPoint = (x, y) => {\n if (!isDocumentAvailable()) {\n return;\n }\n return document.elementFromPoint(x, y);\n};\n/**\n * @hidden\n *\n * Checks whether the passed object has all of the listed properties.\n */\nconst hasProps = (obj, props) => {\n if (!isPresent(obj)) {\n return false;\n }\n return props.every(prop => obj.hasOwnProperty(prop));\n};\n/**\n * @hidden\n *\n * Checks whether an element is untouched by looking for the ng-untouched css class\n */\nconst isUntouched = (element) => element.className.includes('ng-untouched');\n/**\n * @hidden\n */\nconst noop = (_) => { };\n/**\n * IE element `matches` polyfill.\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\n */\nconst matches = (element, selector) => {\n const matcher = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (!matcher) {\n return false;\n }\n return matcher.call(element, selector);\n};\n/**\n * @hidden\n *\n * IE element `closest` polyfill.\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n */\nconst closest = (element, selector) => {\n let parent = element;\n while (parent !== null && parent.nodeType === 1) {\n if (matches(parent, selector)) {\n return parent;\n }\n parent = parent.parentElement || parent.parentNode;\n }\n return null;\n};\n/**\n * @hidden\n *\n * Parses a provided value to its type 'number' representation.\n * If the parsed value (via Number(value)) is NaN, the provided default value is returned.\n * Uses 0 as default value if a second param is not provided.\n */\nconst parseNumber = (num, defaultValue = 0) => {\n const normalizedValue = Number(num);\n return isNaN(normalizedValue) ? defaultValue : normalizedValue;\n};\n/**\n * @hidden\n *\n * Checks whether the passed target element is inside the provided host or popupRef.\n */\nconst inDropDown = (host, target, popupRef) => {\n return host.nativeElement.contains(target) || (popupRef && popupRef.popupElement.contains(target));\n};\n/**\n * @hidden\n *\n * Calculates the hierarchical level of an item, based on the provided index.\n * The result level is zero-based (starts from 0).\n */\nconst getHierarchicalItemLevel = (index) => {\n return (index || '').split('_').length - 1;\n};\n/**\n * @hidden\n *\n * Retrieves all descendant nodes' lookups which are currently registered in the provided lookup item as a flat array.\n */\nconst fetchDescendentNodes = (lookup, filterExpression) => {\n if (!isPresent(lookup) || lookup.children.length === 0) {\n return [];\n }\n let descendants = lookup.children;\n if (isPresent(filterExpression)) {\n descendants = descendants.filter(descendent => filterExpression(descendent.item));\n }\n descendants.forEach(child => descendants = descendants.concat(fetchDescendentNodes(child, filterExpression)));\n return descendants;\n};\n/**\n * @hidden\n *\n * Retrieves the correct value based on the item's level and the provided value field/s.\n * Used in the MultiSelectTree component.\n */\nconst valueFrom = ({ dataItem, index, level }, valueField) => {\n const fields = Array.isArray(valueField) ? valueField : [valueField];\n // either use the explicitly provided value level, or infer it from the item index\n const valueLevel = isPresent(level) ? level : getHierarchicalItemLevel(index);\n // fall-back to the last available one, if the current node is in a deeper level\n const normalizedLevel = Math.min(valueLevel, fields.length - 1);\n const field = fields[normalizedLevel];\n return getter$1(field)(dataItem);\n};\n/**\n * @hidden\n * Returns the size class based on the component and size input.\n */\nconst getSizeClass = (component, size) => {\n const SIZE_CLASSES = {\n 'small': `k-${component}-sm`,\n 'medium': `k-${component}-md`,\n 'large': `k-${component}-lg`\n };\n return SIZE_CLASSES[size];\n};\n/**\n * @hidden\n * Returns the rounded class based on the rounded input.\n */\nconst getRoundedClass = (rounded) => {\n const ROUNDED_CLASSES = {\n 'small': 'k-rounded-sm',\n 'medium': 'k-rounded-md',\n 'large': 'k-rounded-lg',\n 'full': 'k-rounded-full'\n };\n return ROUNDED_CLASSES[rounded];\n};\n/**\n * @hidden\n * Return the fillMode class based on the component and fillMode input.\n */\nconst getFillModeClass = (component, fillMode) => {\n const FILLMODE_CLASSES = {\n 'solid': `k-${component}-solid`,\n 'flat': `k-${component}-flat`,\n 'outline': `k-${component}-outline`\n };\n return FILLMODE_CLASSES[fillMode];\n};\n\n/**\n * @hidden\n */\nclass SearchBarComponent {\n constructor(localization, renderer) {\n this.localization = localization;\n this.valueChange = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onClick = new EventEmitter();\n this.onNavigate = new EventEmitter();\n this.searchBarClass = true;\n this._userInput = \"\";\n this._previousValue = \"\";\n this._placeholder = \"\";\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.renderer = renderer;\n }\n get userInput() {\n return this._userInput;\n }\n set userInput(userInput) {\n this._userInput = userInput || \"\";\n }\n get value() {\n return this.input.nativeElement.value;\n }\n set placeholder(text) {\n this._placeholder = text || '';\n this.setInputSize();\n }\n get placeholder() {\n return this._placeholder;\n }\n get ariaExpanded() {\n return this.role === 'combobox' ? this.popupOpen : null;\n }\n ngOnInit() {\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n }\n ngOnChanges(changes) {\n let previousUserInput;\n if (this.input && (changes.userInput || changes.suggestedText)) {\n if (changes.userInput && changes.userInput.previousValue) {\n if (this._previousValue === changes.userInput.previousValue) {\n previousUserInput = this._previousValue;\n }\n else {\n previousUserInput = changes.userInput.currentValue || \"\";\n }\n }\n else {\n previousUserInput = this._previousValue;\n }\n const caretIndex = this.input.nativeElement.selectionStart;\n const caretAtEnd = previousUserInput.length === caretIndex;\n this.writeInputValue(this.suggestedText ? combineStr(this.userInput, this.suggestedText) : this.userInput);\n if (this.suggestedText) {\n this.setInputSelection(this.userInput.length, this.suggestedText.length);\n }\n else if (caretAtEnd) {\n this.setInputSelection(this.userInput.length, this.userInput.length);\n }\n else {\n this.setInputSelection(caretIndex, caretIndex);\n }\n this._previousValue = this.userInput;\n }\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n writeInputValue(text) {\n if (isDocumentAvailable()) {\n this.renderer.setProperty(this.input.nativeElement, 'value', text);\n }\n }\n setInputSelection(start, end) {\n if (isDocumentAvailable() && this.input.nativeElement === document.activeElement) {\n try {\n this.input.nativeElement.setSelectionRange(start, end);\n }\n catch (e) {\n //Make sure that the element is in the DOM before you invoke its methods\n }\n }\n }\n handleInput(event) {\n const value = event.target.value;\n if (value !== this.userInput) {\n this._previousValue = value;\n this.valueChange.emit(value);\n }\n }\n handleFocus(event) {\n this.onFocus.emit(event);\n }\n handleBlur(event) {\n this.onBlur.emit(event);\n }\n handleKeydown(event) {\n const keyCode = event.keyCode;\n const keys = [Keys.ArrowUp, Keys.ArrowDown, Keys.ArrowLeft, Keys.ArrowRight, Keys.Enter,\n Keys.Escape, Keys.Delete, Keys.Backspace, Keys.Home, Keys.End];\n if (keys.indexOf(keyCode) > -1) {\n this.onNavigate.emit(event);\n }\n }\n focus() {\n if (isDocumentAvailable()) {\n this.input.nativeElement.focus();\n }\n }\n blur() {\n if (isDocumentAvailable()) {\n this.input.nativeElement.blur();\n }\n }\n setInputSize() {\n const lengthOf = x => x ? x.length : 0;\n const input = this.input.nativeElement;\n const placeholderLength = lengthOf(this.placeholder);\n const textLength = lengthOf(this.value);\n const size = Math.max(placeholderLength, textLength, 1);\n this.renderer.setAttribute(input, 'size', size.toString());\n }\n}\nSearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nSearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: { id: \"id\", listId: \"listId\", tagListId: \"tagListId\", activeDescendant: \"activeDescendant\", noDataLabel: \"noDataLabel\", disabled: \"disabled\", readonly: \"readonly\", tabIndex: \"tabIndex\", popupOpen: \"popupOpen\", role: \"role\", userInput: \"userInput\", suggestedText: \"suggestedText\", placeholder: \"placeholder\" }, outputs: { valueChange: \"valueChange\", onBlur: \"onBlur\", onFocus: \"onFocus\", onClick: \"onClick\", onNavigate: \"onNavigate\" }, host: { properties: { \"class.k-searchbar\": \"this.searchBarClass\" } }, viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true, directives: [{ type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SearchBarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-searchbar',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }]; }, propDecorators: { id: [{\n type: Input\n }], listId: [{\n type: Input\n }], tagListId: [{\n type: Input\n }], activeDescendant: [{\n type: Input\n }], noDataLabel: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], popupOpen: [{\n type: Input\n }], role: [{\n type: Input\n }], userInput: [{\n type: Input\n }], suggestedText: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onClick: [{\n type: Output\n }], onNavigate: [{\n type: Output\n }], input: [{\n type: ViewChild,\n args: ['input', { static: true }]\n }], searchBarClass: [{\n type: HostBinding,\n args: ['class.k-searchbar']\n }], placeholder: [{\n type: Input\n }] } });\n\n/**\n * Renders the list item content. To define the item template, nest an `` tag\n * with the `kendoItemTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * - [Using `ItemTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-item-template)\n * - [Using `ItemTemplate` with the ComboBox]({% slug templates_combobox %}#toc-item-template)\n * - [Using `ItemTemplate` with the DropDownList]({% slug templates_ddl %}#toc-item-template)\n * - [Using `ItemTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-item-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass ItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ItemTemplateDirective, selector: \"[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the header content of the list. To define the header template, nest an `` tag\n * with the `kendoHeaderTemplate` directive inside the component tag.\n *\n * - [Using `HeaderTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-header-template)\n * - [Using `HeaderTemplate` with the ComboBox]({% slug templates_combobox %}#toc-header-template)\n * - [Using `HeaderTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-header-template)\n * - [Using `HeaderTemplate` with the DropDownList]({% slug templates_ddl %}#toc-header-template)\n * - [Using `HeaderTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-header-template)\n * - [Using `HeaderTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-header-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

Header template

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass HeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: HeaderTemplateDirective, selector: \"[kendoDropDownListHeaderTemplate],[kendoComboBoxHeaderTemplate],[kendoDropDownTreeHeaderTemplate],[kendoMultiColumnComboBoxHeaderTemplate],[kendoAutoCompleteHeaderTemplate],[kendoMultiSelectHeaderTemplate],[kendoMultiSelectTreeHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: HeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListHeaderTemplate],[kendoComboBoxHeaderTemplate],[kendoDropDownTreeHeaderTemplate],[kendoMultiColumnComboBoxHeaderTemplate],[kendoAutoCompleteHeaderTemplate],[kendoMultiSelectHeaderTemplate],[kendoMultiSelectTreeHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the footer content of the list. To define the footer template, nest an `` tag\n * with the `kendoFooterTemplate` directive inside the component tag.\n *\n * - [Using `FooterTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-footer-template)\n * - [Using `FooterTemplate` with the ComboBox]({% slug templates_combobox %}#toc-footer-template)\n * - [Using `FooterTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-footer-template)\n * - [Using `FooterTemplate` with the DropDownList]({% slug templates_ddl %}#toc-footer-template)\n * - [Using `FooterTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-footer-template)\n * - [Using `FooterTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-footer-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

Footer template

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FooterTemplateDirective, selector: \"[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the group header content. To define the group template, nest an `` tag\n * with the `kendoGroupTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-groupName` directive.\n *\n * - [Using `GroupTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-group-template)\n * - [Using `GroupTemplate` with the ComboBox]({% slug templates_combobox %}#toc-group-template)\n * - [Using `GroupTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-group-template)\n * - [Using `GroupTemplate` with the DropDownList]({% slug templates_ddl %}#toc-group-template)\n * - [Using `GroupTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-group-template)\n *\n * @example\n * ```ts\n * import { groupBy } from '@progress/kendo-data-query';\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Food type: {{groupName}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n * public groupedData = groupBy(this.data, [{field: \"subcategory\"}]);\n * }\n * ```\n */\nclass GroupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nGroupTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupTemplateDirective, selector: \"[kendoDropDownListGroupTemplate],[kendoComboBoxGroupTemplate],[kendoMultiColumnComboBoxGroupTemplate],[kendoAutoCompleteGroupTemplate],[kendoMultiSelectGroupTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListGroupTemplate],[kendoComboBoxGroupTemplate],[kendoMultiColumnComboBoxGroupTemplate],[kendoAutoCompleteGroupTemplate],[kendoMultiSelectGroupTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the fixed group header content. To define the fixed group template, nest an `` tag\n * with the `kendoFixedGroupTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-groupName` directive.\n *\n * - [Using `FixedGroupTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the ComboBox]({% slug templates_combobox %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the DropDownList]({% slug templates_ddl %}#toc-fixed-group-template)\n * - [Using `FixedGroupTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-fixed-group-template)\n *\n * @example\n * ```ts\n * import { groupBy } from '@progress/kendo-data-query';\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Food type: {{groupName}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n * public groupedData = groupBy(this.data, [{field: \"subcategory\"}]);\n * }\n * ```\n */\nclass FixedGroupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFixedGroupTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FixedGroupTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nFixedGroupTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FixedGroupTemplateDirective, selector: \"[kendoDropDownListFixedGroupTemplate],[kendoComboBoxFixedGroupTemplate],[kendoMultiColumnComboBoxFixedGroupTemplate],[kendoAutoCompleteFixedGroupTemplate],[kendoMultiSelectFixedGroupTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FixedGroupTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListFixedGroupTemplate],[kendoComboBoxFixedGroupTemplate],[kendoMultiColumnComboBoxFixedGroupTemplate],[kendoAutoCompleteFixedGroupTemplate],[kendoMultiSelectFixedGroupTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass SelectionService {\n constructor() {\n this.onSelect = new EventEmitter();\n this.onChange = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.total = 0;\n this.selectedIndices = [];\n }\n getTotal() {\n return this.total;\n }\n isSelected(index) {\n return isPresent(this.selectedIndices.find(current => current === index));\n }\n isFocused(index) {\n return index === this.focused;\n }\n focus(index) {\n if (this.isFocused(index)) {\n return;\n }\n this.focused = index;\n this.onFocus.emit(index);\n }\n select(index) {\n if (this.isSelected(index)) {\n return;\n }\n this.selectedIndices = [index];\n this.focused = index;\n this.onSelect.emit({\n indices: [index],\n newSelection: isPresent(index)\n });\n }\n add(index) {\n if (this.isSelected(index)) {\n return;\n }\n this.selectedIndices.push(index);\n this.focused = index;\n this.onChange.emit({\n added: index,\n indices: this.selectedIndices.slice()\n });\n }\n unselect(index) {\n if (!this.isSelected(index)) {\n return;\n }\n const position = this.selectedIndices.indexOf(index);\n this.selectedIndices.splice(position, 1);\n this.focused = index;\n this.onChange.emit({\n indices: this.selectedIndices.slice(),\n removed: index\n });\n }\n change(index) {\n const newSelection = isPresent(index) && !this.isSelected(index);\n this.selectedIndices = [index];\n this.focused = index;\n this.onChange.emit({\n indices: [index],\n newSelection: newSelection\n });\n }\n resetSelection(index) {\n this.selectedIndices = index instanceof Array ? index : [index];\n this.focused = this.selectedIndices[this.selectedIndices.length - 1];\n }\n get selected() {\n return this.selectedIndices.slice();\n }\n get focused() {\n return this.focusedIndex;\n }\n set focused(index) {\n if (this.focusedIndex !== index) {\n this.focusedIndex = index;\n this.onFocus.emit(index);\n }\n }\n}\nSelectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nSelectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nvar NavigationAction;\n(function (NavigationAction) {\n // eslint-disable-next-line id-denylist\n NavigationAction[NavigationAction[\"Undefined\"] = 0] = \"Undefined\";\n NavigationAction[NavigationAction[\"Open\"] = 1] = \"Open\";\n NavigationAction[NavigationAction[\"Close\"] = 2] = \"Close\";\n NavigationAction[NavigationAction[\"Enter\"] = 3] = \"Enter\";\n NavigationAction[NavigationAction[\"Tab\"] = 4] = \"Tab\";\n NavigationAction[NavigationAction[\"Esc\"] = 5] = \"Esc\";\n NavigationAction[NavigationAction[\"Delete\"] = 6] = \"Delete\";\n NavigationAction[NavigationAction[\"Backspace\"] = 7] = \"Backspace\";\n NavigationAction[NavigationAction[\"Home\"] = 8] = \"Home\";\n NavigationAction[NavigationAction[\"End\"] = 9] = \"End\";\n NavigationAction[NavigationAction[\"Up\"] = 10] = \"Up\";\n NavigationAction[NavigationAction[\"Down\"] = 11] = \"Down\";\n NavigationAction[NavigationAction[\"Left\"] = 12] = \"Left\";\n NavigationAction[NavigationAction[\"Right\"] = 13] = \"Right\";\n})(NavigationAction || (NavigationAction = {}));\n\n/**\n * @hidden\n */\nclass DataService {\n constructor() {\n this.grouped = false;\n this.groupIndices = [];\n }\n set data(data) {\n this._data = data;\n this.grouped = this.isGrouped(data);\n if (this.grouped) {\n this.groupIndices = this.getGroupIndices(data);\n this._flatData = this.flatten(data);\n }\n }\n get data() {\n if (this.grouped) {\n return this._flatData;\n }\n return this._data;\n }\n /**\n * @hidden\n * Used to get the actual items count, i.e. excluding the header items in case of grouping.\n */\n get itemsCount() {\n if (!isPresent(this.data) || this.data.length === 0) {\n return 0;\n }\n const items = this.grouped ? this._flatData.filter(item => !item.header) : this.data;\n return items.length;\n }\n /**\n * @hidden\n * Used to determine if the component received grouped data.\n */\n isGrouped(data) {\n // GroupResult { aggregates: AggregateResult, field: string, items: object[], value: any }\n // https://www.telerik.com/kendo-angular-ui/components/dataquery/api/GroupResult/\n return (isPresent(data) && data.length !== 0) && isPresent(data[0]) && hasProps(data[0], ['aggregates', 'field', 'items', 'value']);\n }\n /**\n * @hidden\n * Used to calculate the last item index of each group.\n */\n getGroupIndices(data) {\n let groupIndices = [];\n for (let i = 0; i <= data.length - 1; i++) {\n groupIndices[i] = (groupIndices[i - 1] || 0) + data[i].items.length;\n }\n return groupIndices;\n }\n /**\n * @hidden\n * Used to get a flat array containing all items matching certain criteria.\n */\n filter(predicate) {\n let result = [];\n if (this.isGrouped(this.data)) {\n for (let i = 0; i <= this.groupIndices.length - 1; i++) {\n const matches = this.data[i].items.filter(predicate);\n if (matches) {\n result = result.concat(matches);\n }\n }\n }\n else {\n result = this.data.filter(predicate);\n }\n return result;\n }\n /**\n * @hidden\n * Used to get the index of a given data item.\n */\n indexOf(item, startFrom = 0) {\n let predicate = (element) => {\n return element === item;\n };\n if (this.grouped) {\n predicate = (element) => {\n return element.value === item;\n };\n }\n return this.findIndex(predicate, startFrom);\n }\n /**\n * @hidden\n * Used to get the index of a data item based on an expression.\n */\n findIndex(predicate, startFrom = 0) {\n let index = -1;\n if (this.grouped) {\n const data = this._flatData.filter(item => !item.header && item.offsetIndex >= startFrom);\n index = data.findIndex(predicate);\n index = data[index] ? data[index].offsetIndex : -1;\n }\n else {\n const data = this.data.slice(startFrom);\n const itemIndex = data.findIndex(predicate);\n index = itemIndex !== -1 ? itemIndex + startFrom : -1;\n }\n return index;\n }\n /**\n * @hidden\n * Used to get the closest group header prior to an item index.\n */\n closestGroup(index) {\n for (let i = index; i >= 0; i--) {\n if (this._flatData[i].header) {\n return this._flatData[i];\n }\n }\n }\n /**\n * @hidden\n * Used to get the first item matching the criteria.\n */\n find(predicate) {\n const index = this.findIndex(predicate);\n return this.itemAt(index);\n }\n /**\n * @hidden\n * Used to get the true index in a flattened data array.\n */\n flatIndex(index) {\n if (this.itemsCount === 0) {\n return -1;\n }\n if (this.grouped) {\n const match = this._flatData.find((item) => !item.header && item.offsetIndex === index);\n if (match) {\n return match.index;\n }\n }\n else {\n return index;\n }\n return -1;\n }\n /**\n * @hidden\n * Used to get the item at the provided index.\n */\n itemAt(index) {\n let dataItem;\n if (this.itemsCount === 0) {\n return dataItem;\n }\n if (this.grouped) {\n const match = this._flatData.find((item) => !item.header && item.offsetIndex === index);\n if (match) {\n dataItem = match.value;\n }\n }\n else {\n dataItem = this.data[index];\n }\n return dataItem;\n }\n /**\n * @hidden\n * Used to get the group at the provided index.\n */\n groupAt(index) {\n if (this.itemsCount === 0 || !this.isGrouped) {\n return;\n }\n return this._flatData.find((item) => item.header && item.index === index);\n }\n /**\n * @hidden\n * Used to get the field by which the data is grouped.\n */\n groupField() {\n if (this.itemsCount === 0 || !this.isGrouped) {\n return null;\n }\n return this._data[0].field;\n }\n /**\n * @hidden\n * Used to get the group to which a dataItem belongs.\n */\n itemGroup(item) {\n if (!item || this.itemsCount === 0 || !this.isGrouped) {\n return;\n }\n const fieldName = this.groupField();\n if (fieldName) {\n return getter(item, fieldName);\n }\n }\n flatten(data, group = undefined, offset = 0, groupIndex = 0) {\n let flat = [];\n if (isPresent(group)) {\n flat.push({\n header: true,\n index: groupIndex + offset,\n offsetIndex: groupIndex,\n value: group\n });\n }\n for (let i = 0; i < data.length; i++) {\n let result = [];\n if (data[i].items) {\n result = this.flatten(data[i].items, data[i].value, offset, i);\n offset = offset + data[i].items.length;\n }\n else {\n result.push({\n header: false,\n index: groupIndex + offset + i + 1,\n offsetIndex: offset + i,\n value: data[i]\n });\n }\n flat = flat.concat(result);\n }\n return flat;\n }\n}\nDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DataService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass DisabledItemsService {\n constructor(dataService) {\n this.dataService = dataService;\n this.itemDisabled = null;\n }\n isIndexDisabled(index) {\n if (this.itemDisabled) {\n const item = this.dataService.itemAt(index);\n if (isPresent(item)) {\n return this.itemDisabled({ dataItem: item, index });\n }\n else if (isPresent(this.defaultItem)) {\n return this.itemDisabled({ dataItem: this.defaultItem, index: -1 });\n }\n }\n }\n isItemDisabled(item) {\n if (this.itemDisabled) {\n const index = this.dataService.indexOf(item);\n if (index !== -1) {\n return this.itemDisabled({ dataItem: item, index });\n }\n else if (isPresent(this.defaultItem)) {\n return this.itemDisabled({ dataItem: this.defaultItem, index: -1 });\n }\n }\n }\n}\nDisabledItemsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledItemsService, deps: [{ token: DataService }], target: i0.ɵɵFactoryTarget.Injectable });\nDisabledItemsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledItemsService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DisabledItemsService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DataService }]; } });\n\nconst MIN_INDEX = 0;\n/**\n * @hidden\n */\nclass NavigationEvent {\n /**\n * The index of the item to which the user navigated.\n */\n constructor(index, originalEvent) {\n this.index = index;\n this.originalEvent = originalEvent;\n }\n}\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(disabledItemsService, selectionService) {\n this.disabledItemsService = disabledItemsService;\n this.selectionService = selectionService;\n this.open = new EventEmitter();\n this.close = new EventEmitter();\n this.enter = new EventEmitter();\n this.tab = new EventEmitter();\n this.esc = new EventEmitter();\n this.up = new EventEmitter();\n this.right = new EventEmitter();\n this.down = new EventEmitter();\n this.left = new EventEmitter();\n this.delete = new EventEmitter();\n this.backspace = new EventEmitter();\n this.home = new EventEmitter();\n this.end = new EventEmitter();\n }\n process(args) {\n const keyCode = args.originalEvent.keyCode;\n const altKey = args.originalEvent.altKey;\n let index;\n let action = NavigationAction.Undefined;\n if (altKey && keyCode === Keys.ArrowDown) {\n action = NavigationAction.Open;\n }\n else if (altKey && keyCode === Keys.ArrowUp) {\n action = NavigationAction.Close;\n }\n else if (keyCode === Keys.Enter) {\n action = NavigationAction.Enter;\n }\n else if (keyCode === Keys.Escape) {\n action = NavigationAction.Esc;\n }\n else if (keyCode === Keys.Tab) {\n action = NavigationAction.Tab;\n }\n else if (keyCode === Keys.ArrowUp) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: -1 });\n action = NavigationAction.Up;\n }\n else if (keyCode === Keys.ArrowLeft) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: -1 });\n action = NavigationAction.Left;\n }\n else if (keyCode === Keys.ArrowDown) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: 1 });\n action = NavigationAction.Down;\n }\n else if (keyCode === Keys.ArrowRight) {\n index = this.next({ current: args.current, start: args.min, end: args.max, step: 1 });\n action = NavigationAction.Right;\n }\n else if (keyCode === Keys.Home) {\n index = this.isDisabled(MIN_INDEX) ? args.current : MIN_INDEX;\n action = NavigationAction.Home;\n }\n else if (keyCode === Keys.End) {\n index = this.isDisabled(args.max) ? args.current : args.max;\n action = NavigationAction.End;\n }\n else if (keyCode === Keys.Delete) {\n action = NavigationAction.Delete;\n }\n else if (keyCode === Keys.Backspace) {\n action = NavigationAction.Backspace;\n }\n const eventData = new NavigationEvent(index, args.originalEvent);\n if (action !== NavigationAction.Undefined) {\n this[NavigationAction[action].toLowerCase()].emit(eventData);\n }\n return action;\n }\n next(args) {\n const { current, start, end, step } = args;\n const nextIndex = !isPresent(current) ? start : this.clampIndex(current + step, start, end);\n const firstFocusableIndex = this.firstFocusableIndex(nextIndex, start, end, step);\n if (isPresent(firstFocusableIndex)) {\n return firstFocusableIndex;\n }\n if (this.selectionService.isSelected(current) && current >= start) {\n return current;\n }\n const inversedStep = -1 * step;\n return this.firstFocusableIndex(nextIndex, start, end, inversedStep);\n }\n clampIndex(index, min, max) {\n if (!isPresent(index) || index < min) {\n return min;\n }\n if (index > max) {\n return max;\n }\n return index;\n }\n firstFocusableIndex(startIndex, min, max, step) {\n while (min <= startIndex && startIndex <= max) {\n if (!this.isDisabled(startIndex)) {\n return startIndex;\n }\n startIndex += step;\n }\n return undefined;\n }\n isDisabled(index) {\n if (this.disabledItemsService) {\n return this.disabledItemsService.isIndexDisabled(index);\n }\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: DisabledItemsService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DisabledItemsService }, { type: SelectionService }]; } });\n\n/**\n * Renders content when no data is available. To define the no-data template, nest a `` tag\n * with the `kendoNoDataTemplate` directive inside the component tag.\n *\n * - [Using `NoDataTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the ComboBox]({% slug templates_combobox %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the DropDownList]({% slug templates_ddl %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-no-data-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

No data!

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [];\n * }\n * ```\n */\nclass NoDataTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNoDataTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NoDataTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNoDataTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NoDataTemplateDirective, selector: \"[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NoDataTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Defines the mandatory properties of the `kendoDropDownFilter` directive\n * so that `kendoDropDownFilter` can be used with any of the DropDowns components\n * which implement the `FilterableDropDownComponentBase` class.\n *\n * @hidden\n */\nclass FilterableComponent {\n}\n\n/**\n * @hidden\n */\nconst DEFAULTS = {\n pageSize: 50,\n itemHeight: 28\n};\n/**\n * @hidden\n */\nconst normalizeVirtualizationSettings = (settings, defaultOverrides) => {\n const defaults = Object.assign({}, DEFAULTS, defaultOverrides);\n if (settings === true) {\n return defaults;\n }\n if (!settings) {\n return null;\n }\n return Object.assign({ pageSize: DEFAULTS.pageSize }, settings);\n};\n\n/**\n * @hidden\n */\nconst TOUCH_ENABLED = new InjectionToken('dropdowns-touch-enabled');\n\n/**\n * @hidden\n */\nclass ListItemDirective {\n constructor(element) {\n this.element = element;\n }\n}\nListItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListItemDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nListItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListItemDirective, selector: \"\\\"li[role=option], li[role=group]\\\"\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '\"li[role=option], li[role=group]\"' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n\n/**\n * @hidden\n */\nclass TemplateContextDirective {\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n set templateContext(context) {\n if (this.insertedViewRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));\n this.insertedViewRef = undefined;\n }\n if (context.templateRef) {\n this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\n }\n }\n}\nTemplateContextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateContextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateContextDirective, selector: \"[templateContext]\", inputs: { templateContext: \"templateContext\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[templateContext]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateContext: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass SelectableDirective {\n constructor(selectionService) {\n this.checkboxes = { enabled: false };\n // @HostBinding('attr.offset-index')\n // @Input() public offsetIndex: number;\n this.multipleSelection = false;\n this.selectionService = selectionService;\n }\n get focusedClassName() {\n return this.selectionService.isFocused(this.index);\n }\n get selectedClassName() {\n return !this.checkboxes.enabled && this.selectionService.isSelected(this.index);\n }\n onClick(event) {\n event.stopPropagation();\n if (this.checkboxes.enabled && !this.checkboxes.checkOnClick) {\n return;\n }\n if (this.multipleSelection) {\n if (this.selectionService.isSelected(this.index)) {\n this.selectionService.unselect(this.index);\n }\n else {\n this.selectionService.add(this.index);\n }\n }\n else {\n this.selectionService.change(this.index);\n }\n }\n}\nSelectableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectableDirective, deps: [{ token: SelectionService }], target: i0.ɵɵFactoryTarget.Directive });\nSelectableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: { index: \"index\", checkboxes: \"checkboxes\", height: \"height\", multipleSelection: \"multipleSelection\" }, host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"attr.index\": \"this.index\", \"style.height.px\": \"this.height\", \"style.minHeight.px\": \"this.height\", \"class.k-focus\": \"this.focusedClassName\", \"class.k-selected\": \"this.selectedClassName\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SelectableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownsSelectable]'\n }]\n }], ctorParameters: function () { return [{ type: SelectionService }]; }, propDecorators: { index: [{\n type: HostBinding,\n args: ['attr.index']\n }, {\n type: Input\n }], checkboxes: [{\n type: Input\n }], height: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: HostBinding,\n args: ['style.minHeight.px']\n }, {\n type: Input\n }], multipleSelection: [{\n type: Input\n }], focusedClassName: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], selectedClassName: [{\n type: HostBinding,\n args: ['class.k-selected']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass ListComponent {\n /* tslint:disable:member-ordering */\n constructor(dataService, wrapper, selectionService, disabledItemsService, cdr, zone, renderer) {\n this.dataService = dataService;\n this.wrapper = wrapper;\n this.selectionService = selectionService;\n this.disabledItemsService = disabledItemsService;\n this.cdr = cdr;\n this.zone = zone;\n this.renderer = renderer;\n this.selected = [];\n this.focused = -1;\n this.show = true;\n this.multipleSelection = false;\n this.type = 'list';\n this.checkboxes = { enabled: false };\n this.rounded = 'medium';\n this.onClick = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.listResize = new EventEmitter();\n this.startFrom = 0;\n this.lastLoaded = 0;\n this.lastScrollTop = 0;\n this.scrollToFocused = false;\n this._size = 'medium';\n this.selectSubscription = merge(this.selectionService.onSelect.pipe(map((args) => args.indices[0])), this.selectionService.onFocus)\n .pipe(\n // handle only the very last onSelect/onFocus emission\n switchMap(event => this.zone.onStable.pipe(take(1), map(() => event))))\n .subscribe(this.scrollToItem.bind(this));\n this.prepareClasses();\n }\n set data(data) {\n this._data = data[0] && data[0].header ? data.slice(0) : data;\n }\n get data() {\n return this._data;\n }\n set size(size) {\n if (this.type === 'list') {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('list', this.size));\n if (size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('list', size));\n }\n this._size = size;\n }\n }\n get size() {\n return this._size;\n }\n get pageSize() {\n if (this.virtual.pageSize) {\n return this.virtual.pageSize;\n }\n let size = Math.round(this.height / this.virtual.itemHeight);\n return size;\n }\n get scrollHeight() {\n return (this.dataService.grouped ? this.virtual.total - 1 : this.virtual.total) * this.virtual.itemHeight;\n }\n get overflowY() {\n if (isPresent(this.virtual)) {\n const overflow = this.hasVirtualScrollbar() ? 'scroll' : 'hidden';\n return overflow;\n }\n }\n /**\n * @hidden\n */\n get checkboxClasses() {\n return `${this.size ? getSizeClass('checkbox', this.size) : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n ngOnChanges(changes) {\n if (isChanged('data', changes, false)) {\n if (this.lastLoaded <= 0) {\n this.lastLoaded = this.data.length - 1;\n this.scrollToFocused = !changes.data.isFirstChange();\n }\n this.setOverflow();\n }\n if (isChanged('virtual', changes, false)) {\n this.setOverflow();\n }\n if (isChanged('type', changes, false)) {\n this.prepareClasses();\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n this.zone.runOutsideAngular(() => {\n this.scrollSubscription = fromEvent(this.content.nativeElement, \"scroll\").pipe(auditTime(100), tap(this.prefetchData.bind(this)), tap(this.findCurrentGroup.bind(this))).subscribe(() => {\n this.lastScrollTop = this.content.nativeElement.scrollTop;\n });\n });\n this.setOverflow();\n }\n ngAfterViewChecked() {\n if (this.virtual) {\n this.positionItems();\n }\n if (this.items && this.scrollToFocused) {\n this.scrollToFocused = false;\n const scrollTarget = this.items.length && this.selectionService.focused === -1 ? 0 : this.selectionService.focused;\n this.scrollToItem(scrollTarget);\n }\n if (this.dataService.grouped) {\n this.findCurrentGroup();\n }\n }\n ngOnDestroy() {\n this.selectSubscription.unsubscribe();\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n }\n onCheckedChange(e, index) {\n const isChecked = e.target['checked'];\n if (isChecked && !this.selectionService.isSelected(index)) {\n this.selectionService.add(index);\n }\n if (!isChecked && this.selectionService.isSelected(index)) {\n this.selectionService.unselect(index);\n }\n }\n prepareClasses() {\n if (this.type === 'list') {\n this.listContentClass = 'k-list-content';\n this.listClass = 'k-list-ul';\n this.listItemClass = 'k-list-item';\n this.listVirtualClass = 'k-virtual-list';\n this.listGroupStickyHeaderClass = 'k-list-group-sticky-header';\n this.listGroupStickyHeaderTextClass = 'k-list-header-text';\n this.listGroupItemClass = 'k-list-group-item';\n this.listGroupItemTextClass = 'k-list-item-text';\n }\n else {\n this.listContentClass = 'k-table-body k-table-scroller';\n this.listClass = 'k-table k-table-list';\n this.listItemClass = 'k-table-row';\n this.listVirtualClass = 'k-virtual-table';\n this.listGroupStickyHeaderClass = 'k-table-group-sticky-header';\n this.listGroupStickyHeaderTextClass = 'k-table-th';\n this.listGroupItemClass = 'k-table-group-row';\n this.listGroupItemTextClass = 'k-table-th';\n }\n }\n isChecked(index) {\n const normalizedIndex = this.virtual ? index + this.virtual.skip : index;\n return this.selectionService.isSelected(normalizedIndex);\n }\n firstVisibleItem() {\n const content = this.content.nativeElement;\n const rect = content.getBoundingClientRect();\n // IE9 hack\n const disabled = Array.prototype.slice.call(content.querySelectorAll(\".k-disabled\"));\n // This is a workaround for finding elements with pointer-events: none;\n disabled.forEach((el) => this.renderer.setStyle(el, \"pointer-events\", \"auto\"));\n const item = document.elementFromPoint(rect.left + 1, rect.top + 1);\n disabled.forEach((el) => this.renderer.setStyle(el, \"pointer-events\", \"none\"));\n // return the closest `li` item to cover the custom template scenario\n return closest(item, 'li');\n }\n findCurrentGroup() {\n if (!this.dataService.grouped) {\n this.currentGroup = undefined;\n return;\n }\n const item = this.firstVisibleItem();\n if (item) {\n let index;\n if (item.getAttribute(\"role\") === \"group\") {\n index = parseInt(item.getAttribute(\"group-index\"), 10);\n this.currentGroup = this.dataService.groupAt(index).value;\n }\n else {\n index = parseInt(item.getAttribute(\"index\"), 10);\n this.currentGroup = this.dataService.itemGroup(this.dataService.itemAt(index));\n }\n }\n else {\n this.currentGroup = undefined;\n }\n this.cdr.detectChanges();\n }\n prefetchData() {\n if (!this.virtual) {\n return;\n }\n const visibleItems = Math.trunc(this.content.nativeElement.clientHeight / this.virtual.itemHeight);\n const offsetY = this.content.nativeElement.scrollTop;\n const start = Math.trunc(offsetY / this.virtual.itemHeight);\n const down = offsetY > this.lastScrollTop;\n const nextPage = (start + visibleItems >= this.lastLoaded) && this.lastLoaded < this.virtual.total - 1;\n const leftOver = this.pageSize - (this.lastLoaded - this.startFrom);\n const prevPage = this.lastLoaded - this.pageSize + visibleItems >= start - leftOver;\n if (down && nextPage) {\n this.changePage(start);\n }\n if (!down && prevPage) {\n this.changePage(start - this.pageSize + visibleItems + 1);\n }\n }\n changePage(start) {\n this.zone.run(() => {\n let end = this.pageSize + start;\n if (end > this.virtual.total) {\n start--;\n end = this.virtual.total;\n }\n if (start < 0) {\n start = 0;\n }\n this.startFrom = start;\n this.lastLoaded = end;\n this.pageChange.emit({ skip: start, take: this.pageSize });\n });\n }\n index(groupIndex, itemIndex) {\n return groupIndex > 0 ? (this.dataService.groupIndices[groupIndex - 1] + itemIndex) : itemIndex;\n }\n getText(dataItem) {\n return getter(dataItem, this.textField);\n }\n getValue(dataItem) {\n return getter(dataItem, this.valueField);\n }\n isDisabled(index) {\n if (isPresent(this.virtual)) {\n index += this.virtual.skip;\n }\n return this.disabledItemsService.isIndexDisabled(index);\n }\n isAltRow(index) {\n return this.type === 'dropdowngrid' && index % 2 !== 0;\n }\n scrollToItem(index) {\n let flatIndex = index;\n if (this.dataService.grouped) {\n // takes into account the group header items\n flatIndex = this.dataService.flatIndex(index);\n /* The first group header item is not rendered in the list (see template), so subtract 1 when calulating the flat index.\n With virtualization enabled, the first group header could be in a previous page, in which case don't subtract anything. */\n const groupHeaderOffset = this.firstGroupHeaderInTargetedPage(flatIndex) ? -1 : 0;\n flatIndex += groupHeaderOffset;\n }\n if (this.virtual && flatIndex > -1) {\n this.scrollToIndex(flatIndex);\n return;\n }\n const items = this.items.toArray();\n if (isPresent(items[flatIndex]) && flatIndex !== -1) {\n this.scroll(items[flatIndex].element);\n }\n }\n scrollToIndex(index) {\n let content = this.content.nativeElement;\n let contentScrollTop = content.scrollTop;\n const itemOffsetTop = index * this.virtual.itemHeight;\n const itemOffsetHeight = this.virtual.itemHeight;\n const contentOffsetHeight = content.clientHeight;\n const bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n }\n else if (bottomDistance > (contentScrollTop + contentOffsetHeight)) {\n contentScrollTop = (bottomDistance - contentOffsetHeight);\n }\n content.scrollTop = contentScrollTop;\n }\n scroll(item) {\n if (!item) {\n return;\n }\n const nativeElement = item.nativeElement;\n let content = this.content.nativeElement, itemOffsetTop = nativeElement.offsetTop, itemOffsetHeight = nativeElement.offsetHeight, contentScrollTop = content.scrollTop, contentOffsetHeight = content.clientHeight, bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n }\n else if (bottomDistance > (contentScrollTop + contentOffsetHeight)) {\n contentScrollTop = (bottomDistance - contentOffsetHeight);\n }\n content.scrollTop = contentScrollTop;\n }\n /**\n * Indicates whether a scrollbar is currently rendered in the list.\n */\n hasScrollbar() {\n if (!(isPresent(this.items) && this.items.length && isPresent(this.list) && isPresent(this.content))) {\n return false;\n }\n const hasVirtualScroll = isPresent(this.virtual) && this.hasVirtualScrollbar();\n return hasVirtualScroll || this.list.nativeElement.scrollHeight > this.content.nativeElement.offsetHeight;\n }\n /**\n * Sets the list's content overflow (hides/shows scrollbar)\n */\n setOverflow() {\n if (this.virtual) {\n const overflow = this.hasVirtualScrollbar() ? 'scroll' : 'hidden';\n this.renderer.setStyle(this.content.nativeElement, 'overflow-y', overflow);\n }\n }\n /**\n * Indicates whether the scrollbar should be visible in virtual mode.\n */\n hasVirtualScrollbar() {\n const contentOffsetHeight = this.content.nativeElement.offsetHeight;\n const virtualOffsetHeight = this.virtualContainer && this.virtualContainer.nativeElement.offsetHeight;\n return this.virtualContainer && virtualOffsetHeight > contentOffsetHeight;\n }\n positionItems() {\n this.items.forEach((item, index) => {\n const offsetY = (index + this.startFrom) * this.virtual.itemHeight;\n this.renderer.setStyle(item.element.nativeElement, \"transform\", `translateY(${offsetY}px`);\n });\n }\n /**\n * Indicates whether the first group header from the data set is in the targeted virtual page.\n */\n firstGroupHeaderInTargetedPage(itemIndex) {\n if (!isPresent(this.virtual)) {\n return true;\n }\n return this.virtual.skip === 0 && (this.virtual.pageSize > itemIndex);\n }\n setComponentClasses() {\n if (this.type === 'list') {\n this.renderer.addClass(this.wrapper.nativeElement, 'k-list');\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('list', this.size));\n }\n }\n if (isPresent(this.virtual)) {\n this.renderer.addClass(this.wrapper.nativeElement, this.listVirtualClass);\n }\n }\n}\nListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, deps: [{ token: DataService }, { token: i0.ElementRef }, { token: SelectionService }, { token: DisabledItemsService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ListComponent, selector: \"kendo-list\", inputs: { selected: \"selected\", focused: \"focused\", textField: \"textField\", valueField: \"valueField\", height: \"height\", template: \"template\", groupTemplate: \"groupTemplate\", fixedGroupTemplate: \"fixedGroupTemplate\", show: \"show\", id: \"id\", optionPrefix: \"optionPrefix\", multipleSelection: \"multipleSelection\", virtual: \"virtual\", type: \"type\", checkboxes: \"checkboxes\", data: \"data\", size: \"size\", rounded: \"rounded\" }, outputs: { onClick: \"onClick\", pageChange: \"pageChange\", listResize: \"listResize\" }, viewQueries: [{ propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true, static: true }, { propertyName: \"list\", first: true, predicate: [\"list\"], descendants: true, static: true }, { propertyName: \"virtualContainer\", first: true, predicate: [\"virtualContainer\"], descendants: true }, { propertyName: \"items\", predicate: ListItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
\n \n \n {{ currentGroup }}\n
\n
\n
    \n \n \n \n \n \n {{ getText(dataItem) }}\n \n \n \n 0\"\n role=\"group\"\n [class]=\"listGroupItemClass\"\n [class.k-table-alt-row]=\"isAltRow(itemIndex - 1)\"\n [ngStyle]=\"{\n 'height.px': virtual?.itemHeight,\n 'minHeight.px' : virtual?.itemHeight,\n 'boxSizing' : virtual ? 'border-box' : 'inherit'}\"\n [attr.group-index]=\"dataItem.index\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem.value)\"\n [attr.tabIndex]=\"-1\">\n \n \n \n {{ dataItem.value }}\n \n \n \n \n \n {{ getText(dataItem.value) }}\n \n \n \n \n
\n
\n
\n \n
\n
\n
\n `, isInline: true, components: [{ type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: ListItemDirective, selector: \"\\\"li[role=option], li[role=group]\\\"\" }, { type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: [\"index\", \"checkboxes\", \"height\", \"multipleSelection\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-list',\n template: `\n
\n \n \n {{ currentGroup }}\n
\n
\n
    \n \n \n \n \n \n {{ getText(dataItem) }}\n \n \n \n 0\"\n role=\"group\"\n [class]=\"listGroupItemClass\"\n [class.k-table-alt-row]=\"isAltRow(itemIndex - 1)\"\n [ngStyle]=\"{\n 'height.px': virtual?.itemHeight,\n 'minHeight.px' : virtual?.itemHeight,\n 'boxSizing' : virtual ? 'border-box' : 'inherit'}\"\n [attr.group-index]=\"dataItem.index\"\n [attr.id]=\"optionPrefix + '-' + getValue(dataItem.value)\"\n [attr.tabIndex]=\"-1\">\n \n \n \n {{ dataItem.value }}\n \n \n \n \n \n {{ getText(dataItem.value) }}\n \n \n \n \n
\n
\n
\n \n
\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: DataService }, { type: i0.ElementRef }, { type: SelectionService }, { type: DisabledItemsService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { selected: [{\n type: Input\n }], focused: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], height: [{\n type: Input\n }], template: [{\n type: Input\n }], groupTemplate: [{\n type: Input\n }], fixedGroupTemplate: [{\n type: Input\n }], show: [{\n type: Input\n }], id: [{\n type: Input\n }], optionPrefix: [{\n type: Input\n }], multipleSelection: [{\n type: Input\n }], virtual: [{\n type: Input\n }], type: [{\n type: Input\n }], checkboxes: [{\n type: Input\n }], data: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], onClick: [{\n type: Output\n }], pageChange: [{\n type: Output\n }], listResize: [{\n type: Output\n }], items: [{\n type: ViewChildren,\n args: [ListItemDirective]\n }], content: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], list: [{\n type: ViewChild,\n args: ['list', { static: true }]\n }], virtualContainer: [{\n type: ViewChild,\n args: ['virtualContainer', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, inputs: { noDataText: \"noDataText\", clearTitle: \"clearTitle\", checkAllText: \"checkAllText\", selectButtonText: \"selectButtonText\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive\n }], propDecorators: { noDataText: [{\n type: Input\n }], clearTitle: [{\n type: Input\n }], checkAllText: [{\n type: Input\n }], selectButtonText: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst NO_VALUE = \"\";\nconst DEFAULT_SIZE$5 = 'medium';\nconst DEFAULT_ROUNDED$5 = 'medium';\nconst DEFAULT_FILL_MODE$5 = 'solid';\n/**\n * @hidden\n */\nconst AUTOCOMPLETE_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutoCompleteComponent)\n};\n/**\n * Represents the [Kendo UI AutoComplete component for Angular]({% slug overview_autocomplete %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public placeholder: string = 'Type \"it\" for suggestions';\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass AutoCompleteComponent {\n constructor(localization, dataService, popupService, selectionService, navigationService, disabledItemsService, _zone, cdr, renderer, hostElement, touchEnabled) {\n this.localization = localization;\n this.dataService = dataService;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this._zone = _zone;\n this.cdr = cdr;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.touchEnabled = touchEnabled;\n /**\n * Defines whether the first match from the suggestions list will be automatically focused.\n * By default, `highlightFirst` is set to `true`.\n */\n this.highlightFirst = true;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * @hidden\n *\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Enables the [filtering]({% slug filtering_autocomplete %}) functionality.\n * If set to `true`, the component emits the `filterChange` event.\n */\n this.filterable = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_autocomplete %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value\n * ([see example]({% slug overview_autocomplete %}#toc-events)).\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the AutoComplete.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the AutoComplete gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.widgetClasses = true;\n this.listBoxId = guid();\n this.optionPrefix = guid();\n this.onChangeCallback = noop;\n this.onTouchedCallback = noop;\n this.popupMouseDownHandler = (event) => event.preventDefault();\n this._popupSettings = { animate: true };\n this._open = false;\n this._value = \"\";\n this.valueChangeSubject = new Subject();\n this._isFocused = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.wrapper = this.hostElement.nativeElement;\n this.data = [];\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.selectionService.resetSelection([-1]);\n }\n get width() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n get suggestion() {\n if (!this.text || !this.suggestedText) {\n this.suggestedText = undefined;\n return;\n }\n const hasMatch = this.suggestedText.toLowerCase().startsWith(this.text.toLowerCase());\n const shouldSuggest = this.suggest && !this.backspacePressed;\n if (shouldSuggest && hasMatch) {\n return this.suggestedText;\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * Toggles the visibility of the popup.\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n get activeDescendant() {\n if (!this.isOpen || !isPresent(this.selectionService.focused) || this.selectionService.focused === -1) {\n return null;\n }\n const dataItem = this.dataService.itemAt(this.selectionService.focused);\n return this.optionPrefix + \"-\" + getter(dataItem, this.valueField);\n }\n get noDataLabel() {\n if (this.data.length === 0) {\n return this.messageFor('noDataText');\n }\n }\n /**\n * Sets the data of the AutoComplete.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n if (this.filterable) {\n this.selectionService.focused = this.isOpen && this.data.length && this.highlightFirst ? this.firstFocusableIndex(0) : -1;\n }\n if (this.suggest && this.dataService.itemsCount > 0) {\n this.suggestedText = getter(this.dataService.itemAt(0), this.valueField);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the AutoComplete.\n */\n set value(newValue) {\n this.verifySettings(newValue);\n this._value = newValue || NO_VALUE;\n this.text = this.value;\n this.cdr.markForCheck();\n }\n get value() {\n return this._value || NO_VALUE;\n }\n /**\n * Configures the popup of the AutoComplete.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_autocomplete %})).\n * Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_autocomplete %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$5;\n this.renderer.removeClass(this.wrapper, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$5;\n this.renderer.removeClass(this.wrapper, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$5;\n this.renderer.removeClass(this.wrapper, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper, \"k-focus\");\n this._isFocused = isFocused;\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper, \"tabindex\");\n this.localizationChangeSubscription = this.localization\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n });\n this.setComponentClasses();\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n }\n /**\n * Resets the value of the AutoComplete.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = NO_VALUE;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this.change(NO_VALUE);\n if (this.filterable) {\n this.filterChange.emit('');\n }\n this.selectionService.resetSelection([]);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * Focuses a specific item of the AutoComplete based on a provided index.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const isInRange = index >= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n /**\n * Focuses the AutoComplete.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * Blurs the AutoComplete.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n emitChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n verifySettings(newValue) {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(newValue) && typeof newValue !== \"string\") {\n throw new Error(\"Expected value of type string. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/value-binding/\");\n }\n }\n search(text, startFrom = 0) {\n let index;\n if (text.length && this.dataService.itemsCount) {\n index = this.dataService.findIndex(this.findIndexPredicate(text), startFrom);\n }\n else {\n index = -1;\n }\n if (this.disabledItemsService.isIndexDisabled(index)) {\n if (index + 1 < this.dataService.itemsCount) {\n this.search(text, index + 1);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n else {\n this.selectionService.focus(index);\n if (this.suggest) {\n this.suggestedText = getter(this.dataService.itemAt(index), this.valueField);\n }\n }\n }\n navigate(index) {\n if (!this.isOpen) {\n return;\n }\n this.selectionService.focus(index);\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(0) : this.selectionService.focused;\n if (this.disabled || this.readonly || isNaN(focused)) {\n return;\n }\n const action = this.navigationService.process({\n current: focused,\n max: this.dataService.itemsCount - 1,\n min: 0,\n originalEvent: event\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n action !== NavigationAction.Home &&\n action !== NavigationAction.End &&\n action !== NavigationAction.Left &&\n action !== NavigationAction.Right &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n handleEnter(event) {\n const focused = this.selectionService.focused;\n let value;\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n if (focused >= 0) {\n value = getter(this.dataService.itemAt(focused), this.valueField);\n }\n else {\n const match = this.suggest && this.suggestedText && this.data.length &&\n getter(this.dataService.itemAt(0), this.valueField).toLowerCase() === this.searchbar.value.toLowerCase();\n if (this.isOpen && match) {\n value = this.suggestedText;\n }\n else {\n value = this.searchbar.value;\n }\n }\n this.change(value);\n }\n handleEscape() {\n this.togglePopup(false);\n this.selectionService.focused = -1;\n this.suggestedText = null;\n }\n /**\n * @hidden\n */\n searchBarChange(text) {\n const currentTextLength = isPresent(this.text) ? this.text.length : 0;\n this.backspacePressed = (text.length < currentTextLength) ? true : false;\n this.text = text;\n this.togglePopup(text.length > 0);\n if (!this.highlightFirst) {\n this.selectionService.focused = -1;\n }\n if (this.filterable) {\n this.filterChange.emit(text);\n }\n else if (this.highlightFirst) {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n /**\n * @hidden\n */\n handleBlur() {\n const focused = this.filterable ? this.selectionService.focused : -1;\n this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers\n let dataItem;\n let text;\n if (focused !== -1) {\n dataItem = this.dataService.itemAt(focused);\n text = getter(dataItem, this.valueField) || \"\";\n }\n else {\n text = this.searchbar.value;\n }\n const exactMatch = text === this.searchbar.value;\n const insensitiveMatch = text.toLowerCase() === this.searchbar.value.toLowerCase();\n if (!exactMatch && insensitiveMatch) {\n this.selectionService.resetSelection([]);\n }\n this.isFocused = false;\n const valueHasChanged = this.value !== this.text;\n const runInZone = hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper) || valueHasChanged;\n if (runInZone) {\n this._zone.run(() => {\n if (valueHasChanged) {\n this.change(this.searchbar.value);\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n change(value) {\n this.togglePopup(false);\n this.valueChangeSubject.next(value);\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.valueChangeSubscription = this.valueChangeSubject\n .subscribe(value => {\n const hasChange = this.value !== value;\n this.value = value;\n this.text = value;\n // emit change after assigning `this.value` => allows the user to modify the component value on `valueChange`\n if (hasChange) {\n this.emitChange(value);\n }\n });\n this.changeSubscription = this.selectionService.onChange.subscribe(this.handleItemChange.bind(this));\n this.focusSubscription = this.selectionService.onFocus.subscribe(this.handleItemFocus.bind(this));\n this.navigationSubscription = merge(this.navigationService.up, this.navigationService.down).subscribe((event) => this.navigate(event.index));\n this.closeSubscription = this.navigationService.close.subscribe(() => this.togglePopup(false));\n this.enterSubscription = this.navigationService.enter.subscribe(this.handleEnter.bind(this));\n this.escSubscription = this.navigationService.esc.subscribe(this.handleEscape.bind(this));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up AutoComplete on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.hostElement, target, this.popupRef)) {\n this._zone.run(() => this.blur());\n }\n }));\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.changeSubscription.unsubscribe();\n this.navigationSubscription.unsubscribe();\n this.closeSubscription.unsubscribe();\n this.enterSubscription.unsubscribe();\n this.escSubscription.unsubscribe();\n this.valueChangeSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n handleItemChange(event) {\n const index = event.indices.length ? event.indices[0] : undefined;\n this.selectionService.resetSelection([-1]);\n if (!isPresent(index)) {\n return;\n }\n let text = getter(this.dataService.itemAt(index), this.valueField);\n this.change(text);\n }\n handleItemFocus(_event) {\n const focused = this.selectionService.focused;\n const shouldSuggest = Boolean(this.suggest && this.data && this.data.length && focused >= 0);\n if (shouldSuggest) {\n this.suggestedText = getter(this.dataService.itemAt(focused), this.valueField);\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute',\n popupAlign: popupPosition,\n anchorAlign: anchorPosition\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n firstFocusableIndex(index) {\n const maxIndex = this.data.length - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n findIndexPredicate(text) {\n if (this.dataService.grouped) {\n return (item) => {\n let itemText = getter(item.value, this.valueField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n else {\n return (item) => {\n let itemText = getter(item, this.valueField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper, getFillModeClass('input', this.fillMode));\n }\n }\n}\nAutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteComponent, deps: [{ token: i1.LocalizationService }, { token: DataService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nAutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AutoCompleteComponent, selector: \"kendo-autocomplete\", inputs: { highlightFirst: \"highlightFirst\", focusableId: \"focusableId\", data: \"data\", value: \"value\", valueField: \"valueField\", placeholder: \"placeholder\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", loading: \"loading\", clearButton: \"clearButton\", suggest: \"suggest\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", readonly: \"readonly\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", filterable: \"filterable\", virtual: \"virtual\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", filterChange: \"filterChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-autocomplete\": \"this.widgetClasses\", \"class.k-input\": \"this.widgetClasses\", \"class.k-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.dir\": \"this.dir\" } }, providers: [\n AUTOCOMPLETE_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.autocomplete'\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => AutoCompleteComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"searchbar\", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }], exportAs: [\"kendoAutoComplete\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoAutoComplete',\n providers: [\n AUTOCOMPLETE_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.autocomplete'\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => AutoCompleteComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }\n ],\n selector: 'kendo-autocomplete',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: DataService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { highlightFirst: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], valueField: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], loading: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], suggest: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-autocomplete']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\n/**\n * @hidden\n */\nconst MultiselectMessages = {\n 'array': 'Expected values of array type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'object': 'Expected values of Object type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'primitive': 'Expected values of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/#toc-bind-to-arrays-of-complex-data'\n};\n/**\n * @hidden\n */\nconst MultiSelectTreeMessages = {\n 'array': 'Expected values of array type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/#value-selection',\n 'primitive': 'Expected values of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding/#toc-primitive-values',\n 'object': 'Expected values of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding/#toc-object-values',\n 'dataItems': 'Expected dataItems of type Object[] to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/MultiSelectTreeComponent/#toc-dataitems',\n 'dataItemsLength': 'Expected dataItems length to match the number of provided values. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/MultiSelectTreeComponent/#toc-dataitems',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding',\n 'valueDepth': 'Expected valueDepth of type number[] to be set. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/MultiSelectTreeComponent/#toc-valuedepth',\n 'valueDepthLength': 'Expected valueDepth length to match the number of provided values. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/MultiSelectTreeComponent/#toc-valuedepth'\n};\n/**\n * @hidden\n */\nconst ComboBoxMessages = {\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-value-selection',\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/#toc-bind-to-arrays-of-complex-data',\n 'noItemHeight': 'Expected virtual.itemHeight of type number.'\n};\n/**\n * @hidden\n */\nconst MultiColumnComboBoxMessages = {\n 'data': 'Provided data must consist only of objects. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multicolumncombobox/data-binding/',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multicolumncombobox/data-binding/#toc-fields-configuration'\n};\n/**\n * @hidden\n */\nconst DropDownListMessages = {\n 'defaultItem': 'defaultItem and data items must be of same type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/api/DropDownListComponent/#toc-defaultitem',\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-value-selection',\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-value-selection',\n 'textAndValue': 'Expected textField and valueField options to be set. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/#toc-bind-to-arrays-of-complex-data'\n};\n/**\n * @hidden\n */\nconst DropDownTreeMessages = {\n 'primitive': 'Expected value of primitive type. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding/#toc-primitive-values',\n 'object': 'Expected value of type Object. See http://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding/#toc-object-values',\n 'dataItem': 'Expected dataItem of type Object to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/DropDownTreeComponent/#toc-dataitem',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding',\n 'valueDepth': 'Expected valueDepth to be set. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/DropDownTreeComponent/#toc-valuedepth'\n};\n\n/**\n * @hidden\n */\nconst COMBOBOX_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ComboBoxComponent)\n};\nconst DEFAULT_SIZE$4 = 'medium';\nconst DEFAULT_ROUNDED$4 = 'medium';\nconst DEFAULT_FILL_MODE$4 = 'solid';\n/**\n * Represents the [Kendo UI ComboBox component for Angular]({% slug overview_combobox %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass ComboBoxComponent {\n constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, cdr, renderer, touchEnabled) {\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.dataService = dataService;\n this.zone = zone;\n this.cdr = cdr;\n this.renderer = renderer;\n this.touchEnabled = touchEnabled;\n this.selected = [];\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Specifies whether the ComboBox allows user-defined values that are not present in the dataset\n * ([more information and examples]({% slug custom_values_combobox %})).\n * Defaults to `false`.\n */\n this.allowCustom = false;\n /**\n * A user-defined callback which returns normalized custom values.\n * Typically used when the data items are different from type `string`.\n * @param { Any } value - The custom value defined by the user.\n * @returns { Any }\n *\n * @example\n * ```ts\n * import { map } from 'rxjs/operators';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public listItems: Array<{ text: string, value: number }> = [\n * { text: \"Small\", value: 1 },\n * { text: \"Medium\", value: 2 },\n * { text: \"Large\", value: 3 }\n * ];\n *\n * public onValueChange(value) {\n * console.log(\"valueChange : \", value);\n * }\n *\n * public valueNormalizer = (text$: Observable) => text$.pipe(map((text: string) => {\n * return { ProductID: null, ProductName: text };\n * }));\n *\n * }\n * ```\n */\n this.valueNormalizer = (text) => text.pipe(map((userInput) => userInput));\n /**\n * The hint that is displayed when the component is empty.\n *\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Enables the auto-completion of the text based on the first data item.\n */\n this.suggest = false;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Enables the [filtering]({% slug filtering_combobox %}) functionality.\n * If set to `true`, the component emits the `filterChange` event.\n */\n this.filterable = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_combobox %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time an item selection is changed\n * ([see example]({% slug overview_combobox %}#toc-events)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value\n * ([see example]({% slug overview_combobox %}#toc-events)).\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the ComboBox.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the ComboBox gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.widgetClasses = true;\n this._isFocused = false;\n this.listBoxId = guid();\n this.optionPrefix = guid();\n this.onChangeCallback = (_) => { };\n this.onTouchedCallback = (_) => { };\n /**\n * Used for the default virtualization settings config.\n */\n this.defaultVirtualItemHeight = 28;\n /**\n * Used for the default virtualization settings config.\n */\n this.defaultVirtualPageSize = 50;\n this._filtering = false;\n this._text = '';\n this.filterText = '';\n this._open = false;\n this._popupSettings = { animate: true };\n this.popupMouseDownHandler = (event) => event.preventDefault();\n this.customValueSubject = new Subject();\n this.valueSubject = new Subject();\n this.clearValueSubject = new Subject();\n this.subs = new Subscription();\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.data = [];\n }\n set text(text) {\n this._text = isPresent(text) ? text.toString() : \"\";\n }\n get text() {\n return this._text;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n get activeDescendant() {\n if (!this.isOpen || !isPresent(this.selectionService.focused) || this.selectionService.focused === -1) {\n return null;\n }\n const dataItem = this.dataService.itemAt(this.selectionService.focused);\n return this.optionPrefix + \"-\" + (dataItem ? getter(dataItem, this.valueField) : \"\");\n }\n get noDataLabel() {\n if (this.data.length === 0) {\n return this.messageFor('noDataText');\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the ComboBox.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.setState();\n if (this._filtering) {\n const queryAndDataPresent = this.text.length > 0 && this.dataService.itemsCount > 0;\n const index = queryAndDataPresent ? this.firstFocusableIndex(0) : -1;\n this.selectionService.focused = index;\n }\n if (this.suggest && this.dataService.itemsCount && this.text) {\n this.suggestedText = getter(this.dataService.itemAt(0), this.textField);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the ComboBox.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the dataset are considered custom values.\n * > When the `Enter` key is pressed or the component loses focus, custom values get dismissed unless `allowCustom` is set to `true`.\n */\n set value(newValue) {\n this._value = newValue;\n this.setState();\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the type of the selected value.\n * If set to `true`, the selected value has to be of the primitive type\n * ([more information and example]({% slug valuebinding_combobox %}#toc-primitive-values-from-object-fields)).\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n /**\n * Configures the popup of the ComboBox.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_combobox %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_combobox %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings, {\n itemHeight: this.defaultVirtualItemHeight,\n pageSize: this.defaultVirtualPageSize\n });\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(value) {\n this.renderer[value ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, \"k-focus\");\n this._isFocused = value;\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n get popupWidth() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get popupHeight() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.attachStreams();\n this.createValueStream();\n this.subscribeTouchEvents();\n this.attachSelectClickHandler();\n this.setComponentClasses();\n }\n createValueStream() {\n const valueStream = this.valueSubject.pipe(filter((candidate) => {\n const current = getter(this.value, this.valueField);\n const newValue = getter(candidate, this.valueField);\n let newText = getter(candidate, this.textField);\n if (!isPresent(this.value) && !isPresent(newValue)) {\n return false;\n }\n if (isPresent(newText)) {\n newText = newText.toString();\n }\n if (current === newValue && this.text === newText) {\n this.clearFilter();\n return false;\n }\n else {\n return true;\n }\n }), map((candidate) => {\n const newValue = getter(candidate, this.valueField);\n const newText = getter(candidate, this.textField);\n return {\n dataItem: candidate,\n text: newText,\n value: this.valuePrimitive ? newValue : candidate\n };\n }));\n const customValueStreams = partition(() => this.allowCustom)(this.customValueSubject.pipe(throttleTime(300)));\n const allowCustomValueStream = customValueStreams[0].pipe(tap(() => {\n this.loading = true;\n this.disabled = true;\n this.cdr.detectChanges();\n }), filter(() => {\n const hasChange = this.text !== getter(this.value, this.valueField);\n this.loading = hasChange;\n this.disabled = hasChange;\n if (!hasChange) {\n this.clearFilter();\n }\n return hasChange;\n }), this.valueNormalizer, map((normalizedValue) => {\n return {\n custom: true,\n dataItem: normalizedValue,\n text: this.text,\n value: normalizedValue\n };\n }));\n const disableCustomValueStream = customValueStreams[1].pipe(map(() => {\n return {\n custom: true,\n dataItem: undefined,\n text: undefined,\n value: undefined\n };\n }));\n const clearValueStream = this.clearValueSubject.pipe(map(() => ({\n dataItem: undefined,\n text: undefined,\n value: undefined\n })));\n if (this.valueSubscription) {\n this.valueSubscription.unsubscribe();\n }\n const merged = merge(valueStream, allowCustomValueStream, disableCustomValueStream, clearValueStream);\n this.valueSubscription = merged.pipe(catchError(() => {\n const selectionChanged = getter(this.dataItem, this.valueField) !== undefined;\n this.dataItem = undefined;\n this.value = undefined;\n this.text = undefined;\n this.loading = false;\n this.disabled = false;\n if (selectionChanged) {\n this.selectionChange.emit(undefined);\n }\n this.emitValueChange();\n this.createValueStream();\n return of(null);\n }))\n .subscribe((state) => {\n const selectionChanged = getter(this.dataItem, this.valueField) !== getter(state.dataItem, this.valueField);\n this.dataItem = state.dataItem;\n this.value = state.value;\n this.text = state.text;\n this.loading = false;\n this.disabled = false;\n this.clearFilter();\n if (state.custom) {\n this.selectionService.focused = -1;\n }\n if (selectionChanged) {\n const selectionArgs = state.custom ? undefined : this.dataItem;\n this.selectionChange.emit(selectionArgs);\n }\n this.emitValueChange();\n });\n }\n attachStreams() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subs.add(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n }));\n this.subs.add(merge(this.navigationService.up, this.navigationService.down, this.navigationService.home, this.navigationService.end)\n .pipe(filter((event) => isPresent(event.index)))\n .subscribe((event) => this.navigate(event.index)));\n this.subs.add(this.navigationService.open.subscribe(this.handleNavigationOpen.bind(this)));\n this.subs.add(this.navigationService.close.subscribe(() => this.togglePopup(false)));\n this.subs.add(this.navigationService.esc.subscribe(this.handleEscape.bind(this)));\n this.subs.add(this.navigationService.enter.pipe(tap((event) => {\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n }))\n .subscribe(this.handleEnter.bind(this)));\n this.subs.add(merge(this.selectionService.onChange, this.selectionService.onSelect.pipe(filter(_ => !this.isOpen)))\n .pipe(tap(_ => {\n this._filtering = false;\n this.togglePopup(false);\n }), map((event) => this.dataService.itemAt(event.indices[0])))\n .subscribe(dataItem => {\n this.change(dataItem);\n }));\n this.subs.add(this.selectionService.onSelect.pipe(filter(_ => this.isOpen), tap(_ => this._filtering = false), map((event) => this.dataService.itemAt(event.indices[0])))\n .subscribe(dataItem => {\n const selectionChanged = getter(dataItem, this.valueField) !== getter(this.dataItem, this.valueField);\n this.updateState({ dataItem });\n if (selectionChanged) {\n this.selectionChange.emit(dataItem);\n }\n }));\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.subs.unsubscribe();\n if (isPresent(this.valueSubscription)) {\n this.valueSubscription.unsubscribe();\n }\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n if (this.selectClickDisposeHandler) {\n this.selectClickDisposeHandler();\n }\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('valueNormalizer', changes)) {\n this.createValueStream();\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * Focuses a specific item of the ComboBox based on a provided index.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const isInRange = index >= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n /**\n * Focuses the ComboBox.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * Blurs the ComboBox.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * Toggles the visibility of the popup. If you use the `toggle` method to open or close the popup,\n * the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n this.cdr.markForCheck();\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the ComboBox.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = undefined;\n this.clearState();\n this.resetSelection();\n }\n /**\n * @hidden\n *\n * Used by the TextBoxContainer to determine if the floating label\n * should be rendered in the input when the component is not focused.\n */\n isEmpty() {\n const textEmpty = !isPresent(this.text) || isEmptyString(this.text);\n const valueEmpty = !isPresent(this.value) || isEmptyString(this.value);\n return textEmpty && valueEmpty;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this._filtering = true;\n this._previousDataItem = undefined;\n this.selectionService.resetSelection([]);\n this.clearValueSubject.next();\n this._filtering = false;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading k-input-loading-icon' : this.iconClass || 'k-i-arrow-s';\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}\n `;\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.isOpen) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.popupWidth;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(ComboBoxMessages.primitive);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(ComboBoxMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(ComboBoxMessages.textAndValue);\n }\n if (this.virtual && isNaN(this.virtual.itemHeight)) {\n throw new Error(ComboBoxMessages.noItemHeight);\n }\n }\n setState() {\n // Filtering in process, do nothing.\n if (this._filtering) {\n return;\n }\n const value = this.value;\n const valueField = this.valueField;\n const resolved = this.findDataItem({ valueField, value });\n if (isPresent(resolved.index) && resolved.index !== -1) {\n this.updateState({ dataItem: resolved.dataItem, confirm: true });\n this.resetSelection(resolved.index);\n }\n else if (isPresent(value) && this.allowCustom) {\n this.updateState({ dataItem: value });\n this.resetSelection(-1);\n }\n else if (this._previousDataItem && this.value) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else {\n this.clearState();\n this.resetSelection(-1);\n }\n }\n updateState({ dataItem, confirm = false }) {\n this.dataItem = dataItem;\n this.text = getter(dataItem, this.textField);\n if (confirm) {\n this._previousDataItem = dataItem;\n }\n }\n clearState() {\n this.text = undefined;\n this.dataItem = undefined;\n }\n resetSelection(index) {\n const clear = !isPresent(index) || index < 0;\n this.selectionService.resetSelection(clear ? [] : [index]);\n this.selectionService.focused = index;\n }\n firstFocusableIndex(index) {\n const maxIndex = this.data.length - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n findIndexPredicate(text) {\n if (this.dataService.grouped) {\n return (item) => {\n let itemText = getter(item.value, this.textField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n else {\n return (item) => {\n let itemText = getter(item, this.textField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n }\n findDataItem({ valueField, value }) {\n const result = {\n dataItem: null,\n index: -1\n };\n const comparer = (element) => {\n const dataItem = this.dataService.grouped ? element.value : element;\n return getter(dataItem, valueField) === getter(value, valueField);\n };\n const index = this.dataService.findIndex(comparer);\n result.dataItem = this.dataService.itemAt(index);\n result.index = index;\n return result;\n }\n search(text, startFrom = 0) {\n let index;\n if (text.length && this.dataService.itemsCount) {\n index = this.dataService.findIndex(this.findIndexPredicate(text), startFrom);\n }\n else {\n index = -1;\n }\n if (this.disabledItemsService.isIndexDisabled(index)) {\n if (index + 1 < this.dataService.itemsCount) {\n this.search(text, index + 1);\n }\n else {\n this.selectionService.focus(-1);\n }\n }\n else {\n this.selectionService.focus(index);\n if (this.suggest) {\n this.suggestedText = getter(this.dataService.itemAt(index), this.textField);\n }\n }\n }\n /**\n * @hidden\n */\n getSuggestion() {\n const hasSelected = !!this.selectionService.selected.length;\n const shouldSuggest = this.suggest && !this.backspacePressed && this.suggestedText && this.text;\n if (!hasSelected && shouldSuggest && this.suggestedText.toLowerCase().startsWith(this.text.toLowerCase())) {\n return this.suggestedText;\n }\n else {\n this.suggestedText = undefined;\n }\n }\n navigate(index) {\n if (this.dataService.itemsCount === 0) {\n return;\n }\n this.text = getter(this.dataService.itemAt(index), this.textField);\n this.selectionService.select(index);\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const hasSelected = isPresent(this.selectionService.selected[0]);\n const focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(0) : this.selectionService.focused;\n let offset = 0;\n if (this.disabled || this.readonly) {\n return;\n }\n if (event.keyCode === Keys.Home || event.keyCode === Keys.End) {\n return;\n }\n if (!hasSelected) {\n if (event.keyCode === Keys.ArrowDown) {\n offset = -1;\n }\n else if (event.keyCode === Keys.ArrowUp) {\n offset = 1;\n }\n }\n const action = this.navigationService.process({\n current: offset + focused,\n max: this.dataService.itemsCount - 1,\n min: 0,\n originalEvent: event\n });\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Left &&\n action !== NavigationAction.Right &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n handleEnter() {\n const text = this.text;\n const focused = this.selectionService.focused;\n const hasFocused = isPresent(focused) && focused !== -1;\n const previousText = getter(this._previousDataItem, this.textField) || \"\";\n const focusedItemText = getter(this.dataService.itemAt(focused), this.textField);\n const textHasChanged = text !== previousText;\n this.togglePopup(false);\n this._filtering = false;\n if (this.allowCustom && textHasChanged) {\n if (text === focusedItemText || this.useSuggestion()) {\n this.selectionService.change(focused);\n }\n else {\n this.change(text, true);\n }\n }\n if (!this.allowCustom) {\n if (hasFocused) {\n this.selectionService.change(focused);\n }\n else if (textHasChanged) {\n this.change(text, true);\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur() {\n this._filtering = false;\n this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers\n this.isFocused = false;\n const unresolvedSelection = getter(this.dataItem, this.valueField) !== getter(this.value, this.valueField);\n const currentText = this.searchbar.value;\n const textHasChanged = currentText !== (getter(this.dataItem, this.textField) || '');\n const valueHasChanged = unresolvedSelection || textHasChanged;\n const runInZone = valueHasChanged || hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper.nativeElement);\n if (runInZone) {\n this.zone.run(() => {\n if (valueHasChanged) {\n const lowerCaseMatch = isPresent(this.focusedItemText) && this.focusedItemText.toLowerCase() === currentText.toLowerCase();\n if (lowerCaseMatch || unresolvedSelection) {\n this.selectionService.change(this.selectionService.focused);\n }\n else {\n this.change(currentText, true);\n }\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n handleEscape() {\n this.togglePopup(false);\n // clear the focus only if the focused item is not selected\n const hasSelected = this.selectionService.selected.length > 0;\n if (!hasSelected) {\n this.suggestedText = null;\n this.selectionService.focused = -1;\n }\n }\n /**\n * @hidden\n */\n handleNavigationOpen() {\n this.restoreItemFocus();\n this.togglePopup(true);\n }\n /**\n * @hidden\n */\n searchBarChange(text) {\n const currentTextLength = this.text ? this.text.length : 0;\n this.backspacePressed = (text.length < currentTextLength) ? true : false;\n this.text = text;\n // Reset the selection prior to filter. If a match is present, it will be resolved. If a match is not present, it is not needed.\n this.selectionService.resetSelection([]);\n this.togglePopup(true);\n this._filtering = true;\n if (this.filterable && this.filterText !== text) {\n this.filterText = text;\n this.filterChange.emit(text);\n }\n else {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this.zone.run(() => this.onFocus.emit());\n }\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n change(candidate, isCustom = false) {\n if (isCustom) {\n this.customValueSubject.next(candidate);\n }\n else {\n this.valueSubject.next(candidate);\n }\n }\n emitValueChange() {\n this.onChangeCallback(this.value);\n this.valueChange.emit(this.value);\n this._previousDataItem = this.dataItem;\n }\n /**\n * @hidden\n */\n selectClick() {\n if (!this.touchEnabled) {\n this.searchbar.focus();\n }\n if (!this.isOpen) {\n this.restoreItemFocus();\n }\n this.togglePopup(!this.isOpen);\n }\n get listContainerClasses() {\n return ['k-list-container', 'k-reset'].concat(this.popupSettings.popupClass || []);\n }\n /**\n * @hidden\n */\n preventEventDefault(event) {\n event.preventDefault();\n }\n get focusedItemText() {\n const focused = this.selectionService.focused;\n if (!isPresent(focused) || focused === -1) {\n return null;\n }\n const itemText = getter(this.dataService.itemAt(focused), this.textField);\n return !isPresent(itemText) ? \"\" : itemText.toString();\n }\n /**\n * Focuses the first match when there's text in the input field, but no focused item.\n */\n restoreItemFocus() {\n const hasFocus = isPresent(this.selectionService.focused) && this.selectionService.focused > -1;\n if (!hasFocus && this.text && this.dataService.itemsCount) {\n if (this.filterable) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n else {\n this.search(this.text);\n }\n }\n }\n useSuggestion() {\n if (!(this.suggest && isPresent(this.searchbar.value))) {\n return false;\n }\n const focusedDataItem = this.dataService.itemAt(this.selectionService.focused);\n const focusedItemText = getter(focusedDataItem, this.textField);\n if (!isPresent(focusedItemText)) {\n return false;\n }\n return this.searchbar.value.toLowerCase() === focusedItemText.toLowerCase();\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute',\n anchorAlign: anchorPosition,\n popupAlign: popupPosition\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.popupWidth;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.popupHeight;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n clearFilter() {\n if (!(this.filterable && this.filterText)) {\n return;\n }\n this.filterText = '';\n this.filterChange.emit(this.filterText);\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this.zone.runOutsideAngular(() => \n // Roll up ComboBox on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n const isInDropDown = inDropDown(this.wrapper, target, this.popupRef);\n if (this.isFocused && !isInDropDown) {\n // Close popup and mobile keyboard if searchbar is focused\n this.zone.run(() => this.blur());\n }\n else if (this.isOpen && !isInDropDown) {\n // Close popup if the popup is opened via the select click\n this.zone.run(() => this.togglePopup(false));\n }\n }));\n }\n attachSelectClickHandler() {\n const selectElement = this.select.nativeElement;\n const event = pointers ? 'pointerdown' : 'click';\n this.selectClickDisposeHandler = this.renderer.listen(selectElement, event, this.selectClick.bind(this));\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n}\nComboBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: DataService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ComboBoxComponent, selector: \"kendo-combobox\", inputs: { focusableId: \"focusableId\", allowCustom: \"allowCustom\", data: \"data\", value: \"value\", textField: \"textField\", valueField: \"valueField\", valuePrimitive: \"valuePrimitive\", valueNormalizer: \"valueNormalizer\", placeholder: \"placeholder\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", iconClass: \"iconClass\", loading: \"loading\", suggest: \"suggest\", clearButton: \"clearButton\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", readonly: \"readonly\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", filterable: \"filterable\", virtual: \"virtual\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", selectionChange: \"selectionChange\", filterChange: \"filterChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, host: { properties: { \"class.k-combobox\": \"this.widgetClasses\", \"class.k-input\": \"this.widgetClasses\", \"class.k-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.dir\": \"this.dir\" } }, providers: [\n COMBOBOX_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.combobox'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => ComboBoxComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => ComboBoxComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"searchbar\", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }, { propertyName: \"select\", first: true, predicate: [\"select\"], descendants: true, static: true }], exportAs: [\"kendoComboBox\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoComboBox',\n providers: [\n COMBOBOX_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.combobox'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => ComboBoxComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => ComboBoxComponent)\n }\n ],\n selector: 'kendo-combobox',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { focusableId: [{\n type: Input\n }], allowCustom: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], valueNormalizer: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], loading: [{\n type: Input\n }], suggest: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], select: [{\n type: ViewChild,\n args: ['select', { static: true }]\n }], widgetClasses: [{\n type: HostBinding,\n args: ['class.k-combobox']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\n/**\n * Renders the selected value of the dropdown. To define the header template, nest an `` tag\n * with the `kendoValueTemplate` directive inside the component tag.\n *\n * The template context is set to the current component.\n * To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * > The `ValueTemplate` directive can only be used with the DropDownList and DropDownTree components.\n *\n * - [Using `ValueTemplate` with the DropDownList]({% slug templates_ddl %}#toc-value-template)\n * - [Using `ValueTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-value-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass ValueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nValueTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nValueTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ValueTemplateDirective, selector: \"[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ValueTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass FilterInputDirective {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n }\n ngOnChanges() {\n if (this.focused) {\n this.nextTick(() => this.element.nativeElement.focus());\n }\n }\n nextTick(fn) {\n this.zone.runOutsideAngular(() => setTimeout(fn));\n }\n}\nFilterInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nFilterInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterInputDirective, selector: \"[filterInput]\", inputs: { focused: [\"filterInput\", \"focused\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[filterInput]' // eslint-disable-line\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { focused: [{\n type: Input,\n args: ['filterInput']\n }] } });\n\n/**\n * @hidden\n */\nconst DROPDOWNLIST_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownListComponent)\n};\nconst DEFAULT_SIZE$3 = 'medium';\nconst DEFAULT_ROUNDED$3 = 'medium';\nconst DEFAULT_FILL_MODE$3 = 'solid';\n/**\n * Represents the [Kendo UI DropDownList component for Angular]({% slug overview_ddl %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass DropDownListComponent {\n constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, cdr, touchEnabled) {\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.dataService = dataService;\n this._zone = _zone;\n this.renderer = renderer;\n this.cdr = cdr;\n this.touchEnabled = touchEnabled;\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Enables the [filtering]({% slug filtering_ddl %}) functionality of the DropDownList.\n */\n this.filterable = false;\n /**\n * Enables a case-insensitive search. When filtration is disabled, use this option.\n */\n this.ignoreCase = true;\n /**\n * Sets the delay before an item search is performed. When filtration is disabled, use this option.\n */\n this.delay = 500;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Fires each time the value is changed ([see example]({% slug overview_ddl %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field\n * ([see example]({% slug overview_ddl %}#toc-events)).\n * You can filter the source based on the passed filtration value.\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the item selection is changed\n * ([see example]({% slug overview_ddl %}#toc-events)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_ddl %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_ddl %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the DropDownList.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownList gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n this.role = 'listbox';\n this.groupIndices = [];\n this.listBoxId = guid();\n this.optionPrefix = guid();\n this.filterText = \"\";\n this._isFocused = false;\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n this.word = \"\";\n this.last = \"\";\n this.filterFocused = new EventEmitter();\n this.filterBlurred = new EventEmitter();\n this.hostElementFocused = new EventEmitter();\n this.hostElementBlurred = new EventEmitter();\n this.selectionSubscription = new Subscription();\n this._open = false;\n this._popupSettings = { animate: true };\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.data = [];\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.subscribeFocusEvents();\n this.popupMouseDownHandler = this.onMouseDown.bind(this);\n }\n get width() {\n const wrapperWidth = isDocumentAvailable() ? this.wrapper.nativeElement.offsetWidth : 0;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get widgetTabIndex() {\n if (this.disabled) {\n return undefined;\n }\n const providedTabIndex = Number(this.tabIndex);\n const defaultTabIndex = 0;\n return !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get ariaExpanded() {\n return this.isOpen;\n }\n get ariaOwns() {\n if (!this.isOpen) {\n return;\n }\n return this.listBoxId;\n }\n get ariaActivedescendant() {\n if (!isPresent(this.dataItem) || !this.isOpen) {\n return;\n }\n return this.optionPrefix + \"-\" + getter(this.dataItem, this.valueField);\n }\n get noDataLabel() {\n if (this.dataService.itemsCount === 0) {\n return this.messageFor('noDataText');\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the DropDownList.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.setState();\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the DropDownList.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the source are ignored.\n */\n set value(newValue) {\n if (!isPresent(newValue)) {\n this._previousDataItem = undefined;\n }\n this._value = newValue;\n this.setState();\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the DropDownList.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_ddl %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_ddl %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_ddl %}#toc-primitive-values-from-object-fields)).\n * If set to `true`, the selected value has to be of a primitive value.\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = rounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n blurComponent(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.hostElementBlurred.emit();\n }\n /**\n * @hidden\n */\n blurFilterInput() {\n this.filterBlurred.emit();\n }\n /**\n * @hidden\n */\n focusComponent(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.hostElementFocused.emit();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n get hostTabIndex() {\n return this.widgetTabIndex;\n }\n get isReadonly() {\n return this.readonly;\n }\n get isAriaExpanded() {\n return this.ariaExpanded;\n }\n get hostAriaOwns() {\n return this.ariaOwns;\n }\n get hostAriaActivedescendant() {\n return this.ariaActivedescendant;\n }\n get hostNoDataLabel() {\n return this.noDataLabel;\n }\n /**\n * @hidden\n */\n keydown(event) {\n const firstIndex = isPresent(this.defaultItem) ? -1 : 0;\n let focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(firstIndex) : this.selectionService.focused;\n let offset = 0;\n if (this.disabled || this.readonly) {\n return;\n }\n const isHomeEnd = event.keyCode === Keys.Home || event.keyCode === Keys.End;\n const isFilterFocused = this.filterable && this.isFocused && this.isOpen;\n if (isFilterFocused && isHomeEnd) {\n return;\n }\n const hasSelected = isPresent(this.selectionService.selected[0]);\n const focusedItemNotSelected = isPresent(this.selectionService.focused) && !this.selectionService.isSelected(this.selectionService.focused);\n if (!hasSelected || focusedItemNotSelected) {\n if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.ArrowRight) {\n offset = -1;\n }\n else if (event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowLeft) {\n offset = 1;\n }\n }\n const eventData = event;\n const action = this.navigationService.process({\n current: focused + offset,\n max: this.dataService.itemsCount - 1,\n min: this.defaultItem ? -1 : 0,\n originalEvent: eventData\n });\n const leftRightKeys = (action === NavigationAction.Left) || (action === NavigationAction.Right);\n if (action !== NavigationAction.Undefined &&\n action !== NavigationAction.Tab &&\n action !== NavigationAction.Backspace &&\n action !== NavigationAction.Delete &&\n !(leftRightKeys && this.filterable) &&\n action !== NavigationAction.Enter //enter when popup is opened is handled before `handleEnter`\n ) {\n eventData.preventDefault();\n }\n }\n /**\n * @hidden\n */\n keypress(event) {\n if (this.disabled || this.readonly || this.filterable) {\n return;\n }\n this.onKeyPress(event);\n }\n /**\n * @hidden\n */\n click(event) {\n event.preventDefault();\n this.focus();\n this.togglePopup(!this.isOpen);\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, \"tabindex\");\n this.localizationChangesSubscription = this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n });\n this.assignAriaDescribedBy();\n this.setComponentClasses();\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n const value = this.value;\n return !(value === 0 || value === false || value || this.defaultItem);\n }\n /**\n * @hidden\n */\n onFilterFocus() {\n this.filterFocused.emit();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n if (this.localizationChangesSubscription) {\n this.localizationChangesSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('defaultItem', changes, false)) {\n this.disabledItemsService.defaultItem = this.defaultItem;\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive', 'defaultItem', 'itemDisabled'], changes, false)) {\n this.setState();\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * Focuses a specific item of the DropDownList based on a provided index.\n * If there is a default item it is positioned at index -1.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const minIndex = isPresent(this.defaultItem) ? -1 : 0;\n const isInRange = minIndex <= index && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(null);\n }\n }\n /**\n * Focuses the DropDownList.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownList.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_ddl %}#toc-setting-the-initially-opened-component)).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"Expression has changed...\" type error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n });\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n if (!open && this.filterable && this.isFocused) {\n this.focus();\n }\n this._toggle(open);\n }\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the DropDownList.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = undefined;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading k-input-loading-icon' : this.iconClass || 'k-i-arrow-s';\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}`;\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n /**\n * @hidden\n */\n get optionLabelSizeClass() {\n return `${this.size ? getSizeClass('list', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n get isDisabledDefaultItem() {\n return this.disabledItemsService.isItemDisabled(this.defaultItem);\n }\n /**\n * @hidden\n */\n getText() {\n return this.text;\n }\n /**\n * @hidden\n */\n getDefaultItemText() {\n return getter(this.defaultItem, this.textField);\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: anchorPosition,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute'\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n if (!this.filterable) {\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n updateState({ dataItem, confirm = false }) {\n this.dataItem = dataItem;\n this.text = getter(dataItem, this.textField);\n if (confirm) {\n this._previousDataItem = dataItem;\n }\n }\n clearState() {\n this.text = undefined;\n this.dataItem = undefined;\n }\n resetSelection(index) {\n const clear = !isPresent(index);\n this.selectionService.resetSelection(clear ? [] : [index]);\n this.selectionService.focused = clear ? this.firstFocusableIndex(0) : index;\n }\n onSelectionChange({ dataItem }) {\n this.updateState({ dataItem });\n this.selectionChange.emit(dataItem);\n // reassigning the value label ID as aria-deascibedby forces firefox/nvda, forefox/jaws to read\n // the new value when the popup is closed and the value is changed with the arrow keys (up/down)\n this.assignAriaDescribedBy();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n // Item selection when the popup is open.\n this.selectionSubscription.add(this.selectionService.onSelect.pipe(filter(_ => this.isOpen), map(this.itemFromEvent.bind(this)))\n .subscribe(this.onSelectionChange.bind(this)));\n // Item selection when the popup is closed | clicked | enter, and so on.\n this.selectionSubscription.add(merge(this.selectionService.onSelect.pipe(filter(_ => !this.isOpen)), this.selectionService.onChange).pipe(map(this.itemFromEvent.bind(this)), tap(_ => this.togglePopup(false)))\n .subscribe(({ dataItem, value: newValue, newSelection }) => {\n if (newSelection) {\n this.onSelectionChange({ dataItem });\n }\n const shouldUsePrevious = !isPresent(dataItem) && this._previousDataItem;\n const shouldUseNewValue = newValue !== getter(this.value, this.valueField);\n if (shouldUsePrevious) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else if (shouldUseNewValue) {\n this.value = this.valuePrimitive ? newValue : dataItem;\n this._previousDataItem = dataItem;\n this.emitChange(this.value);\n }\n this.clearFilter();\n }));\n this.navigationSubscription = merge(this.navigationService.up, this.navigationService.down, this.navigationService.left.pipe(skipWhile(() => this.filterable)), this.navigationService.right.pipe(skipWhile(() => this.filterable)), this.navigationService.home, this.navigationService.end)\n .pipe(filter((event) => !isNaN(event.index)))\n .subscribe((event) => this.selectionService.select(event.index));\n this.openSubscription = this.navigationService.open.subscribe(() => this.togglePopup(true));\n this.closeSubscription = this.navigationService.close.subscribe(() => {\n this.togglePopup(false);\n this.focus();\n });\n this.enterSubscription = this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(this.handleEnter.bind(this));\n this.escSubscription = this.navigationService.esc\n .subscribe(this.handleEscape.bind(this));\n this.filterBlurredSubscription = this.filterBlurred.pipe(concatMap(() => interval(10).pipe(take(1), takeUntil(this.hostElementFocused))))\n .subscribe(() => {\n this.hostElementBlurred.emit();\n });\n this._zone.runOutsideAngular(() => {\n this.componentBlurredSubscription =\n merge(this.hostElementBlurred.pipe(concatMap(() => interval(10).pipe(take(1), takeUntil(this.filterFocused)))), this.navigationService.tab).pipe(tap(event => event instanceof NavigationEvent && this.focus()), filter(() => this.isFocused))\n .subscribe(() => this.componentBlur());\n });\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up DropDownList on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n if (this.filterFocused) {\n // Close popup if filter is focused\n this.togglePopup(false);\n }\n this.blur();\n });\n }\n }));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.focusComponent = this.focusComponent.bind(this);\n this.blurComponent = this.blurComponent.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.focusComponent, useCapture);\n document.addEventListener('blur', this.blurComponent, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.focusComponent, useCapture);\n document.removeEventListener('blur', this.blurComponent, useCapture);\n }\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.navigationSubscription.unsubscribe();\n this.openSubscription.unsubscribe();\n this.closeSubscription.unsubscribe();\n this.enterSubscription.unsubscribe();\n this.escSubscription.unsubscribe();\n this.componentBlurredSubscription.unsubscribe();\n this.filterBlurredSubscription.unsubscribe();\n this.unSubscribeFocusEvents();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n }\n itemFromEvent(event) {\n const index = event.indices[0];\n let dataItem = this.dataService.itemAt(index);\n dataItem = isPresent(dataItem) ? dataItem : this.currentOrDefault(index);\n const value = getter(dataItem, this.valueField);\n const newSelection = event.newSelection;\n return {\n dataItem,\n index,\n newSelection,\n value\n };\n }\n currentOrDefault(selectedIndex) {\n const defaultItemIndex = -1;\n if (isPresent(this.dataItem) && selectedIndex !== defaultItemIndex) {\n return this.dataItem;\n }\n else {\n return this.defaultItem;\n }\n }\n firstFocusableIndex(index) {\n const maxIndex = this.dataService.itemsCount - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index < maxIndex) ? this.firstFocusableIndex(index + 1) : undefined;\n }\n else {\n return index;\n }\n }\n handleEnter() {\n if (this.isOpen) {\n this.selectionService.change(this.selectionService.focused);\n this.focus();\n }\n else {\n this.togglePopup(true);\n }\n }\n handleEscape() {\n if (isPresent(this.selectionService.selected[0])) {\n this.selectionService.change(this.selectionService.selected[0]);\n }\n else {\n this.togglePopup(false);\n this.clearFilter();\n }\n this.focus();\n }\n clearFilter() {\n if (!(this.filterable && this.filterText)) {\n return;\n }\n this.filterText = \"\";\n this.cdr.markForCheck();\n this.filterChange.emit(this.filterText);\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.defaultItem && this.valueField && typeof this.defaultItem !== \"object\") {\n throw new Error(DropDownListMessages.defaultItem);\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(DropDownListMessages.primitive);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(DropDownListMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(DropDownListMessages.textAndValue);\n }\n }\n componentBlur() {\n this.isFocused = false;\n const selectionPresent = isPresent(this.selectionService.selected[0]);\n const valueHasChanged = selectionPresent && getter(this.value, this.valueField) !== getter(this.dataService.itemAt(this.selectionService.selected[0]), this.valueField);\n if (valueHasChanged ||\n hasObservers(this.close) ||\n hasObservers(this.onBlur) ||\n hasObservers(this.filterChange) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n if (valueHasChanged) {\n this.selectionService.change(this.selectionService.selected[0]);\n }\n this.togglePopup(false);\n this.clearFilter();\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n onMouseDown(event) {\n const tagName = event.target.tagName.toLowerCase();\n if (tagName !== \"input\") {\n event.preventDefault();\n }\n }\n onKeyPress(event) {\n if (event.which === 0 || event.keyCode === Keys.Enter) {\n return;\n }\n let character = String.fromCharCode(event.charCode || event.keyCode);\n if (this.ignoreCase) {\n character = character.toLowerCase();\n }\n if (character === \" \") {\n event.preventDefault();\n }\n this.word += character;\n this.last = character;\n this.search();\n }\n search() {\n clearTimeout(this.typingTimeout);\n if (!this.filterable) {\n this.typingTimeout = setTimeout(() => {\n this.word = \"\";\n }, this.delay);\n this.selectNext();\n }\n }\n selectNext() {\n let data = this.dataService\n .filter((item) => isPresent(item) && !item.header && !this.disabledItemsService.isItemDisabled(item))\n .map((item) => {\n if (this.dataService.grouped) {\n return { item: item.value, itemIndex: item.offsetIndex };\n }\n return { item: item, itemIndex: this.dataService.indexOf(item) };\n });\n const isInLoop = sameCharsOnly(this.word, this.last);\n let dataLength = data.length;\n let hasSelected = !isNaN(this.selectionService.selected[0]);\n let startIndex = !hasSelected ? 0 : this.selectionService.selected[0];\n let text, index, defaultItem;\n if (this.defaultItem && !this.disabledItemsService.isItemDisabled(this.defaultItem)) {\n defaultItem = { item: this.defaultItem, itemIndex: -1 };\n dataLength += 1;\n startIndex += 1;\n }\n startIndex += isInLoop && hasSelected ? 1 : 0;\n data = shuffleData(data, startIndex, defaultItem);\n index = 0;\n for (; index < dataLength; index++) {\n text = getter(data[index].item, this.textField);\n const loopMatch = Boolean(isInLoop && matchText(text, this.last, this.ignoreCase));\n const nextMatch = Boolean(matchText(text, this.word, this.ignoreCase));\n if (loopMatch || nextMatch) {\n index = data[index].itemIndex;\n break;\n }\n }\n if (index !== dataLength) {\n this.navigate(index);\n }\n }\n emitChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n navigate(index) {\n this.selectionService.select(index);\n }\n findDataItem({ valueField, value }) {\n const result = {\n dataItem: null,\n index: -1\n };\n const prop = dataItem => getter(dataItem, valueField);\n let comparer;\n if (this.dataService.grouped) {\n comparer = (element) => {\n return prop(element.value) === prop(value);\n };\n }\n else {\n comparer = (element) => {\n return prop(element) === prop(value);\n };\n }\n const index = this.dataService.findIndex(comparer);\n result.dataItem = this.dataService.itemAt(index);\n result.index = index;\n return result;\n }\n setState() {\n const value = this.value;\n const valueField = this.valueField;\n const textField = this.textField;\n const primitive = this.valuePrimitive;\n if (this.defaultItem) {\n const defaultValue = getter(this.defaultItem, valueField);\n const currentValue = getter(value, valueField);\n if (!isPresent(value) || (currentValue === defaultValue)) {\n this.updateState({ dataItem: this.defaultItem, confirm: true });\n this.resetSelection(-1);\n if (this.filterable && this.filterText && this.dataService.itemsCount) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n return;\n }\n }\n const resolved = this.findDataItem({ valueField, value });\n // The data and value are of same shape,\n // for example, value: 'foo', data: ['foo', 'bar']\n // or value: { value: 1, text: 'foo' }, data: [{ value: 1, text: 'foo' }].\n const ofSameType = !(primitive && textField);\n if (resolved.dataItem) {\n this.updateState({ dataItem: resolved.dataItem, confirm: true });\n this.resetSelection(resolved.index);\n }\n else if (isPresent(value) && ofSameType) {\n this.updateState({ dataItem: value });\n this.resetSelection();\n }\n else if (this._previousDataItem) {\n this.updateState({ dataItem: this._previousDataItem });\n this.resetSelection();\n }\n else {\n this.clearState();\n this.resetSelection();\n }\n }\n /**\n * @hidden\n */\n handleFilter(event) {\n this.filterChange.emit(event.target.value);\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n assignAriaDescribedBy() {\n const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';\n const trimmed = currentValue.replace(this.valueLabelId, '').trim();\n // reset the value label ID to force readers to read the new value\n this.valueLabelId = guid();\n // add to the current value - don't replace it\n const newValue = `${this.valueLabelId} ${trimmed}`.trim();\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n }\n }\n}\nDropDownListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: DataService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: { iconClass: \"iconClass\", loading: \"loading\", data: \"data\", value: \"value\", textField: \"textField\", valueField: \"valueField\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", defaultItem: \"defaultItem\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", readonly: \"readonly\", filterable: \"filterable\", virtual: \"virtual\", ignoreCase: \"ignoreCase\", delay: \"delay\", valuePrimitive: \"valuePrimitive\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", focusableId: [\"id\", \"focusableId\"] }, outputs: { valueChange: \"valueChange\", filterChange: \"filterChange\", selectionChange: \"selectionChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\" }, host: { listeners: { \"keydown\": \"keydown($event)\", \"keypress\": \"keypress($event)\", \"click\": \"click($event)\" }, properties: { \"class.k-dropdownlist\": \"this.hostClasses\", \"class.k-picker\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\", \"attr.aria-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.id\": \"this.focusableId\", \"attr.dir\": \"this.dir\", \"attr.tabindex\": \"this.hostTabIndex\", \"attr.readonly\": \"this.isReadonly\", \"attr.aria-readonly\": \"this.isReadonly\", \"attr.role\": \"this.role\", \"attr.aria-haspopup\": \"this.role\", \"attr.aria-expanded\": \"this.isAriaExpanded\", \"attr.aria-owns\": \"this.hostAriaOwns\", \"attr.aria-activedescendant\": \"this.hostAriaActivedescendant\", \"attr.aria-label\": \"this.hostNoDataLabel\" } }, providers: [\n DROPDOWNLIST_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownlist'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => DropDownListComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => DropDownListComponent)\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }, { propertyName: \"valueTemplate\", first: true, predicate: ValueTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }], exportAs: [\"kendoDropDownList\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ getText() }}\n \n \n \n \n \n \n \n\n \n
\n \n \n \n \n
\n
\n \n \n \n
\n {{ getDefaultItemText() }}\n
\n \n
\n \n \n
\n \n \n
\n \n
\n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i8.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FilterInputDirective, selector: \"[filterInput]\", inputs: [\"filterInput\"] }, { type: i8.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i8.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: [\"index\", \"checkboxes\", \"height\", \"multipleSelection\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoDropDownList',\n providers: [\n DROPDOWNLIST_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownlist'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => DropDownListComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => DropDownListComponent)\n }\n ],\n selector: 'kendo-dropdownlist',\n template: `\n \n \n \n \n \n \n {{ getText() }}\n \n \n \n \n \n \n \n\n \n
\n \n \n \n \n
\n
\n \n \n \n
\n {{ getDefaultItemText() }}\n
\n \n
\n \n \n
\n \n \n
\n \n
\n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { iconClass: [{\n type: Input\n }], loading: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], defaultItem: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], ignoreCase: [{\n type: Input\n }], delay: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], itemTemplate: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], valueTemplate: [{\n type: ContentChild,\n args: [ValueTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdownlist']\n }, {\n type: HostBinding,\n args: ['class.k-picker']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], focusableId: [{\n type: Input,\n args: ['id']\n }, {\n type: HostBinding,\n args: ['attr.id']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], isReadonly: [{\n type: HostBinding,\n args: ['attr.readonly']\n }, {\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }, {\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], hostAriaOwns: [{\n type: HostBinding,\n args: ['attr.aria-owns']\n }], hostAriaActivedescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], hostNoDataLabel: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], keypress: [{\n type: HostListener,\n args: ['keypress', ['$event']]\n }], click: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * Renders the content of the custom list item in the MultiSelect\n * ([see example]({% slug templates_multiselect %}#toc-customizing-the-item-content)).\n * The template context is set to the current component.\n * To get a reference to the current text that is typed by the\n * user, use the `let-customItem` directive.\n *\n * > The `CustomItemTemplate` directive can only be used with the MultiSelect component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * New Item: {{customItem}}\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n *\n */\nclass CustomItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCustomItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCustomItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomItemTemplateDirective, selector: \"[kendoMultiSelectCustomItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectCustomItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the selected tag value of the MultiSelect\n * ([see example]({% slug templates_multiselect %}#toc-tag-template)).\n * The template context is set to the current component.\n * To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * > The `TagTemplate` directive can only be used with the MultiSelect and MultiSelectTree components.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass TagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTagTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nTagTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TagTemplateDirective, selector: \"[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTagTemplate],[kendoMultiSelectTreeTagTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the grouped tag values in the MultiSelect\n * ([see example]({% slug summarytagmode_multiselect %})).\n * The template context is set to the current component.\n * To get a reference to the current grouped\n * data items collection, use the `let-dataItems` directive.\n *\n * > The `GroupTagTemplate` directive can only be used with the MultiSelect and MultiSelectTree components.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItems.length}} item(s) selected\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass GroupTagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nGroupTagTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupTagTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nGroupTagTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: GroupTagTemplateDirective, selector: \"[kendoMultiSelectGroupTagTemplate],[kendoMultiSelectTreeGroupTagTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: GroupTagTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectGroupTagTemplate],[kendoMultiSelectTreeGroupTagTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Arguments for the `removeTag` event. The `removeTag` event fires when a tag is about\n * to the removed. If you cancel the event, the removal is prevented.\n */\nclass RemoveTagEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `remove` event.\n * @param dataItem - The data item or an array of data items that will be removed.\n */\n constructor(dataItem) {\n super();\n this.dataItem = dataItem;\n }\n}\n\n/**\n * @hidden\n */\nconst normalizeCheckboxesSettings = (settings) => {\n if (isObject(settings)) {\n const defaultSettings = { enabled: true, checkOnClick: true };\n return Object.assign({}, defaultSettings, settings);\n }\n return { enabled: Boolean(settings), checkOnClick: true };\n};\n\n/**\n * @hidden\n */\nclass TagListComponent {\n constructor(renderer, hostElement) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.rounded = 'medium';\n this.fillMode = 'solid';\n /**\n * A collection with the disabled tags' indices.\n */\n this.disabledIndices = new Set();\n this.removeTag = new EventEmitter();\n this.hostClasses = true;\n this._size = 'medium';\n }\n set size(size) {\n this.renderer.removeClass(this.hostElement.nativeElement, getSizeClass('chip-list', this.size));\n if (size) {\n this.renderer.addClass(this.hostElement.nativeElement, getSizeClass('chip-list', size));\n }\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get hostId() {\n return this.id;\n }\n tagProp(tag, prop, index) {\n const propField = prop && this.getPropField(tag, prop, index);\n return getter(tag, propField);\n }\n isTagDisabled(tag, positionIndex) {\n if (this.isGroupTag(tag)) {\n /** The `positionIndex` is used to determine after how many single tags is the group tag displayed =>\n * => it is used to increment the indices inside the group tag so that we determine the actual position index\n * of each group tag item as they appear in the `value` (important to check against `disabledIndices`)\n * e.g. `disabledIndices = [0, 1]` && `tags = ['Small', ['Medium', 'Large']]` => without the incrementation with\n * `positionIndex`, the group tag would yield [0, 1] as indices, while it should yield [1, 2]\n */\n return tag.every((_tag, index) => this.disabledIndices.has(index + positionIndex));\n }\n return this.disabledIndices.has(positionIndex);\n }\n deleteTag(event, tag, index) {\n event.preventDefault();\n event.stopImmediatePropagation();\n if (!this.disabled && event.which === 1) {\n this.removeTag.emit({ tag, index });\n }\n }\n itemId(tag, index) {\n if (tag) { //because of custom values\n return this.tagPrefix + \"-\" + this.tagProp(tag, this.valueField, index);\n }\n }\n isGroupTag(tag) {\n return tag instanceof Array;\n }\n tagAriaHidden(index) {\n return isPresent(this.focused) && this.focused !== index;\n }\n getPropField(tag, prop, index) {\n // Needed for MultiSelectTree value binding (Heterogeneous Data)\n const fieldsCount = prop.length - 1;\n if (typeof prop === 'string') {\n return prop;\n }\n else if (this.valueDepth) {\n const depth = this.valueDepth[index];\n return fieldsCount < depth ? prop[fieldsCount] : prop[depth];\n }\n else {\n return prop.find(item => item in tag);\n }\n }\n}\nTagListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagListComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTagListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TagListComponent, selector: \"kendo-taglist\", inputs: { tags: \"tags\", textField: \"textField\", valueField: \"valueField\", valueDepth: \"valueDepth\", focused: \"focused\", template: \"template\", groupTemplate: \"groupTemplate\", disabled: \"disabled\", tagPrefix: \"tagPrefix\", id: \"id\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", disabledIndices: \"disabledIndices\" }, outputs: { removeTag: \"removeTag\" }, host: { properties: { \"class.k-input-values\": \"this.hostClasses\", \"class.k-chip-list\": \"this.hostClasses\", \"class.k-selection-multiple\": \"this.hostClasses\", \"attr.id\": \"this.hostId\" } }, ngImport: i0, template: `\n \n \n \n \n \n \n \n {{ tag.length }} {{ tag.length === 1 ? 'item' : 'items' }} selected\n \n \n \n \n \n \n {{ tagProp(tag, textField, index) }}\n \n \n \n\n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TagListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-taglist',\n template: `\n \n \n \n \n \n \n \n {{ tag.length }} {{ tag.length === 1 ? 'item' : 'items' }} selected\n \n \n \n \n \n \n {{ tagProp(tag, textField, index) }}\n \n \n \n\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { tags: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valueDepth: [{\n type: Input\n }], focused: [{\n type: Input\n }], template: [{\n type: Input\n }], groupTemplate: [{\n type: Input\n }], disabled: [{\n type: Input\n }], tagPrefix: [{\n type: Input\n }], id: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], disabledIndices: [{\n type: Input\n }], removeTag: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-input-values']\n }, {\n type: HostBinding,\n args: ['class.k-chip-list']\n }, {\n type: HostBinding,\n args: ['class.k-selection-multiple']\n }], hostId: [{\n type: HostBinding,\n args: ['attr.id']\n }] } });\n\nconst MULTISELECT_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent)\n};\nconst DEFAULT_SIZE$2 = 'medium';\nconst DEFAULT_ROUNDED$2 = 'medium';\nconst DEFAULT_FILL_MODE$2 = 'solid';\n/**\n * Represents the [Kendo UI MultiSelect component for Angular]({% slug overview_multiselect %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nclass MultiSelectComponent {\n constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, touchEnabled) {\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.dataService = dataService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.cdr = cdr;\n this.differs = differs;\n this.renderer = renderer;\n this._zone = _zone;\n this.touchEnabled = touchEnabled;\n this.listBoxId = guid();\n this.tagListId = guid();\n this.tagPrefix = \"tag-\" + guid();\n this.optionPrefix = \"option-\" + guid();\n this.focusedTagIndex = undefined;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether to close the options list of the MultiSelect after the item selection is finished\n * ([see example]({% slug openstate_multiselect %}#toc-keeping-the-options-list-open-while-on-focus)).\n * @default true\n */\n this.autoClose = true;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Enables the [filtering]({% slug filtering_multiselect %}) functionality of the MultiSelect.\n */\n this.filterable = false;\n /**\n * Sets the height of the suggestions list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of suggestions and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to an empty array and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * A user-defined callback function which receives an array of selected data items and maps them to an array of tags\n * ([see examples]({% slug summarytagmode_multiselect %}#toc-rendering-of-tags)).\n *\n * @param { Any[] } dataItems - The selected data items from the list.\n * @returns { Any[] } - The tags that will be rendered by the component.\n */\n this.tagMapper = (tags) => tags || [];\n /**\n * Specifies whether the MultiSelect allows user-defined values that are not present in the dataset\n * ([more information and examples]({% slug custom_values_multiselect %})).\n * Defaults to `false`.\n */\n this.allowCustom = false;\n /**\n * A user-defined callback function which returns normalized custom values.\n * Typically used when the data items are different from type `string`.\n *\n * @param { Any } value - The custom value that is defined by the user.\n * @returns { Any }\n *\n * @example\n * ```ts\n * import { map } from 'rxjs/operators';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public listItems: Array<{ text: string, value: number }> = [\n * { text: \"Small\", value: 1 },\n * { text: \"Medium\", value: 2 },\n * { text: \"Large\", value: 3 }\n * ];\n *\n * public onValueChange(value) {\n * console.log(\"valueChange : \", value);\n * }\n *\n * public valueNormalizer = (text$: Observable) => text$.pipe(map((text: string) => {\n * return {\n * value: Math.floor(Math.random() * (1000 - 100) + 1000), //generate unique valueField\n * text: text };\n * }));\n *\n * }\n * ```\n */\n this.valueNormalizer = (text) => text.pipe(map((userInput) => {\n const comparer = (item) => typeof item === 'string' && userInput.toLowerCase() === item.toLowerCase();\n const matchingValue = this.value.find(comparer);\n if (matchingValue) {\n return matchingValue;\n }\n const matchingItem = this.dataService.find(comparer);\n return matchingItem ? matchingItem : userInput;\n }));\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example]({% slug overview_multiselect %}#toc-events)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_multiselect %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_multiselect %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the MultiSelect.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the MultiSelect gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time a tag is about to be removed([see examples]({% slug summarytagmode_multiselecttree %}#toc-notifying-on-removing-group-tags)).\n * This event is preventable. If you cancel it, the tag will not be removed.\n */\n this.removeTag = new EventEmitter();\n this.hostClasses = true;\n this.role = 'combobox';\n this.initialized = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.onChangeCallback = (_) => { };\n this.onTouchedCallback = (_) => { };\n this._placeholder = '';\n this._open = false;\n this._value = [];\n this._popupSettings = { animate: true };\n this._checkboxes = { enabled: false };\n this._isFocused = false;\n this.selectedDataItems = [];\n this.customValueSubject = new Subject();\n this.observableSubscriptions = new Subscription();\n validatePackage(packageMetadata);\n this.popupMouseDownHandler = this.onMouseDown.bind(this);\n this.data = [];\n this.direction = this.localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeTouchEvents();\n }\n /**\n * Focuses a specific item of the MultiSelect based on a provided index.\n * If there is a custom item it is positioned at index -1.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const minIndex = this.allowCustom ? -1 : 0;\n const isInRange = minIndex <= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n }\n else {\n this.selectionService.focus(null);\n }\n }\n /**\n * Focuses the MultiSelect.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * @hidden\n */\n onSearchBarFocus() {\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * Blurs the MultiSelect.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * @hidden\n */\n onSearchBarBlur() {\n if (!this.isFocused) {\n return;\n }\n this.isFocused = false;\n if (hasObservers(this.onBlur) ||\n hasObservers(this.filterChange) ||\n hasObservers(this.close) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n this.closePopup();\n if (!(this.isOpen && this.allowCustom)) {\n this.clearFilter();\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n if (!this.allowCustom) {\n this.clearFilter();\n }\n this.closePopup();\n }\n }\n /**\n * @hidden\n */\n onMouseDown(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n onResize() {\n if (this._open) {\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the MultiSelect.\n *\n * > The data has to be provided in an array-like list of items.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n if (this.initialized) {\n this.setState(this.value);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n //Use length instead of itemsCount because of grouping\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the MultiSelect. It can be either of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the source are ignored.\n */\n set value(values) {\n this._value = values ? values : [];\n if (!this.differ && this.value) {\n this.differ = this.differs.find(this.value).create();\n }\n this.valueChangeDetected = true;\n if (this.initialized) {\n this.setState(this.value);\n }\n }\n get value() {\n return this._value;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * The hint which is displayed when the component is empty.\n * When the values are selected, it disappears.\n */\n set placeholder(text) {\n this._placeholder = text || '';\n }\n get placeholder() {\n return this.selectedDataItems.length ? '' : this._placeholder;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_multiselect %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * Specifies whether checkboxes will be rendered before each item in the popup list.\n */\n set checkboxes(settings) {\n this._checkboxes = normalizeCheckboxesSettings(settings);\n }\n get checkboxes() {\n return this._checkboxes;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_multiselect %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Configures the popup of the MultiSelect.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Specifies the type of the selected value.\n * If set to `true`, the selected value has to be of the primitive type\n * ([more information and example]({% slug valuebinding_multiselect %}#toc-primitive-values-from-object-fields)).\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n get dir() {\n return this.direction;\n }\n get disabledClass() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get isAriaExpanded() {\n return this.isOpen;\n }\n /**\n * @hidden\n */\n hostMousedown(event) {\n const inputElement = this.searchbar.input.nativeElement;\n if (event.button === 0) {\n if (this.isFocused && this.isOpen && event.target === inputElement) {\n return;\n }\n if (!this.touchEnabled || (this.touchEnabled && event.target.tagName !== 'SPAN')) {\n this.searchbar.focus();\n }\n this.togglePopup(!this.isOpen);\n event.preventDefault();\n }\n }\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-reset'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n get customItemSizeClass() {\n return `${this.size ? getSizeClass('list', this.size) : ''}`;\n }\n get width() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get activeDescendant() {\n const focusedTagIndex = this.focusedTagIndex;\n const focusedListIndex = this.selectionService.focused;\n let prefix;\n let item;\n if (isPresent(focusedTagIndex) && !this.isOpen) {\n item = this.tags[focusedTagIndex];\n prefix = this.tagPrefix;\n }\n else if (isPresent(focusedListIndex) && focusedListIndex !== -1 && this.isOpen) {\n item = this.dataService.itemAt(focusedListIndex);\n prefix = this.optionPrefix;\n }\n else {\n return null;\n }\n return prefix + \"-\" + getter(item, this.valueField);\n }\n get noDataLabel() {\n if (this.dataService.itemsCount === 0) {\n return this.messageFor('noDataText');\n }\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * @hidden\n */\n verifySettings() {\n if (!isDevMode() || this.value.length === 0) {\n return;\n }\n if (!isArray(this.value)) {\n throw new Error(MultiselectMessages.array);\n }\n if (this.valuePrimitive === true && isObjectArray(this.value)) {\n throw new Error(MultiselectMessages.primitive);\n }\n if (this.valuePrimitive === false && !isObjectArray(this.value)) {\n throw new Error(MultiselectMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(MultiselectMessages.textAndValue);\n }\n }\n /**\n * @hidden\n */\n change(event) {\n const isCustomItem = (isPresent(event.added) || isPresent(event.removed)) && (event.added === -1 || event.removed === -1);\n if (isCustomItem) {\n this.addCustomValue(this.text);\n return; // The change is emited asynchronosly.\n }\n // Existing items.\n if (isPresent(event.added)) {\n const dataItem = this.dataService.itemAt(event.added);\n const newItem = (this.valuePrimitive && isPresent(dataItem) && isPresent(dataItem[this.valueField])) ? dataItem[this.valueField] : dataItem;\n this.value = [...this.value, newItem];\n }\n if (isPresent(event.removed)) {\n const dataItem = this.dataService.itemAt(event.removed);\n const filter = (item) => getter(item, this.valueField) !== getter(dataItem, this.valueField);\n this.value = this.value.filter(filter);\n this.selectionService.focused = event.removed;\n this.cdr.detectChanges();\n }\n this.emitValueChange();\n }\n /**\n * @hidden\n */\n setState(value) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const selection = selectedIndices(this.value, data, this.valueField);\n this.selectionService.resetSelection(selection);\n if (this.disabledItemsService.isIndexDisabled(this.selectionService.focused)) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n if (this.isOpen && this.selectionService.focused === undefined) {\n if (this.dataService.itemsCount > 0) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n else if (this.allowCustom) {\n this.selectionService.focused = -1;\n }\n }\n if (this.valuePrimitive && !this.valueField) {\n this.selectedDataItems = value.slice();\n }\n if (isObjectArray(value) || this.valuePrimitive && this.valueField) {\n this.selectedDataItems = resolveAllValues(value, data, this.valueField);\n }\n if (this.selectedDataItems.length < value.length) {\n this.selectedDataItems = value\n .map(current => {\n const dataItem = this.selectedDataItems.find(item => getter(item, this.valueField) === getter(current, this.valueField));\n return isPresent(dataItem) ? dataItem : this.resolveDataItemFromTags(current);\n })\n .filter(dataItem => isPresent(dataItem));\n }\n this.tags = this.tagMapper(this.selectedDataItems.slice(0));\n this.disabledIndices = this.disabledItemsMapper();\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilter(text) {\n this.text = text;\n if (text && !this.isOpen) {\n this.openPopup();\n }\n if (this.filterable) {\n this.filterChange.emit(text);\n }\n else {\n this.searchTextAndFocus(text);\n }\n this.searchbar.setInputSize();\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n /**\n * @hidden\n */\n clearFilter() {\n if (this.filterable && this.text) {\n this.filterChange.emit(\"\");\n }\n this.text = \"\";\n /* Clearing the value from the input as the setInputSize calculation will be incorrect otherwise.\n Calling cdr.detectChanges to clear the input value as a result of property binding\n causes JAWS to read outdated tag values in IE upon tag selection for some reason. */\n this.searchbar.input.nativeElement.value = \"\";\n this.searchbar.setInputSize();\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const navigateInput = this.text && event.keyCode !== Keys.ArrowDown && event.keyCode !== Keys.ArrowUp;\n const selectValue = this.text && event.keyCode === Keys.Enter || event.keyCode === Keys.Escape;\n const deleteTag = !this.text && event.keyCode === Keys.Backspace && this.tags.length > 0;\n if (deleteTag) {\n this.handleBackspace();\n return;\n }\n if (this.disabled || navigateInput && !selectValue) {\n return;\n }\n const eventData = event;\n const focused = isNaN(this.selectionService.focused) ? -1 : this.selectionService.focused;\n const action = this.navigationService.process({\n current: focused,\n max: this.dataService.itemsCount - 1,\n min: this.allowCustom && this.text ? -1 : 0,\n open: this.isOpen,\n originalEvent: eventData\n });\n if (action !== NavigationAction.Undefined &&\n ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n }\n /**\n * @hidden\n */\n handleRemoveTag({ tag }) {\n const eventArgs = new RemoveTagEvent(tag);\n if (this.disabled || this.readonly) {\n return;\n }\n this.focus();\n this.removeTag.emit(eventArgs);\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n if (tag instanceof Array) {\n this.removeGroupTag(tag);\n }\n else {\n this.removeSingleTag(tag);\n }\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n clearAll(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n this.focus();\n this.clearFilter();\n const selected = this.selectionService.selected;\n this.value = this.value.filter((_item, index) => this.disabledItemsService.isIndexDisabled(selected[index]));\n this.emitValueChange();\n }\n /**\n * @hidden\n */\n addCustomValue(text) {\n this.customValueSubject.next(text);\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n ngDoCheck() {\n const valueChanges = this.differ && this.differ.diff(this.value);\n if (valueChanges && !this.valueChangeDetected) {\n this.setState(this.value);\n }\n this.valueChangeDetected = false;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, \"tabindex\");\n this.createCustomValueStream();\n this.localizationChangeSubscription = this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n });\n this.setState(this.value);\n this.setComponentClasses();\n this.initialized = true;\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({ skip: 0, take: virtual.pageSize });\n }\n if (isChanged('valueNormalizer', changes)) {\n this.createCustomValueStream();\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes)) {\n this.setState(this.value);\n }\n }\n ngAfterViewInit() {\n this.searchbar.setInputSize();\n }\n ngOnDestroy() {\n this._toggle(false);\n this.unsubscribeEvents();\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_multiselect %}#toc-setting-the-initially-opened-component)).\n * If you use the `toggle` method to open or close the popup, the respective `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required for opening the popup on load.\n // Otherwise, the \"Expression has changed...\" type error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n this.cdr.markForCheck();\n });\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return this._open;\n }\n /**\n * Resets the value of the MultiSelect.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.text = \"\";\n this.value = [];\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n // NG MODEL BINDINGS\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value || [];\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n onTagMapperChange() {\n this.tags = this.tagMapper(this.selectedDataItems.slice(0));\n this.cdr.markForCheck();\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n const isOpen = () => this.isOpen;\n const isClosed = () => !this.isOpen;\n const isTagFocused = () => !this.isOpen && this.focusedTagIndex !== undefined;\n [\n this.selectionService.onChange.subscribe(this.handleItemChange.bind(this)),\n this.navigationService.esc.subscribe(this.closePopup.bind(this)),\n this.navigationService.enter.pipe(filter(isOpen)).subscribe(this.handleEnter.bind(this)),\n this.navigationService.open.subscribe(this.openPopup.bind(this)),\n this.navigationService.close.subscribe(this.handleClose.bind(this)),\n this.navigationService.up.pipe(filter(isOpen)).subscribe((event) => this.handleUp(event.index)),\n this.navigationService.home.pipe(filter(() => isClosed)).subscribe(this.handleHome.bind(this)),\n this.navigationService.end.pipe(filter(() => isClosed)).subscribe(this.handleEnd.bind(this)),\n this.navigationService.backspace.pipe(filter(isTagFocused)).subscribe(this.handleBackspace.bind(this)),\n this.navigationService.delete.pipe(filter(isTagFocused)).subscribe(this.handleDelete.bind(this)),\n this.navigationService.left.subscribe(this.direction === 'rtl' ? this.handleRightKey.bind(this) : this.handleLeftKey.bind(this)),\n this.navigationService.right.subscribe(this.direction === 'rtl' ? this.handleLeftKey.bind(this) : this.handleRightKey.bind(this)),\n this.navigationService.down.subscribe((event) => this.handleDownKey(event.index))\n ].forEach(s => this.observableSubscriptions.add(s));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up MultiSelect on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if ((this.isFocused || this.isOpen) && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n this.blur();\n if (this.isOpen) {\n this.togglePopup(false);\n }\n });\n }\n }));\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.observableSubscriptions.unsubscribe();\n if (this.customValueSubscription) {\n this.customValueSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n removeGroupTag(dataItems) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const dataItemValues = new Set(dataItems.map(item => getter(item, this.valueField)));\n this.value = this.value.filter(value => {\n const index = selectedIndices([value], data, this.valueField)[0];\n const isDataItemDisabled = this.disabledItemsService.isIndexDisabled(index);\n return !dataItemValues.has(getter(value, this.valueField)) || isDataItemDisabled;\n });\n this.emitValueChange();\n }\n removeSingleTag(dataItem) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const index = selectedIndices([dataItem], data, this.valueField)[0];\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return;\n }\n if (isNumber(index)) {\n this.selectionService.unselect(index);\n this.selectionService.focused = index;\n this.togglePopup(false);\n }\n else { // the deleted item is not present in the source\n const filter = item => getter(item, this.valueField) !== getter(dataItem, this.valueField);\n this.value = this.value.filter(filter);\n this.emitValueChange();\n }\n }\n /**\n * @hidden\n *\n * Determines which of the provided tags should be disabled and stores their position indices\n */\n disabledItemsMapper() {\n const { selected } = this.selectionService;\n return new Set(this.selectedDataItems.reduce((indices, _item, index) => {\n if (this.disabledItemsService.isIndexDisabled(selected[index])) {\n indices.push(index);\n }\n return indices;\n }, []));\n }\n createCustomValueStream() {\n if (this.customValueSubscription) {\n this.customValueSubscription.unsubscribe();\n }\n this.customValueSubscription = this.customValueSubject.pipe(tap(() => {\n this.loading = true;\n this.disabled = true;\n this.cdr.detectChanges();\n }), this.valueNormalizer, catchError(() => {\n this.loading = false;\n this.disabled = false;\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n this.nextTick(() => {\n this.searchbar.focus();\n });\n this.createCustomValueStream();\n return of(null);\n }))\n .subscribe((normalizedValue) => {\n this.loading = false;\n this.disabled = false;\n if (isPresent(normalizedValue)) { // if valueNormalizer returns `null` or `undefined` custom value is discarded\n const newValue = this.valuePrimitive ? getter(normalizedValue, this.valueField) : normalizedValue;\n const itemIndex = this.dataService.indexOf(newValue);\n const customItem = itemIndex === -1;\n if (this.value.indexOf(newValue) === -1) {\n this.tags = this.tagMapper([...this.selectedDataItems, normalizedValue]);\n if (!customItem) {\n this.selectionService.add(itemIndex);\n }\n else {\n this.value = [...this.value, newValue];\n }\n }\n else {\n if (!customItem && this.selectionService.isSelected(itemIndex)) {\n this.selectionService.unselect(itemIndex);\n this.selectionService.focused = itemIndex;\n }\n else {\n this.value = this.value.filter(item => getter(item, this.valueField) !== newValue);\n }\n }\n this.emitValueChange();\n }\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n this.nextTick(() => {\n this.searchbar.focus();\n });\n });\n }\n handleItemChange(event) {\n this.change(event);\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n }\n handleEnter(event) {\n const service = this.selectionService;\n const focusedIndex = this.selectionService.focused;\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n if (focusedIndex === -1) {\n if (this.allowCustom && this.text) {\n this.addCustomValue(this.text);\n }\n return; // Clear filter & close are done at customValueSubscription due to race conditions.\n }\n if (service.isSelected(focusedIndex)) {\n service.unselect(focusedIndex);\n service.focused = focusedIndex;\n }\n else {\n service.add(focusedIndex);\n }\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n }\n handleClose() {\n this.closePopup();\n this.searchbar.focus();\n }\n handleEnd() {\n this.focusedTagIndex = this.tags.length - 1;\n }\n handleHome() {\n this.focusedTagIndex = 0;\n }\n handleUp(index) {\n this.selectionService.focused = index;\n }\n handleBackspace() {\n if (this.focusedTagIndex !== undefined) {\n this.handleDelete();\n }\n else {\n this.handleRemoveTag({ tag: this.tags[this.tags.length - 1] });\n this.searchbar.focus();\n }\n }\n handleDelete() {\n this.handleRemoveTag({ tag: this.tags[this.focusedTagIndex] });\n if (this.focusedTagIndex === this.tags.length) {\n this.focusedTagIndex = undefined;\n }\n }\n handleLeftKey() {\n if (this.focusedTagIndex === undefined || this.focusedTagIndex < 0) {\n this.focusedTagIndex = this.tags.length - 1;\n }\n else if (this.focusedTagIndex !== 0) {\n this.focusedTagIndex--;\n }\n }\n handleDownKey(index) {\n if (this.isOpen) {\n this.selectionService.focused = index || this.firstFocusableIndex(0);\n }\n else {\n this.openPopup();\n }\n }\n handleRightKey() {\n const last = this.tags.length - 1;\n if (this.focusedTagIndex === last) {\n this.focusedTagIndex = undefined;\n }\n else if (this.focusedTagIndex < last) {\n this.focusedTagIndex++;\n }\n }\n findIndex(text, startsFrom = 0) {\n let itemText;\n text = text.toLowerCase();\n let index = this.dataService.findIndex(item => {\n if (this.dataService.grouped) {\n itemText = getter(item.value, this.textField);\n }\n else {\n itemText = getter(item, this.textField);\n }\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return text && itemText.startsWith(text);\n }, startsFrom);\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return (index + 1 > this.dataService.itemsCount) ? -1 : this.findIndex(text, index + 1);\n }\n else {\n return index;\n }\n }\n searchTextAndFocus(text) {\n const index = this.findIndex(text);\n this.selectionService.focused = index;\n }\n closePopup() {\n this.togglePopup(false);\n this.focusedTagIndex = undefined;\n }\n openPopup() {\n this.togglePopup(true);\n this.focusedTagIndex = undefined;\n }\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this._open) {\n this.createPopup();\n }\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement\n .removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: anchorPosition,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute'\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => {\n this.togglePopup(false);\n });\n }\n emitValueChange() {\n this.onChangeCallback(this.value);\n this.valueChange.emit(this.value);\n }\n resolveDataItemFromTags(value) {\n if (!(this.tags && this.tags.length && isPresent(value))) {\n return undefined;\n }\n // Flattening the tags array in case of a summary tag occurrence.\n const tags = this.tags.reduce((acc, tag) => {\n const items = isArray(tag) ? tag : [tag];\n acc.push(...items);\n return acc;\n }, []);\n return tags.find(tag => getter(tag, this.valueField) === getter(value, this.valueField));\n }\n firstFocusableIndex(index) {\n const maxIndex = this.dataService.itemsCount;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n const nextIndex = index + 1;\n return (nextIndex < maxIndex) ? this.firstFocusableIndex(nextIndex) : undefined;\n }\n else {\n return index;\n }\n }\n nextTick(f) {\n this._zone.runOutsideAngular(() => {\n // Use `setTimeout` instead of a resolved promise\n // because the latter does not wait long enough.\n setTimeout(() => this._zone.run(f));\n });\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n}\nMultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: DataService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectComponent, selector: \"kendo-multiselect\", inputs: { focusableId: \"focusableId\", autoClose: \"autoClose\", loading: \"loading\", data: \"data\", value: \"value\", valueField: \"valueField\", textField: \"textField\", tabindex: \"tabindex\", tabIndex: \"tabIndex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", placeholder: \"placeholder\", disabled: \"disabled\", itemDisabled: \"itemDisabled\", checkboxes: \"checkboxes\", readonly: \"readonly\", filterable: \"filterable\", virtual: \"virtual\", popupSettings: \"popupSettings\", listHeight: \"listHeight\", valuePrimitive: \"valuePrimitive\", clearButton: \"clearButton\", tagMapper: \"tagMapper\", allowCustom: \"allowCustom\", valueNormalizer: \"valueNormalizer\" }, outputs: { filterChange: \"filterChange\", valueChange: \"valueChange\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", onFocus: \"focus\", onBlur: \"blur\", removeTag: \"removeTag\" }, host: { listeners: { \"mousedown\": \"hostMousedown($event)\" }, properties: { \"class.k-multiselect\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"attr.dir\": \"this.dir\", \"class.k-disabled\": \"this.disabledClass\", \"class.k-loading\": \"this.isLoading\", \"attr.role\": \"this.role\", \"attr.aria-expanded\": \"this.isAriaExpanded\" } }, providers: [\n MULTISELECT_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselect'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => MultiSelectComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent)\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: \"customItemTemplate\", first: true, predicate: CustomItemTemplateDirective, descendants: true }, { propertyName: \"groupTemplate\", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: \"fixedGroupTemplate\", first: true, predicate: FixedGroupTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"tagTemplate\", first: true, predicate: TagTemplateDirective, descendants: true }, { propertyName: \"groupTagTemplate\", first: true, predicate: GroupTagTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"searchbar\", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"optionsList\", first: true, predicate: [\"optionsList\"], descendants: true }], exportAs: [\"kendoMultiSelect\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ text }}\n \n
\n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `, isInline: true, components: [{ type: TagListComponent, selector: \"kendo-taglist\", inputs: [\"tags\", \"textField\", \"valueField\", \"valueDepth\", \"focused\", \"template\", \"groupTemplate\", \"disabled\", \"tagPrefix\", \"id\", \"size\", \"rounded\", \"fillMode\", \"disabledIndices\"], outputs: [\"removeTag\"] }, { type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: SelectableDirective, selector: \"[kendoDropDownsSelectable]\", inputs: [\"index\", \"checkboxes\", \"height\", \"multipleSelection\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoMultiSelect',\n providers: [\n MULTISELECT_VALUE_ACCESSOR,\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselect'\n },\n {\n provide: FilterableComponent, useExisting: forwardRef(() => MultiSelectComponent)\n },\n {\n provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent)\n }\n ],\n selector: 'kendo-multiselect',\n template: `\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ text }}\n \n
\n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n \n
\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: DataService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { focusableId: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], loading: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], valueField: [{\n type: Input\n }], textField: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [\"tabIndex\"]\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], disabled: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], checkboxes: [{\n type: Input\n }], readonly: [{\n type: Input\n }], filterable: [{\n type: Input\n }], virtual: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], tagMapper: [{\n type: Input\n }], allowCustom: [{\n type: Input\n }], valueNormalizer: [{\n type: Input\n }], filterChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], removeTag: [{\n type: Output\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], searchbar: [{\n type: ViewChild,\n args: [SearchBarComponent, { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], optionsList: [{\n type: ViewChild,\n args: ['optionsList', { static: false }]\n }], template: [{\n type: ContentChild,\n args: [ItemTemplateDirective, { static: false }]\n }], customItemTemplate: [{\n type: ContentChild,\n args: [CustomItemTemplateDirective, { static: false }]\n }], groupTemplate: [{\n type: ContentChild,\n args: [GroupTemplateDirective, { static: false }]\n }], fixedGroupTemplate: [{\n type: ContentChild,\n args: [FixedGroupTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], tagTemplate: [{\n type: ContentChild,\n args: [TagTemplateDirective, { static: false }]\n }], groupTagTemplate: [{\n type: ContentChild,\n args: [GroupTagTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-multiselect']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], hostMousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }] } });\n\n/**\n * Renders the column cell content of the MultiColumnComboBox. To define a column cell template, nest an `` tag\n * with the `kendoMultiColumnComboBoxColumnCellTemplate` directive inside the [``]({% slug api_dropdowns_comboboxcolumncomponent %}) tag\n * ([see example]({% slug templates_multicolumncombobox %})).\n *\n * The current [`column`]({% slug api_dropdowns_comboboxcolumncomponent %}) and data item are available as context variables:\n *\n * - `let-dataItem=\"dataItem\"` (`any`) - The current data item. Also available as implicit context variable.\n * - `let-column=\"column\"` ([`ColumnComponent`]({% slug api_dropdowns_comboboxcolumncomponent %})) - The current column configuration obejct.\n */\nclass ColumnCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nColumnCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nColumnCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnCellTemplateDirective, selector: \"[kendoMultiColumnComboBoxColumnCellTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnCellTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiColumnComboBoxColumnCellTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the column header content of the MultiColumnComboBox. To define a column header template, nest an `` tag\n * with the `kendoMultiColumnComboBoxColumnHeaderTemplate` directive inside the [``]({% slug api_dropdowns_comboboxcolumncomponent %}) tag\n * ([see example]({% slug templates_multicolumncombobox %})).\n *\n * The current [`column`]({% slug api_dropdowns_comboboxcolumncomponent %}) is available as implicit context variable.\n */\nclass ColumnHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nColumnHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnHeaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nColumnHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ColumnHeaderTemplateDirective, selector: \"[kendoMultiColumnComboBoxColumnHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ColumnHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiColumnComboBoxColumnHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Represents the column definition of the [MultiColumnComboBox]({% slug overview_multicolumncombobox %})\n * ([see example]({% slug columns_multicolumncombobox %})).\n */\nclass ComboBoxColumnComponent {\n constructor() {\n /**\n * Sets the visibility of the column.\n *\n * @default false\n */\n this.hidden = false;\n /**\n * @hidden\n */\n this.matchesMedia = true;\n }\n}\nComboBoxColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nComboBoxColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ComboBoxColumnComponent, selector: \"kendo-combobox-column\", inputs: { field: \"field\", title: \"title\", width: \"width\", hidden: \"hidden\", style: \"style\", headerStyle: \"headerStyle\", class: \"class\", headerClass: \"headerClass\", media: \"media\" }, queries: [{ propertyName: \"cellTemplate\", first: true, predicate: ColumnCellTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: ColumnHeaderTemplateDirective, descendants: true }], ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-combobox-column',\n template: ''\n }]\n }], propDecorators: { cellTemplate: [{\n type: ContentChild,\n args: [ColumnCellTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [ColumnHeaderTemplateDirective, { static: false }]\n }], field: [{\n type: Input\n }], title: [{\n type: Input\n }], width: [{\n type: Input\n }], hidden: [{\n type: Input\n }], style: [{\n type: Input\n }], headerStyle: [{\n type: Input\n }], class: [{\n type: Input\n }], headerClass: [{\n type: Input\n }], media: [{\n type: Input\n }] } });\n\n/**\n * Persists the intially resolved scrollbar width value.\n */\nlet SCROLLBAR_WIDTH;\n/**\n * @hidden\n *\n * Gets the default scrollbar width accoring to the current environment.\n */\nconst scrollbarWidth = () => {\n // calculate scrollbar width only once, then return the memoized value\n if (isNaN(SCROLLBAR_WIDTH)) {\n const div = document.createElement('div');\n div.style.cssText = 'overflow: scroll; overflow-x: hidden; zoom: 1; clear: both; display: block;';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n SCROLLBAR_WIDTH = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return SCROLLBAR_WIDTH;\n};\n/**\n * Checks if all columns have a valid user-defined width.\n */\nconst allColumnsWidthsSet = (columns) => {\n if (!isPresent(columns) || columns.length === 0) {\n return false;\n }\n return columns.toArray().every(column => !isNaN(column.width) && column.width > 0);\n};\n/**\n * @hidden\n *\n * Calculates the row width according to the passed columns width configuration.\n * Hidden columns and such that don't match the provided media query are ignored.\n * If some of the columns don't have a preset width or have an invalid width value, the function returns `null`.\n */\nconst getRowWidthFromColumnsMeta = (columns) => {\n if (!allColumnsWidthsSet(columns)) {\n return null;\n }\n const bordersWidth = 2;\n const initialRowWidht = scrollbarWidth() + bordersWidth;\n return columns.reduce((totalWidth, column) => {\n if (!column.hidden && column.matchesMedia) {\n totalWidth += parseInt(column.width, 10);\n }\n return totalWidth;\n }, initialRowWidht);\n};\n\n/**\n * Represents the [Kendo UI MultiColumnComboBox component for Angular]({% slug overview_multicolumncombobox %}).\n */\nclass MultiColumnComboBoxComponent extends ComboBoxComponent {\n constructor(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, wrapper, touchEnabled) {\n super(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, touchEnabled);\n /**\n * @hidden\n */\n this.hostClasses = true;\n this.removeWindowResizeListener = noop;\n // the row height in @progress/kendo-theme-default\n this.defaultVirtualItemHeight = 36;\n // use a smaller virtual page size as columns with multiple cells can cause poor performance\n this.defaultVirtualPageSize = 30;\n }\n /**\n * @hidden\n */\n get isDisabled() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n set header(header) {\n // updates the header padding on initial render as the resize senzor doesn't kick in as early\n this.updateHeaderPadding(header && header.nativeElement);\n }\n get popupWidth() {\n const wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n const min = `${wrapperOffsetWidth}px`;\n const width = this.popupSettings.width || getRowWidthFromColumnsMeta(this.columns) || wrapperOffsetWidth;\n const max = isNaN(width) ? width : `${width}px`;\n return { min, max };\n }\n /**\n * @hidden\n */\n get tableSizeClass() {\n return `${this.size ? getSizeClass('table', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n get listContainerClasses() {\n return [\n 'k-popup',\n 'k-dropdowngrid-popup'\n ].concat(this.popupSettings.popupClass || []);\n }\n ngAfterViewInit() {\n this.updateColumnsMediaState();\n this.addWindowResizeListener();\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.removeWindowResizeListener();\n }\n /**\n * @hidden\n */\n textFrom(dataItem, field) {\n return getter(dataItem, field);\n }\n /**\n * @hidden\n *\n * Adds or removes a padding value at the end of the header container equal to the size of the scrollbar.\n * As when the items container has a scrollbar, the column headers and the cells are misaligned.\n * When the container has a scrollbar, the padding style is added, and when there is none - it is removed.\n */\n updateHeaderPadding(header) {\n if (!isPresent(header)) {\n return;\n }\n // the scrollbar is rendered on the left in rtl\n const headerPaddingPosition = this.localization.rtl ? 'padding-left' : 'padding-right';\n if (this.optionsList.hasScrollbar() && scrollbarWidth() > 0) {\n this.renderer.setStyle(header, headerPaddingPosition, `${scrollbarWidth()}px`);\n }\n else {\n this.renderer.removeStyle(header, headerPaddingPosition);\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(this.data) && this.data.length > 0 && this.data.some(item => !isObject(item))) {\n throw new Error(MultiColumnComboBoxMessages.data);\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(MultiColumnComboBoxMessages.textAndValue);\n }\n super.verifySettings();\n }\n addWindowResizeListener() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.zone.runOutsideAngular(() => this.removeWindowResizeListener = this.renderer.listen(window, 'resize', this.updateColumnsMediaState.bind(this)));\n }\n updateColumnsMediaState() {\n if (!(isPresent(this.columns) && isDocumentAvailable())) {\n return;\n }\n this.columns.forEach(column => {\n const matchesMedia = !column.media || window.matchMedia(column.media).matches;\n if (column.matchesMedia !== matchesMedia) {\n column.matchesMedia = matchesMedia;\n if (this.isOpen) {\n // enter the zone only if the popup is actually open\n // update its width in case it's dependent on the columns' width\n this.zone.run(() => this.popupRef.popupElement.style.width = this.popupWidth.max);\n }\n }\n });\n }\n}\nMultiColumnComboBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiColumnComboBoxComponent, deps: [{ token: i1.LocalizationService }, { token: i2.PopupService }, { token: SelectionService }, { token: NavigationService }, { token: DisabledItemsService }, { token: DataService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: TOUCH_ENABLED }], target: i0.ɵɵFactoryTarget.Component });\nMultiColumnComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiColumnComboBoxComponent, selector: \"kendo-multicolumncombobox\", host: { properties: { \"class.k-dropdowngrid\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\" } }, providers: [\n SelectionService,\n DataService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multicolumncombobox'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n }\n ], queries: [{ propertyName: \"columns\", predicate: ComboBoxColumnComponent }], viewQueries: [{ propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n \n
\n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n
\n\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n {{ column.title || column.field }}\n \n \n \n \n \n \n \n
\n
\n
\n\n \n \n \n \n \n {{ textFrom(dataItem, column.field) }}\n \n \n \n \n
\n
\n\n \n \n \n\n \n \n \n
\n \n
{{ messageFor('noDataText') }}
\n
\n \n\n \n \n
\n \n \n \n \n \n \n
\n \n \n
\n
\n
\n\n \n\n \n\n \n \n\n \n \n `, isInline: true, components: [{ type: SearchBarComponent, selector: \"kendo-searchbar\", inputs: [\"id\", \"listId\", \"tagListId\", \"activeDescendant\", \"noDataLabel\", \"disabled\", \"readonly\", \"tabIndex\", \"popupOpen\", \"role\", \"userInput\", \"suggestedText\", \"placeholder\"], outputs: [\"valueChange\", \"onBlur\", \"onFocus\", \"onClick\", \"onNavigate\"] }, { type: ListComponent, selector: \"kendo-list\", inputs: [\"selected\", \"focused\", \"textField\", \"valueField\", \"height\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"show\", \"id\", \"optionPrefix\", \"multipleSelection\", \"virtual\", \"type\", \"checkboxes\", \"data\", \"size\", \"rounded\"], outputs: [\"onClick\", \"pageChange\", \"listResize\"] }, { type: i9.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i11.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiColumnComboBoxComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n SelectionService,\n DataService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multicolumncombobox'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n },\n {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n }\n ],\n selector: 'kendo-multicolumncombobox',\n template: `\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n
\n\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n {{ column.title || column.field }}\n \n \n \n \n \n \n \n
\n
\n
\n\n \n \n \n \n \n {{ textFrom(dataItem, column.field) }}\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n
{{ messageFor('noDataText') }}
\n
\n \n\n \n \n
\n \n \n \n \n \n \n
\n \n \n
\n
\n
\n\n \n\n \n\n \n \n\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i2.PopupService }, { type: SelectionService }, { type: NavigationService }, { type: DisabledItemsService }, { type: DataService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdowngrid']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], columns: [{\n type: ContentChildren,\n args: [ComboBoxColumnComponent]\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }] } });\n\n/**\n * Renders the content of each node in the DropDownTree. To define a node template, nest an `` tag\n * with the `kendoDropDownTreeNodeTemplate` directive inside the `` tag.\n *\n * The current data item and hierarchical index are available as context variables:\n *\n * - `let-dataItem` (`any`) - The current data item. Available as implicit context variable.\n * - `let-index=\"index\"` (`string`) - The current item hierarchical index.\n */\nclass NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNodeTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNodeTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NodeTemplateDirective, selector: \"[kendoDropDownTreeNodeTemplate], [kendoMultiSelectTreeNodeTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NodeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeNodeTemplate], [kendoMultiSelectTreeNodeTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nconst DEFAULT_POPUP_SETTINGS$1 = { animate: true };\nconst hasChildren$1 = () => false;\nconst fetchChildren$1 = () => of([]);\nconst itemDisabled$1 = () => false;\nconst isNodeVisible$1 = () => true;\nconst DEFAULT_SIZE$1 = 'medium';\nconst DEFAULT_ROUNDED$1 = 'medium';\nconst DEFAULT_FILL_MODE$1 = 'solid';\n/**\n * Represents the [Kendo UI DropDownTree component for Angular]({% slug overview_ddt %}).\n */\nclass DropDownTreeComponent {\n constructor(wrapper, popupService, navigationService, renderer, _zone, cdr, localization, touchEnabled) {\n this.wrapper = wrapper;\n this.popupService = popupService;\n this.navigationService = navigationService;\n this.renderer = renderer;\n this._zone = _zone;\n this.cdr = cdr;\n this.localization = localization;\n this.touchEnabled = touchEnabled;\n this.hostClasses = true;\n this.role = 'listbox';\n this.ariaHasPopup = 'tree';\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_ddt %})).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_ddt %})).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires when the user expands a node in the popup TreeView.\n */\n this.nodeExpand = new EventEmitter();\n /**\n * Fires when the user collapses a node in the popup TreeView.\n */\n this.nodeCollapse = new EventEmitter();\n /**\n * Fires each time the user focuses the DropDownTree.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownTree gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the value is changed\n * ([see example]({% slug overview_ddt %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * A function which determines if a specific node has child nodes.\n */\n this.hasChildren = hasChildren$1;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren$1;\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_ddt %}#toc-primitive-values)).\n * If set to `true`, the selected value has to be of a primitive value.\n */\n this.valuePrimitive = false;\n /**\n * A function that is executed for each data item and determines if a specific item is disabled.\n */\n this.itemDisabled = itemDisabled$1;\n /**\n * A callback which determines whether a tree node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isNodeVisible = isNodeVisible$1;\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default true\n */\n this.loadOnDemand = true;\n /**\n * Renders the built-in input element for filtering the DropDownTree.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the DropDownTree manually]({% slug filtering_ddt %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoDropDownTreeHierarchyBinding`]({% slug api_dropdowns_dropdowntreehierarchybindingdirective %}) and [`kendoDropDownTreeFlatBinding`]({% slug api_dropdowns_dropdowntreeflatbindingdirective %}) directives.\n */\n this.filterable = false;\n /**\n * @hidden\n */\n this.filter = '';\n /**\n * @hidden\n *\n * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * @hidden\n */\n this.selectedKeys = [];\n /**\n * @hidden\n */\n this.filterStateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.allNodesHidden = false;\n /**\n * @hidden\n *\n * Used to associate the value label with the wrapper via aria-describedby.\n */\n this.valueLabelId = `k-${guid$1()}`;\n this._popupSettings = DEFAULT_POPUP_SETTINGS$1;\n this._tabindex = 0;\n this._isFocused = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.subscriptions = [];\n this.onTouchedCallback = noop;\n this.onChangeCallback = noop;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.subscribeFocusEvents();\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get id() {\n return this.focusableId;\n }\n get hostTabIndex() {\n return this.tabindex;\n }\n get isAriaExpanded() {\n return this.isOpen;\n }\n get isReadonly() {\n return this.readonly;\n }\n /**\n * @hidden\n */\n handleClick() {\n this.togglePopup(!this.isOpen);\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n if (this.disabled || this.readonly) {\n return;\n }\n const eventData = event;\n this.navigationService.process({\n originalEvent: eventData\n });\n }\n set treeview(treeview) {\n if (treeview) {\n if (this.isFocused && !this.filterable || this.touchEnabled) {\n treeview.focus();\n }\n // the treeview animations are initially disabled (we don't want expand animations during popup opening)\n // re-enables the animations for user interaction\n treeview.animate = true;\n this._treeview = treeview;\n }\n }\n get treeview() {\n return this._treeview;\n }\n /**\n * Sets the data of the DropDownTree.\n *\n * > The data has to be provided in an array-like list with objects.\n */\n set data(data) {\n this._nodes = data;\n this.setState();\n }\n get data() {\n return this._nodes;\n }\n /**\n * Sets the value of the DropDownTree.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n */\n set value(newValue) {\n this._value = newValue;\n this.setState();\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the DropDownTree.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS$1, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Keeps the current `dataItem` object in order to resolve selection.\n * Needs to be provided when `value` is bound in and `valuePrimitive` is set to true.\n */\n set dataItem(item) {\n this._dataItem = item;\n this.setState();\n }\n get dataItem() {\n return this._dataItem ? this._dataItem : this.value;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const providedTabIndex = Number(value);\n const defaultTabIndex = 0;\n this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n get width() {\n const wrapperWidth = this.wrapper.nativeElement.offsetWidth;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n /**\n * @hidden\n *\n * Alias for `isNodeExpanded`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n set isExpanded(callback) {\n this.isNodeExpanded = callback;\n }\n get isExpanded() {\n return this.isNodeExpanded;\n }\n /**\n * @hidden\n *\n * Alias for `nodeExpand`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get expand() {\n return this.nodeExpand;\n }\n /**\n * @hidden\n *\n * Alias for `nodeCollapse`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get collapse() {\n return this.nodeCollapse;\n }\n /**\n * @hidden\n *\n * Alias for `data`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives.\n */\n set nodes(nodes) {\n this.data = nodes;\n }\n get nodes() {\n return this.data;\n }\n /**\n * @hidden\n *\n * Alias for `fetchChildren`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives\n */\n set children(callback) {\n this.fetchChildren = callback;\n }\n get children() {\n return this.fetchChildren;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeVisible`. Used for compatibility with the `DataBoundComponent` interface.\n * The `DataBoundComponent` interface is used in the data-binding directives.\n */\n set isVisible(callback) {\n this.isNodeVisible = callback;\n }\n get isVisible() {\n return this.isNodeVisible;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.assignAriaDescribedBy();\n this.subscriptions.push(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n }));\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * @hidden\n *\n * Used by the kendo-floatinglabel component to determine if the floating label\n * should be rendered inside the input when the component is not focused.\n */\n isEmpty() {\n return !this.text && !this.placeholder;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const togglePrevented = this.triggerPopupEvents(open);\n if (!togglePrevented) {\n if (open) {\n this.createPopup();\n }\n else {\n this.destroyPopup();\n }\n }\n }\n /**\n * @hidden\n */\n handleFocus(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur(e) {\n const relatedTarget = e && e.relatedTarget;\n if (this.wrapper.nativeElement.contains(relatedTarget) ||\n (this.isOpen && this.popupRef.popupElement.contains(relatedTarget))) {\n return;\n }\n this.isFocused = false;\n if (hasObservers(this.onBlur) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n this.togglePopup(false);\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n else {\n this.togglePopup(false);\n }\n }\n /**\n * Focuses a specific item of the DropDownTree based on a provided index in the format of `1_1`.\n * The targeted item should be expanded in order for it to be focused.\n * If null or invalid index is provided the focus will be set on the first item.\n */\n focusItemAt(index) {\n if (this.treeview) {\n const lookup = this.treeview.itemLookup(index);\n let isItemDisabled = !isPresent(lookup) || this.treeview.isDisabled(lookup.item.dataItem, lookup.item.index);\n if (!isItemDisabled) {\n this.treeview.focus(index);\n }\n }\n }\n /**\n * Focuses the DropDownTree.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownTree.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Resets the value of the DropDownTree.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `valueChange` event will not be fired.\n */\n reset() {\n this.value = undefined;\n this.dataItem = undefined;\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_ddt %})).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"ViewContainerRef not found...\" error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !isPresent(this.popupRef);\n this.destroyPopup();\n if (shouldOpen) {\n this.createPopup();\n }\n });\n }\n /**\n * @hidden\n */\n get popupContainerClasses() {\n const containerClasses = ['k-popup-dropdowntree'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n onSelectionChange({ dataItem, index }) {\n this.valueDepth = index.split('_').length - 1;\n const valueField = this.getField(this.valueField, dataItem);\n const newValue = this.valuePrimitive ?\n getter$1(valueField)(dataItem) :\n dataItem;\n const shouldUpdateValue = newValue !== this.value;\n if (shouldUpdateValue) {\n this.value = newValue;\n this.dataItem = dataItem;\n this.emitValueChange(this.value);\n }\n this.togglePopup(false);\n this.focus();\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this.value = undefined;\n this.dataItem = undefined;\n this.clearState();\n this.valueChange.emit(undefined);\n this.emitValueChange();\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n preventEventDefault(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n // If the user resets the value by providing null/undefined we need to reset the `dataItem`\n // Because upon initialization of the component the `writeValue` is being called twice -\n // first time with `null` value regardless of sync/async value - an extra check is added to\n // distinguish between client reset and initial phanotm 'null' value\n if (!isPresent(value) && isPresent(this.value)) {\n this.dataItem = null;\n }\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilterInputChange(input) {\n this.filterChange.next(input.value);\n this.allNodesHidden = this.nodes.every((node, index) => !this.isVisible(node, String(index)));\n }\n /**\n * @hidden\n */\n get buttonClasses() {\n return this.loading ? 'k-i-loading k-input-loading-icon' : 'k-i-arrow-s';\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}`;\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(DropDownTreeMessages.primitive);\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.dataItem !== \"object\") {\n throw new Error(DropDownTreeMessages.dataItem);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(DropDownTreeMessages.object);\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(DropDownTreeMessages.textAndValue);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && isPresent(this.value) && !isPresent(this.valueDepth)) {\n throw new Error(DropDownTreeMessages.valueDepth);\n }\n }\n emitValueChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n getText(textField, dataItem) {\n if (isPresent(dataItem) && isPresent(textField)) {\n const field = this.getField(textField, dataItem);\n return getter$1(field)(dataItem);\n }\n return null;\n }\n /**\n * @hidden\n *\n * Determines the `valueField` and `textField` for a specific level in the data set\n * @param field - the field value (string | string[])\n * @param value - current value\n */\n getField(field, value) {\n const fieldsCount = field.length - 1;\n if (typeof field === 'string') {\n // If the `valueField` | `textField` is the same for all levels\n return field;\n }\n else if (isPresent(this.valueDepth)) {\n // When `valueDepth` can be defined from the index on selectionChange or provided by the user\n return fieldsCount < this.valueDepth ? field[fieldsCount] : field[this.valueDepth];\n }\n else {\n // Fallback: Look to find a match of each field in the current data item\n // Side effect may occur if all of the listed fields are present in the data item\n return field.find(item => item in value);\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n createPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: 'bottom' };\n const popupPosition = { horizontal: horizontalAlign, vertical: 'top' };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n appendTo: this.appendTo,\n anchorAlign: anchorPosition,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n positionMode: 'absolute',\n popupClass: this.popupContainerClasses\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n if (this.filter !== \"\") {\n this.filter = \"\";\n this.allNodesHidden = false;\n if (hasObservers(this.filterChange)) {\n this._zone.run(() => {\n this.filterChange.emit(\"\");\n });\n }\n }\n }\n }\n handleEscape() {\n this.togglePopup(false);\n this.focus();\n }\n setState() {\n if (isPresent(this.value) && isPresent(this.dataItem) && isPresent(this.valueField)) {\n this.text = this.getText(this.textField, this.dataItem);\n const valueField = this.getField(this.valueField, this.dataItem);\n this.selectBy = valueField;\n this.selectedKeys = [getter$1(valueField)(this.dataItem)];\n }\n else {\n this.clearState();\n }\n this.cdr.markForCheck();\n }\n clearState() {\n this.text = undefined;\n this.selectedKeys = [];\n }\n subscribeEvents() {\n this.subscriptions.push(this.navigationService.open.subscribe(() => this.togglePopup(true)), this.navigationService.close.subscribe(() => {\n this.togglePopup(false);\n this.focus();\n }), this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(() => this.togglePopup(true)), this.navigationService.esc\n .subscribe(() => this.handleEscape()), this.navigationService.tab.subscribe(() => this.focus()), this.navigationService.down.subscribe((event) => {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n if (!this.treeview.isActive) {\n this.treeview.focus();\n }\n }), this.navigationService.up.subscribe((event) => {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n if (this.filterable && this.treeview['navigationService']['activeIndex'] === '0') {\n this.filterInput.nativeElement.focus();\n }\n }));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() => \n // Roll up DropDownTree on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', (e) => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n if (this.isOpen) {\n this.treeview.blur();\n }\n this.blur();\n });\n }\n }));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.handleFocus = this.handleFocus.bind(this);\n this.handleDocumentBlur = this.handleDocumentBlur.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.handleFocus, useCapture);\n document.addEventListener('blur', this.handleDocumentBlur, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.handleFocus, useCapture);\n document.removeEventListener('blur', this.handleDocumentBlur, useCapture);\n }\n }\n unsubscribeEvents() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.unSubscribeFocusEvents();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n handleDocumentBlur(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.handleBlur(event);\n }\n assignAriaDescribedBy() {\n const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';\n // add to the current value - don't replace it (the aria-describedby is used by the FormField component as well)\n const newValue = `${this.valueLabelId} ${currentValue.trim()}`.trim();\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n }\n }\n}\nDropDownTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeComponent, deps: [{ token: i0.ElementRef }, { token: i2.PopupService }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nDropDownTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreeComponent, selector: \"kendo-dropdowntree\", inputs: { loading: \"loading\", clearButton: \"clearButton\", data: \"data\", value: \"value\", textField: \"textField\", valueField: \"valueField\", valueDepth: \"valueDepth\", hasChildren: \"hasChildren\", fetchChildren: \"fetchChildren\", placeholder: \"placeholder\", popupSettings: \"popupSettings\", dataItem: \"dataItem\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", valuePrimitive: \"valuePrimitive\", tabindex: \"tabindex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", itemDisabled: \"itemDisabled\", isNodeExpanded: \"isNodeExpanded\", isNodeVisible: \"isNodeVisible\", loadOnDemand: \"loadOnDemand\", filterable: \"filterable\", filter: \"filter\", focusableId: \"focusableId\" }, outputs: { open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", nodeExpand: \"nodeExpand\", nodeCollapse: \"nodeCollapse\", onFocus: \"focus\", onBlur: \"blur\", valueChange: \"valueChange\", filterChange: \"filterChange\" }, host: { listeners: { \"click\": \"handleClick()\", \"keydown\": \"handleKeydown($event)\" }, properties: { \"class.k-dropdowntree\": \"this.hostClasses\", \"class.k-picker\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\", \"attr.aria-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.id\": \"this.id\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.hostTabIndex\", \"attr.role\": \"this.role\", \"attr.aria-haspopup\": \"this.ariaHasPopup\", \"attr.aria-expanded\": \"this.isAriaExpanded\", \"attr.readonly\": \"this.isReadonly\", \"attr.aria-readonly\": \"this.isReadonly\" } }, providers: [\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdowntree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n }\n ], queries: [{ propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"nodeTemplate\", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: \"valueTemplate\", first: true, predicate: ValueTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"treeview\", first: true, predicate: [\"treeview\"], descendants: true }, { propertyName: \"filterInput\", first: true, predicate: [\"filterInput\"], descendants: true }], exportAs: [\"kendoDropDownTree\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ text || placeholder }} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n `, isInline: true, components: [{ type: i1$1.TreeViewComponent, selector: \"kendo-treeview\", inputs: [\"filterInputPlaceholder\", \"animate\", \"nodeTemplate\", \"loadMoreButtonTemplate\", \"trackBy\", \"nodes\", \"textField\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"navigable\", \"children\", \"loadOnDemand\", \"filterable\", \"filter\", \"size\"], outputs: [\"childrenLoaded\", \"blur\", \"focus\", \"expand\", \"collapse\", \"nodeDragStart\", \"nodeDrag\", \"filterStateChange\", \"nodeDrop\", \"nodeDragEnd\", \"addItem\", \"removeItem\", \"checkedChange\", \"selectionChange\", \"filterChange\", \"nodeClick\", \"nodeDblClick\"], exportAs: [\"kendoTreeView\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FilterInputDirective, selector: \"[filterInput]\", inputs: [\"filterInput\"] }, { type: i8.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i8.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: i1$1.SelectDirective, selector: \"[kendoTreeViewSelectable]\", inputs: [\"isSelected\", \"selectBy\", \"kendoTreeViewSelectable\", \"selectedKeys\"], outputs: [\"selectedKeysChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoDropDownTree',\n providers: [\n DataService,\n SelectionService,\n NavigationService,\n DisabledItemsService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdowntree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n }\n ],\n selector: 'kendo-dropdowntree',\n template: `\n \n \n \n \n \n \n {{ text || placeholder }} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.PopupService }, { type: NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdowntree']\n }, {\n type: HostBinding,\n args: ['class.k-picker']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], id: [{\n type: HostBinding,\n args: ['attr.id']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], ariaHasPopup: [{\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], isReadonly: [{\n type: HostBinding,\n args: ['attr.readonly']\n }, {\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], handleClick: [{\n type: HostListener,\n args: ['click']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], nodeTemplate: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], valueTemplate: [{\n type: ContentChild,\n args: [ValueTemplateDirective, { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], treeview: [{\n type: ViewChild,\n args: ['treeview', { static: false }]\n }], filterInput: [{\n type: ViewChild,\n args: ['filterInput', { static: false }]\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], nodeExpand: [{\n type: Output\n }], nodeCollapse: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], valueChange: [{\n type: Output\n }], filterChange: [{\n type: Output\n }], loading: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valueDepth: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], fetchChildren: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], dataItem: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], isNodeExpanded: [{\n type: Input\n }], isNodeVisible: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], filterable: [{\n type: Input\n }], filter: [{\n type: Input\n }], focusableId: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nclass BaseCheckDirective {\n addItem(item) {\n if (this.isItemChecked(item)) {\n return;\n }\n const level = getHierarchicalItemLevel(item.index);\n const candidate = Object.assign(Object.assign({}, item), { level });\n this.checkedItems.push(candidate);\n this.checkedKeys.add(this.getKey(candidate));\n }\n removeItem(item) {\n if (!this.isItemChecked(item)) {\n return;\n }\n const level = getHierarchicalItemLevel(item.index);\n const candidate = Object.assign(Object.assign({}, item), { level });\n this.checkedItems = this.checkedItems\n .filter(item => valueFrom(item, this.valueField) !== valueFrom(candidate, this.valueField));\n this.checkedKeys.delete(this.getKey(candidate));\n }\n isItemChecked(item) {\n const level = item.index.split('_').length - 1;\n item.level = level;\n return this.checkedKeys.has(this.getKey(item));\n }\n updateItems() {\n this.checkedItems = this.checkedItems || [];\n this.checkedKeys = new Set(this.checkedItems.map(item => this.getKey(item)));\n }\n /**\n * Adds the item's depth to the item's value to allow duplicate values on different levels.\n *\n * @param item - The checked key.\n * @returns { string } - A string key consisting of the item's `valueField` value and its depth.\n */\n getKey(item) {\n if (isArray(this.valueField)) {\n return valueFrom(item, this.valueField) + '_' + item.level;\n }\n return valueFrom(item, this.valueField);\n }\n}\nBaseCheckDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseCheckDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nBaseCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BaseCheckDirective, inputs: { valueField: \"valueField\", checkedItems: \"checkedItems\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BaseCheckDirective, decorators: [{\n type: Directive\n }], propDecorators: { valueField: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nclass CheckAllDirective extends BaseCheckDirective {\n constructor(element, zone, cdr, renderer) {\n super();\n this.element = element;\n this.zone = zone;\n this.cdr = cdr;\n this.renderer = renderer;\n /**\n * Fires when the `checkedItems` collection was updated.\n */\n this.checkedItemsChange = new EventEmitter();\n /**\n * Holds a Set with just the checked item keys.\n *\n * Should be updated each time the `checkedItems` value or content is changed.\n * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).\n */\n this.checkedKeys = new Set();\n }\n handleChange(event) {\n // Need to store the current checkbox state at the moment of click\n this.currentCheckedState = event.checked;\n this.currentIndeterminateState = this.isIndeterminate;\n this.treeview.nodes.map((_value, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n this.checkNode(itemLookup);\n });\n this.checkedItemsChange.emit(this.checkedItems.slice());\n }\n get isIndeterminate() {\n const isIndeterminate = this.treeview.nodes.some((_node, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n return this.someChecked(itemLookup);\n });\n return this.isChecked ? false : isIndeterminate;\n }\n get isChecked() {\n const isChecked = this.treeview.nodes.every((_node, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n return this.allChecked(itemLookup);\n });\n return isChecked;\n }\n ngOnChanges(changes) {\n if (isPresent(changes.checkedItems)) {\n this.updateItems();\n this.renderer.setProperty(this.element.nativeElement, 'checked', this.isChecked);\n this.renderer.setProperty(this.element.nativeElement, 'indeterminate', this.isIndeterminate);\n }\n }\n ngOnInit() {\n if (this.focused) {\n this.nextTick(() => this.element.nativeElement.focus());\n }\n }\n nextTick(fn) {\n this.zone.runOutsideAngular(() => setTimeout(fn));\n }\n checkNode(itemLookup) {\n if (this.treeview.isDisabled(itemLookup.item.dataItem, itemLookup.item.index)) {\n return;\n }\n const pendingCheck = [];\n const filter = (item) => this.treeview.isVisible(item.dataItem, item.index) &&\n !this.treeview.isDisabled(item.dataItem, item.index);\n pendingCheck.push(itemLookup.item);\n fetchDescendentNodes(itemLookup, filter)\n .forEach(lookup => pendingCheck.push(lookup.item));\n pendingCheck.forEach(item => {\n if (this.currentIndeterminateState) {\n if (this.lastAction === 'check') {\n this.addItem(item);\n }\n else {\n this.removeItem(item);\n }\n return;\n }\n if (this.currentCheckedState) {\n this.addItem(item);\n }\n else {\n this.removeItem(item);\n }\n });\n }\n allChecked(lookup) {\n const children = lookup && lookup.children;\n if (!Array.isArray(children)) {\n return;\n }\n const childrenChecked = children.every(child => {\n if (child.children.length) {\n return this.isItemChecked(child.item) && this.allChecked(child);\n }\n return this.isItemChecked(child.item);\n });\n return childrenChecked && this.isItemChecked(lookup.item);\n }\n someChecked(lookup) {\n const children = lookup && lookup.children;\n if (!Array.isArray(children)) {\n return;\n }\n const childrenChecked = children.some(child => {\n if (child.children.length) {\n return this.isItemChecked(child.item) || this.someChecked(child);\n }\n return this.isItemChecked(child.item);\n });\n return childrenChecked || this.isItemChecked(lookup.item);\n }\n}\nCheckAllDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckAllDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nCheckAllDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckAllDirective, selector: \"[checkAll]\", inputs: { lastAction: \"lastAction\", treeview: \"treeview\", checkedItems: \"checkedItems\", valueField: \"valueField\", focused: [\"checkAll\", \"focused\"] }, outputs: { checkedItemsChange: \"checkedItemsChange\" }, host: { listeners: { \"change\": \"handleChange($event.target)\" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckAllDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line\n selector: '[checkAll]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { lastAction: [{\n type: Input\n }], treeview: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }], valueField: [{\n type: Input\n }], focused: [{\n type: Input,\n args: ['checkAll']\n }], checkedItemsChange: [{\n type: Output\n }], handleChange: [{\n type: HostListener,\n args: ['change', ['$event.target']]\n }] } });\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nclass CheckDirective extends BaseCheckDirective {\n constructor(treeView) {\n super();\n this.treeView = treeView;\n /**\n * Fires when the `checkedItems` collection was updated.\n */\n this.checkedItemsChange = new EventEmitter();\n /**\n * Holds a Set with just the checked item keys.\n *\n * Should be updated each time the `checkedItems` value or content is changed.\n * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).\n */\n this.checkedKeys = new Set();\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.treeView.checkedChange\n .subscribe(this.handleCheckedChange.bind(this)));\n this.treeView.isChecked = this.getCheckedState.bind(this);\n }\n ngOnChanges(changes) {\n if (isPresent(changes.checkable)) {\n this.toggleCheckOnClick();\n }\n if (isPresent(changes.checkedItems)) {\n this.updateItems();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribeClick();\n }\n getCheckedState(dataItem, index) {\n if (this.isItemChecked({ dataItem, index })) {\n return 'checked';\n }\n else if (this.checkable.checkChildren && this.isItemIndeterminate(this.treeView.itemLookup(index))) {\n return 'indeterminate';\n }\n else {\n return 'none';\n }\n }\n handleCheckedChange(node) {\n this.checkNode(node);\n // parents should be checked if `checkChildren` is set to `true` (single config option for both)\n const checkParents = this.checkable.checkChildren;\n if (checkParents) {\n this.checkParents(node.parent);\n }\n this.checkedItemsChange.emit(this.checkedItems.slice());\n }\n toggleCheckOnClick() {\n this.unsubscribeClick();\n if (this.checkable.checkOnClick) {\n this.clickSubscription = this.treeView.nodeClick\n .pipe(filter(event => event.type === 'click'))\n .subscribe(event => {\n const lookup = this.treeView.itemLookup(event.item.index);\n this.handleCheckedChange(lookup);\n });\n }\n }\n unsubscribeClick() {\n if (this.clickSubscription) {\n this.clickSubscription.unsubscribe();\n this.clickSubscription = null;\n }\n }\n checkNode(lookup) {\n if (this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index)) {\n return;\n }\n const target = lookup.item;\n const pendingCheck = [target];\n // TODO: extract in a separate `checkChildren` method?\n if (this.checkable.checkChildren) {\n const filter = (item) => this.treeView.isVisible(item.dataItem, item.index) &&\n !this.treeView.isDisabled(item.dataItem, item.index);\n fetchDescendentNodes(lookup, filter)\n .forEach(lookup => pendingCheck.push(lookup.item));\n }\n const shouldCheck = !this.isItemChecked(target);\n pendingCheck.forEach(item => {\n if (shouldCheck) {\n this.addItem(item);\n }\n else {\n this.removeItem(item);\n }\n });\n }\n checkParents(parent) {\n let currentParent = parent;\n while (currentParent) {\n const allChildrenSelected = currentParent.children.every(item => this.isItemChecked(item));\n if (allChildrenSelected) {\n this.addItem(currentParent.item);\n }\n else {\n this.removeItem(currentParent.item);\n }\n currentParent = currentParent.parent;\n }\n }\n isItemIndeterminate(lookup) {\n const children = lookup.children;\n if (!Array.isArray(children) || children.length === 0) {\n return false;\n }\n let index = 0;\n let child = children[index];\n while (isPresent(child)) {\n if (this.isItemChecked(child.item) || this.isItemIndeterminate(child)) {\n return true;\n }\n index += 1;\n child = children[index];\n }\n return false;\n }\n}\nCheckDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, deps: [{ token: i1$1.TreeViewComponent }], target: i0.ɵɵFactoryTarget.Directive });\nCheckDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CheckDirective, selector: \"[kendoMultiSelectTreeCheckable]\", inputs: { checkable: \"checkable\", valueField: \"valueField\", checkedItems: \"checkedItems\" }, outputs: { checkedItemsChange: \"checkedItemsChange\" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CheckDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeCheckable]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.TreeViewComponent }]; }, propDecorators: { checkable: [{\n type: Input\n }], valueField: [{\n type: Input\n }], checkedItems: [{\n type: Input\n }], checkedItemsChange: [{\n type: Output\n }] } });\n\nconst DEFAULT_POPUP_SETTINGS = { animate: true };\nconst DEFAULT_CHECKABLE_SETTINGS = { checkChildren: true, checkOnClick: true };\nconst hasChildren = () => false;\nconst fetchChildren = () => of([]);\nconst itemDisabled = () => false;\nconst isNodeVisible = () => true;\nconst DEFAULT_SIZE = 'medium';\nconst DEFAULT_ROUNDED = 'medium';\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Represents the [Kendo UI MultiSelectTree component for Angular]({% slug overview_multiselecttree %}).\n */\nclass MultiSelectTreeComponent {\n constructor(wrapper, popupService, renderer, navigationService, _zone, localization, cdr, touchEnabled) {\n this.wrapper = wrapper;\n this.popupService = popupService;\n this.renderer = renderer;\n this.navigationService = navigationService;\n this._zone = _zone;\n this.localization = localization;\n this.cdr = cdr;\n this.touchEnabled = touchEnabled;\n this.hostClasses = true;\n this.role = 'combobox';\n this.ariaHasPopup = 'tree';\n /**\n * Sets the levels in the data set where the values can be found when `valueField` is an Array.\n * The field serves to correctly allocate a data item used when the MultiSelectTree is initialized with a value.\n */\n this.valueDepth = [];\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Sets the height of the options list. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n */\n this.listHeight = 200;\n /**\n * Sets the disabled state of the component.\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n */\n this.readonly = false;\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_multiselecttree %}#toc-primitive-values)).\n * If set to `true`, the selected value has to be a primitive one.\n */\n this.valuePrimitive = false;\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default false\n */\n this.loadOnDemand = false;\n /**\n * @hidden\n *\n * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n * @default true\n */\n this.clearButton = true;\n /**\n * Renders the built-in input element for filtering the MultiSelectTree.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the MultiSelectTree manually]({% slug filtering_multiselecttree %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoMultiSelectTreeHierarchyBinding`]({% slug api_dropdowns_multiselecttreehierarchybindingdirective %}) and [`kendoMultiSelectTreeFlatBinding`]({% slug api_dropdowns_multiselecttreeflatbindingdirective %}) directives.\n * @default false\n */\n this.filterable = false;\n /**\n * If `checkАll` is set to `true` and the checkboxes are enabled, a tri-state checkbox appears above the embedded treeview.\n * Clicking the checkbox checks or unchecks all enabled items of the treeview that are loaded.\n * @default false\n */\n this.checkAll = false;\n /**\n * A function which determines if a specific node has child nodes.\n */\n this.hasChildren = hasChildren;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren;\n /**\n * A callback which determines whether a tree node should be rendered as hidden. The utility .k-display-none class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isNodeVisible = isNodeVisible;\n /**\n * A function that is executed for each data item and determines if a specific item is disabled.\n */\n this.itemDisabled = itemDisabled;\n /**\n * A user-defined callback function which receives an array of selected data items and maps them to an array of tags.\n *\n * @param { Any[] } dataItems - The selected data items from the list.\n * @returns { Any[] } - The tags that will be rendered by the component.\n */\n this.tagMapper = (tags) => tags || [];\n /**\n * Fires each time the user focuses the MultiSelectTree.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the MultiSelectTree gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_multiselecttree %})).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_multiselecttree %})).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires when the user expands a node in the popup TreeView.\n */\n this.nodeExpand = new EventEmitter();\n /**\n * Fires when the user collapses a node in the popup TreeView.\n */\n this.nodeCollapse = new EventEmitter();\n /**\n * Fires each time the value is changed\n * ([see example]({% slug overview_multiselecttree %}#toc-events)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time a tag is about to be removed([see examples]({% slug summarytagmode_multiselect %}#toc-notifying-on-removing-group-tags)).\n * This event is preventable. If you cancel it, the tag will not be removed.\n */\n this.removeTag = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * @hidden\n */\n this.filterStateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.checkedItems = [];\n /**\n * @hidden\n */\n this.checkBy = (item) => item;\n /**\n * @hidden\n */\n this.showAfter = 0;\n /**\n * @hidden\n */\n this.allNodesHidden = false;\n this.tagListId = guid$1();\n this.tagPrefix = \"tag-\" + guid$1();\n this.focusedTagIndex = undefined;\n this._value = [];\n this._tabindex = 0;\n this._popupSettings = DEFAULT_POPUP_SETTINGS;\n this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;\n this._isFocused = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.subscriptions = [];\n this.lastAction = 'check';\n this.onTouchedCallback = noop;\n this.onChangeCallback = noop;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeFocusEvents();\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get id() {\n return this.focusableId;\n }\n get hostTabIndex() {\n return this.tabindex;\n }\n get isAriaExpanded() {\n return this.isOpen;\n }\n get isReadonly() {\n return this.readonly;\n }\n get ariaDescribedBy() {\n return this.tagListId;\n }\n get ariaActiveDescendant() {\n return this.focusedTagId;\n }\n /**\n * @hidden\n */\n handleClick() {\n this.togglePopup(!this.isOpen);\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n const deleteTag = this.isWrapperActive && event.keyCode === Keys.Backspace && this.tags.length > 0;\n if (deleteTag) {\n this.handleBackspace();\n return;\n }\n if (this.disabled || this.readonly) {\n return;\n }\n const eventData = event;\n const action = this.navigationService.process({\n originalEvent: eventData\n });\n if (action === NavigationAction.Open) {\n eventData.preventDefault();\n }\n }\n set treeview(treeview) {\n this._treeview = treeview;\n if (treeview) {\n // If filtering is enabled, focus the TreeView on mobile devices instead of the filter input\n if (this.isFocused && !this.filterable && !this.checkAll || this.touchEnabled) {\n treeview.focus();\n }\n /**\n * the treeview animations are initially disabled (we don't want expand animations during popup opening)\n * re-enables the animations for user interaction\n * The Promise is required to properly change the `animate` property when\n * the popup is appended to a container and opened upon initialization.\n * Otherwise, the \"Expression has changed...\" type error will be thrown.\n */\n Promise.resolve(null).then(() => this.treeview.animate = true);\n }\n }\n get treeview() {\n return this._treeview;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const providedTabIndex = parseNumber(value);\n const defaultTabIndex = 0;\n this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Configures the popup of the MultiSelectTree.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS, settings);\n // `detectChanges` needed, otherwise upon value initialization and `appendTo` property\n // an error is thrown => ExpressionChangedAfterItHasBeenCheckedError\n this.cdr.detectChanges();\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines the checkable settings of the MultiSelecTree nodes.\n * If no value is provided, the default [`CheckableSettings`]({% slug api_dropdowns_multiselecttreecheckablesettings %}) are applied.\n */\n set checkableSettings(settings) {\n this._checkableSettings = Object.assign({}, DEFAULT_CHECKABLE_SETTINGS, settings);\n }\n get checkableSettings() {\n return this._checkableSettings;\n }\n /**\n * Sets the data of the MultiSelectTree.\n *\n * > The data has to be provided in an array-like list with objects.\n */\n set data(data) {\n this._nodes = data;\n this.setState();\n }\n get data() {\n return this._nodes;\n }\n /**\n * Sets the value of the MultiSelectTree.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n */\n set value(value) {\n this._value = value ? value : [];\n this.setState();\n }\n get value() {\n return this._value;\n }\n /**\n * Keeps the current `dataItems` object in order to resolve selection.\n * Needs to be provided when when programmatically setting a `value` and `valuePrimitive` is set to `true`.\n */\n set dataItems(items) {\n this._dataItems = (items || []).map((item, index) => {\n if (hasProps(item, ['dataItem', 'index', 'level'])) {\n return item;\n }\n return {\n dataItem: item,\n index: null,\n level: this.valueDepth[index] || 0\n };\n });\n this.setState();\n }\n get dataItems() {\n return this._dataItems || this.value.map((value, index) => ({\n dataItem: value,\n index: null,\n level: this.valueDepth[index] || 0\n }));\n }\n /**\n * @hidden\n */\n get focusedTagId() {\n if (!isPresent(this.focusedTagIndex) || this.isOpen) {\n return null;\n }\n const dataItem = this.tags[this.focusedTagIndex];\n return `${this.tagPrefix}-${valueFrom({ dataItem }, this.valueField)}`;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n /**\n * Returns the current open state of the popup.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n get width() {\n const wrapperWidth = this.wrapper.nativeElement.offsetWidth;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return { min: minWidth, max: maxWidth };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n get popupContainerClasses() {\n const containerClasses = ['k-popup-dropdowntree'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n *\n * Alias for `data`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives.\n */\n set nodes(nodes) {\n this.data = nodes;\n }\n get nodes() {\n return this.data;\n }\n /**\n * @hidden\n *\n * Alias for `fetchChildren`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives\n */\n set children(callback) {\n this.fetchChildren = callback;\n }\n get children() {\n return this.fetchChildren;\n }\n /**\n * @hidden\n *\n * Alias for `nodeExpand`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get expand() {\n return this.nodeExpand;\n }\n /**\n * @hidden\n *\n * Alias for `nodeCollapse`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get collapse() {\n return this.nodeCollapse;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeExpanded`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n set isExpanded(callback) {\n this.isNodeExpanded = callback;\n }\n get isExpanded() {\n return this.isNodeExpanded;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeVisible`. Used for compatibility with the `DataBoundComponent` interface.\n * The `DataBoundComponent` interface is used in the data-binding directives.\n */\n set isVisible(callback) {\n this.isNodeVisible = callback;\n }\n get isVisible() {\n return this.isNodeVisible;\n }\n get isTagFocused() {\n return !this.isOpen && this.focusedTagIndex !== undefined;\n }\n get isTreeViewActive() {\n return this.treeview && this.treeview.isActive;\n }\n get isWrapperActive() {\n return document.activeElement === this.wrapper.nativeElement;\n }\n get isFilterActive() {\n return this.filterInput && document.activeElement === this.filterInput.nativeElement;\n }\n get isCheckAllActive() {\n return this.checkAllInput && document.activeElement === this.checkAllInput.nativeElement;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', String(this.isOpen));\n this.subscriptions.push(this.localization\n .changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n }));\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n if (anyChanged(['valueDepth', 'value', 'dataItems'], changes, false)) {\n if (changes.value && !changes.dataItems && !this.valuePrimitive) {\n // Update the dataItems if the value is updated programmatically (non-primitive values only)\n // In the primitive case, the client should update the dataItems as well\n this.dataItems = this.value;\n }\n else {\n // Re-map the dataItems because `valueDepth` is not yet available when the check directive parses the items\n this.dataItems = this.dataItems.map((item, index) => (Object.assign(Object.assign({}, item), { level: this.valueDepth[index] || 0 })));\n }\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * @hidden\n *\n * Used by the kendo-floatinglabel component to determine if the floating label\n * should be rendered inside the input when the component is not focused.\n */\n isEmpty() {\n return !Boolean(this.placeholder) && (!isPresent(this.value) || this.value.length === 0);\n }\n /**\n * Focuses the MultiSelectTree.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the MultiSelectTree.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Focuses a specific item of the MultiSelectTree based on a provided index in the format of `1_1`.\n * The targeted item should be expanded in order for it to be focused.\n * If null or invalid index is provided the focus will be set on the first item.\n */\n focusItemAt(index) {\n if (this.treeview) {\n const lookup = this.treeview.itemLookup(index);\n const isItemDisabled = !isPresent(lookup) || this.treeview.isDisabled(lookup.item.dataItem, lookup.item.index);\n if (!isItemDisabled) {\n this.treeview.focus(index);\n }\n }\n }\n /**\n * Resets the value of the MultiSelectTree.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `valueChange` event will not be fired.\n */\n reset() {\n this.value = [];\n this.dataItems = [];\n this.valueDepth = [];\n }\n /**\n * Toggles the visibility of the popup\n * ([see example]({% slug openstate_multiselecttree %})).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"ViewContainerRef not found...\" error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !isPresent(this.popupRef);\n this.destroyPopup();\n if (shouldOpen) {\n this.createPopup();\n }\n });\n }\n /**\n * @hidden\n */\n handleFocus(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n // Re-focus the treeview if `close` is prevented\n if (this.isOpen && this.treeview) {\n if (this.lastNodeOnFocus) {\n this.lastNodeOnFocus.setAttribute('tabindex', '0');\n }\n this.treeview.focus();\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur(e) {\n const relatedTarget = e && e.relatedTarget;\n if (this.wrapper.nativeElement.contains(relatedTarget) ||\n (this.isOpen && this.popupRef.popupElement.contains(relatedTarget))) {\n return;\n }\n this.isFocused = false;\n this.togglePopup(false);\n if (hasObservers(this.onBlur) ||\n isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n }\n /**\n * @hidden\n */\n handleNodeClick(node) {\n if (!this.isFocused) {\n // Re-focus the MultiSelectTree when popup close is prevented and a node is clicked\n // On click the focus should be on the clicked element which is why we need to update the lastNodeOnFocus\n const parent = node.originalEvent.target.parentElement.parentElement;\n this.lastNodeOnFocus = parent;\n this.focus();\n }\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n this._zone.run(() => {\n this.focusedTagIndex = undefined;\n });\n if (isDisabled || sameState) {\n return;\n }\n const togglePrevented = this.triggerPopupEvents(open);\n if (!togglePrevented) {\n if (open) {\n this.createPopup();\n }\n else {\n this.destroyPopup();\n }\n }\n else {\n this.removeTreeViewFromTabOrder();\n }\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n handleCheckedItemsChange(items) {\n this.valueDepth = items.map(item => item.level);\n this.lastAction = items.length > this.dataItems.length ? 'check' : 'uncheck';\n this.dataItems = items.slice();\n this.updateValue(this.dataItems);\n }\n /**\n * @hidden\n */\n handleRemoveTag({ tag, index }) {\n if (this.disabled || this.readonly) {\n return;\n }\n const eventArgs = new RemoveTagEvent(tag);\n this.removeTag.emit(eventArgs);\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n // Remove tags based on their position index\n if (tag instanceof Array) {\n // Remove group tag\n this.dataItems = this.dataItems.filter((_item, i) => i < this.showAfter || this.disabledIndices.has(i));\n this.valueDepth = this.valueDepth.filter((_item, i) => i < this.showAfter || this.disabledIndices.has(i));\n }\n else {\n // Remove single tag\n this.dataItems = this.dataItems.filter((_item, i) => i !== index || this.disabledIndices.has(i));\n this.valueDepth = this.valueDepth.filter((_item, i) => i !== index || this.disabledIndices.has(i));\n }\n this.updateValue(this.dataItems);\n // focus the wrapper if the component is not focused - the floating label reacts to focus/blur\n if (!this.isFocused) {\n this.focus();\n }\n }\n /**\n * @hidden\n */\n handleTagMapperChange(showAfter) {\n this.showAfter = parseNumber(showAfter);\n this.setTags();\n }\n /**\n * @hidden\n */\n clearAll(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n this.focus();\n this.value = this.value.filter((_item, index) => this.disabledIndices.has(index));\n this.dataItems = this.dataItems.filter((_item, index) => this.disabledIndices.has(index));\n this.valueDepth = this.valueDepth.filter((_depth, index) => this.disabledIndices.has(index));\n this.emitValueChange(this.value);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value || [];\n // Update the dataItems if the value is updated programmatically (non-primitive values only)\n // In the primitive case, the client should update the dataItems as well\n if (!this.valuePrimitive) {\n this.dataItems = this.value;\n }\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilterInputChange(input) {\n this.filterChange.next(input.value);\n this.allNodesHidden = this.nodes.every((node, index) => !this.isVisible(node, String(index)));\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n /**\n * @hidden\n */\n get checkAllCheckboxClasses() {\n return `${this.size ? getSizeClass('checkbox', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n toggleCheckAll() {\n this.checkAllInput.nativeElement.focus();\n this.checkAllInput.nativeElement.click();\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(MultiSelectTreeMessages.textAndValue);\n }\n if (!isArray(this.value)) {\n throw new Error(MultiSelectTreeMessages.array);\n }\n if (this.value.length > 0) {\n if (this.valuePrimitive && this.value.some(item => isObject(item))) {\n throw new Error(MultiSelectTreeMessages.primitive);\n }\n const isEveryDataItemObject = this.dataItems.every(item => isObject(item.dataItem));\n if (this.valuePrimitive && !isArray(this.dataItems)) {\n throw new Error(MultiSelectTreeMessages.dataItems);\n }\n if (this.valuePrimitive && !isEveryDataItemObject) {\n throw new Error(MultiSelectTreeMessages.dataItems);\n }\n if (this.valuePrimitive && this.dataItems.length !== this.value.length) {\n throw new Error(MultiSelectTreeMessages.dataItemsLength);\n }\n if (!this.valuePrimitive && !isObjectArray(this.value)) {\n throw new Error(MultiSelectTreeMessages.object);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && !isArray(this.valueDepth)) {\n throw new Error(MultiSelectTreeMessages.valueDepth);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && this.valueDepth.length === 0) {\n throw new Error(MultiSelectTreeMessages.valueDepth);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && this.valueDepth.length !== this.value.length) {\n throw new Error(MultiSelectTreeMessages.valueDepthLength);\n }\n }\n }\n emitValueChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n createPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: 'bottom' };\n const popupPosition = { horizontal: horizontalAlign, vertical: 'top' };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n appendTo: this.appendTo,\n anchorAlign: anchorPosition,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n positionMode: 'absolute',\n popupClass: this.popupContainerClasses\n });\n const popupWrapper = this.popupRef.popupElement;\n const { min, max } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n this.renderer.setAttribute(popupWrapper, 'dir', this.direction);\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');\n if (this.filter !== \"\") {\n this.filter = \"\";\n this.allNodesHidden = false;\n if (hasObservers(this.filterChange)) {\n this._zone.run(() => {\n this.filterChange.emit(\"\");\n });\n }\n }\n }\n }\n subscribeEvents() {\n this.subscriptions.push(this.navigationService.open.subscribe(() => this.togglePopup(true)), this.navigationService.enter\n .pipe(tap((event) => event.originalEvent.preventDefault()))\n .subscribe(() => this.togglePopup(true)), merge(this.navigationService.close, this.navigationService.esc).subscribe(() => {\n this.focus();\n this.togglePopup(false);\n }), this.navigationService.tab.subscribe(this.handleTabKey.bind(this)), this.navigationService.up.subscribe(this.handleUpKey.bind(this)), this.navigationService.down.subscribe(this.handleDownKey.bind(this)), this.navigationService.left\n .pipe(filter(() => !this.isTreeViewActive))\n .subscribe(this.direction === 'rtl' ? this.handleRightKey.bind(this) : this.handleLeftKey.bind(this)), this.navigationService.right\n .pipe(filter(() => !this.isTreeViewActive))\n .subscribe(this.direction === 'rtl' ? this.handleLeftKey.bind(this) : this.handleRightKey.bind(this)), this.navigationService.home.pipe(filter(() => !this.isOpen)).subscribe(this.handleHome.bind(this)), this.navigationService.end.pipe(filter(() => !this.isOpen)).subscribe(this.handleEnd.bind(this)), this.navigationService.backspace.pipe(filter(() => this.isTagFocused)).subscribe(this.handleBackspace.bind(this)), this.navigationService.delete.pipe(filter(() => this.isTagFocused)).subscribe(this.handleDelete.bind(this)));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.handleFocus = this.handleFocus.bind(this);\n this.handleDocumentBlur = this.handleDocumentBlur.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.handleFocus, useCapture);\n document.addEventListener('blur', this.handleDocumentBlur, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.handleFocus, useCapture);\n document.removeEventListener('blur', this.handleDocumentBlur, useCapture);\n }\n }\n handleDocumentBlur(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.handleBlur(event);\n }\n handleTabKey() {\n this.focus();\n if (this.isOpen) {\n this.treeview.blur();\n this.removeTreeViewFromTabOrder();\n }\n }\n handleUpKey(event) {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n // Prevent toggling the focus between the filterInput and the wrapper elements with `up` key\n if (this.isWrapperActive) {\n return;\n }\n const isFirstNodeActive = this.treeview['navigationService']['activeIndex'] === '0';\n // Current focus is on the filter input => should focus the wrapper\n if (this.filterable && this.isFilterActive) {\n this.focus();\n // Current focus is on the treeview first node => should focus the check all checkbox if enabled\n }\n else if (this.checkAll && !this.isCheckAllActive && isFirstNodeActive) {\n this.checkAllInput.nativeElement.focus();\n // Current focus is either on the check all checkbox or the treeview's first node\n // => should focus either the filter input (if enabled) or the wrapper\n }\n else if (this.isCheckAllActive || isFirstNodeActive) {\n if (this.filterable) {\n this.filterInput.nativeElement.focus();\n }\n else {\n this.focus();\n }\n }\n }\n handleDownKey(event) {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n // Current focus is on the wrapper => should focus the filter input\n if (this.filterable && this.isWrapperActive) {\n this.filterInput.nativeElement.focus();\n // Current focus is on the wrapper/filter input => should focus check all checkbox if enabled\n }\n else if (this.checkAll && (this.isWrapperActive || this.isFilterActive)) {\n this.checkAllInput.nativeElement.focus();\n // Should focus the treeview if filterable and check all are disabled\n }\n else if (!this.treeview.isActive) {\n this.treeview.focus();\n }\n this.focusedTagIndex = undefined;\n }\n handleRightKey(event) {\n event.originalEvent.preventDefault();\n const last = this.tags.length - 1;\n if (this.focusedTagIndex === last) {\n this.focusedTagIndex = undefined;\n }\n else if (this.focusedTagIndex < last) {\n this.focusedTagIndex++;\n }\n else if (!this.focusedTagIndex) {\n this.focusedTagIndex = 0;\n }\n }\n handleLeftKey(event) {\n event.originalEvent.preventDefault();\n if (this.focusedTagIndex === undefined || this.focusedTagIndex < 0) {\n this.focusedTagIndex = this.tags.length - 1;\n }\n else if (this.focusedTagIndex !== 0) {\n this.focusedTagIndex--;\n }\n }\n handleEnd(event) {\n event.originalEvent.preventDefault();\n this.focusedTagIndex = this.tags.length - 1;\n }\n handleHome(event) {\n event.originalEvent.preventDefault();\n this.focusedTagIndex = 0;\n }\n handleBackspace() {\n if (this.focusedTagIndex !== undefined) {\n this.handleDelete();\n }\n else {\n const tag = this.tags[this.tags.length - 1];\n const index = this.tags.length - 1;\n this.handleRemoveTag({ tag, index });\n }\n }\n handleDelete() {\n const tag = this.tags[this.focusedTagIndex];\n const index = this.focusedTagIndex;\n this.handleRemoveTag({ tag, index });\n if (this.focusedTagIndex === this.tags.length) {\n this.focusedTagIndex = undefined;\n }\n }\n unsubscribeEvents() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.unSubscribeFocusEvents();\n }\n /**\n * Remove the `TreeView` from the tab order, otherwise a focus loop between the page elements will occur\n * and the user will not be able to tab to the rest of the browser elements\n */\n removeTreeViewFromTabOrder() {\n const nodes = this.treeview.element.nativeElement.querySelectorAll('li');\n nodes.forEach(item => {\n if (item.getAttribute('tabindex') === '0') {\n this.lastNodeOnFocus = item;\n this.lastNodeOnFocus.setAttribute('tabindex', '-1');\n }\n });\n }\n setState() {\n if (isPresent(this.dataItems) && isPresent(this.valueField)) {\n this.setTags();\n this.checkedItems = this.dataItems.slice();\n }\n this.cdr.markForCheck();\n }\n setTags() {\n const source = this.dataItems.map(item => item.dataItem);\n this.tags = this.tagMapper(source);\n this.disabledIndices = this.disabledItemsMapper();\n }\n updateValue(value) {\n const newValue = this.valuePrimitive ?\n value.map(item => valueFrom(item, this.valueField)) :\n value.map(item => item.dataItem);\n this.value = newValue;\n this.emitValueChange(this.value);\n }\n /**\n * @hidden\n *\n * Determines which of the provided tags should be disabled and stores their position indices\n */\n disabledItemsMapper() {\n return new Set(this.dataItems.reduce((indices, item, index) => {\n if (this.itemDisabled(item.dataItem, item.index)) {\n indices.push(index);\n }\n return indices;\n }, []));\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n}\nMultiSelectTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeComponent, deps: [{ token: i0.ElementRef }, { token: i2.PopupService }, { token: i0.Renderer2 }, { token: NavigationService }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMultiSelectTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeComponent, selector: \"kendo-multiselecttree\", inputs: { tabindex: \"tabindex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", popupSettings: \"popupSettings\", checkableSettings: \"checkableSettings\", data: \"data\", value: \"value\", dataItems: \"dataItems\", textField: \"textField\", valueField: \"valueField\", valueDepth: \"valueDepth\", loading: \"loading\", placeholder: \"placeholder\", listHeight: \"listHeight\", disabled: \"disabled\", readonly: \"readonly\", valuePrimitive: \"valuePrimitive\", loadOnDemand: \"loadOnDemand\", focusableId: \"focusableId\", clearButton: \"clearButton\", filterable: \"filterable\", checkAll: \"checkAll\", hasChildren: \"hasChildren\", fetchChildren: \"fetchChildren\", isNodeExpanded: \"isNodeExpanded\", isNodeVisible: \"isNodeVisible\", itemDisabled: \"itemDisabled\", tagMapper: \"tagMapper\" }, outputs: { onFocus: \"focus\", onBlur: \"blur\", open: \"open\", opened: \"opened\", close: \"close\", closed: \"closed\", nodeExpand: \"nodeExpand\", nodeCollapse: \"nodeCollapse\", valueChange: \"valueChange\", removeTag: \"removeTag\", filterChange: \"filterChange\" }, host: { listeners: { \"click\": \"handleClick()\", \"keydown\": \"handleKeydown($event)\" }, properties: { \"class.k-dropdowntree\": \"this.hostClasses\", \"class.k-input\": \"this.hostClasses\", \"class.k-disabled\": \"this.isDisabled\", \"attr.aria-disabled\": \"this.isDisabled\", \"class.k-loading\": \"this.isLoading\", \"attr.id\": \"this.id\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.hostTabIndex\", \"attr.role\": \"this.role\", \"attr.aria-expanded\": \"this.isAriaExpanded\", \"attr.aria-haspopup\": \"this.ariaHasPopup\", \"attr.readonly\": \"this.isReadonly\", \"attr.aria-readonly\": \"this.isReadonly\", \"attr.aria-describedby\": \"this.ariaDescribedBy\", \"attr.aria-activedescendant\": \"this.ariaActiveDescendant\" } }, providers: [\n LocalizationService,\n NavigationService,\n DataService,\n DisabledItemsService,\n SelectionService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselecttree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n }\n ], queries: [{ propertyName: \"headerTemplate\", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: \"nodeTemplate\", first: true, predicate: NodeTemplateDirective, descendants: true }, { propertyName: \"noDataTemplate\", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: \"tagTemplate\", first: true, predicate: TagTemplateDirective, descendants: true }, { propertyName: \"groupTagTemplate\", first: true, predicate: GroupTagTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"treeview\", first: true, predicate: [\"treeview\"], descendants: true }, { propertyName: \"filterInput\", first: true, predicate: [\"filterInput\"], descendants: true }, { propertyName: \"checkAllInput\", first: true, predicate: [\"checkAllInput\"], descendants: true }], exportAs: [\"kendoMultiSelectTree\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n {{ placeholder }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ messageFor('checkAllText') }}\n \n
\n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n `, isInline: true, components: [{ type: TagListComponent, selector: \"kendo-taglist\", inputs: [\"tags\", \"textField\", \"valueField\", \"valueDepth\", \"focused\", \"template\", \"groupTemplate\", \"disabled\", \"tagPrefix\", \"id\", \"size\", \"rounded\", \"fillMode\", \"disabledIndices\"], outputs: [\"removeTag\"] }, { type: i1$1.TreeViewComponent, selector: \"kendo-treeview\", inputs: [\"filterInputPlaceholder\", \"animate\", \"nodeTemplate\", \"loadMoreButtonTemplate\", \"trackBy\", \"nodes\", \"textField\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"isExpanded\", \"isSelected\", \"isVisible\", \"navigable\", \"children\", \"loadOnDemand\", \"filterable\", \"filter\", \"size\"], outputs: [\"childrenLoaded\", \"blur\", \"focus\", \"expand\", \"collapse\", \"nodeDragStart\", \"nodeDrag\", \"filterStateChange\", \"nodeDrop\", \"nodeDragEnd\", \"addItem\", \"removeItem\", \"checkedChange\", \"selectionChange\", \"filterChange\", \"nodeClick\", \"nodeDblClick\"], exportAs: [\"kendoTreeView\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoDropDownListLocalizedMessages],\\n [kendoDropDownTreeLocalizedMessages],\\n [kendoComboBoxLocalizedMessages],\\n [kendoMultiColumnComboBoxLocalizedMessages],\\n [kendoAutoCompleteLocalizedMessages],\\n [kendoMultiSelectLocalizedMessages],\\n [kendoMultiSelectTreeLocalizedMessages]\\n \" }, { type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: FilterInputDirective, selector: \"[filterInput]\", inputs: [\"filterInput\"] }, { type: i8.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i8.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: i9.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }, { type: CheckAllDirective, selector: \"[checkAll]\", inputs: [\"lastAction\", \"treeview\", \"checkedItems\", \"valueField\", \"checkAll\"], outputs: [\"checkedItemsChange\"] }, { type: CheckDirective, selector: \"[kendoMultiSelectTreeCheckable]\", inputs: [\"checkable\", \"valueField\", \"checkedItems\"], outputs: [\"checkedItemsChange\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoMultiSelectTree',\n providers: [\n LocalizationService,\n NavigationService,\n DataService,\n DisabledItemsService,\n SelectionService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselecttree'\n },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n }\n ],\n selector: 'kendo-multiselecttree',\n template: `\n \n \n \n \n {{ placeholder }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ messageFor('checkAllText') }}\n \n
\n \n \n \n \n \n \n
\n \n \n \n
{{ messageFor('noDataText') }}
\n
\n
\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.PopupService }, { type: i0.Renderer2 }, { type: NavigationService }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOUCH_ENABLED]\n }] }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-dropdowntree']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], isDisabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], isLoading: [{\n type: HostBinding,\n args: ['class.k-loading']\n }], id: [{\n type: HostBinding,\n args: ['attr.id']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], isAriaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], ariaHasPopup: [{\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], isReadonly: [{\n type: HostBinding,\n args: ['attr.readonly']\n }, {\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], ariaDescribedBy: [{\n type: HostBinding,\n args: ['attr.aria-describedby']\n }], ariaActiveDescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], handleClick: [{\n type: HostListener,\n args: ['click']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], headerTemplate: [{\n type: ContentChild,\n args: [HeaderTemplateDirective, { static: false }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [FooterTemplateDirective, { static: false }]\n }], nodeTemplate: [{\n type: ContentChild,\n args: [NodeTemplateDirective, { static: false }]\n }], noDataTemplate: [{\n type: ContentChild,\n args: [NoDataTemplateDirective, { static: false }]\n }], tagTemplate: [{\n type: ContentChild,\n args: [TagTemplateDirective, { static: false }]\n }], groupTagTemplate: [{\n type: ContentChild,\n args: [GroupTagTemplateDirective, { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], treeview: [{\n type: ViewChild,\n args: ['treeview', { static: false }]\n }], filterInput: [{\n type: ViewChild,\n args: ['filterInput', { static: false }]\n }], checkAllInput: [{\n type: ViewChild,\n args: ['checkAllInput', { static: false }]\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], checkableSettings: [{\n type: Input\n }], data: [{\n type: Input\n }], value: [{\n type: Input\n }], dataItems: [{\n type: Input\n }], textField: [{\n type: Input\n }], valueField: [{\n type: Input\n }], valueDepth: [{\n type: Input\n }], loading: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], listHeight: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valuePrimitive: [{\n type: Input\n }], loadOnDemand: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], filterable: [{\n type: Input\n }], checkAll: [{\n type: Input\n }], hasChildren: [{\n type: Input\n }], fetchChildren: [{\n type: Input\n }], isNodeExpanded: [{\n type: Input\n }], isNodeVisible: [{\n type: Input\n }], itemDisabled: [{\n type: Input\n }], tagMapper: [{\n type: Input\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], open: [{\n type: Output\n }], opened: [{\n type: Output\n }], close: [{\n type: Output\n }], closed: [{\n type: Output\n }], nodeExpand: [{\n type: Output\n }], nodeCollapse: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], removeTag: [{\n type: Output\n }], filterChange: [{\n type: Output\n }] } });\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nclass DropDownTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n ngOnChanges(changes) {\n if (isChanged('nodes', changes, false)) {\n this.dropDownTree.nodes = changes.nodes.currentValue;\n super.nodes = changes.nodes.currentValue;\n }\n super.ngOnChanges(changes);\n }\n}\nDropDownTreeFlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeFlatBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDropDownTreeFlatBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreeFlatBindingDirective, selector: \"[kendoDropDownTreeFlatBinding]\", inputs: { nodes: [\"kendoDropDownTreeFlatBinding\", \"nodes\"], idField: [\"valueField\", \"idField\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeFlatBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeFlatBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { nodes: [{\n type: Input,\n args: ['kendoDropDownTreeFlatBinding']\n }], idField: [{\n type: Input,\n args: ['valueField']\n }] } });\n\nconst INDEX_SEPARATOR = '_';\nconst nodeIndex = (index = '', parentIndex = '') => {\n return `${parentIndex}${parentIndex ? INDEX_SEPARATOR : ''}${index}`;\n};\nconst isArrayWithAtLeastOneItem = v => v && Array.isArray(v) && v.length !== 0;\nconst mapToWrappers = (currentLevelNodes, childrenField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToWrappers(getter$1(childrenField)(node), childrenField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nclass DropDownTreeHierarchyBindingDirective extends HierarchyBindingDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n ngOnChanges(changes) {\n if (isChanged('nodes', changes, false)) {\n this.dropDownTree.nodes = changes.nodes.currentValue;\n super.nodes = changes.nodes.currentValue;\n }\n super.ngOnChanges(changes);\n }\n}\nDropDownTreeHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeHierarchyBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDropDownTreeHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreeHierarchyBindingDirective, selector: \"[kendoDropDownTreeHierarchyBinding]\", inputs: { nodes: [\"kendoDropDownTreeHierarchyBinding\", \"nodes\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreeHierarchyBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeHierarchyBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { nodes: [{\n type: Input,\n args: ['kendoDropDownTreeHierarchyBinding']\n }] } });\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nclass MultiSelectTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(multiSelectTree) {\n super(multiSelectTree);\n this.multiSelectTree = multiSelectTree;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n ngOnChanges(changes) {\n if (isChanged('nodes', changes, false)) {\n this.multiSelectTree.nodes = changes.nodes.currentValue;\n super.nodes = changes.nodes.currentValue;\n }\n super.ngOnChanges(changes);\n }\n}\nMultiSelectTreeFlatBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeFlatBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nMultiSelectTreeFlatBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeFlatBindingDirective, selector: \"[kendoMultiSelectTreeFlatBinding]\", inputs: { nodes: [\"kendoMultiSelectTreeFlatBinding\", \"nodes\"], idField: [\"valueField\", \"idField\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeFlatBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeFlatBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { nodes: [{\n type: Input,\n args: ['kendoMultiSelectTreeFlatBinding']\n }], idField: [{\n type: Input,\n args: ['valueField']\n }] } });\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nclass MultiSelectTreeHierarchyBindingDirective extends HierarchyBindingDirective {\n constructor(multiSelectTree) {\n super(multiSelectTree);\n this.multiSelectTree = multiSelectTree;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n ngOnChanges(changes) {\n if (isChanged('nodes', changes, false)) {\n this.multiSelectTree.nodes = changes.nodes.currentValue;\n super.nodes = changes.nodes.currentValue;\n }\n super.ngOnChanges(changes);\n }\n}\nMultiSelectTreeHierarchyBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeHierarchyBindingDirective, deps: [{ token: i1$1.DataBoundComponent }], target: i0.ɵɵFactoryTarget.Directive });\nMultiSelectTreeHierarchyBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeHierarchyBindingDirective, selector: \"[kendoMultiSelectTreeHierarchyBinding]\", inputs: { nodes: [\"kendoMultiSelectTreeHierarchyBinding\", \"nodes\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeHierarchyBindingDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeHierarchyBinding]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DataBoundComponent }]; }, propDecorators: { nodes: [{\n type: Input,\n args: ['kendoMultiSelectTreeHierarchyBinding']\n }] } });\n\n/**\n * A directive which manages the expanded state of the popup TreeView.\n */\nclass DropDownTreesExpandDirective extends ExpandDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * @hidden\n *\n * Ensures a user-defined `isNodeExpanded` callback will not be overriden by the default directive setup.\n * Implemented as a value setter in the base directive, this just overrides the input name.\n */\n set isExpanded(value) {\n this.dropDownTree.isExpanded = value;\n }\n ;\n}\nDropDownTreesExpandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesExpandDirective, deps: [{ token: i1$1.ExpandableComponent }], target: i0.ɵɵFactoryTarget.Directive });\nDropDownTreesExpandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropDownTreesExpandDirective, selector: \"[kendoDropDownTreeExpandable], [kendoMultiSelectTreeExpandable]\", inputs: { isExpanded: [\"isNodeExpanded\", \"isExpanded\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesExpandDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownTreeExpandable], [kendoMultiSelectTreeExpandable]'\n }]\n }], ctorParameters: function () { return [{ type: i1$1.ExpandableComponent }]; }, propDecorators: { isExpanded: [{\n type: Input,\n args: ['isNodeExpanded']\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_dropdowns %}#toc-messages)).\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-dropdownlist-messages,kendo-combobox-messages,kendo-multicolumncombobox-messages,kendo-autocomplete-messages,kendo-multiselect-messages,kendo-dropdowntree-messages,kendo-multiselecttree-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-dropdownlist-messages,kendo-combobox-messages,kendo-multicolumncombobox-messages,kendo-autocomplete-messages,kendo-multiselect-messages,kendo-dropdowntree-messages,kendo-multiselecttree-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst DEFAULT_FILTER_SETTINGS = {\n caseSensitive: false,\n operator: 'startsWith'\n};\n/**\n * Implements an event handler for the `filterChange` event of a DropDowns component\n * which performs simple data filtering.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public data: Array = [\"Albania\", \"Andorra\", \"Armenia\", \"Austria\", \"Azerbaijan\"];\n * }\n * ```\n * > Currently, the built-in filtering does not work with [grouped data]({% slug api_kendo-data-query_groupby %}).\n */\nclass FilterDirective {\n constructor(component) {\n this.component = component;\n /**\n * @hidden\n *\n * Sets whether the filtering functionality is enabled on component init.\n */\n this.filterable = true;\n this._data = [];\n }\n /**\n * The initial data that will be used as a source array for the filtering operations.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n return this._data;\n }\n ngOnInit() {\n this.component.filterable = this.filterable;\n this.filterChangeSubscription = this.component.filterChange\n .subscribe(this.handleFilterChange.bind(this));\n }\n ngOnDestroy() {\n if (isPresent(this.filterChangeSubscription)) {\n this.filterChangeSubscription.unsubscribe();\n }\n }\n handleFilterChange(query) {\n this.component.data = this.data.filter(item => this.matchesAnyField(item, query));\n }\n matchesAnyField(item, query) {\n const normalizedQuery = this.normalizeValue(query);\n const { fields } = this.filterSettings;\n // if no filter fields are present, we are dealing with primitive data\n if (fields.length === 0) {\n return this.checkItem(item, normalizedQuery);\n }\n return fields.some(field => this.checkItem(getter(item, field), normalizedQuery));\n }\n checkItem(target, query) {\n target = this.normalizeValue(target);\n if (this.filterSettings.operator === 'contains') {\n return target.indexOf(query) !== -1;\n }\n else {\n return target.indexOf(query) === 0;\n }\n }\n normalizeValue(value) {\n const normalizedValue = isPresent(value) ? value.toString() : '';\n return this.filterSettings.caseSensitive ? normalizedValue : normalizedValue.toLowerCase();\n }\n getFilterFields(providedFields) {\n // ignore provided fields if the component deals with primitive data\n if (!this.component.textField && !this.component.valueField) {\n return [];\n }\n if (isArray(providedFields) && providedFields.length > 0) {\n return providedFields;\n }\n else {\n // the autocomplete uses `valueField` for text extraction\n const textField = this.component.textField || this.component.valueField;\n return [textField];\n }\n }\n get filterSettings() {\n const settings = this.rawSettings;\n const providedFields = isPresent(settings) && typeof settings === 'object' ? settings.fields : [];\n return Object.assign({}, DEFAULT_FILTER_SETTINGS, settings, { fields: this.getFilterFields(providedFields) });\n }\n}\nFilterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterDirective, deps: [{ token: FilterableComponent }], target: i0.ɵɵFactoryTarget.Directive });\nFilterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FilterDirective, selector: \"[kendoDropDownFilter]\", inputs: { data: \"data\", rawSettings: [\"kendoDropDownFilter\", \"rawSettings\"], filterable: \"filterable\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FilterDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDropDownFilter]'\n }]\n }], ctorParameters: function () { return [{ type: FilterableComponent }]; }, propDecorators: { data: [{\n type: Input\n }], rawSettings: [{\n type: Input,\n args: ['kendoDropDownFilter']\n }], filterable: [{\n type: Input\n }] } });\n\nconst SHARED_DIRECTIVES = [\n HeaderTemplateDirective,\n FooterTemplateDirective,\n ItemTemplateDirective,\n GroupTemplateDirective,\n FixedGroupTemplateDirective,\n NoDataTemplateDirective,\n ValueTemplateDirective,\n TagTemplateDirective,\n GroupTagTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n FilterDirective,\n FilterInputDirective\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ItemTemplateDirective`—The item template directive.\n * - `ValueTemplateDirective`—The value template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The noData template directive.\n * - `TagTemplateDirective`—The tag template directive.\n * - `SummaryTagTemplateDirective`—The summary tag template directive.\n */\nclass SharedDirectivesModule {\n}\nSharedDirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedDirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, declarations: [HeaderTemplateDirective,\n FooterTemplateDirective,\n ItemTemplateDirective,\n GroupTemplateDirective,\n FixedGroupTemplateDirective,\n NoDataTemplateDirective,\n ValueTemplateDirective,\n TagTemplateDirective,\n GroupTagTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n FilterDirective,\n FilterInputDirective], exports: [HeaderTemplateDirective,\n FooterTemplateDirective,\n ItemTemplateDirective,\n GroupTemplateDirective,\n FixedGroupTemplateDirective,\n NoDataTemplateDirective,\n ValueTemplateDirective,\n TagTemplateDirective,\n GroupTagTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent,\n FilterDirective,\n FilterInputDirective] });\nSharedDirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedDirectivesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }] });\n\nconst INTERNAL_DIRECTIVES = [\n ListComponent,\n ListItemDirective,\n SelectableDirective,\n SearchBarComponent,\n TemplateContextDirective,\n TagListComponent,\n CheckDirective,\n CheckAllDirective\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [ListComponent,\n ListItemDirective,\n SelectableDirective,\n SearchBarComponent,\n TemplateContextDirective,\n TagListComponent,\n CheckDirective,\n CheckAllDirective], imports: [CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], exports: [ListComponent,\n ListItemDirective,\n SelectableDirective,\n SearchBarComponent,\n TemplateContextDirective,\n TagListComponent,\n CheckDirective,\n CheckAllDirective, CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule], CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_DIRECTIVES],\n exports: [INTERNAL_DIRECTIVES, CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule],\n imports: [CommonModule, FormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule]\n }]\n }] });\n\n/**\n * A directive which configures the MultiSelectTree to show one single summary tag for all selected data items.\n * When a number is provided, the summary tag is displayed after the given amount of data items are selected\n * ([more information and examples]({% slug api_dropdowns_multiselecttreesummarytagdirective %})).\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass MultiSelectTreeSummaryTagDirective {\n constructor(multiSelectTreeComponent) {\n this.multiSelectTreeComponent = multiSelectTreeComponent;\n /**\n * A numeric value that indicates the number of selected data items after which the summary tag will appear.\n */\n this.showAfter = 0;\n this.createTagMapper();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.showAfter)) {\n this.createTagMapper();\n this.multiSelectTreeComponent.handleTagMapperChange(this.showAfter);\n }\n }\n createTagMapper() {\n const showAfter = parseNumber(this.showAfter);\n this.multiSelectTreeComponent.tagMapper = (tags) => {\n if (tags.length > showAfter) {\n // tags provided in an array are rendered as a single group tag\n return [...tags.slice(0, showAfter), tags.slice(showAfter)];\n }\n else {\n return tags;\n }\n };\n }\n}\nMultiSelectTreeSummaryTagDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeSummaryTagDirective, deps: [{ token: MultiSelectTreeComponent }], target: i0.ɵɵFactoryTarget.Directive });\nMultiSelectTreeSummaryTagDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: MultiSelectTreeSummaryTagDirective, selector: \"[kendoMultiSelectTreeSummaryTag]\", inputs: { showAfter: [\"kendoMultiSelectTreeSummaryTag\", \"showAfter\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectTreeSummaryTagDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectTreeSummaryTag]'\n }]\n }], ctorParameters: function () { return [{ type: MultiSelectTreeComponent }]; }, propDecorators: { showAfter: [{\n type: Input,\n args: ['kendoMultiSelectTreeSummaryTag']\n }] } });\n\nconst DROPDOWNTREE_DIRECTIVES = [\n DropDownTreeComponent,\n MultiSelectTreeComponent,\n DropDownTreeFlatBindingDirective,\n DropDownTreeHierarchyBindingDirective,\n MultiSelectTreeFlatBindingDirective,\n MultiSelectTreeHierarchyBindingDirective,\n DropDownTreesExpandDirective,\n NodeTemplateDirective,\n MultiSelectTreeSummaryTagDirective\n];\n/**\n * @hidden\n */\nclass DropDownTreesModule {\n}\nDropDownTreesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownTreesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, declarations: [DropDownTreeComponent,\n MultiSelectTreeComponent,\n DropDownTreeFlatBindingDirective,\n DropDownTreeHierarchyBindingDirective,\n MultiSelectTreeFlatBindingDirective,\n MultiSelectTreeHierarchyBindingDirective,\n DropDownTreesExpandDirective,\n NodeTemplateDirective,\n MultiSelectTreeSummaryTagDirective], imports: [SharedModule, TreeViewModule], exports: [DropDownTreeComponent,\n MultiSelectTreeComponent,\n DropDownTreeFlatBindingDirective,\n DropDownTreeHierarchyBindingDirective,\n MultiSelectTreeFlatBindingDirective,\n MultiSelectTreeHierarchyBindingDirective,\n DropDownTreesExpandDirective,\n NodeTemplateDirective,\n MultiSelectTreeSummaryTagDirective, SharedDirectivesModule] });\nDropDownTreesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, imports: [[SharedModule, TreeViewModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownTreesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DROPDOWNTREE_DIRECTIVES],\n exports: [DROPDOWNTREE_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule, TreeViewModule]\n }]\n }] });\n\n/**\n * A directive which configures the MultiSelect to show one single summary tag for all selected data items.\n * When a number is provided, the summary tag is displayed after the given amount of data items are selected\n * ([more information and examples]({% slug summarytagmode_multiselect %})).\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass SummaryTagDirective {\n constructor(multiSelectComponent) {\n this.multiSelectComponent = multiSelectComponent;\n /**\n * A numeric value that indicates the number of selected data items after which the summary tag will appear.\n */\n this.showAfter = 0;\n this.createTagMapper();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.showAfter)) {\n this.createTagMapper();\n this.multiSelectComponent.onTagMapperChange();\n }\n }\n createTagMapper() {\n const showAfter = parseNumber(this.showAfter);\n this.multiSelectComponent.tagMapper = (tags) => {\n if (tags.length > showAfter) {\n let result;\n result = tags.slice(0, showAfter);\n result.push(tags.slice(showAfter, tags.length));\n return result;\n }\n else {\n return tags;\n }\n };\n }\n}\nSummaryTagDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SummaryTagDirective, deps: [{ token: MultiSelectComponent }], target: i0.ɵɵFactoryTarget.Directive });\nSummaryTagDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: SummaryTagDirective, selector: \"[kendoMultiSelectSummaryTag]\", inputs: { showAfter: [\"kendoMultiSelectSummaryTag\", \"showAfter\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SummaryTagDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoMultiSelectSummaryTag]'\n }]\n }], ctorParameters: function () { return [{ type: MultiSelectComponent }]; }, propDecorators: { showAfter: [{\n type: Input,\n args: ['kendoMultiSelectSummaryTag']\n }] } });\n\nconst AUTOCOMPLETE_DIRECTIVES = [\n AutoCompleteComponent\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `AutoCompleteComponent`—The AutoComplete component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n */\nclass AutoCompleteModule {\n}\nAutoCompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAutoCompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, declarations: [AutoCompleteComponent], imports: [SharedModule], exports: [AutoCompleteComponent, SharedDirectivesModule] });\nAutoCompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AutoCompleteModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [AUTOCOMPLETE_DIRECTIVES],\n exports: [AUTOCOMPLETE_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule]\n }]\n }] });\n\nconst COMBOBOX_DIRECTIVES = [\n ComboBoxComponent,\n MultiColumnComboBoxComponent,\n ComboBoxColumnComponent,\n ColumnHeaderTemplateDirective,\n ColumnCellTemplateDirective\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ComboBoxComponent`—The ComboBox component class.\n * - `MultiColumnComboBoxComponent`—The MultiColumnComboBox component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `ColumnHeaderTemplateDirective`—The column header template directive.\n * - `ColumnCellTemplateDirective`—The column cell template directive.\n */\nclass ComboBoxModule {\n}\nComboBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nComboBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, declarations: [ComboBoxComponent,\n MultiColumnComboBoxComponent,\n ComboBoxColumnComponent,\n ColumnHeaderTemplateDirective,\n ColumnCellTemplateDirective], imports: [SharedModule], exports: [ComboBoxComponent,\n MultiColumnComboBoxComponent,\n ComboBoxColumnComponent,\n ColumnHeaderTemplateDirective,\n ColumnCellTemplateDirective, SharedDirectivesModule] });\nComboBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }], imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ComboBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMBOBOX_DIRECTIVES],\n exports: [COMBOBOX_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule],\n providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]\n }]\n }] });\n\nconst DROPDOWNLIST_DIRECTIVES = [\n DropDownListComponent\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `DropDownListComponent`—The DropDownList component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `ValueTemplateDirective`—The value template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n */\nclass DropDownListModule {\n}\nDropDownListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, declarations: [DropDownListComponent], imports: [SharedModule], exports: [DropDownListComponent, SharedDirectivesModule] });\nDropDownListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownListModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DROPDOWNLIST_DIRECTIVES],\n exports: [DROPDOWNLIST_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule]\n }]\n }] });\n\nconst MULTISELECT_DIRECTIVES = [\n MultiSelectComponent,\n SummaryTagDirective,\n CustomItemTemplateDirective\n];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `MultiSelectComponent`—The MultiSelect component class.\n * - `SummaryTagDirective`—The MultiSelect summary tag directive.\n * - `ItemTemplateDirective`—The item template directive.\n * - `CustomItemTemplateDirective`—The custom item template directive.\n * - `TagTemplateDirective`—The tag template directive.\n * - `SummaryTagTemplateDirective`—The summary tag template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The no-data template directive.\n */\nclass MultiSelectModule {\n}\nMultiSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMultiSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, declarations: [MultiSelectComponent,\n SummaryTagDirective,\n CustomItemTemplateDirective], imports: [SharedModule], exports: [MultiSelectComponent,\n SummaryTagDirective,\n CustomItemTemplateDirective, SharedDirectivesModule] });\nMultiSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }], imports: [[SharedModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: MultiSelectModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [MULTISELECT_DIRECTIVES],\n exports: [MULTISELECT_DIRECTIVES, SharedDirectivesModule],\n imports: [SharedModule],\n providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Dropdowns components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Dropdowns module\n * import { DropDownsModule } from '@progress/kendo-angular-dropdowns';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare the app component\n * imports: [BrowserModule, DropDownsModule], // import the Dropdowns module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass DropDownsModule {\n}\nDropDownsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropDownsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, exports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule] });\nDropDownsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, imports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropDownsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [AutoCompleteModule, ComboBoxModule, DropDownListModule, MultiSelectModule, DropDownTreesModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutoCompleteComponent, AutoCompleteModule, CheckAllDirective, CheckDirective, ColumnCellTemplateDirective, ColumnHeaderTemplateDirective, ComboBoxColumnComponent, ComboBoxComponent, ComboBoxModule, CustomItemTemplateDirective, CustomMessagesComponent, DropDownListComponent, DropDownListModule, DropDownTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, DropDownTreesExpandDirective, DropDownTreesModule, DropDownsModule, FilterDirective, FilterInputDirective, FilterableComponent, FixedGroupTemplateDirective, FooterTemplateDirective, GroupTagTemplateDirective, GroupTemplateDirective, HeaderTemplateDirective, ItemTemplateDirective, ListComponent, ListItemDirective, LocalizedMessagesDirective, MultiColumnComboBoxComponent, MultiSelectComponent, MultiSelectModule, MultiSelectTreeComponent, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, MultiSelectTreeSummaryTagDirective, NoDataTemplateDirective, NodeTemplateDirective, PreventableEvent, RemoveTagEvent, SearchBarComponent, SelectableDirective, SharedDirectivesModule, SharedModule, SummaryTagDirective, TagListComponent, TagTemplateDirective, TemplateContextDirective, ValueTemplateDirective };\n\n","import { not } from '../util/not';\nimport { filter } from './filter';\nexport function partition(predicate, thisArg) {\n return (source) => [filter(predicate, thisArg)(source), filter(not(predicate, thisArg))(source)];\n}\n","// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) → ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) → OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) → OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) → OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union) → OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union) → OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union) → OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: () → Object\n // Turn ordered map into a plain object.\n toObject: function() {\n var result = {};\n this.forEach(function(key, value) { result[key] = value; });\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union) → OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nexport default OrderedMap;\n","import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (let i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos;\n let childA = a.child(i), childB = b.child(i);\n if (childA == childB) {\n pos += childA.nodeSize;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return pos;\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++;\n return pos;\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null)\n return inner;\n }\n pos += childA.nodeSize;\n }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : { a: posA, b: posB };\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size;\n posB -= size;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return { a: posA, b: posB };\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++;\n posA--;\n posB--;\n }\n return { a: posA, b: posB };\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner)\n return inner;\n }\n posA -= size;\n posB -= size;\n }\n}\n\n/**\nA fragment represents a node's collection of child nodes.\n\nLike nodes, fragments are persistent data structures, and you\nshould not mutate them or their content. Rather, you create new\ninstances whenever needed. The API tries to make this easy.\n*/\nclass Fragment {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n content, size) {\n this.content = content;\n this.size = size || 0;\n if (size == null)\n for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize;\n }\n /**\n Invoke a callback for all descendant nodes between the given two\n positions (relative to start of this fragment). Doesn't descend\n into a node when the callback returns `false`.\n */\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n let start = pos + 1;\n child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n }\n pos = end;\n }\n }\n /**\n Call the given callback for every descendant node. `pos` will be\n relative to the start of the fragment. The callback may return\n `false` to prevent traversal of a given node's children.\n */\n descendants(f) {\n this.nodesBetween(0, this.size, f);\n }\n /**\n Extract the text between `from` and `to`. See the same method on\n [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n */\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", separated = true;\n this.nodesBetween(from, to, (node, pos) => {\n if (node.isText) {\n text += node.text.slice(Math.max(from, pos) - pos, to - pos);\n separated = !blockSeparator;\n }\n else if (node.isLeaf) {\n if (leafText) {\n text += typeof leafText === \"function\" ? leafText(node) : leafText;\n }\n else if (node.type.spec.leafText) {\n text += node.type.spec.leafText(node);\n }\n separated = !blockSeparator;\n }\n else if (!separated && node.isBlock) {\n text += blockSeparator;\n separated = true;\n }\n }, 0);\n return text;\n }\n /**\n Create a new fragment containing the combined content of this\n fragment and the other.\n */\n append(other) {\n if (!other.size)\n return this;\n if (!this.size)\n return other;\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++)\n content.push(other.content[i]);\n return new Fragment(content, this.size + other.size);\n }\n /**\n Cut out the sub-fragment between the two given positions.\n */\n cut(from, to = this.size) {\n if (from == 0 && to == this.size)\n return this;\n let result = [], size = 0;\n if (to > from)\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n }\n return new Fragment(result, size);\n }\n /**\n @internal\n */\n cutByIndex(from, to) {\n if (from == to)\n return Fragment.empty;\n if (from == 0 && to == this.content.length)\n return this;\n return new Fragment(this.content.slice(from, to));\n }\n /**\n Create a new fragment in which the node at the given index is\n replaced by the given node.\n */\n replaceChild(index, node) {\n let current = this.content[index];\n if (current == node)\n return this;\n let copy = this.content.slice();\n let size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size);\n }\n /**\n Create a new fragment by prepending the given node to this\n fragment.\n */\n addToStart(node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize);\n }\n /**\n Create a new fragment by appending the given node to this\n fragment.\n */\n addToEnd(node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize);\n }\n /**\n Compare this fragment to another one.\n */\n eq(other) {\n if (this.content.length != other.content.length)\n return false;\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i]))\n return false;\n return true;\n }\n /**\n The first child of the fragment, or `null` if it is empty.\n */\n get firstChild() { return this.content.length ? this.content[0] : null; }\n /**\n The last child of the fragment, or `null` if it is empty.\n */\n get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null; }\n /**\n The number of child nodes in this fragment.\n */\n get childCount() { return this.content.length; }\n /**\n Get the child node at the given index. Raise an error when the\n index is out of range.\n */\n child(index) {\n let found = this.content[index];\n if (!found)\n throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n return found;\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content[index] || null;\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n }\n /**\n Find the first position at which this fragment and another\n fragment differ, or `null` if they are the same.\n */\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos);\n }\n /**\n Find the first position, searching from the end, at which this\n fragment and the given fragment differ, or `null` if they are\n the same. Since this position will not be the same in both\n nodes, an object with two separate positions is returned.\n */\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos);\n }\n /**\n Find the index and inner offset corresponding to a given relative\n position in this fragment. The result object will be reused\n (overwritten) the next time the function is called. (Not public.)\n */\n findIndex(pos, round = -1) {\n if (pos == 0)\n return retIndex(0, pos);\n if (pos == this.size)\n return retIndex(this.content.length, pos);\n if (pos > this.size || pos < 0)\n throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n for (let i = 0, curPos = 0;; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos || round > 0)\n return retIndex(i + 1, end);\n return retIndex(i, curPos);\n }\n curPos = end;\n }\n }\n /**\n Return a debugging string that describes this fragment.\n */\n toString() { return \"<\" + this.toStringInner() + \">\"; }\n /**\n @internal\n */\n toStringInner() { return this.content.join(\", \"); }\n /**\n Create a JSON-serializeable representation of this fragment.\n */\n toJSON() {\n return this.content.length ? this.content.map(n => n.toJSON()) : null;\n }\n /**\n Deserialize a fragment from its JSON representation.\n */\n static fromJSON(schema, value) {\n if (!value)\n return Fragment.empty;\n if (!Array.isArray(value))\n throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n return new Fragment(value.map(schema.nodeFromJSON));\n }\n /**\n Build a fragment from an array of nodes. Ensures that adjacent\n text nodes with the same marks are joined together.\n */\n static fromArray(array) {\n if (!array.length)\n return Fragment.empty;\n let joined, size = 0;\n for (let i = 0; i < array.length; i++) {\n let node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined)\n joined = array.slice(0, i);\n joined[joined.length - 1] = node\n .withText(joined[joined.length - 1].text + node.text);\n }\n else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size);\n }\n /**\n Create a fragment from something that can be interpreted as a\n set of nodes. For `null`, it returns the empty fragment. For a\n fragment, the fragment itself. For a node or array of nodes, a\n fragment containing those nodes.\n */\n static from(nodes) {\n if (!nodes)\n return Fragment.empty;\n if (nodes instanceof Fragment)\n return nodes;\n if (Array.isArray(nodes))\n return this.fromArray(nodes);\n if (nodes.attrs)\n return new Fragment([nodes], nodes.nodeSize);\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n }\n}\n/**\nAn empty fragment. Intended to be reused whenever a node doesn't\ncontain anything (rather than allocating a new empty fragment for\neach leaf node).\n*/\nFragment.empty = new Fragment([], 0);\nconst found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found;\n}\n\nfunction compareDeep(a, b) {\n if (a === b)\n return true;\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\"))\n return false;\n let array = Array.isArray(a);\n if (Array.isArray(b) != array)\n return false;\n if (array) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compareDeep(a[i], b[i]))\n return false;\n }\n else {\n for (let p in a)\n if (!(p in b) || !compareDeep(a[p], b[p]))\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n }\n return true;\n}\n\n/**\nA mark is a piece of information that can be attached to a node,\nsuch as it being emphasized, in code font, or a link. It has a\ntype and optionally a set of attributes that provide further\ninformation (such as the target of the link). Marks are created\nthrough a `Schema`, which controls which types exist and which\nattributes they have.\n*/\nclass Mark {\n /**\n @internal\n */\n constructor(\n /**\n The type of this mark.\n */\n type, \n /**\n The attributes associated with this mark.\n */\n attrs) {\n this.type = type;\n this.attrs = attrs;\n }\n /**\n Given a set of marks, create a new set which contains this one as\n well, in the right position. If this mark is already in the set,\n the set itself is returned. If any marks that are set to be\n [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n those are replaced by this one.\n */\n addToSet(set) {\n let copy, placed = false;\n for (let i = 0; i < set.length; i++) {\n let other = set[i];\n if (this.eq(other))\n return set;\n if (this.type.excludes(other.type)) {\n if (!copy)\n copy = set.slice(0, i);\n }\n else if (other.type.excludes(this.type)) {\n return set;\n }\n else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy)\n copy = set.slice(0, i);\n copy.push(this);\n placed = true;\n }\n if (copy)\n copy.push(other);\n }\n }\n if (!copy)\n copy = set.slice();\n if (!placed)\n copy.push(this);\n return copy;\n }\n /**\n Remove this mark from the given set, returning a new set. If this\n mark is not in the set, the set itself is returned.\n */\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1));\n return set;\n }\n /**\n Test whether this mark is in the given set of marks.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return true;\n return false;\n }\n /**\n Test whether this mark has the same type and attributes as\n another mark.\n */\n eq(other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs));\n }\n /**\n Convert this mark to a JSON-serializeable representation.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n return obj;\n }\n /**\n Deserialize a mark from JSON.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Mark.fromJSON\");\n let type = schema.marks[json.type];\n if (!type)\n throw new RangeError(`There is no mark type ${json.type} in this schema`);\n return type.create(json.attrs);\n }\n /**\n Test whether two sets of marks are identical.\n */\n static sameSet(a, b) {\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i]))\n return false;\n return true;\n }\n /**\n Create a properly sorted mark set from null, a single mark, or an\n unsorted array of marks.\n */\n static setFrom(marks) {\n if (!marks || Array.isArray(marks) && marks.length == 0)\n return Mark.none;\n if (marks instanceof Mark)\n return [marks];\n let copy = marks.slice();\n copy.sort((a, b) => a.type.rank - b.type.rank);\n return copy;\n }\n}\n/**\nThe empty set of marks.\n*/\nMark.none = [];\n\n/**\nError type raised by [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) when\ngiven an invalid replacement.\n*/\nclass ReplaceError extends Error {\n}\n/*\nReplaceError = function(this: any, message: string) {\n let err = Error.call(this, message)\n ;(err as any).__proto__ = ReplaceError.prototype\n return err\n} as any\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n*/\n/**\nA slice represents a piece cut out of a larger document. It\nstores not only a fragment, but also the depth up to which nodes on\nboth side are ‘open’ (cut through).\n*/\nclass Slice {\n /**\n Create a slice. When specifying a non-zero open depth, you must\n make sure that there are nodes of at least that depth at the\n appropriate side of the fragment—i.e. if the fragment is an\n empty paragraph node, `openStart` and `openEnd` can't be greater\n than 1.\n \n It is not necessary for the content of open nodes to conform to\n the schema's content constraints, though it should be a valid\n start/end/middle for such a node, depending on which sides are\n open.\n */\n constructor(\n /**\n The slice's content.\n */\n content, \n /**\n The open depth at the start of the fragment.\n */\n openStart, \n /**\n The open depth at the end.\n */\n openEnd) {\n this.content = content;\n this.openStart = openStart;\n this.openEnd = openEnd;\n }\n /**\n The size this slice would add when inserted into a document.\n */\n get size() {\n return this.content.size - this.openStart - this.openEnd;\n }\n /**\n @internal\n */\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment);\n return content && new Slice(content, this.openStart, this.openEnd);\n }\n /**\n @internal\n */\n removeBetween(from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n }\n /**\n Tests whether this slice is equal to another slice.\n */\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n }\n /**\n @internal\n */\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n }\n /**\n Convert a slice to a JSON-serializable representation.\n */\n toJSON() {\n if (!this.content.size)\n return null;\n let json = { content: this.content.toJSON() };\n if (this.openStart > 0)\n json.openStart = this.openStart;\n if (this.openEnd > 0)\n json.openEnd = this.openEnd;\n return json;\n }\n /**\n Deserialize a slice from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n return Slice.empty;\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\");\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n }\n /**\n Create a slice from a fragment by taking the maximum possible\n open value on both side of the fragment.\n */\n static maxOpen(fragment, openIsolating = true) {\n let openStart = 0, openEnd = 0;\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n openStart++;\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n openEnd++;\n return new Slice(fragment, openStart, openEnd);\n }\n}\n/**\nThe empty slice.\n*/\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText)\n throw new RangeError(\"Removing non-flat range\");\n return content.cut(0, from).append(content.cut(to));\n }\n if (index != indexTo)\n throw new RangeError(\"Removing non-flat range\");\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, parent) {\n let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert))\n return null;\n return content.cut(0, dist).append(insert).append(content.cut(dist));\n }\n let inner = insertInto(child.content, dist - offset - 1, insert);\n return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\");\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\");\n return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner));\n }\n else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth));\n }\n else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n let parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n }\n else {\n let { start, end } = prepareSliceForReplace(slice, $from);\n return close(node, replaceThreeWay($from, start, end, $to, depth));\n }\n}\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node;\n}\nfunction addNode(child, target) {\n let last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text);\n else\n target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth);\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n }\n else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (let i = startIndex; i < endIndex; i++)\n addNode(node.child(i), target);\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n if (!node.type.validContent(content))\n throw new ReplaceError(\"Invalid content for node \" + node.type.name);\n return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n let content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n }\n else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n addRange($start, $end, depth, content);\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n let content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n let node = parent.copy(slice.content);\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node));\n return { start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra) };\n}\n\n/**\nYou can [_resolve_](https://prosemirror.net/docs/ref/#model.Node.resolve) a position to get more\ninformation about it. Objects of this class represent such a\nresolved position, providing various pieces of context\ninformation, and some helper methods.\n\nThroughout this interface, methods that take an optional `depth`\nparameter will interpret undefined as `this.depth` and negative\nnumbers as `this.depth + value`.\n*/\nclass ResolvedPos {\n /**\n @internal\n */\n constructor(\n /**\n The position that was resolved.\n */\n pos, \n /**\n @internal\n */\n path, \n /**\n The offset this position has into its parent node.\n */\n parentOffset) {\n this.pos = pos;\n this.path = path;\n this.parentOffset = parentOffset;\n this.depth = path.length / 3 - 1;\n }\n /**\n @internal\n */\n resolveDepth(val) {\n if (val == null)\n return this.depth;\n if (val < 0)\n return this.depth + val;\n return val;\n }\n /**\n The parent node that the position points into. Note that even if\n a position points into a text node, that node is not considered\n the parent—text nodes are ‘flat’ in this model, and have no content.\n */\n get parent() { return this.node(this.depth); }\n /**\n The root node in which the position was resolved.\n */\n get doc() { return this.node(0); }\n /**\n The ancestor node at the given level. `p.node(p.depth)` is the\n same as `p.parent`.\n */\n node(depth) { return this.path[this.resolveDepth(depth) * 3]; }\n /**\n The index into the ancestor at the given level. If this points\n at the 3rd node in the 2nd paragraph on the top level, for\n example, `p.index(0)` is 1 and `p.index(1)` is 2.\n */\n index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1]; }\n /**\n The index pointing after this position into the ancestor at the\n given level.\n */\n indexAfter(depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n }\n /**\n The (absolute) position at the start of the node at the given\n level.\n */\n start(depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n }\n /**\n The (absolute) position at the end of the node at the given\n level.\n */\n end(depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size;\n }\n /**\n The (absolute) position directly before the wrapping node at the\n given level, or, when `depth` is `this.depth + 1`, the original\n position.\n */\n before(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position before the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n }\n /**\n The (absolute) position directly after the wrapping node at the\n given level, or the original position when `depth` is `this.depth + 1`.\n */\n after(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position after the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n }\n /**\n When this position points into a text node, this returns the\n distance between the position and the start of the text node.\n Will be zero for positions that point between nodes.\n */\n get textOffset() { return this.pos - this.path[this.path.length - 1]; }\n /**\n Get the node directly after the position, if any. If the position\n points into a text node, only the part of that node after the\n position is returned.\n */\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount)\n return null;\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child;\n }\n /**\n Get the node directly before the position, if any. If the\n position points into a text node, only the part of that node\n before the position is returned.\n */\n get nodeBefore() {\n let index = this.index(this.depth);\n let dOff = this.pos - this.path[this.path.length - 1];\n if (dOff)\n return this.parent.child(index).cut(0, dOff);\n return index == 0 ? null : this.parent.child(index - 1);\n }\n /**\n Get the position at the given index in the parent node at the\n given depth (which defaults to `this.depth`).\n */\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth);\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (let i = 0; i < index; i++)\n pos += node.child(i).nodeSize;\n return pos;\n }\n /**\n Get the marks at this position, factoring in the surrounding\n marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n position is at the start of a non-empty node, the marks of the\n node after it (if any) are returned.\n */\n marks() {\n let parent = this.parent, index = this.index();\n // In an empty parent, return the empty array\n if (parent.content.size == 0)\n return Mark.none;\n // When inside a text node, just return the text node's marks\n if (this.textOffset)\n return parent.child(index).marks;\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) {\n let tmp = main;\n main = other;\n other = tmp;\n }\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n let marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n Get the marks after the current position, if any, except those\n that are non-inclusive and not present at position `$end`. This\n is mostly useful for getting the set of marks to preserve after a\n deletion. Will return `null` if this position is at the end of\n its parent node or its parent node isn't a textblock (in which\n case no marks should be preserved).\n */\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline)\n return null;\n let marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n The depth up to which this position and the given (non-resolved)\n position share the same parent nodes.\n */\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos)\n return depth;\n return 0;\n }\n /**\n Returns a range based on the place where this position and the\n given position diverge around block content. If both point into\n the same textblock, for example, a range around that textblock\n will be returned. If they point into different blocks, the range\n around those blocks in their shared ancestor is returned. You can\n pass in an optional predicate that will be called with a parent\n node to see if a range into that parent is acceptable.\n */\n blockRange(other = this, pred) {\n if (other.pos < this.pos)\n return other.blockRange(this);\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d);\n return null;\n }\n /**\n Query whether the given position shares the same parent node.\n */\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset;\n }\n /**\n Return the greater of this and the given position.\n */\n max(other) {\n return other.pos > this.pos ? other : this;\n }\n /**\n Return the smaller of this and the given position.\n */\n min(other) {\n return other.pos < this.pos ? other : this;\n }\n /**\n @internal\n */\n toString() {\n let str = \"\";\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n return str + \":\" + this.parentOffset;\n }\n /**\n @internal\n */\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size))\n throw new RangeError(\"Position \" + pos + \" out of range\");\n let path = [];\n let start = 0, parentOffset = pos;\n for (let node = doc;;) {\n let { index, offset } = node.content.findIndex(parentOffset);\n let rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem)\n break;\n node = node.child(index);\n if (node.isText)\n break;\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset);\n }\n /**\n @internal\n */\n static resolveCached(doc, pos) {\n for (let i = 0; i < resolveCache.length; i++) {\n let cached = resolveCache[i];\n if (cached.pos == pos && cached.doc == doc)\n return cached;\n }\n let result = resolveCache[resolveCachePos] = ResolvedPos.resolve(doc, pos);\n resolveCachePos = (resolveCachePos + 1) % resolveCacheSize;\n return result;\n }\n}\nlet resolveCache = [], resolveCachePos = 0, resolveCacheSize = 12;\n/**\nRepresents a flat range of content, i.e. one that starts and\nends in the same node.\n*/\nclass NodeRange {\n /**\n Construct a node range. `$from` and `$to` should point into the\n same node until at least the given `depth`, since a node range\n denotes an adjacent set of nodes in a single parent node.\n */\n constructor(\n /**\n A resolved position along the start of the content. May have a\n `depth` greater than this object's `depth` property, since\n these are the positions that were used to compute the range,\n not re-resolved positions directly at its boundaries.\n */\n $from, \n /**\n A position along the end of the content. See\n caveat for [`$from`](https://prosemirror.net/docs/ref/#model.NodeRange.$from).\n */\n $to, \n /**\n The depth of the node that this range points into.\n */\n depth) {\n this.$from = $from;\n this.$to = $to;\n this.depth = depth;\n }\n /**\n The position at the start of the range.\n */\n get start() { return this.$from.before(this.depth + 1); }\n /**\n The position at the end of the range.\n */\n get end() { return this.$to.after(this.depth + 1); }\n /**\n The parent node that the range points into.\n */\n get parent() { return this.$from.node(this.depth); }\n /**\n The start index of the range in the parent node.\n */\n get startIndex() { return this.$from.index(this.depth); }\n /**\n The end index of the range in the parent node.\n */\n get endIndex() { return this.$to.indexAfter(this.depth); }\n}\n\nconst emptyAttrs = Object.create(null);\n/**\nThis class represents a node in the tree that makes up a\nProseMirror document. So a document is an instance of `Node`, with\nchildren that are also instances of `Node`.\n\nNodes are persistent data structures. Instead of changing them, you\ncreate new ones with the content you want. Old ones keep pointing\nat the old document shape. This is made cheaper by sharing\nstructure between the old and new data as much as possible, which a\ntree shape like this (without back pointers) makes easy.\n\n**Do not** directly mutate the properties of a `Node` object. See\n[the guide](/docs/guide/#doc) for more information.\n*/\nclass Node {\n /**\n @internal\n */\n constructor(\n /**\n The type of node that this is.\n */\n type, \n /**\n An object mapping attribute names to values. The kind of\n attributes allowed and required are\n [determined](https://prosemirror.net/docs/ref/#model.NodeSpec.attrs) by the node type.\n */\n attrs, \n // A fragment holding the node's children.\n content, \n /**\n The marks (things like whether it is emphasized or part of a\n link) applied to this node.\n */\n marks = Mark.none) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.content = content || Fragment.empty;\n }\n /**\n The size of this node, as defined by the integer-based [indexing\n scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n amount of characters. For other leaf nodes, it is one. For\n non-leaf nodes, it is the size of the content plus two (the\n start and end token).\n */\n get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size; }\n /**\n The number of children that the node has.\n */\n get childCount() { return this.content.childCount; }\n /**\n Get the child node at the given index. Raises an error when the\n index is out of range.\n */\n child(index) { return this.content.child(index); }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) { return this.content.maybeChild(index); }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) { this.content.forEach(f); }\n /**\n Invoke a callback for all descendant nodes recursively between\n the given two positions that are relative to start of this\n node's content. The callback is invoked with the node, its\n parent-relative position, its parent node, and its child index.\n When the callback returns false for a given node, that node's\n children will not be recursed over. The last parameter can be\n used to specify a starting position to count from.\n */\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this);\n }\n /**\n Call the given callback for every descendant node. Doesn't\n descend into a node when the callback returns `false`.\n */\n descendants(f) {\n this.nodesBetween(0, this.content.size, f);\n }\n /**\n Concatenates all the text nodes found in this fragment and its\n children.\n */\n get textContent() {\n return (this.isLeaf && this.type.spec.leafText)\n ? this.type.spec.leafText(this)\n : this.textBetween(0, this.content.size, \"\");\n }\n /**\n Get all text between positions `from` and `to`. When\n `blockSeparator` is given, it will be inserted to separate text\n from different block nodes. If `leafText` is given, it'll be\n inserted for every non-text leaf node encountered, otherwise\n [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec^leafText) will be used.\n */\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText);\n }\n /**\n Returns this node's first child, or `null` if there are no\n children.\n */\n get firstChild() { return this.content.firstChild; }\n /**\n Returns this node's last child, or `null` if there are no\n children.\n */\n get lastChild() { return this.content.lastChild; }\n /**\n Test whether two nodes represent the same piece of document.\n */\n eq(other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content));\n }\n /**\n Compare the markup (type, attributes, and marks) of this node to\n those of another. Returns `true` if both have the same markup.\n */\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks);\n }\n /**\n Check whether this node's markup correspond to the given type,\n attributes, and marks.\n */\n hasMarkup(type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none);\n }\n /**\n Create a new node with the same markup as this node, containing\n the given content (or empty, if no content is given).\n */\n copy(content = null) {\n if (content == this.content)\n return this;\n return new Node(this.type, this.attrs, content, this.marks);\n }\n /**\n Create a copy of this node, with the given set of marks instead\n of the node's own marks.\n */\n mark(marks) {\n return marks == this.marks ? this : new Node(this.type, this.attrs, this.content, marks);\n }\n /**\n Create a copy of this node with only the content between the\n given positions. If `to` is not given, it defaults to the end of\n the node.\n */\n cut(from, to = this.content.size) {\n if (from == 0 && to == this.content.size)\n return this;\n return this.copy(this.content.cut(from, to));\n }\n /**\n Cut out the part of the document between the given positions, and\n return it as a `Slice` object.\n */\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to)\n return Slice.empty;\n let $from = this.resolve(from), $to = this.resolve(to);\n let depth = includeParents ? 0 : $from.sharedDepth(to);\n let start = $from.start(depth), node = $from.node(depth);\n let content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth);\n }\n /**\n Replace the part of the document between the given positions with\n the given slice. The slice must 'fit', meaning its open sides\n must be able to connect to the surrounding content, and its\n content nodes must be valid children for the node they are placed\n into. If any of this is violated, an error of type\n [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n */\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice);\n }\n /**\n Find the node directly after the given position.\n */\n nodeAt(pos) {\n for (let node = this;;) {\n let { index, offset } = node.content.findIndex(pos);\n node = node.maybeChild(index);\n if (!node)\n return null;\n if (offset == pos || node.isText)\n return node;\n pos -= offset + 1;\n }\n }\n /**\n Find the (direct) child node after the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childAfter(pos) {\n let { index, offset } = this.content.findIndex(pos);\n return { node: this.content.maybeChild(index), index, offset };\n }\n /**\n Find the (direct) child node before the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childBefore(pos) {\n if (pos == 0)\n return { node: null, index: 0, offset: 0 };\n let { index, offset } = this.content.findIndex(pos);\n if (offset < pos)\n return { node: this.content.child(index), index, offset };\n let node = this.content.child(index - 1);\n return { node, index: index - 1, offset: offset - node.nodeSize };\n }\n /**\n Resolve the given position in the document, returning an\n [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n */\n resolve(pos) { return ResolvedPos.resolveCached(this, pos); }\n /**\n @internal\n */\n resolveNoCache(pos) { return ResolvedPos.resolve(this, pos); }\n /**\n Test whether a given mark or mark type occurs in this document\n between the two given positions.\n */\n rangeHasMark(from, to, type) {\n let found = false;\n if (to > from)\n this.nodesBetween(from, to, node => {\n if (type.isInSet(node.marks))\n found = true;\n return !found;\n });\n return found;\n }\n /**\n True when this is a block (non-inline node)\n */\n get isBlock() { return this.type.isBlock; }\n /**\n True when this is a textblock node, a block node with inline\n content.\n */\n get isTextblock() { return this.type.isTextblock; }\n /**\n True when this node allows inline content.\n */\n get inlineContent() { return this.type.inlineContent; }\n /**\n True when this is an inline node (a text node or a node that can\n appear among text).\n */\n get isInline() { return this.type.isInline; }\n /**\n True when this is a text node.\n */\n get isText() { return this.type.isText; }\n /**\n True when this is a leaf node.\n */\n get isLeaf() { return this.type.isLeaf; }\n /**\n True when this is an atom, i.e. when it does not have directly\n editable content. This is usually the same as `isLeaf`, but can\n be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n on a node's spec (typically used when the node is displayed as\n an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n */\n get isAtom() { return this.type.isAtom; }\n /**\n Return a string representation of this node for debugging\n purposes.\n */\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n let name = this.type.name;\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\";\n return wrapMarks(this.marks, name);\n }\n /**\n Get the content match in this node at the given index.\n */\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match)\n throw new Error(\"Called contentMatchAt on a node with invalid content\");\n return match;\n }\n /**\n Test whether replacing the range between `from` and `to` (by\n child index) with the given replacement fragment (which defaults\n to the empty fragment) would leave the node's content valid. You\n can optionally pass `start` and `end` indices into the\n replacement fragment.\n */\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n let two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd)\n return false;\n for (let i = start; i < end; i++)\n if (!this.type.allowsMarks(replacement.child(i).marks))\n return false;\n return true;\n }\n /**\n Test whether replacing the range `from` to `to` (by index) with\n a node of the given type would leave the node's content valid.\n */\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks))\n return false;\n let start = this.contentMatchAt(from).matchType(type);\n let end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false;\n }\n /**\n Test whether the given node's content could be appended to this\n node. If that node is empty, this will only return true if there\n is at least one node type that can appear in both nodes (to avoid\n merging completely incompatible nodes).\n */\n canAppend(other) {\n if (other.content.size)\n return this.canReplace(this.childCount, this.childCount, other.content);\n else\n return this.type.compatibleContent(other.type);\n }\n /**\n Check whether this node and its descendants conform to the\n schema, and raise error when they do not.\n */\n check() {\n if (!this.type.validContent(this.content))\n throw new RangeError(`Invalid content for node ${this.type.name}: ${this.content.toString().slice(0, 50)}`);\n let copy = Mark.none;\n for (let i = 0; i < this.marks.length; i++)\n copy = this.marks[i].addToSet(copy);\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`);\n this.content.forEach(node => node.check());\n }\n /**\n Return a JSON-serializeable representation of this node.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n if (this.content.size)\n obj.content = this.content.toJSON();\n if (this.marks.length)\n obj.marks = this.marks.map(n => n.toJSON());\n return obj;\n }\n /**\n Deserialize a node from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Node.fromJSON\");\n let marks = null;\n if (json.marks) {\n if (!Array.isArray(json.marks))\n throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\")\n throw new RangeError(\"Invalid text node in JSON\");\n return schema.text(json.text, marks);\n }\n let content = Fragment.fromJSON(schema, json.content);\n return schema.nodeType(json.type).create(json.attrs, content, marks);\n }\n}\nNode.prototype.text = undefined;\nclass TextNode extends Node {\n /**\n @internal\n */\n constructor(type, attrs, content, marks) {\n super(type, attrs, null, marks);\n if (!content)\n throw new RangeError(\"Empty text nodes are not allowed\");\n this.text = content;\n }\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n return wrapMarks(this.marks, JSON.stringify(this.text));\n }\n get textContent() { return this.text; }\n textBetween(from, to) { return this.text.slice(from, to); }\n get nodeSize() { return this.text.length; }\n mark(marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks);\n }\n withText(text) {\n if (text == this.text)\n return this;\n return new TextNode(this.type, this.attrs, text, this.marks);\n }\n cut(from = 0, to = this.text.length) {\n if (from == 0 && to == this.text.length)\n return this;\n return this.withText(this.text.slice(from, to));\n }\n eq(other) {\n return this.sameMarkup(other) && this.text == other.text;\n }\n toJSON() {\n let base = super.toJSON();\n base.text = this.text;\n return base;\n }\n}\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\";\n return str;\n}\n\n/**\nInstances of this class represent a match state of a node type's\n[content expression](https://prosemirror.net/docs/ref/#model.NodeSpec.content), and can be used to\nfind out whether further content matches here, and whether a given\nposition is a valid end of the node.\n*/\nclass ContentMatch {\n /**\n @internal\n */\n constructor(\n /**\n True when this match state represents a valid end of the node.\n */\n validEnd) {\n this.validEnd = validEnd;\n /**\n @internal\n */\n this.next = [];\n /**\n @internal\n */\n this.wrapCache = [];\n }\n /**\n @internal\n */\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes);\n if (stream.next == null)\n return ContentMatch.empty;\n let expr = parseExpr(stream);\n if (stream.next)\n stream.err(\"Unexpected trailing text\");\n let match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match;\n }\n /**\n Match a node type, returning a match after that node if\n successful.\n */\n matchType(type) {\n for (let i = 0; i < this.next.length; i++)\n if (this.next[i].type == type)\n return this.next[i].next;\n return null;\n }\n /**\n Try to match a fragment. Returns the resulting match when\n successful.\n */\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this;\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type);\n return cur;\n }\n /**\n @internal\n */\n get inlineContent() {\n return this.next.length && this.next[0].type.isInline;\n }\n /**\n Get the first matching node type at this match position that can\n be generated.\n */\n get defaultType() {\n for (let i = 0; i < this.next.length; i++) {\n let { type } = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs()))\n return type;\n }\n return null;\n }\n /**\n @internal\n */\n compatible(other) {\n for (let i = 0; i < this.next.length; i++)\n for (let j = 0; j < other.next.length; j++)\n if (this.next[i].type == other.next[j].type)\n return true;\n return false;\n }\n /**\n Try to match the given fragment, and if that fails, see if it can\n be made to match by inserting nodes in front of it. When\n successful, return a fragment of inserted nodes (which may be\n empty if nothing had to be inserted). When `toEnd` is true, only\n return a fragment if the resulting match goes to the end of the\n content expression.\n */\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this];\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map(tp => tp.createAndFill()));\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n let found = search(next, types.concat(type));\n if (found)\n return found;\n }\n }\n return null;\n }\n return search(this, []);\n }\n /**\n Find a set of wrapping node types that would allow a node of the\n given type to appear at this position. The result may be empty\n (when it fits directly) and will be null when no such wrapping\n exists.\n */\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target)\n return this.wrapCache[i + 1];\n let computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed;\n }\n /**\n @internal\n */\n computeWrapping(target) {\n let seen = Object.create(null), active = [{ match: this, type: null, via: null }];\n while (active.length) {\n let current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n let result = [];\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type);\n return result.reverse();\n }\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n active.push({ match: type.contentMatch, type, via: current });\n seen[type.name] = true;\n }\n }\n }\n return null;\n }\n /**\n The number of outgoing edges this node has in the finite\n automaton that describes the content expression.\n */\n get edgeCount() {\n return this.next.length;\n }\n /**\n Get the _n_​th outgoing edge from this node in the finite\n automaton that describes the content expression.\n */\n edge(n) {\n if (n >= this.next.length)\n throw new RangeError(`There's no ${n}th edge in this content match`);\n return this.next[n];\n }\n /**\n @internal\n */\n toString() {\n let seen = [];\n function scan(m) {\n seen.push(m);\n for (let i = 0; i < m.next.length; i++)\n if (seen.indexOf(m.next[i].next) == -1)\n scan(m.next[i].next);\n }\n scan(this);\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (let i = 0; i < m.next.length; i++)\n out += (i ? \", \" : \"\") + m.next[i].type.name + \"->\" + seen.indexOf(m.next[i].next);\n return out;\n }).join(\"\\n\");\n }\n}\n/**\n@internal\n*/\nContentMatch.empty = new ContentMatch(true);\nclass TokenStream {\n constructor(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\")\n this.tokens.pop();\n if (this.tokens[0] == \"\")\n this.tokens.shift();\n }\n get next() { return this.tokens[this.pos]; }\n eat(tok) { return this.next == tok && (this.pos++ || true); }\n err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\"); }\n}\nfunction parseExpr(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSeq(stream));\n } while (stream.eat(\"|\"));\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSubscript(stream));\n } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n expr = { type: \"plus\", expr };\n else if (stream.eat(\"*\"))\n expr = { type: \"star\", expr };\n else if (stream.eat(\"?\"))\n expr = { type: \"opt\", expr };\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr);\n else\n break;\n }\n return expr;\n}\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next))\n stream.err(\"Expected number, got '\" + stream.next + \"'\");\n let result = Number(stream.next);\n stream.pos++;\n return result;\n}\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\")\n max = parseNum(stream);\n else\n max = -1;\n }\n if (!stream.eat(\"}\"))\n stream.err(\"Unclosed braced range\");\n return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name];\n if (type)\n return [type];\n let result = [];\n for (let typeName in types) {\n let type = types[typeName];\n if (type.groups.indexOf(name) > -1)\n result.push(type);\n }\n if (result.length == 0)\n stream.err(\"No node type or group '\" + name + \"' found\");\n return result;\n}\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream);\n if (!stream.eat(\")\"))\n stream.err(\"Missing closing paren\");\n return expr;\n }\n else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map(type => {\n if (stream.inline == null)\n stream.inline = type.isInline;\n else if (stream.inline != type.isInline)\n stream.err(\"Mixing inline and block content\");\n return { type: \"name\", value: type };\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n }\n else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n/**\nConstruct an NFA from an expression as returned by the parser. The\nNFA is represented as an array of states, which are themselves\narrays of edges, which are `{term, to}` objects. The first state is\nthe entry state and the last node is the success state.\n\nNote that unlike typical NFAs, the edge ordering in this one is\nsignificant, in that it is used to contruct filler content when\nnecessary.\n*/\nfunction nfa(expr) {\n let nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa;\n function node() { return nfa.push([]) - 1; }\n function edge(from, to, term) {\n let edge = { term, to };\n nfa[from].push(edge);\n return edge;\n }\n function connect(edges, to) {\n edges.forEach(edge => edge.to = to);\n }\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), []);\n }\n else if (expr.type == \"seq\") {\n for (let i = 0;; i++) {\n let next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1)\n return next;\n connect(next, from = node());\n }\n }\n else if (expr.type == \"star\") {\n let loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"plus\") {\n let loop = node();\n connect(compile(expr.expr, from), loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from));\n }\n else if (expr.type == \"range\") {\n let cur = from;\n for (let i = 0; i < expr.min; i++) {\n let next = node();\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n }\n else {\n for (let i = expr.min; i < expr.max; i++) {\n let next = node();\n edge(cur, next);\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n }\n return [edge(cur)];\n }\n else if (expr.type == \"name\") {\n return [edge(from, undefined, expr.value)];\n }\n else {\n throw new Error(\"Unknown expr type\");\n }\n }\n}\nfunction cmp(a, b) { return b - a; }\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n let result = [];\n scan(node);\n return result.sort(cmp);\n function scan(node) {\n let edges = nfa[node];\n if (edges.length == 1 && !edges[0].term)\n return scan(edges[0].to);\n result.push(node);\n for (let i = 0; i < edges.length; i++) {\n let { term, to } = edges[i];\n if (!term && result.indexOf(to) == -1)\n scan(to);\n }\n }\n}\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n let labeled = Object.create(null);\n return explore(nullFrom(nfa, 0));\n function explore(states) {\n let out = [];\n states.forEach(node => {\n nfa[node].forEach(({ term, to }) => {\n if (!term)\n return;\n let set;\n for (let i = 0; i < out.length; i++)\n if (out[i][0] == term)\n set = out[i][1];\n nullFrom(nfa, to).forEach(node => {\n if (!set)\n out.push([term, set = []]);\n if (set.indexOf(node) == -1)\n set.push(node);\n });\n });\n });\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (let i = 0; i < out.length; i++) {\n let states = out[i][1].sort(cmp);\n state.next.push({ type: out[i][0], next: labeled[states.join(\",\")] || explore(states) });\n }\n return state;\n }\n}\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = [];\n for (let j = 0; j < state.next.length; j++) {\n let { type, next } = state.next[j];\n nodes.push(type.name);\n if (dead && !(type.isText || type.hasRequiredAttrs()))\n dead = false;\n if (work.indexOf(next) == -1)\n work.push(next);\n }\n if (dead)\n stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n let defaults = Object.create(null);\n for (let attrName in attrs) {\n let attr = attrs[attrName];\n if (!attr.hasDefault)\n return null;\n defaults[attrName] = attr.default;\n }\n return defaults;\n}\nfunction computeAttrs(attrs, value) {\n let built = Object.create(null);\n for (let name in attrs) {\n let given = value && value[name];\n if (given === undefined) {\n let attr = attrs[name];\n if (attr.hasDefault)\n given = attr.default;\n else\n throw new RangeError(\"No value supplied for attribute \" + name);\n }\n built[name] = given;\n }\n return built;\n}\nfunction initAttrs(attrs) {\n let result = Object.create(null);\n if (attrs)\n for (let name in attrs)\n result[name] = new Attribute(attrs[name]);\n return result;\n}\n/**\nNode types are objects allocated once per `Schema` and used to\n[tag](https://prosemirror.net/docs/ref/#model.Node.type) `Node` instances. They contain information\nabout the node type, such as its name and what kind of node it\nrepresents.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name the node type has in this schema.\n */\n name, \n /**\n A link back to the `Schema` the node type belongs to.\n */\n schema, \n /**\n The spec that this type is based on\n */\n spec) {\n this.name = name;\n this.schema = schema;\n this.spec = spec;\n /**\n The set of marks allowed in this node. `null` means all marks\n are allowed.\n */\n this.markSet = null;\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(spec.attrs);\n this.defaultAttrs = defaultAttrs(this.attrs);\n this.contentMatch = null;\n this.inlineContent = null;\n this.isBlock = !(spec.inline || name == \"text\");\n this.isText = name == \"text\";\n }\n /**\n True if this is an inline type.\n */\n get isInline() { return !this.isBlock; }\n /**\n True if this is a textblock type, a block that contains inline\n content.\n */\n get isTextblock() { return this.isBlock && this.inlineContent; }\n /**\n True for node types that allow no content.\n */\n get isLeaf() { return this.contentMatch == ContentMatch.empty; }\n /**\n True when this node is an atom, i.e. when it does not have\n directly editable content.\n */\n get isAtom() { return this.isLeaf || !!this.spec.atom; }\n /**\n The node type's [whitespace](https://prosemirror.net/docs/ref/#model.NodeSpec.whitespace) option.\n */\n get whitespace() {\n return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\");\n }\n /**\n Tells you whether this node type has any required attributes.\n */\n hasRequiredAttrs() {\n for (let n in this.attrs)\n if (this.attrs[n].isRequired)\n return true;\n return false;\n }\n /**\n Indicates whether this node allows some of the same content as\n the given node type.\n */\n compatibleContent(other) {\n return this == other || this.contentMatch.compatible(other.contentMatch);\n }\n /**\n @internal\n */\n computeAttrs(attrs) {\n if (!attrs && this.defaultAttrs)\n return this.defaultAttrs;\n else\n return computeAttrs(this.attrs, attrs);\n }\n /**\n Create a `Node` of this type. The given attributes are\n checked and defaulted (you can pass `null` to use the type's\n defaults entirely, if no required attributes exist). `content`\n may be a `Fragment`, a node, an array of nodes, or\n `null`. Similarly `marks` may be `null` to default to the empty\n set of marks.\n */\n create(attrs = null, content, marks) {\n if (this.isText)\n throw new Error(\"NodeType.create can't construct text nodes\");\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content\n against the node type's content restrictions, and throw an error\n if it doesn't match.\n */\n createChecked(attrs = null, content, marks) {\n content = Fragment.from(content);\n if (!this.validContent(content))\n throw new RangeError(\"Invalid content for node \" + this.name);\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but see if it is\n necessary to add nodes to the start or end of the given fragment\n to make it fit the node. If no fitting wrapping can be found,\n return null. Note that, due to the fact that required nodes can\n always be created, this will always succeed if you pass null or\n `Fragment.empty` as content.\n */\n createAndFill(attrs = null, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n let before = this.contentMatch.fillBefore(content);\n if (!before)\n return null;\n content = before.append(content);\n }\n let matched = this.contentMatch.matchFragment(content);\n let after = matched && matched.fillBefore(Fragment.empty, true);\n if (!after)\n return null;\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks));\n }\n /**\n Returns true if the given fragment is valid content for this node\n type with the given attributes.\n */\n validContent(content) {\n let result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd)\n return false;\n for (let i = 0; i < content.childCount; i++)\n if (!this.allowsMarks(content.child(i).marks))\n return false;\n return true;\n }\n /**\n Check whether the given mark type is allowed in this node.\n */\n allowsMarkType(markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1;\n }\n /**\n Test whether the given set of marks are allowed in this node.\n */\n allowsMarks(marks) {\n if (this.markSet == null)\n return true;\n for (let i = 0; i < marks.length; i++)\n if (!this.allowsMarkType(marks[i].type))\n return false;\n return true;\n }\n /**\n Removes the marks that are not allowed in this node from the given set.\n */\n allowedMarks(marks) {\n if (this.markSet == null)\n return marks;\n let copy;\n for (let i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy)\n copy = marks.slice(0, i);\n }\n else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.none;\n }\n /**\n @internal\n */\n static compile(nodes, schema) {\n let result = Object.create(null);\n nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec));\n let topType = schema.spec.topNode || \"doc\";\n if (!result[topType])\n throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\");\n if (!result.text)\n throw new RangeError(\"Every schema needs a 'text' type\");\n for (let _ in result.text.attrs)\n throw new RangeError(\"The text node type should not have attributes\");\n return result;\n }\n}\n// Attribute descriptors\nclass Attribute {\n constructor(options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n }\n get isRequired() {\n return !this.hasDefault;\n }\n}\n// Marks\n/**\nLike nodes, marks (which are associated with nodes to signify\nthings like emphasis or being part of a link) are\n[tagged](https://prosemirror.net/docs/ref/#model.Mark.type) with type objects, which are\ninstantiated once per `Schema`.\n*/\nclass MarkType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the mark type.\n */\n name, \n /**\n @internal\n */\n rank, \n /**\n The schema that this mark type instance is part of.\n */\n schema, \n /**\n The spec on which the type is based.\n */\n spec) {\n this.name = name;\n this.rank = rank;\n this.schema = schema;\n this.spec = spec;\n this.attrs = initAttrs(spec.attrs);\n this.excluded = null;\n let defaults = defaultAttrs(this.attrs);\n this.instance = defaults ? new Mark(this, defaults) : null;\n }\n /**\n Create a mark of this type. `attrs` may be `null` or an object\n containing only some of the mark's attributes. The others, if\n they have defaults, will be added.\n */\n create(attrs = null) {\n if (!attrs && this.instance)\n return this.instance;\n return new Mark(this, computeAttrs(this.attrs, attrs));\n }\n /**\n @internal\n */\n static compile(marks, schema) {\n let result = Object.create(null), rank = 0;\n marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec));\n return result;\n }\n /**\n When there is a mark of this type in the given set, a new set\n without it is returned. Otherwise, the input set is returned.\n */\n removeFromSet(set) {\n for (var i = 0; i < set.length; i++)\n if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n }\n return set;\n }\n /**\n Tests whether there is a mark of this type in the given set.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (set[i].type == this)\n return set[i];\n }\n /**\n Queries whether a given mark type is\n [excluded](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) by this one.\n */\n excludes(other) {\n return this.excluded.indexOf(other) > -1;\n }\n}\n/**\nA document schema. Holds [node](https://prosemirror.net/docs/ref/#model.NodeType) and [mark\ntype](https://prosemirror.net/docs/ref/#model.MarkType) objects for the nodes and marks that may\noccur in conforming documents, and provides functionality for\ncreating and deserializing such documents.\n\nWhen given, the type parameters provide the names of the nodes and\nmarks in this schema.\n*/\nclass Schema {\n /**\n Construct a schema from a schema [specification](https://prosemirror.net/docs/ref/#model.SchemaSpec).\n */\n constructor(spec) {\n /**\n An object for storing whatever values modules may want to\n compute and cache per schema. (If you want to store something\n in it, try to use property names unlikely to clash.)\n */\n this.cached = Object.create(null);\n this.spec = {\n nodes: OrderedMap.from(spec.nodes),\n marks: OrderedMap.from(spec.marks || {}),\n topNode: spec.topNode\n };\n this.nodes = NodeType.compile(this.spec.nodes, this);\n this.marks = MarkType.compile(this.spec.marks, this);\n let contentExprCache = Object.create(null);\n for (let prop in this.nodes) {\n if (prop in this.marks)\n throw new RangeError(prop + \" can not be both a node and a mark\");\n let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (let prop in this.marks) {\n let type = this.marks[prop], excl = type.spec.excludes;\n type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n this.nodeFromJSON = this.nodeFromJSON.bind(this);\n this.markFromJSON = this.markFromJSON.bind(this);\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n this.cached.wrappings = Object.create(null);\n }\n /**\n Create a node in this schema. The `type` may be a string or a\n `NodeType` instance. Attributes will be extended with defaults,\n `content` may be a `Fragment`, `null`, a `Node`, or an array of\n nodes.\n */\n node(type, attrs = null, content, marks) {\n if (typeof type == \"string\")\n type = this.nodeType(type);\n else if (!(type instanceof NodeType))\n throw new RangeError(\"Invalid node type: \" + type);\n else if (type.schema != this)\n throw new RangeError(\"Node type from different schema used (\" + type.name + \")\");\n return type.createChecked(attrs, content, marks);\n }\n /**\n Create a text node in the schema. Empty text nodes are not\n allowed.\n */\n text(text, marks) {\n let type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks));\n }\n /**\n Create a mark with the given type and attributes.\n */\n mark(type, attrs) {\n if (typeof type == \"string\")\n type = this.marks[type];\n return type.create(attrs);\n }\n /**\n Deserialize a node from its JSON representation. This method is\n bound.\n */\n nodeFromJSON(json) {\n return Node.fromJSON(this, json);\n }\n /**\n Deserialize a mark from its JSON representation. This method is\n bound.\n */\n markFromJSON(json) {\n return Mark.fromJSON(this, json);\n }\n /**\n @internal\n */\n nodeType(name) {\n let found = this.nodes[name];\n if (!found)\n throw new RangeError(\"Unknown node type: \" + name);\n return found;\n }\n}\nfunction gatherMarks(schema, marks) {\n let found = [];\n for (let i = 0; i < marks.length; i++) {\n let name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n }\n else {\n for (let prop in schema.marks) {\n let mark = schema.marks[prop];\n if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n found.push(ok = mark);\n }\n }\n if (!ok)\n throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\");\n }\n return found;\n}\n\n/**\nA DOM parser represents a strategy for parsing DOM content into a\nProseMirror document conforming to a given schema. Its behavior is\ndefined by an array of [rules](https://prosemirror.net/docs/ref/#model.ParseRule).\n*/\nclass DOMParser {\n /**\n Create a parser that targets the given schema, using the given\n parsing rules.\n */\n constructor(\n /**\n The schema into which the parser parses.\n */\n schema, \n /**\n The set of [parse rules](https://prosemirror.net/docs/ref/#model.ParseRule) that the parser\n uses, in order of precedence.\n */\n rules) {\n this.schema = schema;\n this.rules = rules;\n /**\n @internal\n */\n this.tags = [];\n /**\n @internal\n */\n this.styles = [];\n rules.forEach(rule => {\n if (rule.tag)\n this.tags.push(rule);\n else if (rule.style)\n this.styles.push(rule);\n });\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(r => {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node)\n return false;\n let node = schema.nodes[r.node];\n return node.contentMatch.matchType(node);\n });\n }\n /**\n Parse a document from the content of a DOM node.\n */\n parse(dom, options = {}) {\n let context = new ParseContext(this, options, false);\n context.addAll(dom, options.from, options.to);\n return context.finish();\n }\n /**\n Parses the content of the given DOM node, like\n [`parse`](https://prosemirror.net/docs/ref/#model.DOMParser.parse), and takes the same set of\n options. But unlike that method, which produces a whole node,\n this one returns a slice that is open at the sides, meaning that\n the schema constraints aren't applied to the start of nodes to\n the left of the input and the end of nodes at the end.\n */\n parseSlice(dom, options = {}) {\n let context = new ParseContext(this, options, true);\n context.addAll(dom, options.from, options.to);\n return Slice.maxOpen(context.finish());\n }\n /**\n @internal\n */\n matchTag(dom, context, after) {\n for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n let rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n let result = rule.getAttrs(dom);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n }\n /**\n @internal\n */\n matchStyle(prop, value, context, after) {\n for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n let rule = this.styles[i], style = rule.style;\n if (style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n style.length > prop.length &&\n (style.charCodeAt(prop.length) != 61 || style.slice(prop.length + 1) != value))\n continue;\n if (rule.getAttrs) {\n let result = rule.getAttrs(value);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n /**\n @internal\n */\n static schemaRules(schema) {\n let result = [];\n function insert(rule) {\n let priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n let next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority)\n break;\n }\n result.splice(i, 0, rule);\n }\n for (let name in schema.marks) {\n let rules = schema.marks[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n rule.mark = name;\n });\n }\n for (let name in schema.nodes) {\n let rules = schema.nodes[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n rule.node = name;\n });\n }\n return result;\n }\n /**\n Construct a DOM parser using the parsing rules listed in a\n schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by\n [priority](https://prosemirror.net/docs/ref/#model.ParseRule.priority).\n */\n static fromSchema(schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)));\n }\n}\nconst blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\nconst ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\nconst listTags = { ol: true, ul: true };\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null)\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0);\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;\n}\nclass NodeContext {\n constructor(type, attrs, \n // Marks applied to this node itself\n marks, \n // Marks that can't apply here, but will be used in children if possible\n pendingMarks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.pendingMarks = pendingMarks;\n this.solid = solid;\n this.options = options;\n this.content = [];\n // Marks applied to the node's children\n this.activeMarks = Mark.none;\n // Nested Marks with same type\n this.stashMarks = [];\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n }\n findWrapping(node) {\n if (!this.match) {\n if (!this.type)\n return [];\n let fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n }\n else {\n let start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap;\n }\n else {\n return null;\n }\n }\n }\n return this.match.findWrapping(node.type);\n }\n finish(openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n let last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n let text = last;\n if (last.text.length == m[0].length)\n this.content.pop();\n else\n this.content[this.content.length - 1] = text.withText(text.text.slice(0, text.text.length - m[0].length));\n }\n }\n let content = Fragment.from(this.content);\n if (!openEnd && this.match)\n content = content.append(this.match.fillBefore(Fragment.empty, true));\n return this.type ? this.type.create(this.attrs, content, this.marks) : content;\n }\n popFromStashMark(mark) {\n for (let i = this.stashMarks.length - 1; i >= 0; i--)\n if (mark.eq(this.stashMarks[i]))\n return this.stashMarks.splice(i, 1)[0];\n }\n applyPending(nextType) {\n for (let i = 0, pending = this.pendingMarks; i < pending.length; i++) {\n let mark = pending[i];\n if ((this.type ? this.type.allowsMarkType(mark.type) : markMayApply(mark.type, nextType)) &&\n !mark.isInSet(this.activeMarks)) {\n this.activeMarks = mark.addToSet(this.activeMarks);\n this.pendingMarks = mark.removeFromSet(this.pendingMarks);\n }\n }\n }\n inlineContext(node) {\n if (this.type)\n return this.type.inlineContent;\n if (this.content.length)\n return this.content[0].isInline;\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase());\n }\n}\nclass ParseContext {\n constructor(\n // The parser we are using.\n parser, \n // The options passed to this parse.\n options, isOpen) {\n this.parser = parser;\n this.options = options;\n this.isOpen = isOpen;\n this.open = 0;\n let topNode = options.topNode, topContext;\n let topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (isOpen ? OPT_OPEN_LEFT : 0);\n if (topNode)\n topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, Mark.none, true, options.topMatch || topNode.type.contentMatch, topOptions);\n else if (isOpen)\n topContext = new NodeContext(null, null, Mark.none, Mark.none, true, null, topOptions);\n else\n topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, Mark.none, true, null, topOptions);\n this.nodes = [topContext];\n this.find = options.findPositions;\n this.needsBlock = false;\n }\n get top() {\n return this.nodes[this.open];\n }\n // Add a DOM node to the content. Text is inserted as text node,\n // otherwise, the node is passed to `addElement` or, if it has a\n // `style` attribute, `addElementWithStyles`.\n addDOM(dom) {\n if (dom.nodeType == 3) {\n this.addTextNode(dom);\n }\n else if (dom.nodeType == 1) {\n let style = dom.getAttribute(\"style\");\n let marks = style ? this.readStyles(parseStyles(style)) : null, top = this.top;\n if (marks != null)\n for (let i = 0; i < marks.length; i++)\n this.addPendingMark(marks[i]);\n this.addElement(dom);\n if (marks != null)\n for (let i = 0; i < marks.length; i++)\n this.removePendingMark(marks[i], top);\n }\n }\n addTextNode(dom) {\n let value = dom.nodeValue;\n let top = this.top;\n if (top.options & OPT_PRESERVE_WS_FULL ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!(top.options & OPT_PRESERVE_WS)) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n let nodeBefore = top.content[top.content.length - 1];\n let domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n value = value.slice(1);\n }\n }\n else if (!(top.options & OPT_PRESERVE_WS_FULL)) {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n }\n else {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n if (value)\n this.insertNode(this.parser.schema.text(value));\n this.findInText(dom);\n }\n else {\n this.findInside(dom);\n }\n }\n // Try to find a handler for the given tag and use that to parse. If\n // none is found, the element's content nodes are added directly.\n addElement(dom, matchAfter) {\n let name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists)\n normalizeList(dom);\n let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom);\n }\n else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent)\n this.open = Math.max(0, this.open - 1);\n else if (rule && rule.skip.nodeType)\n dom = rule.skip;\n let sync, top = this.top, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n sync = true;\n if (!top.type)\n this.needsBlock = true;\n }\n else if (!dom.firstChild) {\n this.leafFallback(dom);\n return;\n }\n this.addAll(dom);\n if (sync)\n this.sync(top);\n this.needsBlock = oldNeedsBlock;\n }\n else {\n this.addElementByRule(dom, rule, rule.consuming === false ? ruleID : undefined);\n }\n }\n // Called for leaf DOM nodes that would otherwise be ignored\n leafFallback(dom) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"));\n }\n // Called for ignored nodes\n ignoreFallback(dom) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n this.findPlace(this.parser.schema.text(\"-\"));\n }\n // Run any style parser associated with the node's styles. Either\n // return an array of marks, or null to indicate some of the styles\n // had a rule with `ignore` set.\n readStyles(styles) {\n let marks = Mark.none;\n style: for (let i = 0; i < styles.length; i += 2) {\n for (let after = undefined;;) {\n let rule = this.parser.matchStyle(styles[i], styles[i + 1], this, after);\n if (!rule)\n continue style;\n if (rule.ignore)\n return null;\n marks = this.parser.schema.marks[rule.mark].create(rule.attrs).addToSet(marks);\n if (rule.consuming === false)\n after = rule;\n else\n break;\n }\n }\n return marks;\n }\n // Look up a handler for the given node. If none are found, return\n // false. Otherwise, apply it, use its return value to drive the way\n // the node's content is wrapped, and return true.\n addElementByRule(dom, rule, continueAfter) {\n let sync, nodeType, mark;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n sync = this.enter(nodeType, rule.attrs || null, rule.preserveWhitespace);\n }\n else if (!this.insertNode(nodeType.create(rule.attrs))) {\n this.leafFallback(dom);\n }\n }\n else {\n let markType = this.parser.schema.marks[rule.mark];\n mark = markType.create(rule.attrs);\n this.addPendingMark(mark);\n }\n let startIn = this.top;\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n }\n else if (continueAfter) {\n this.addElement(dom, continueAfter);\n }\n else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node));\n }\n else {\n let contentDOM = dom;\n if (typeof rule.contentElement == \"string\")\n contentDOM = dom.querySelector(rule.contentElement);\n else if (typeof rule.contentElement == \"function\")\n contentDOM = rule.contentElement(dom);\n else if (rule.contentElement)\n contentDOM = rule.contentElement;\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM);\n }\n if (sync && this.sync(startIn))\n this.open--;\n if (mark)\n this.removePendingMark(mark, startIn);\n }\n // Add all child nodes between `startIndex` and `endIndex` (or the\n // whole node, if not given). If `sync` is passed, use it to\n // synchronize after every block element.\n addAll(parent, startIndex, endIndex) {\n let index = startIndex || 0;\n for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild, end = endIndex == null ? null : parent.childNodes[endIndex]; dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom);\n }\n this.findAtPoint(parent, index);\n }\n // Try to find a way to fit the given node type into the current\n // context. May add intermediate wrappers and/or leave non-solid\n // nodes that we're in.\n findPlace(node) {\n let route, sync;\n for (let depth = this.open; depth >= 0; depth--) {\n let cx = this.nodes[depth];\n let found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length)) {\n route = found;\n sync = cx;\n if (!found.length)\n break;\n }\n if (cx.solid)\n break;\n }\n if (!route)\n return false;\n this.sync(sync);\n for (let i = 0; i < route.length; i++)\n this.enterInner(route[i], null, false);\n return true;\n }\n // Try to insert the given node, adjusting the context when needed.\n insertNode(node) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n let block = this.textblockFromContext();\n if (block)\n this.enterInner(block);\n }\n if (this.findPlace(node)) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(node.type);\n if (top.match)\n top.match = top.match.matchType(node.type);\n let marks = top.activeMarks;\n for (let i = 0; i < node.marks.length; i++)\n if (!top.type || top.type.allowsMarkType(node.marks[i].type))\n marks = node.marks[i].addToSet(marks);\n top.content.push(node.mark(marks));\n return true;\n }\n return false;\n }\n // Try to start a node of the given type, adjusting the context when\n // necessary.\n enter(type, attrs, preserveWS) {\n let ok = this.findPlace(type.create(attrs));\n if (ok)\n this.enterInner(type, attrs, true, preserveWS);\n return ok;\n }\n // Open a node of the given type\n enterInner(type, attrs = null, solid = false, preserveWS) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(type);\n top.match = top.match && top.match.matchType(type);\n let options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0)\n options |= OPT_OPEN_LEFT;\n this.nodes.push(new NodeContext(type, attrs, top.activeMarks, top.pendingMarks, solid, null, options));\n this.open++;\n }\n // Make sure all nodes above this.open are finished and added to\n // their parents\n closeExtra(openEnd = false) {\n let i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--)\n this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd));\n this.nodes.length = this.open + 1;\n }\n }\n finish() {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(this.isOpen || this.options.topOpen);\n }\n sync(to) {\n for (let i = this.open; i >= 0; i--)\n if (this.nodes[i] == to) {\n this.open = i;\n return true;\n }\n return false;\n }\n get currentPos() {\n this.closeExtra();\n let pos = 0;\n for (let i = this.open; i >= 0; i--) {\n let content = this.nodes[i].content;\n for (let j = content.length - 1; j >= 0; j--)\n pos += content[j].nodeSize;\n if (i)\n pos++;\n }\n return pos;\n }\n findAtPoint(parent, offset) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n this.find[i].pos = this.currentPos;\n }\n }\n findInside(parent) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n this.find[i].pos = this.currentPos;\n }\n }\n findAround(parent, content, before) {\n if (parent != content && this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n let pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n this.find[i].pos = this.currentPos;\n }\n }\n }\n findInText(textNode) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset);\n }\n }\n // Determines whether the given context string matches this context.\n matchesContext(context) {\n if (context.indexOf(\"|\") > -1)\n return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this);\n let parts = context.split(\"/\");\n let option = this.options.context;\n let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n let match = (i, depth) => {\n for (; i >= 0; i--) {\n let part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0)\n continue;\n for (; depth >= minDepth; depth--)\n if (match(i - 1, depth))\n return true;\n return false;\n }\n else {\n let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && next.groups.indexOf(part) == -1))\n return false;\n depth--;\n }\n }\n return true;\n };\n return match(parts.length - 1, this.open);\n }\n textblockFromContext() {\n let $context = this.options.context;\n if ($context)\n for (let d = $context.depth; d >= 0; d--) {\n let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs)\n return deflt;\n }\n for (let name in this.parser.schema.nodes) {\n let type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs)\n return type;\n }\n }\n addPendingMark(mark) {\n let found = findSameMarkInSet(mark, this.top.pendingMarks);\n if (found)\n this.top.stashMarks.push(found);\n this.top.pendingMarks = mark.addToSet(this.top.pendingMarks);\n }\n removePendingMark(mark, upto) {\n for (let depth = this.open; depth >= 0; depth--) {\n let level = this.nodes[depth];\n let found = level.pendingMarks.lastIndexOf(mark);\n if (found > -1) {\n level.pendingMarks = mark.removeFromSet(level.pendingMarks);\n }\n else {\n level.activeMarks = mark.removeFromSet(level.activeMarks);\n let stashMark = level.popFromStashMark(mark);\n if (stashMark && level.type && level.type.allowsMarkType(stashMark.type))\n level.activeMarks = stashMark.addToSet(level.activeMarks);\n }\n if (level == upto)\n break;\n }\n }\n}\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n }\n else if (name == \"li\") {\n prevItem = child;\n }\n else if (name) {\n prevItem = null;\n }\n }\n}\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector);\n}\n// Tokenize a style attribute into property/value pairs.\nfunction parseStyles(style) {\n let re = /\\s*([\\w-]+)\\s*:\\s*([^;]+)/g, m, result = [];\n while (m = re.exec(style))\n result.push(m[1], m[2].trim());\n return result;\n}\nfunction copy(obj) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n return copy;\n}\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n let nodes = nodeType.schema.nodes;\n for (let name in nodes) {\n let parent = nodes[name];\n if (!parent.allowsMarkType(markType))\n continue;\n let seen = [], scan = (match) => {\n seen.push(match);\n for (let i = 0; i < match.edgeCount; i++) {\n let { type, next } = match.edge(i);\n if (type == nodeType)\n return true;\n if (seen.indexOf(next) < 0 && scan(next))\n return true;\n }\n };\n if (scan(parent.contentMatch))\n return true;\n }\n}\nfunction findSameMarkInSet(mark, set) {\n for (let i = 0; i < set.length; i++) {\n if (mark.eq(set[i]))\n return set[i];\n }\n}\n\n/**\nA DOM serializer knows how to convert ProseMirror nodes and\nmarks of various types to DOM nodes.\n*/\nclass DOMSerializer {\n /**\n Create a serializer. `nodes` should map node names to functions\n that take a node and return a description of the corresponding\n DOM. `marks` does the same for mark names, but also gets an\n argument that tells it whether the mark's content is block or\n inline content (for typical use, it'll always be inline). A mark\n serializer may be `null` to indicate that marks of that type\n should not be serialized.\n */\n constructor(\n /**\n The node serialization functions.\n */\n nodes, \n /**\n The mark serialization functions.\n */\n marks) {\n this.nodes = nodes;\n this.marks = marks;\n }\n /**\n Serialize the content of this fragment to a DOM fragment. When\n not in the browser, the `document` option, containing a DOM\n document, should be passed so that the serializer can create\n nodes.\n */\n serializeFragment(fragment, options = {}, target) {\n if (!target)\n target = doc(options).createDocumentFragment();\n let top = target, active = [];\n fragment.forEach(node => {\n if (active.length || node.marks.length) {\n let keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n let next = node.marks[rendered];\n if (!this.marks[next.type.name]) {\n rendered++;\n continue;\n }\n if (!next.eq(active[keep][0]) || next.type.spec.spanning === false)\n break;\n keep++;\n rendered++;\n }\n while (keep < active.length)\n top = active.pop()[1];\n while (rendered < node.marks.length) {\n let add = node.marks[rendered++];\n let markDOM = this.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push([add, top]);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this.serializeNodeInner(node, options));\n });\n return target;\n }\n /**\n @internal\n */\n serializeNodeInner(node, options) {\n let { dom, contentDOM } = DOMSerializer.renderSpec(doc(options), this.nodes[node.type.name](node));\n if (contentDOM) {\n if (node.isLeaf)\n throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n this.serializeFragment(node.content, options, contentDOM);\n }\n return dom;\n }\n /**\n Serialize this node to a DOM node. This can be useful when you\n need to serialize a part of a document, as opposed to the whole\n document. To serialize a whole document, use\n [`serializeFragment`](https://prosemirror.net/docs/ref/#model.DOMSerializer.serializeFragment) on\n its [content](https://prosemirror.net/docs/ref/#model.Node.content).\n */\n serializeNode(node, options = {}) {\n let dom = this.serializeNodeInner(node, options);\n for (let i = node.marks.length - 1; i >= 0; i--) {\n let wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n (wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom;\n }\n /**\n @internal\n */\n serializeMark(mark, inline, options = {}) {\n let toDOM = this.marks[mark.type.name];\n return toDOM && DOMSerializer.renderSpec(doc(options), toDOM(mark, inline));\n }\n /**\n Render an [output spec](https://prosemirror.net/docs/ref/#model.DOMOutputSpec) to a DOM node. If\n the spec has a hole (zero) in it, `contentDOM` will point at the\n node with the hole.\n */\n static renderSpec(doc, structure, xmlNS = null) {\n if (typeof structure == \"string\")\n return { dom: doc.createTextNode(structure) };\n if (structure.nodeType != null)\n return { dom: structure };\n if (structure.dom && structure.dom.nodeType != null)\n return structure;\n let tagName = structure[0], space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n let contentDOM;\n let dom = (xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName));\n let attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (let name in attrs)\n if (attrs[name] != null) {\n let space = name.indexOf(\" \");\n if (space > 0)\n dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);\n else\n dom.setAttribute(name, attrs[name]);\n }\n }\n for (let i = start; i < structure.length; i++) {\n let child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n throw new RangeError(\"Content hole must be the only child of its parent node\");\n return { dom, contentDOM: dom };\n }\n else {\n let { dom: inner, contentDOM: innerContent } = DOMSerializer.renderSpec(doc, child, xmlNS);\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM)\n throw new RangeError(\"Multiple content holes\");\n contentDOM = innerContent;\n }\n }\n }\n return { dom, contentDOM };\n }\n /**\n Build a serializer using the [`toDOM`](https://prosemirror.net/docs/ref/#model.NodeSpec.toDOM)\n properties in a schema's node and mark specs.\n */\n static fromSchema(schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n }\n /**\n Gather the serializers in a schema's node specs into an object.\n This can be useful as a base to build a custom serializer from.\n */\n static nodesFromSchema(schema) {\n let result = gatherToDOM(schema.nodes);\n if (!result.text)\n result.text = node => node.text;\n return result;\n }\n /**\n Gather the serializers in a schema's mark specs into an object.\n */\n static marksFromSchema(schema) {\n return gatherToDOM(schema.marks);\n }\n}\nfunction gatherToDOM(obj) {\n let result = {};\n for (let name in obj) {\n let toDOM = obj[name].spec.toDOM;\n if (toDOM)\n result[name] = toDOM;\n }\n return result;\n}\nfunction doc(options) {\n return options.document || window.document;\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n","import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && StepMap.empty)\n return StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(\n /**\n The step maps in this mapping.\n */\n maps = [], \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps.length) {\n this.maps = maps;\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this.maps, this.mirror, from, to);\n }\n /**\n @internal\n */\n copy() {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null)\n this.setMirror(this.maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this.maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() { return StepMap.empty; }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) { return null; }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice));\n }\n catch (e) {\n if (e instanceof ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\n }\n}\n\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new Slice(mapFragment(oldSlice.content, (node, parent) => {\n if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new Slice(mapFragment(oldSlice.content, node => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new AddNodeMarkStep(this.pos, node.marks[i]);\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`—the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice);\n }\n merge(other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n }\n else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice, this.structure);\n }\n else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n}\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = mapping.map(this.gapFrom, -1), gapTo = mapping.map(this.gapTo, 1);\n if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch) {\n let node = tr.doc.nodeAt(pos);\n let delSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n delSteps.push(new ReplaceStep(cur, end, Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(Fragment.empty, true);\n tr.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (let i = delSteps.length - 1; i >= 0; i--)\n tr.step(delSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n tr.clearIncompatible(tr.mapping.slice(mapFrom).map(pos, 1), type);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));\n return false;\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let after = (typesAfter && typesAfter[i]) || node;\n if (after != node)\n rest = rest.replaceChild(0, after.type.create(after.attrs));\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && a.canAppend(b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n tr.step(step);\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n‘Fit’ a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in , when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, tr.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let type = leftNodes[d].type, def = definesContent(type);\n if (def && $from.node(preferredTargetIndex).type != type)\n preferredDepth = d;\n else if (def || !type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new AttrStep(json.pos, json.attr, json.value);\n }\n}\nStep.jsonID(\"attr\", AttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks = []) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or a mark of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n if (!(mark instanceof Mark)) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n mark = mark.isInSet(node.marks);\n if (!mark)\n return this;\n }\n this.step(new RemoveNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split.\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nconst classesById = Object.create(null);\n/**\nSuperclass for editor selections. Every selection type should\nextend this. Should not be instantiated directly.\n*/\nclass Selection {\n /**\n Initialize a selection with the head and anchor and ranges. If no\n ranges are given, constructs a single range across `$anchor` and\n `$head`.\n */\n constructor(\n /**\n The resolved anchor of the selection (the side that stays in\n place when the selection is modified).\n */\n $anchor, \n /**\n The resolved head of the selection (the side that moves when\n the selection is modified).\n */\n $head, ranges) {\n this.$anchor = $anchor;\n this.$head = $head;\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n }\n /**\n The selection's anchor, as an unresolved position.\n */\n get anchor() { return this.$anchor.pos; }\n /**\n The selection's head.\n */\n get head() { return this.$head.pos; }\n /**\n The lower bound of the selection's main range.\n */\n get from() { return this.$from.pos; }\n /**\n The upper bound of the selection's main range.\n */\n get to() { return this.$to.pos; }\n /**\n The resolved lower bound of the selection's main range.\n */\n get $from() {\n return this.ranges[0].$from;\n }\n /**\n The resolved upper bound of the selection's main range.\n */\n get $to() {\n return this.ranges[0].$to;\n }\n /**\n Indicates whether the selection contains any content.\n */\n get empty() {\n let ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++)\n if (ranges[i].$from.pos != ranges[i].$to.pos)\n return false;\n return true;\n }\n /**\n Get the content of this selection as a slice.\n */\n content() {\n return this.$from.doc.slice(this.from, this.to, true);\n }\n /**\n Replace the selection with a slice or, if no slice is given,\n delete the selection. Will append to the given transaction.\n */\n replace(tr, content = Slice.empty) {\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n let lastNode = content.content.lastChild, lastParent = null;\n for (let i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n if (i == 0)\n selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1);\n }\n }\n /**\n Replace the selection with the given node, appending the changes\n to the given transaction.\n */\n replaceWith(tr, node) {\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n let from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n }\n else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n }\n /**\n Find a valid cursor or leaf node selection starting at the given\n position and searching back if `dir` is negative, and forward if\n positive. When `textOnly` is true, only consider cursor\n selections. Will return null when no valid selection position is\n found.\n */\n static findFrom($pos, dir, textOnly = false) {\n let inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner)\n return inner;\n for (let depth = $pos.depth - 1; depth >= 0; depth--) {\n let found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found)\n return found;\n }\n return null;\n }\n /**\n Find a valid cursor or leaf node selection near the given\n position. Searches forward first by default, but if `bias` is\n negative, it will search backwards first.\n */\n static near($pos, bias = 1) {\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0));\n }\n /**\n Find the cursor or leaf node selection closest to the start of\n the given document. Will return an\n [`AllSelection`](https://prosemirror.net/docs/ref/#state.AllSelection) if no valid position\n exists.\n */\n static atStart(doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc);\n }\n /**\n Find the cursor or leaf node selection closest to the end of the\n given document.\n */\n static atEnd(doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc);\n }\n /**\n Deserialize the JSON representation of a selection. Must be\n implemented for custom classes (as a static class method).\n */\n static fromJSON(doc, json) {\n if (!json || !json.type)\n throw new RangeError(\"Invalid input for Selection.fromJSON\");\n let cls = classesById[json.type];\n if (!cls)\n throw new RangeError(`No selection type ${json.type} defined`);\n return cls.fromJSON(doc, json);\n }\n /**\n To be able to deserialize selections from JSON, custom selection\n classes must register themselves with an ID string, so that they\n can be disambiguated. Try to pick something that's unlikely to\n clash with classes from other modules.\n */\n static jsonID(id, selectionClass) {\n if (id in classesById)\n throw new RangeError(\"Duplicate use of selection JSON ID \" + id);\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass;\n }\n /**\n Get a [bookmark](https://prosemirror.net/docs/ref/#state.SelectionBookmark) for this selection,\n which is a value that can be mapped without having access to a\n current document, and later resolved to a real selection for a\n given document again. (This is used mostly by the history to\n track and restore old selections.) The default implementation of\n this method just converts the selection to a text selection and\n returns the bookmark for that.\n */\n getBookmark() {\n return TextSelection.between(this.$anchor, this.$head).getBookmark();\n }\n}\nSelection.prototype.visible = true;\n/**\nRepresents a selected range in a document.\n*/\nclass SelectionRange {\n /**\n Create a range.\n */\n constructor(\n /**\n The lower bound of the range.\n */\n $from, \n /**\n The upper bound of the range.\n */\n $to) {\n this.$from = $from;\n this.$to = $to;\n }\n}\nlet warnedAboutTextSelection = false;\nfunction checkTextSelection($pos) {\n if (!warnedAboutTextSelection && !$pos.parent.inlineContent) {\n warnedAboutTextSelection = true;\n console[\"warn\"](\"TextSelection endpoint not pointing into a node with inline content (\" + $pos.parent.type.name + \")\");\n }\n}\n/**\nA text selection represents a classical editor selection, with a\nhead (the moving side) and anchor (immobile side), both of which\npoint into textblock nodes. It can be empty (a regular cursor\nposition).\n*/\nclass TextSelection extends Selection {\n /**\n Construct a text selection between the given points.\n */\n constructor($anchor, $head = $anchor) {\n checkTextSelection($anchor);\n checkTextSelection($head);\n super($anchor, $head);\n }\n /**\n Returns a resolved position if this is a cursor selection (an\n empty text selection), and null otherwise.\n */\n get $cursor() { return this.$anchor.pos == this.$head.pos ? this.$head : null; }\n map(doc, mapping) {\n let $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent)\n return Selection.near($head);\n let $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head);\n }\n replace(tr, content = Slice.empty) {\n super.replace(tr, content);\n if (content == Slice.empty) {\n let marks = this.$from.marksAcross(this.$to);\n if (marks)\n tr.ensureMarks(marks);\n }\n }\n eq(other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head;\n }\n getBookmark() {\n return new TextBookmark(this.anchor, this.head);\n }\n toJSON() {\n return { type: \"text\", anchor: this.anchor, head: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid input for TextSelection.fromJSON\");\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n /**\n Create a text selection from non-resolved positions.\n */\n static create(doc, anchor, head = anchor) {\n let $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head));\n }\n /**\n Return a text selection that spans the given positions or, if\n they aren't text positions, find a text selection near them.\n `bias` determines whether the method searches forward (default)\n or backwards (negative number) first. Will fall back to calling\n [`Selection.near`](https://prosemirror.net/docs/ref/#state.Selection^near) when the document\n doesn't contain a valid text position.\n */\n static between($anchor, $head, bias) {\n let dPos = $anchor.pos - $head.pos;\n if (!bias || dPos)\n bias = dPos >= 0 ? 1 : -1;\n if (!$head.parent.inlineContent) {\n let found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found)\n $head = found.$head;\n else\n return Selection.near($head, bias);\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n }\n else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0))\n $anchor = $head;\n }\n }\n return new TextSelection($anchor, $head);\n }\n}\nSelection.jsonID(\"text\", TextSelection);\nclass TextBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head));\n }\n}\n/**\nA node selection is a selection that points at a single node. All\nnodes marked [selectable](https://prosemirror.net/docs/ref/#model.NodeSpec.selectable) can be the\ntarget of a node selection. In such a selection, `from` and `to`\npoint directly before and after the selected node, `anchor` equals\n`from`, and `head` equals `to`..\n*/\nclass NodeSelection extends Selection {\n /**\n Create a node selection. Does not verify the validity of its\n argument.\n */\n constructor($pos) {\n let node = $pos.nodeAfter;\n let $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n super($pos, $end);\n this.node = node;\n }\n map(doc, mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n let $pos = doc.resolve(pos);\n if (deleted)\n return Selection.near($pos);\n return new NodeSelection($pos);\n }\n content() {\n return new Slice(Fragment.from(this.node), 0, 0);\n }\n eq(other) {\n return other instanceof NodeSelection && other.anchor == this.anchor;\n }\n toJSON() {\n return { type: \"node\", anchor: this.anchor };\n }\n getBookmark() { return new NodeBookmark(this.anchor); }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\")\n throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");\n return new NodeSelection(doc.resolve(json.anchor));\n }\n /**\n Create a node selection from non-resolved positions.\n */\n static create(doc, from) {\n return new NodeSelection(doc.resolve(from));\n }\n /**\n Determines whether the given node may be selected as a node\n selection.\n */\n static isSelectable(node) {\n return !node.isText && node.type.spec.selectable !== false;\n }\n}\nNodeSelection.prototype.visible = false;\nSelection.jsonID(\"node\", NodeSelection);\nclass NodeBookmark {\n constructor(anchor) {\n this.anchor = anchor;\n }\n map(mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos);\n }\n resolve(doc) {\n let $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node))\n return new NodeSelection($pos);\n return Selection.near($pos);\n }\n}\n/**\nA selection type that represents selecting the whole document\n(which can not necessarily be expressed with a text selection, when\nthere are for example leaf block nodes at the start or end of the\ndocument).\n*/\nclass AllSelection extends Selection {\n /**\n Create an all-selection over the given document.\n */\n constructor(doc) {\n super(doc.resolve(0), doc.resolve(doc.content.size));\n }\n replace(tr, content = Slice.empty) {\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n let sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection))\n tr.setSelection(sel);\n }\n else {\n super.replace(tr, content);\n }\n }\n toJSON() { return { type: \"all\" }; }\n /**\n @internal\n */\n static fromJSON(doc) { return new AllSelection(doc); }\n map(doc) { return new AllSelection(doc); }\n eq(other) { return other instanceof AllSelection; }\n getBookmark() { return AllBookmark; }\n}\nSelection.jsonID(\"all\", AllSelection);\nconst AllBookmark = {\n map() { return this; },\n resolve(doc) { return new AllSelection(doc); }\n};\n// FIXME we'll need some awareness of text direction when scanning for selections\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text = false) {\n if (node.inlineContent)\n return TextSelection.create(doc, pos);\n for (let i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n let child = node.child(i);\n if (!child.isAtom) {\n let inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner)\n return inner;\n }\n else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0));\n }\n pos += child.nodeSize * dir;\n }\n return null;\n}\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n let last = tr.steps.length - 1;\n if (last < startLen)\n return;\n let step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep))\n return;\n let map = tr.mapping.maps[last], end;\n map.forEach((_from, _to, _newFrom, newTo) => { if (end == null)\n end = newTo; });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n/**\nAn editor state transaction, which can be applied to a state to\ncreate an updated state. Use\n[`EditorState.tr`](https://prosemirror.net/docs/ref/#state.EditorState.tr) to create an instance.\n\nTransactions track changes to the document (they are a subclass of\n[`Transform`](https://prosemirror.net/docs/ref/#transform.Transform)), but also other state changes,\nlike selection updates and adjustments of the set of [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks). In addition, you can store\nmetadata properties in a transaction, which are extra pieces of\ninformation that client code or plugins can use to describe what a\ntransaction represents, so that they can update their [own\nstate](https://prosemirror.net/docs/ref/#state.StateField) accordingly.\n\nThe [editor view](https://prosemirror.net/docs/ref/#view.EditorView) uses a few metadata properties:\nit will attach a property `\"pointer\"` with the value `true` to\nselection transactions directly caused by mouse or touch input, and\na `\"uiEvent\"` property of that may be `\"paste\"`, `\"cut\"`, or `\"drop\"`.\n*/\nclass Transaction extends Transform {\n /**\n @internal\n */\n constructor(state) {\n super(state.doc);\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n this.time = Date.now();\n this.curSelection = state.selection;\n this.storedMarks = state.storedMarks;\n }\n /**\n The transaction's current selection. This defaults to the editor\n selection [mapped](https://prosemirror.net/docs/ref/#state.Selection.map) through the steps in the\n transaction, but can be overwritten with\n [`setSelection`](https://prosemirror.net/docs/ref/#state.Transaction.setSelection).\n */\n get selection() {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection;\n }\n /**\n Update the transaction's current selection. Will determine the\n selection that the editor gets when the transaction is applied.\n */\n setSelection(selection) {\n if (selection.$from.doc != this.doc)\n throw new RangeError(\"Selection passed to setSelection must point at the current document\");\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this;\n }\n /**\n Whether the selection was explicitly updated by this transaction.\n */\n get selectionSet() {\n return (this.updated & UPDATED_SEL) > 0;\n }\n /**\n Set the current stored marks.\n */\n setStoredMarks(marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this;\n }\n /**\n Make sure the current stored marks or, if that is null, the marks\n at the selection, match the given set of marks. Does nothing if\n this is already the case.\n */\n ensureMarks(marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n this.setStoredMarks(marks);\n return this;\n }\n /**\n Add a mark to the set of stored marks.\n */\n addStoredMark(mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Remove a mark or mark type from the set of stored marks.\n */\n removeStoredMark(mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Whether the stored marks were explicitly set for this transaction.\n */\n get storedMarksSet() {\n return (this.updated & UPDATED_MARKS) > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n super.addStep(step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n }\n /**\n Update the timestamp for the transaction.\n */\n setTime(time) {\n this.time = time;\n return this;\n }\n /**\n Replace the current selection with the given slice.\n */\n replaceSelection(slice) {\n this.selection.replace(this, slice);\n return this;\n }\n /**\n Replace the selection with the given node. When `inheritMarks` is\n true and the content is inline, it inherits the marks from the\n place where it is inserted.\n */\n replaceSelectionWith(node, inheritMarks = true) {\n let selection = this.selection;\n if (inheritMarks)\n node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none)));\n selection.replaceWith(this, node);\n return this;\n }\n /**\n Delete the selection.\n */\n deleteSelection() {\n this.selection.replace(this);\n return this;\n }\n /**\n Replace the given range, or the selection if no range is given,\n with a text node containing the given string.\n */\n insertText(text, from, to) {\n let schema = this.doc.type.schema;\n if (from == null) {\n if (!text)\n return this.deleteSelection();\n return this.replaceSelectionWith(schema.text(text), true);\n }\n else {\n if (to == null)\n to = from;\n to = to == null ? from : to;\n if (!text)\n return this.deleteRange(from, to);\n let marks = this.storedMarks;\n if (!marks) {\n let $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty)\n this.setSelection(Selection.near(this.selection.$to));\n return this;\n }\n }\n /**\n Store a metadata property in this transaction, keyed either by\n name or by plugin.\n */\n setMeta(key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this;\n }\n /**\n Retrieve a metadata property for a given name or plugin.\n */\n getMeta(key) {\n return this.meta[typeof key == \"string\" ? key : key.key];\n }\n /**\n Returns true if this transaction doesn't contain any metadata,\n and can thus safely be extended.\n */\n get isGeneric() {\n for (let _ in this.meta)\n return false;\n return true;\n }\n /**\n Indicate that the editor should scroll the selection into view\n when updated to the state produced by this transaction.\n */\n scrollIntoView() {\n this.updated |= UPDATED_SCROLL;\n return this;\n }\n /**\n True when this transaction has had `scrollIntoView` called on it.\n */\n get scrolledIntoView() {\n return (this.updated & UPDATED_SCROLL) > 0;\n }\n}\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self);\n}\nclass FieldDesc {\n constructor(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n }\n}\nconst baseFields = [\n new FieldDesc(\"doc\", {\n init(config) { return config.doc || config.schema.topNodeType.createAndFill(); },\n apply(tr) { return tr.doc; }\n }),\n new FieldDesc(\"selection\", {\n init(config, instance) { return config.selection || Selection.atStart(instance.doc); },\n apply(tr) { return tr.selection; }\n }),\n new FieldDesc(\"storedMarks\", {\n init(config) { return config.storedMarks || null; },\n apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null; }\n }),\n new FieldDesc(\"scrollToSelection\", {\n init() { return 0; },\n apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev; }\n })\n];\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nclass Configuration {\n constructor(schema, plugins) {\n this.schema = schema;\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n this.fields = baseFields.slice();\n if (plugins)\n plugins.forEach(plugin => {\n if (this.pluginsByKey[plugin.key])\n throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\");\n this.plugins.push(plugin);\n this.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n this.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin));\n });\n }\n}\n/**\nThe state of a ProseMirror editor is represented by an object of\nthis type. A state is a persistent data structure—it isn't\nupdated, but rather a new state value is computed from an old one\nusing the [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) method.\n\nA state holds a number of built-in fields, and plugins can\n[define](https://prosemirror.net/docs/ref/#state.PluginSpec.state) additional fields.\n*/\nclass EditorState {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n config) {\n this.config = config;\n }\n /**\n The schema of the state's document.\n */\n get schema() {\n return this.config.schema;\n }\n /**\n The plugins that are active in this state.\n */\n get plugins() {\n return this.config.plugins;\n }\n /**\n Apply the given transaction to produce a new state.\n */\n apply(tr) {\n return this.applyTransaction(tr).state;\n }\n /**\n @ignore\n */\n filterTransaction(tr, ignore = -1) {\n for (let i = 0; i < this.config.plugins.length; i++)\n if (i != ignore) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n return false;\n }\n return true;\n }\n /**\n Verbose variant of [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) that\n returns the precise transactions that were applied (which might\n be influenced by the [transaction\n hooks](https://prosemirror.net/docs/ref/#state.PluginSpec.filterTransaction) of\n plugins) along with the new state.\n */\n applyTransaction(rootTr) {\n if (!this.filterTransaction(rootTr))\n return { state: this, transactions: [] };\n let trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n let haveNew = false;\n for (let i = 0; i < this.config.plugins.length; i++) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n let n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n let tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (let j = 0; j < this.config.plugins.length; j++)\n seen.push(j < i ? { state: newState, n: trs.length } : { state: this, n: 0 });\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen)\n seen[i] = { state: newState, n: trs.length };\n }\n }\n if (!haveNew)\n return { state: newState, transactions: trs };\n }\n }\n /**\n @internal\n */\n applyInner(tr) {\n if (!tr.before.eq(this.doc))\n throw new RangeError(\"Applying a mismatched transaction\");\n let newInstance = new EditorState(this.config), fields = this.config.fields;\n for (let i = 0; i < fields.length; i++) {\n let field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n return newInstance;\n }\n /**\n Start a [transaction](https://prosemirror.net/docs/ref/#state.Transaction) from this state.\n */\n get tr() { return new Transaction(this); }\n /**\n Create a new state.\n */\n static create(config) {\n let $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n let instance = new EditorState($config);\n for (let i = 0; i < $config.fields.length; i++)\n instance[$config.fields[i].name] = $config.fields[i].init(config, instance);\n return instance;\n }\n /**\n Create a new state based on this one, but with an adjusted set\n of active plugins. State fields that exist in both sets of\n plugins are kept unchanged. Those that no longer exist are\n dropped, and those that are new are initialized using their\n [`init`](https://prosemirror.net/docs/ref/#state.StateField.init) method, passing in the new\n configuration object..\n */\n reconfigure(config) {\n let $config = new Configuration(this.schema, config.plugins);\n let fields = $config.fields, instance = new EditorState($config);\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance;\n }\n /**\n Serialize this state to JSON. If you want to serialize the state\n of plugins, pass an object mapping property names to use in the\n resulting JSON object to plugin objects. The argument may also be\n a string or number, in which case it is ignored, to support the\n way `JSON.stringify` calls `toString` methods.\n */\n toJSON(pluginFields) {\n let result = { doc: this.doc.toJSON(), selection: this.selection.toJSON() };\n if (this.storedMarks)\n result.storedMarks = this.storedMarks.map(m => m.toJSON());\n if (pluginFields && typeof pluginFields == 'object')\n for (let prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\");\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON)\n result[prop] = state.toJSON.call(plugin, this[plugin.key]);\n }\n return result;\n }\n /**\n Deserialize a JSON representation of a state. `config` should\n have at least a `schema` field, and should contain array of\n plugins to initialize the state with. `pluginFields` can be used\n to deserialize the state of plugins, by associating plugin\n instances with the property names they use in the JSON object.\n */\n static fromJSON(config, json, pluginFields) {\n if (!json)\n throw new RangeError(\"Invalid input for EditorState.fromJSON\");\n if (!config.schema)\n throw new RangeError(\"Required config field 'schema' missing\");\n let $config = new Configuration(config.schema, config.plugins);\n let instance = new EditorState($config);\n $config.fields.forEach(field => {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n }\n else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n }\n else if (field.name == \"storedMarks\") {\n if (json.storedMarks)\n instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON);\n }\n else {\n if (pluginFields)\n for (let prop in pluginFields) {\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return;\n }\n }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance;\n }\n}\n\nfunction bindProps(obj, self, target) {\n for (let prop in obj) {\n let val = obj[prop];\n if (val instanceof Function)\n val = val.bind(self);\n else if (prop == \"handleDOMEvents\")\n val = bindProps(val, self, {});\n target[prop] = val;\n }\n return target;\n}\n/**\nPlugins bundle functionality that can be added to an editor.\nThey are part of the [editor state](https://prosemirror.net/docs/ref/#state.EditorState) and\nmay influence that state and the view that contains it.\n*/\nclass Plugin {\n /**\n Create a plugin.\n */\n constructor(\n /**\n The plugin's [spec object](https://prosemirror.net/docs/ref/#state.PluginSpec).\n */\n spec) {\n this.spec = spec;\n /**\n The [props](https://prosemirror.net/docs/ref/#view.EditorProps) exported by this plugin.\n */\n this.props = {};\n if (spec.props)\n bindProps(spec.props, this, this.props);\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n }\n /**\n Extract the plugin's state field from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\nconst keys = Object.create(null);\nfunction createKey(name) {\n if (name in keys)\n return name + \"$\" + ++keys[name];\n keys[name] = 0;\n return name + \"$\";\n}\n/**\nA key is used to [tag](https://prosemirror.net/docs/ref/#state.PluginSpec.key) plugins in a way\nthat makes it possible to find them, given an editor state.\nAssigning a key does mean only one plugin of that type can be\nactive in a state.\n*/\nclass PluginKey {\n /**\n Create a plugin key.\n */\n constructor(name = \"key\") { this.key = createKey(name); }\n /**\n Get the active plugin with this key, if any, from an editor\n state.\n */\n get(state) { return state.config.pluginsByKey[this.key]; }\n /**\n Get the plugin's state from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n","export const rowTypeAttr = 'k-parent-node';\nexport const colgroupAttr = 'k-colgroup-data';\nexport const resizableAttr = 'k-resizable-node';\nexport const resizableWrap = 'k-editor-resize-wrap-element';\nexport const resizeHandle = 'k-editor-resize-handle';\nexport const dataResizeDirTable = 'data-dir-table-resize';\nexport const dataResizeDirImage = 'data-dir-image-resize';\n","import { DOMSerializer, DOMParser as ProseMirrorDOMParser } from 'prosemirror-model';\nimport { AllSelection } from 'prosemirror-state';\nimport { rowTypeAttr, colgroupAttr } from './config/constants';\nconst blockWrappers = [\n 'div', 'ol', 'ul', 'li', 'table', 'tbody', 'thead', 'tfoot', 'td', 'th', 'p',\n 'tr', 'col', 'colgroup', 'article', 'main', 'nav', 'header', 'footer', 'aside', 'section'\n];\nconst removeRowType = (table, nodeName) => {\n const wrapper = (table.ownerDocument || document).createElement(nodeName);\n Array.from(table.rows).filter(r => r.getAttribute(rowTypeAttr) === nodeName).forEach(row => {\n row.removeAttribute(rowTypeAttr);\n wrapper.appendChild(row);\n });\n if (wrapper.children.length) {\n table.appendChild(wrapper);\n }\n};\nconst restoreTables = (fragment) => {\n Array.from(fragment.querySelectorAll('table')).forEach((table) => {\n removeRowType(table, 'thead');\n removeRowType(table, 'tbody');\n removeRowType(table, 'tfoot');\n const emptyElement = Array.from(table.children).find(el => el.children.length === 0);\n if (emptyElement) {\n emptyElement.remove();\n }\n });\n};\nconst setRowType = (children, nodeName) => {\n const tag = nodeName.toUpperCase();\n children.filter(c => c.nodeName === tag).forEach(rowsWrapper => {\n Array.from(rowsWrapper.children).forEach(row => {\n row.setAttribute(rowTypeAttr, nodeName);\n if (rowsWrapper.parentNode) {\n rowsWrapper.parentNode.insertBefore(row, rowsWrapper);\n }\n });\n rowsWrapper.remove();\n });\n};\nconst validateTablesToPmSchema = (fragment) => {\n Array.from(fragment.querySelectorAll('table')).forEach((table) => {\n const children = Array.from(table.children);\n if (children.some(e => e.nodeName === 'THEAD' || e.nodeName === 'TFOOT')) {\n setRowType(children, 'thead');\n setRowType(children, 'tbody');\n setRowType(children, 'tfoot');\n }\n const colgroup = children.find(c => c.nodeName === 'COLGROUP');\n if (colgroup) {\n table.setAttribute(colgroupAttr, colgroup.outerHTML);\n colgroup.remove();\n }\n });\n};\n/**\n * Trims the whitespace around the provided block nodes.\n *\n * @param html - Input HTML content\n * @param trimAroundTags - Block elements to which trimming will be applied.\n * Defaults to block nodes of the current default schema:\n * 'div', 'ol', 'ul', 'li', 'table', 'tbody', 'thead', 'tfoot', 'td', 'th', 'p'\n * and additional table and semantic nodes from the default Angular Editor schema:\n * 'tr', 'col', 'colgroup', 'article', 'main', 'nav', 'header', 'footer', 'aside', 'section'\n *\n * @returns The trimmed HTML content\n */\nexport const trimWhitespace = (html, trimAroundTags = blockWrappers) => {\n const tags = trimAroundTags.join('|');\n return html.replace(new RegExp('\\\\s*(<(?:' + tags + ')(?:\\\\s[^>]*?)?>)', 'g'), '$1')\n .replace(new RegExp('(<\\\\/(?:' + tags + ')(?:\\\\s[^>]*?)?>)\\\\s*', 'g'), '$1');\n};\n/**\n * Creates a DocumentFragment from the given HTML content.\n *\n * @param html\n * @returns DocumentFragment\n */\nexport const htmlToFragment = (html) => {\n const template = document.createElement('template');\n let fragment;\n if ('content' in template) {\n template.innerHTML = html;\n fragment = template.content;\n }\n else {\n // Internet Explorer\n const parsedDocument = new DOMParser().parseFromString(html, 'text/html');\n fragment = document.createDocumentFragment();\n const dom = parsedDocument.body;\n while (dom && dom.firstChild) {\n fragment.appendChild(dom.firstChild);\n }\n }\n return fragment;\n};\n/**\n * Creates a DocumentFragment from the given ProseMirrorNode.\n * @param doc ProseMirrorNode\n * @returns DocumentFragment\n */\nexport const pmDocToFragment = (doc) => {\n const fragment = DOMSerializer.fromSchema(doc.type.schema).serializeFragment(doc.content);\n restoreTables(fragment);\n return fragment;\n};\n/**\n * Creates a ProseMirrorNode from the given DOM element.\n *\n * @param dom\n * @param schema\n * @param parseOptions\n * @returns ProseMirrorNode\n */\nexport const domToPmDoc = (dom, schema, parseOptions) => {\n return ProseMirrorDOMParser.fromSchema(schema).parse(dom, parseOptions);\n};\n/**\n * Creates a ProseMirrorNode from the given HTML content.\n *\n * @param content - The new HTML content.\n * @param schema - The document schema.\n * @param parseOptions - ProseMirror parse options recognized by the `parse` and `parseSlice` methods.\n * @returns - New ProseMirrorNode instance.\n */\nexport const parseContent = (content, schema, parseOptions) => {\n const dom = htmlToFragment(content);\n validateTablesToPmSchema(dom);\n return domToPmDoc(dom, schema, parseOptions);\n};\n/**\n * A function that serializes the Editor State content as HTML string.\n *\n * @param state - The Editor State\n * @returns - The serialized content\n */\nexport const getHtml = (state) => {\n const fragment = pmDocToFragment(state.doc);\n const container = document.createElement('div');\n container.appendChild(fragment);\n return container.innerHTML;\n};\n/**\n * Replaces the content of the editor with a new one.\n *\n * @param content - The new HTML content.\n * @param commandName - The name of the command.\n * @param parseOptions - ProseMirror parse options recognized by the `parse` and `parseSlice` methods.\n * @returns - Command function that takes an editor `state` and `dispatch` function.\n */\nexport const setHtml = (content, command = 'setHTML', parseOptions = { preserveWhitespace: 'full' }) => (state, dispatch) => dispatch(state.tr\n .setSelection(new AllSelection(state.doc))\n .replaceSelectionWith(parseContent(content, state.schema, parseOptions))\n .setMeta('commandName', command));\n","import { Node, Fragment } from 'prosemirror-model';\nimport { TextSelection, AllSelection, NodeSelection } from 'prosemirror-state';\nimport { parseContent } from './source';\nexport const changeStylesString = (styleText, newStyle) => {\n const styleToChange = newStyle.style;\n const regExp = newStyle.value;\n const newValue = newStyle.newValue;\n if (!styleText) {\n return { changed: false, style: null };\n }\n const styles = styleText.split(/\\s*;\\s*/).filter(s => Boolean(s));\n const filtered = styles.filter(s => {\n const nameValue = s.split(/\\s*:\\s*/);\n return !(nameValue[0].toLowerCase() === styleToChange && regExp.test(nameValue[1]));\n });\n if (newValue) {\n filtered.push(`${styleToChange}: ${newValue}`);\n }\n return {\n style: filtered.join('; ') + (filtered.length ? ';' : ''),\n changed: Boolean(newValue) || filtered.length !== styles.length\n };\n};\n/**\n * Determines if a given node type can be inserted at the current cursor position.\n */\nexport const canInsert = (state, nodeType) => {\n let $from = state.selection.$from;\n for (let d = $from.depth; d >= 0; d--) {\n let index = $from.index(d);\n if ($from.node(d).canReplaceWith(index, index, nodeType)) {\n return true;\n }\n }\n return false;\n};\nconst getTypeName = (n) => {\n return n instanceof Node ? n.type.name : n.name;\n};\nconst findNthParentNode = (predicate, depth = 1) => {\n return (selection) => {\n const { $from } = selection;\n for (let i = $from.depth; i > 0; i--) {\n const node = $from.node(i);\n if (predicate(node)) {\n depth = depth - 1;\n if (depth === 0) {\n return { depth: i, node };\n }\n }\n }\n };\n};\nexport const findNthParentNodeOfType = (nodeType, depth = 1) => {\n return (selection) => {\n return findNthParentNode((node) => getTypeName(node) === getTypeName(nodeType), depth)(selection);\n };\n};\n/**\n * Inserts the given node at the place of current selection.\n */\nexport const insertNode = (node, scrollIntoView) => (state, dispatch) => {\n const tr = state.tr.replaceSelectionWith(node);\n if (scrollIntoView) {\n tr.scrollIntoView();\n }\n dispatch(tr);\n};\nexport const hasSameMarkup = (dom1, dom2, schema, parseOptions) => {\n const fragment1 = Fragment.from(parseContent(dom1, schema, parseOptions));\n const fragment2 = Fragment.from(parseContent(dom2, schema, parseOptions));\n return fragment1.eq(fragment2);\n};\nexport const getSelectionText = (state) => {\n const sel = state.selection;\n if (sel instanceof TextSelection || sel instanceof AllSelection) {\n const fragment = sel.content().content;\n return fragment.textBetween(0, fragment.size);\n }\n return '';\n};\nexport const getNodeFromSelection = (state) => {\n if (state.selection instanceof NodeSelection) {\n return state.selection.node;\n }\n};\n/**\n * Returns the text from the selection if only text is selected on a single line.\n * If selection contains leaf nodes (br, image) between text elements or\n * text from multiple block nodes, the function will return empty string.\n *\n * Useful for values of the inputs of Link and Find&Replace dialogs where the inputs value has been retrieved from the selection and\n * should be single line text only.\n */\nexport const selectedLineTextOnly = (state) => {\n let result = '', hasLeafs = false;\n const { selection, doc } = state;\n const { $from, $to, from, to } = selection;\n if ($from.sameParent($to)) {\n doc.nodesBetween(from, to, (node) => {\n hasLeafs = hasLeafs || (node.isLeaf && !node.isText);\n });\n if (!hasLeafs) {\n result = getSelectionText(state);\n }\n }\n return result;\n};\n/**\n * Used by ViewHtml/ViewSource dialogs for making the HTML more readable.\n */\nexport const indentHtml = (content) => {\n return content.replace(/<\\/(p|li|ul|ol|h[1-6]|table|tr|td|th)>/ig, '\\n')\n .replace(/<(ul|ol)([^>]*)>
  • \\n/ig, '
    \\n')\n .replace(/\\n$/, '');\n};\nexport const shallowEqual = (object1, object2) => {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n return keys1.length === keys2.length &&\n keys1.every(k => object1[k] === object2[k]);\n};\nconst applyToWordDefault = { before: /[^ !,?.\\[\\]{}()]+$/i, after: /^[^ !,?.\\[\\]{}()]+/i };\n/**\n * if options.applyToWord is set, expands the selection to the word where the cursor is and\n * returns modified state and dispatch.\n */\nexport const expandSelection = (state, dispatch, options) => {\n if (!options.applyToWord || !state.selection.empty) {\n return { state, dispatch };\n }\n const applyToWordOptions = options.applyToWord === true ? applyToWordDefault : options.applyToWord;\n let initialPosition = null;\n const tr = state.tr;\n const selection = state.selection;\n const before = selection.$head.nodeBefore;\n const after = selection.$head.nodeAfter;\n if (before && before.type.name === 'text' && before.text && after && after.type.name === 'text' && after.text) {\n const children = [];\n selection.$head.parent.descendants((node, pos) => {\n children.push({ node, pos });\n return false;\n });\n let cursor = selection.$head.parentOffset;\n const nodeIndex = children.findIndex(({ node, pos }) => pos <= cursor && pos + node.nodeSize >= cursor);\n let text = children[nodeIndex].node.text;\n let skip = false;\n for (let i = nodeIndex - 1; i >= 0; i--) {\n const element = children[i];\n if (!skip && element && element.node.type.name === 'text') {\n text = element.node.text + text;\n }\n else {\n skip = true;\n cursor -= element.node.nodeSize;\n }\n }\n for (let i = nodeIndex + 1; i < children.length; i++) {\n const element = children[i];\n if (element && element.node.type.name === 'text') {\n text = text + element.node.text;\n }\n else {\n break;\n }\n }\n const textBefore = text.substring(0, cursor);\n const textAfter = text.substring(cursor);\n const matchBefore = applyToWordOptions.before.exec(textBefore);\n const matchAfter = applyToWordOptions.after.exec(textAfter);\n if (matchBefore && matchAfter) {\n const extendLeft = matchBefore[0].length;\n const extendRight = matchAfter[0].length;\n const pos = initialPosition = selection.from;\n tr.setSelection(TextSelection.create(state.doc, pos - extendLeft, pos + extendRight));\n const cmdState = {\n tr,\n selection: tr.selection,\n doc: tr.doc,\n storedMarks: null,\n schema: tr.doc.type.schema\n };\n const cmdDispatch = tran => {\n tran.setSelection(TextSelection.create(tran.doc, initialPosition));\n dispatch(tran);\n };\n return { state: cmdState, dispatch: cmdDispatch };\n }\n }\n return { state, dispatch };\n};\n/**\n * if options.applyToWord is set, expands the selection to the word where the cursor is and\n * use the modified state for the passed command.\n * Designed to work with toggleInlineFormat, applyInlineStyle and applyLink functions.\n *\n * Example:\n * const applyToWord: boolean|{before: RegExp, after: RegExp} = true;\n * // or applyToWord = { before: /[^ !,?.\\[\\]{}()]+$/i, after: /^[^ !,?.\\[\\]{}()]+/i }};\n *\n * const command = expandToWordWrap(toggleInlineFormat, {...bold, applyToWord );\n * command(view.state, view.dispatch);\n */\nexport const expandToWordWrap = (command, options) => {\n return (state, dispatch, _view) => {\n const { state: cmdState, dispatch: cmdDispatch } = expandSelection(state, dispatch, options);\n return command(options)(cmdState, cmdDispatch);\n };\n};\n","import { RemoveMarkStep } from 'prosemirror-transform';\nimport { MarkType } from 'prosemirror-model';\nexport const markApplies = (doc, ranges, type) => {\n let loop = i => {\n let ref = ranges[i];\n let $from = ref.$from;\n let $to = ref.$to;\n let can = $from.depth === 0 ? doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, node => {\n if (can) {\n return false;\n }\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can) {\n return { v: true };\n }\n };\n for (let i = 0; i < ranges.length; i++) {\n let returned = loop(i);\n if (returned) {\n return returned.v;\n }\n }\n return false;\n};\nexport const toggleMark = (markType, attrs, tr) => (state, dispatch) => {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) {\n return false;\n }\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks())) {\n dispatch(tr.removeStoredMark(markType));\n }\n else {\n dispatch(tr.addStoredMark(markType.create(attrs)));\n }\n }\n else {\n let has = false;\n for (let i = 0; !has && i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (has) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n tr.addMark($from.pos, $to.pos, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n};\nexport const removeMark = (tr, from, to, mark) => {\n if (mark === void 0) {\n mark = null;\n }\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline) {\n return;\n }\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let found = mark.isInSet(node.marks);\n if (found) {\n toRemove = [found];\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks)) {\n toRemove = [mark];\n }\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found$1 = (void 0);\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step === step - 1 && style.eq(m.style)) {\n found$1 = m;\n }\n }\n if (found$1) {\n found$1.to = end;\n found$1.step = step;\n }\n else {\n matched.push({ style: style, from: Math.max(pos, from), to: end, step: step });\n }\n }\n }\n });\n matched.forEach((m) => { return tr.step(new RemoveMarkStep(m.from, m.to, m.style)); });\n return tr;\n};\nexport const removeMarks = (marks, state, dispatch, tr) => {\n let { $cursor, ranges } = state.selection;\n tr = tr || state.tr;\n if ($cursor) {\n marks.forEach(m => {\n if (m.isInSet(state.storedMarks || $cursor.marks())) {\n dispatch(tr.removeStoredMark(m));\n }\n });\n }\n else {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n marks.forEach(m => {\n removeMark(tr, $from.pos, $to.pos, m);\n });\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\nconst toArray = (x) => x instanceof Array ? x : [x];\nexport const removeAllMarks = ({ except = [] } = {}) => (state, dispatch) => {\n const tr = state.tr;\n cleanMarks(tr, { except: toArray(except) });\n if (tr.docChanged) {\n dispatch(tr);\n }\n};\n/**\n * Removes the marks from the selection base on the passed parameter.\n * Requires to dispatch the transaction.\n *\n * @example\n * See `removeAllMarks` or `cleanFormatting` function.\n */\nexport const cleanMarks = (tr, { except }) => {\n const { doc, selection } = tr;\n const schema = doc.type.schema;\n const { empty, ranges } = selection;\n const excludedMarkTypes = (except || []).map(mt => mt.name);\n if (!empty) {\n const marks = Object.keys(schema.marks)\n .map(m => schema.marks[m])\n .filter(mt => excludedMarkTypes.indexOf(mt.name) === -1);\n ranges.forEach(({ $from, $to }) => {\n marks.forEach(mark => tr.removeMark($from.pos, $to.pos, mark));\n });\n }\n};\n/**\n * Checks if a mark exists in the selection.\n * Used for checking the state of bold, italic, ... and unlink tools.\n */\nexport const hasMark = (state, options) => {\n const marks = state.schema.marks;\n const altMarks = (options.altMarks || []).filter(m => marks[m]);\n const altStyle = options.altStyle;\n let { from, $from, to, empty } = state.selection;\n const type = marks[options.mark];\n const doc = state.doc;\n let result = false;\n let currMarks;\n if (empty) {\n currMarks = state.storedMarks || $from.marks();\n result = (type && type.isInSet(currMarks)) || altMarks.some(m => marks[m].isInSet(currMarks));\n }\n else {\n result = (type && doc.rangeHasMark(from, to, type)) || altMarks.some(m => doc.rangeHasMark(from, to, marks[m]));\n }\n if (!result && altStyle && marks.style) {\n return selectionMarks(state, marks.style)\n .some(mark => styleValue(mark, altStyle) !== null);\n }\n return Boolean(result);\n};\nexport const styleValue = (mark, style) => {\n const styleText = (mark && mark.attrs.style) || '';\n const styles = styleText.split(/\\s*;\\s*/).filter(s => Boolean(s));\n for (let i = 0; i < styles.length; i++) {\n const nameValue = styles[i].split(/\\s*:\\s*/);\n if (nameValue[0].toLowerCase() === style.name && style.value.test(nameValue[1])) {\n return nameValue[1];\n }\n }\n return null;\n};\n/**\n * Returns the marks of a specific type for every inline node in the selection.\n */\nexport const selectionMarks = (state, markType) => {\n let { from, $from, to, empty } = state.selection;\n let marks = [];\n if (empty) {\n marks.push(markType.isInSet(state.storedMarks || $from.marks()));\n }\n else {\n state.doc.nodesBetween(from, to, node => {\n if (node.isInline) {\n marks.push(markType.isInSet(node.marks));\n }\n });\n }\n return marks;\n};\n/**\n * Returns the specified mark which wraps the selection.\n * Used by link tools.\n */\nexport const getMark = (state, markType) => {\n const marks = selectionMarks(state, markType);\n const filtered = marks.filter(m => Boolean(m));\n return marks.length === filtered.length ? marks[0] : undefined;\n};\n/**\n * **Deprecated.** Use `selectionMarks` function instead.\n */\nexport const getActiveMarks = (state, markType) => {\n const marks = selectionMarks(state, markType);\n const filtered = marks.filter(m => Boolean(m));\n let hasNodesWithoutMarks = marks.length !== filtered.length;\n return {\n hasNodesWithoutMarks,\n marks: filtered\n };\n};\n","import { AddMarkStep, RemoveMarkStep } from 'prosemirror-transform';\nimport { changeStylesString, shallowEqual } from './utils';\nimport { markApplies, hasMark, removeMarks, toggleMark, styleValue, selectionMarks } from './mark';\nconst changeStyleFromMark = (marks, toChange) => {\n const styleMark = marks.find(m => m.type.name === 'style');\n const elementStyle = styleMark && styleMark.attrs.style;\n return changeStylesString(elementStyle, toChange);\n};\nconst changeStyleMark = (tr, from, to, attrs, markType) => {\n const mark = markType.create({ style: attrs.style });\n let removed = [], added = [], removing = null, adding = null;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline) {\n return;\n }\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n const newStyle = changeStyleFromMark(marks, attrs);\n if (newStyle.changed || attrs.newValue) {\n const style = newStyle.changed ?\n { style: newStyle.style || null } : { style: `${[attrs.style]}: ${attrs.newValue};` };\n const currentMark = markType.isInSet(marks) ? marks.find(m => m.type.name === 'style') : null;\n const newMarkAttrs = currentMark ? Object.assign(Object.assign({}, currentMark.attrs), style) : style;\n const newStyleMark = markType.create(newMarkAttrs);\n let newSet = newStyleMark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to === start && removing.mark.eq(marks[i])) {\n removing.to = end;\n }\n else {\n removing = new RemoveMarkStep(start, end, marks[i]);\n removed.push(removing);\n }\n }\n }\n const previousAdded = adding && adding.to === start;\n const sameAdding = previousAdded && newStyleMark.attrs.style === adding.mark.attrs.style;\n if (previousAdded && sameAdding) {\n adding.to = end;\n }\n else if (Object.keys(newMarkAttrs).some(attrName => newMarkAttrs[attrName] !== null)) {\n adding = new AddMarkStep(start, end, newStyleMark);\n added.push(adding);\n }\n }\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n return removed.length + added.length > 0;\n};\n/**\n * Used by FontSize and FontName tools for getting their state.\n */\nexport const getInlineStyles = (state, style) => {\n const styleMark = state.schema.marks.style;\n const marks = styleMark ? selectionMarks(state, styleMark) : [];\n return marks.map(mark => styleValue(mark, style)).filter(m => m !== null);\n};\nconst changeStyle = (markType, attrs) => {\n return function (state, dispatch, tr) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) {\n return false;\n }\n let result = false;\n if (dispatch) {\n const transaction = tr || state.tr;\n if ($cursor) {\n const currentMarks = state.storedMarks || $cursor.marks();\n if (markType.isInSet(currentMarks)) {\n const newStyle = changeStyleFromMark(currentMarks, attrs);\n const styleMark = currentMarks.find(m => m.type.name === 'style');\n const newAttrs = Object.assign(Object.assign({}, (styleMark ? styleMark.attrs : {})), { style: newStyle.style || null });\n if (shallowEqual(styleMark.attrs, newAttrs)) {\n return false;\n }\n dispatch(transaction.removeStoredMark(markType));\n if (Object.keys(newAttrs).some(attrName => newAttrs[attrName] !== null)) {\n dispatch(transaction.addStoredMark(markType.create(newAttrs)));\n }\n result = true;\n }\n }\n else {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n result = changeStyleMark(transaction, $from.pos, $to.pos, attrs, markType);\n }\n if (result) {\n transaction.scrollIntoView();\n dispatch(transaction);\n }\n }\n }\n return result;\n };\n};\n/**\n * Used by bold, italic, ... and link commands.\n */\nexport const toggleInlineFormat = (options, tr, markAttrs) => (state, dispatch) => {\n const marks = state.schema.marks;\n const { altStyle, altMarks = [], mark } = options;\n const transaction = tr || state.tr;\n let styleRemoved = false;\n let dispatched = false;\n const markDispatched = () => dispatched = true;\n if (altStyle && marks.style) {\n const cmd = changeStyle(marks.style, { style: altStyle.name, value: altStyle.value });\n styleRemoved = cmd(state, markDispatched, transaction);\n }\n const allMarks = [mark, ...altMarks].filter(m => marks[m]);\n const toRemove = allMarks.map(m => hasMark(state, { mark: m }) && marks[m]).filter(m => m);\n if (toRemove.length) {\n removeMarks(toRemove, state, markDispatched, transaction);\n }\n else {\n if (!styleRemoved) {\n toggleMark(marks[mark], markAttrs, transaction)(state, markDispatched);\n }\n }\n if (dispatched) {\n dispatch(transaction);\n }\n return dispatched;\n};\n/**\n * Used by FontSize, FontName, Color and BackColor commands.\n */\nexport const applyInlineStyle = (options, command) => (state, dispatch) => {\n const marks = state.schema.marks;\n const markType = marks.style;\n const attrs = {\n style: options.style, value: /^.+$/, newValue: options.value\n };\n const tr = state.tr;\n if (command) {\n tr.setMeta('commandName', command);\n }\n tr.setMeta('args', options);\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markType || !markApplies(state.doc, ranges, markType)) {\n return false;\n }\n // Empty selection\n if ($cursor) {\n const marksFromSelection = state.storedMarks || $cursor.marks();\n const currentMark = markType.isInSet(marksFromSelection) ? marksFromSelection.find(m => m.type.name === 'style') : null;\n const newStyles = { style: null };\n if (currentMark && currentMark.attrs.style) {\n const resultStyles = changeStylesString(currentMark.attrs.style, attrs);\n if (resultStyles.changed && resultStyles.style) {\n newStyles.style = resultStyles.style;\n }\n }\n else if (attrs.newValue) {\n newStyles.style = `${[attrs.style]}: ${attrs.newValue};`;\n }\n const newMarkAttrs = currentMark ? Object.assign(Object.assign({}, currentMark.attrs), newStyles) : newStyles;\n if (Object.keys(newMarkAttrs).some(attrName => newMarkAttrs[attrName] !== null)) {\n dispatch(tr.addStoredMark(markType.create(newMarkAttrs)));\n }\n else {\n dispatch(tr.removeStoredMark(markType));\n }\n return true;\n }\n return changeStyle(markType, attrs)(state, dispatch, tr);\n};\n","import { toggleInlineFormat } from './inline-style';\nimport { hasMark, toggleMark, removeMark, selectionMarks } from './mark';\nimport { EditorState } from 'prosemirror-state';\nconst modifyLink = (options, tr) => (state, dispatch) => {\n const { $cursor, from, to } = state.selection;\n const markType = state.schema.marks[options.mark];\n if (!$cursor) {\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isInline && markType.isInSet(node.marks)) {\n tr.removeMark(pos, pos + node.nodeSize, markType);\n tr.addMark(pos, pos + node.nodeSize, markType.create(options.attrs));\n dispatch(tr);\n }\n });\n }\n else {\n const parentNode = $cursor.parent;\n const cursorNodeIndex = $cursor.index();\n const mark = parentNode.child(cursorNodeIndex).marks.find(m => m.type === markType);\n const childCount = parentNode.childCount;\n let linkStart = $cursor.pos - $cursor.textOffset, linkSize = parentNode.child(cursorNodeIndex).nodeSize, index, nodeSize;\n index = cursorNodeIndex - 1;\n while (index >= 0 && mark.isInSet(parentNode.child(index).marks)) {\n nodeSize = parentNode.child(index).nodeSize;\n linkSize += nodeSize;\n linkStart -= nodeSize;\n index -= 1;\n }\n index = cursorNodeIndex + 1;\n while (index < childCount && mark.isInSet(parentNode.child(index).marks)) {\n linkSize += parentNode.child(index).nodeSize;\n index += 1;\n }\n tr.removeMark(linkStart, linkStart + linkSize, markType);\n tr.addMark(linkStart, linkStart + linkSize, markType.create(options.attrs));\n dispatch(tr);\n }\n};\nexport const removeLink = (options, tr) => (state, dispatch) => {\n const { $cursor } = state.selection;\n if (!$cursor) {\n toggleInlineFormat(options, tr)(state, dispatch);\n }\n else {\n const parentNode = $cursor.parent;\n const cursorNodeIndex = $cursor.index();\n const toolMark = state.schema.marks[options.mark];\n const mark = parentNode.child(cursorNodeIndex).marks.find(m => m.type === toolMark);\n const childCount = parentNode.childCount;\n let linkStart = $cursor.pos - $cursor.textOffset, linkSize = parentNode.child(cursorNodeIndex).nodeSize, index, nodeSize;\n index = cursorNodeIndex - 1;\n while (index >= 0 && mark.isInSet(parentNode.child(index).marks)) {\n nodeSize = parentNode.child(index).nodeSize;\n linkSize += nodeSize;\n linkStart -= nodeSize;\n index -= 1;\n }\n index = cursorNodeIndex + 1;\n while (index < childCount && mark.isInSet(parentNode.child(index).marks)) {\n linkSize += parentNode.child(index).nodeSize;\n index += 1;\n }\n dispatch(removeMark(tr || state.tr, linkStart, linkStart + linkSize, mark));\n }\n};\n/**\n * Returns a mark which wraps the selection.\n */\nconst getParentMark = (state, markType) => {\n const marks = selectionMarks(state, markType);\n return marks.length === 1 && marks[0] ? marks[0] : null;\n};\nexport const applyLink = ({ mark, attrs }, commandName = 'link') => (state, dispatch) => {\n const marks = state.schema.marks;\n const tr = state.tr;\n if (commandName) {\n tr.setMeta('commandName', commandName);\n tr.setMeta('args', attrs);\n }\n let dispatched = false;\n const markDispatched = () => dispatched = true;\n if (getParentMark(state, marks[mark])) {\n modifyLink({ mark, attrs }, tr)(state, markDispatched);\n }\n else {\n let nextState = state;\n if (hasMark(state, { mark })) {\n removeLink({ mark, attrs }, tr)(state, markDispatched);\n nextState = EditorState.create({ doc: tr.doc, selection: tr.selection });\n }\n if (dispatched) {\n toggleMark(marks[mark], attrs, tr)(nextState, markDispatched);\n }\n else {\n toggleInlineFormat({ mark: mark }, tr, attrs)(nextState, markDispatched);\n }\n }\n if (dispatched) {\n dispatch(tr);\n }\n return dispatched;\n};\n","import { __rest } from \"tslib\";\nimport { changeStylesString } from './utils';\nimport { ReplaceAroundStep } from 'prosemirror-transform';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport { NodeSelection } from 'prosemirror-state';\n/**\n * @hidden\n */\nconst canChangeType = (stateDoc, pos, type) => {\n let $pos = stateDoc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n};\n/**\n * Changes the type or the attributes of the passed node.\n *\n * @example\n * See `cleanTextBlockFormatting` or `formatBlockElements` function.\n */\nexport const changeTextBlock = (tr, node, nodeType, attrs) => {\n if (!nodeType.isTextblock) {\n return false;\n }\n const { ranges } = tr.selection;\n ranges.forEach(range => {\n const mapFrom = tr.steps.length;\n const from = range.$from.pos;\n const to = range.$to.pos;\n tr.doc.nodesBetween(from, to, (currNode, pos) => {\n if (currNode.eq(node) &&\n currNode.isTextblock &&\n !currNode.hasMarkup(nodeType, attrs) &&\n canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), nodeType)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n tr.clearIncompatible(tr.mapping.slice(mapFrom).map(pos, 1), nodeType);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + currNode.nodeSize, 1);\n let slice = new Slice(Fragment.from(nodeType.create(attrs, null, currNode.marks)), 0, 0);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, slice, 1, true));\n return false; // this will skip the node children\n }\n });\n });\n};\n/**\n * Traverses the selection and returns the block nodes in it.\n *\n * @example\n * See `cleanTextBlockFormatting` function.\n */\nexport const blockNodes = (state, options = { blocksInSelection: false }) => {\n const { doc, selection } = state;\n let { $from, ranges } = selection;\n const { blocksInSelection } = options;\n const result = [];\n const selNode = selection instanceof NodeSelection ? selection.node : undefined;\n if (selNode) {\n if (selNode.isBlock) {\n result.push(selNode);\n selNode.nodesBetween(0, selNode.content.size, node => {\n if (node.isBlock) {\n result.push(node);\n }\n });\n }\n else if (!blocksInSelection && $from.parent && $from.parent.isBlock) {\n result.push($from.parent);\n }\n }\n else {\n ranges.forEach(range => {\n const from = range.$from.pos;\n const to = range.$to.pos;\n doc.nodesBetween(from, to, (node, pos, _parent, _index) => {\n if (node.isBlock && (!blocksInSelection || (pos >= from && pos + node.content.size + 2 <= to))) {\n result.push(node);\n }\n });\n });\n }\n return result;\n};\nexport const formatBlockElements = (value, commandName) => (state, dispatch) => {\n const blocks = blockNodes(state);\n const nodes = state.schema.nodes;\n const tr = state.tr;\n tr.setMeta('commandName', commandName);\n tr.setMeta('args', { value });\n blocks.forEach(node => {\n if (node.type.isTextblock) {\n if (value === 'p') {\n const _a = node.attrs, { level } = _a, attrs = __rest(_a, [\"level\"]);\n changeTextBlock(tr, node, nodes.paragraph, attrs);\n }\n else if (/^h[1-6]$/i.test(value)) {\n const level = parseInt(value.substr(1), 10);\n changeTextBlock(tr, node, nodes.heading, Object.assign(Object.assign({}, node.attrs), { level }));\n }\n else if (value === 'blockquote') {\n const _b = node.attrs, { level } = _b, attrs = __rest(_b, [\"level\"]);\n changeTextBlock(tr, node, nodes.blockquote, attrs);\n }\n }\n });\n const result = tr.docChanged;\n if (result) {\n dispatch(tr.scrollIntoView());\n }\n return result;\n};\n/**\n * Removes the style and class attributes of text block elements.\n * Requires to dispatch the transaction.\n *\n * @example\n * See `cleanFormatting` function.\n */\nexport const cleanTextBlockFormatting = (tr, options = { blocksInSelection: true }) => {\n const { doc, selection } = tr;\n const { blocksInSelection, blockNodeType } = options;\n const nodes = blockNodes({ doc, selection }, { blocksInSelection });\n const textBlocks = nodes.filter(node => node.isTextblock);\n textBlocks.forEach(node => {\n const _a = node.attrs || {}, { style = '', class: className = '' } = _a, attrs = __rest(_a, [\"style\", \"class\"]);\n const nodeType = blockNodeType || node.type;\n if (style || className || nodeType !== node.type) {\n changeTextBlock(tr, node, nodeType, attrs);\n }\n });\n};\nexport const getBlockFormats = (state) => {\n const blocks = blockNodes(state);\n const nodes = state.schema.nodes;\n const result = [];\n blocks.forEach((node) => {\n if (node.type === nodes.paragraph) {\n result.push('p');\n }\n else if (node.type === nodes.heading) {\n result.push(`h${node.attrs.level}`);\n }\n else if (node.type === nodes.blockquote && nodes.blockquote.isTextblock) {\n // In case the blockquote can have inline content.\n result.push('blockquote');\n }\n });\n return result;\n};\nexport const addStyles = (node, stylesToApply) => {\n let currentStyles = node.attrs.style, changedStyleResult, toChange;\n if (currentStyles) {\n stylesToApply.forEach(style => {\n toChange = { style: style.name, value: /^.+$/, newValue: style.value };\n changedStyleResult = changeStylesString(currentStyles, toChange);\n currentStyles = changedStyleResult.changed ? changedStyleResult.style : currentStyles;\n });\n }\n const reducer = (acc, curr) => ((acc && curr.value ? acc + ' ' : '') + curr.value ? `${curr.name}: ${curr.value};` : '');\n currentStyles = currentStyles || stylesToApply.reduce(reducer, '');\n return Object.assign({}, node.attrs, { style: currentStyles || null });\n};\nexport const hasNode = (state, nodeType) => {\n let { from, to } = state.selection;\n let result = false;\n state.doc.nodesBetween(from, to, node => {\n result = result || node.type === nodeType;\n return !result;\n });\n return result;\n};\nexport const parentBlockFormat = (state) => {\n const formats = getBlockFormats(state);\n return new Set(formats).size === 1 ? formats[0] : null;\n};\n/**\n * **Deprecated.** Use `parentBlockFormat` function instead.\n */\nexport const activeNode = (state) => {\n return { tag: parentBlockFormat(state) || '' };\n};\n","import { blockNodes, addStyles, changeTextBlock } from './blockNode';\n/**\n * Aligning block elements in the selection.\n *\n * @returns {boolean} - Returns true if any alignment is applied.\n */\nexport const alignBlocks = (actions, commandName) => (state, dispatch) => {\n const blocks = blockNodes(state);\n const tr = state.tr;\n tr.setMeta('commandName', commandName);\n blocks.forEach(node => {\n if (node.type.isTextblock) {\n let newAttrs = {};\n const action = actions.find(n => n.node === node.type.name);\n if (action) {\n newAttrs = addStyles(node, action.style);\n }\n changeTextBlock(tr, node, node.type, newAttrs);\n }\n });\n const result = tr.docChanged;\n if (result) {\n dispatch(tr.scrollIntoView());\n }\n return result;\n};\nexport const isAligned = (state, actions) => {\n const blocks = blockNodes(state);\n let result = false;\n blocks.forEach(node => {\n if (!result && node.type.isTextblock && node.attrs.style) {\n const action = actions.find(a => a.node === node.type.name);\n if (action) {\n result = action.style.every(style => {\n return !!style.value && new RegExp(`${style.name}:\\\\s?${style.value}`, 'i').test(node.attrs.style);\n });\n }\n }\n });\n return result;\n};\n","import { cleanTextBlockFormatting } from './blockNode';\nimport { cleanMarks } from './mark';\n/**\n * A command which removes the inline formatting, class and style attributes of paragraph and heading elements in the selection.\n */\nexport const cleanFormatting = (options = { blocksInSelection: true }) => (state, dispatch) => {\n const tr = state.tr;\n const { blocksInSelection, blockNodeType, exceptMarks } = options;\n const except = (exceptMarks || [state.schema.marks.link]).filter(Boolean);\n cleanMarks(tr, { except });\n cleanTextBlockFormatting(tr, { blocksInSelection, blockNodeType });\n const result = tr.docChanged;\n if (result && dispatch) {\n dispatch(tr);\n }\n return result;\n};\n","import { findWrapping, ReplaceAroundStep, canSplit, liftTarget, canJoin } from 'prosemirror-transform';\nimport { NodeRange, Fragment, Slice } from 'prosemirror-model';\nimport { Selection } from 'prosemirror-state';\n\nconst olDOM = [\"ol\", 0], ulDOM = [\"ul\", 0], liDOM = [\"li\", 0];\n/**\nAn ordered list [node spec](https://prosemirror.net/docs/ref/#model.NodeSpec). Has a single\nattribute, `order`, which determines the number at which the list\nstarts counting, and defaults to 1. Represented as an `
      `\nelement.\n*/\nconst orderedList = {\n attrs: { order: { default: 1 } },\n parseDOM: [{ tag: \"ol\", getAttrs(dom) {\n return { order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\") : 1 };\n } }],\n toDOM(node) {\n return node.attrs.order == 1 ? olDOM : [\"ol\", { start: node.attrs.order }, 0];\n }\n};\n/**\nA bullet list node spec, represented in the DOM as `
    \n \n `, isInline: true, components: [{ type: BreadCrumbListComponent, selector: \"[kendoBreadCrumbList]\", inputs: [\"items\", \"itemTemplate\", \"collapseMode\", \"separatorIcon\"], outputs: [\"itemClick\"] }, { type: i3.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], pipes: { \"async\": i1$1.AsyncPipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BreadCrumbComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoBreadCrumb',\n selector: 'kendo-breadcrumb',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.breadcrumb'\n }\n ],\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.LocalizationService }]; }, propDecorators: { items: [{\n type: Input\n }], separatorIcon: [{\n type: Input\n }], collapseMode: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], resizeSensor: [{\n type: ViewChild,\n args: ['resizeSensor', { static: true }]\n }], itemsContainers: [{\n type: ViewChildren,\n args: ['itemsContainer', { read: ElementRef }]\n }], listComponent: [{\n type: ViewChild,\n args: [BreadCrumbListComponent, { static: true }]\n }], itemTemplate: [{\n type: ContentChild,\n args: [BreadCrumbItemTemplateDirective, { static: false }]\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-breadcrumb']\n }], wrapMode: [{\n type: HostBinding,\n args: ['class.k-breadcrumb-wrap']\n }], getDir: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\nconst templateDirectives$1 = [\n BreadCrumbItemTemplateDirective\n];\nconst exportedModules = [\n BreadCrumbComponent,\n BreadCrumbItemComponent,\n BreadCrumbListComponent,\n ...templateDirectives$1\n];\nconst declarations$1 = [\n ...exportedModules,\n BreadCrumbSeparatorDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the BreadCrumb component.\n * @example\n *\n * ```ts-no-run\n * // Import the BreadCrumb module\n * import { BreadCrumbModule } from '@progress/kendo-angular-navigation';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserModule } from '@angular/platform-browser';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BreadCrumbModule], // import BreadCrumb module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass BreadCrumbModule {\n}\nBreadCrumbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BreadCrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBreadCrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BreadCrumbModule, declarations: [BreadCrumbComponent,\n BreadCrumbItemComponent,\n BreadCrumbListComponent, BreadCrumbItemTemplateDirective, BreadCrumbSeparatorDirective], imports: [CommonModule, ResizeSensorModule], exports: [BreadCrumbComponent,\n BreadCrumbItemComponent,\n BreadCrumbListComponent, BreadCrumbItemTemplateDirective] });\nBreadCrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BreadCrumbModule, imports: [[CommonModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BreadCrumbModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules],\n imports: [CommonModule, ResizeSensorModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass BottomNavigationItemComponent {\n get disabledClass() {\n return this.item.disabled;\n }\n get horizontalItemClass() {\n return this.orientation === 'horizontal';\n }\n get verticalItemClass() {\n return this.orientation === 'vertical';\n }\n get label() {\n return this.item.text ? this.item.text : null;\n }\n get tabindex() {\n return this.item.tabIndex ? this.item.tabIndex : 0;\n }\n get selectedClass() {\n return this.selectedIdx ? this.selectedIdx === this.index : this.item.selected;\n }\n get itemIcon() {\n return this.item.icon || this.item.iconClass ? true : false;\n }\n get iconClasses() {\n const kendoIcon = this.item.icon ? `k-icon k-i-${this.item.icon}` : '';\n const customIcon = this.item.iconClass ? this.item.iconClass : '';\n return `${kendoIcon} ${customIcon}`;\n }\n}\nBottomNavigationItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BottomNavigationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nBottomNavigationItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BottomNavigationItemComponent, selector: \"[kendoBottomNavigationItem]\", inputs: { itemTemplate: \"itemTemplate\", item: \"item\", index: \"index\", disabledComponent: \"disabledComponent\", selectedIdx: \"selectedIdx\", orientation: \"orientation\" }, host: { properties: { \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-state-disabled\": \"this.disabledClass\", \"class.k-hstack\": \"this.horizontalItemClass\", \"class.k-vstack\": \"this.verticalItemClass\", \"attr.aria-label\": \"this.label\", \"attr.tabindex\": \"this.tabindex\", \"attr.aria-selected\": \"this.selectedClass\", \"class.k-state-selected\": \"this.selectedClass\" } }, ngImport: i0, template: `\n \n \n {{item.text}}\n \n \n \n `, isInline: true, directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BottomNavigationItemComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoBottomNavigationItem]',\n template: `\n \n \n {{item.text}}\n \n \n \n `\n }]\n }], propDecorators: { itemTemplate: [{\n type: Input\n }], item: [{\n type: Input\n }], index: [{\n type: Input\n }], disabledComponent: [{\n type: Input\n }], selectedIdx: [{\n type: Input\n }], orientation: [{\n type: Input\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], horizontalItemClass: [{\n type: HostBinding,\n args: ['class.k-hstack']\n }], verticalItemClass: [{\n type: HostBinding,\n args: ['class.k-vstack']\n }], label: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], tabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], selectedClass: [{\n type: HostBinding,\n args: ['attr.aria-selected']\n }, {\n type: HostBinding,\n args: ['class.k-state-selected']\n }] } });\n\n/**\n * Represents a template that defines the item content of the BottomNavigation.\n * To define the template, nest an `` tag\n * with the `kendoBottomNavigationItemTemplate` directive inside the `` tag ([see example]({% slug templates_bottomnavigation %})).\n */\nclass BottomNavigationItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nBottomNavigationItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BottomNavigationItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nBottomNavigationItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BottomNavigationItemTemplateDirective, selector: \"[kendoBottomNavigationItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BottomNavigationItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoBottomNavigationItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n /**\n * @hidden\n */\n constructor(args) {\n this.prevented = false;\n Object.assign(this, args);\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `select` event of the BottomNavigation.\n */\nclass BottomNavigationSelectEvent extends PreventableEvent {\n}\n\n/**\n * @hidden\n */\nconst BOTTOMNAVIGATION_ITEM_INDEX = 'data-kendo-bottomnavigation-index';\n/**\n * @hidden\n */\nconst colors = ['primary', 'secondary', 'tertiary', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse'];\n\n/**\n * Represents the [Kendo UI BottomNavigation component for Angular]({% slug overview_bottomnavigation %}).\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\n * { text: 'Inbox', icon: 'email', selected: true },\n * { text: 'Calendar', icon: 'calendar'},\n * { text: 'Profile', icon: 'user'}\n * ]\n * }\n * ```\n */\nclass BottomNavigationComponent {\n constructor(localization, hostElement, ngZone, changeDetector, renderer) {\n this.localization = localization;\n this.hostElement = hostElement;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n /**\n * Sets a top border to the BottomNavigation ([see example]({% slug appearance_bottomnavigation %})).\n *\n * @default false\n */\n this.border = false;\n /**\n * Disables the whole BottomNavigation.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Fires each time an item is selected. This event is preventable.\n */\n this.select = new EventEmitter();\n /**\n * @hidden\n */\n this.hostClass = true;\n /**\n * @hidden\n */\n this.role = 'navigation';\n this._fill = 'flat';\n this._itemFlow = 'vertical';\n this._positionMode = 'fixed';\n this._themeColor = 'primary';\n this._nativeHostElement = this.hostElement.nativeElement;\n this.subscriptions = new Subscription();\n this.rtl = false;\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localization.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n /**\n * The fill style of the BottomNavigation ([see example]({% slug appearance_bottomnavigation %})).\n *\n * * The possible values are:\n * * (Default) `flat`\n * * `solid`\n */\n set fill(fill) {\n this.renderer.removeClass(this._nativeHostElement, `k-bottom-nav-${this.fill}`);\n this._fill = fill === 'solid' ? 'solid' : 'flat';\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this._fill}`);\n }\n get fill() {\n return this._fill;\n }\n /**\n * Specifies how the icon and text label are positioned in the BottomNavigation items ([see example]({% slug items_bottomnavigation %}#toc-itemflow)).\n *\n * The possible values are:\n * * (Default) `vertical` - Renders the text below the icon.\n * * `horizontal` - Renders the icon and the text on the same line.\n */\n set itemFlow(itemFlow) {\n this.renderer.removeClass(this._nativeHostElement, `k-bottom-nav-item-flow-${this.itemFlow}`);\n this._itemFlow = itemFlow === 'horizontal' ? 'horizontal' : 'vertical';\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-item-flow-${this._itemFlow}`);\n }\n get itemFlow() {\n return this._itemFlow;\n }\n /**\n * Specifies the position and behavior of the BottomNavigation when the page is scrollable ([see example]({% slug positioning_bottomnavigation %})).\n *\n * The possible values are:\n * * (Default) `fixed` - The BottomNavigation always stays at the bottom of the viewport, regardless of the page scroll position.\n * * `sticky` - Positions the BottomNavigation at the end of the scrollable container.\n */\n set positionMode(positionMode) {\n this.renderer.removeClass(this._nativeHostElement, `k-pos-${this.positionMode}`);\n this._positionMode = positionMode === 'sticky' ? 'sticky' : 'fixed';\n this.renderer.addClass(this._nativeHostElement, `k-pos-${this._positionMode}`);\n }\n get positionMode() {\n return this._positionMode;\n }\n /**\n * Specifies the theme color of the BottomNavigation ([see example]({% slug appearance_bottomnavigation %})).\n *\n * * The possible values are:\n * * (Default) `primary` - Applies coloring based on the primary theme color.\n * * `secondary` - Applies coloring based on the secondary theme color.\n * * `tertiary` - Applies coloring based on the tertiary theme color.\n * * `info` - Applies coloring based on the info theme color.\n * * `success` - Applies coloring based on the success theme color.\n * * `warning` - Applies coloring based on the warning theme color.\n * * `error` - Applies coloring based on the error theme color.\n * * `dark` - Applies coloring based on the dark theme color.\n * * `light` - Applies coloring based on the light theme color.\n * * `inverse` - Applies coloring based on the inverted theme color.\n */\n set themeColor(themeColor) {\n const newColor = colors.find(color => color === themeColor);\n if (newColor) {\n this.renderer.removeClass(this._nativeHostElement, `k-bottom-nav-${this._themeColor}`);\n this._themeColor = themeColor;\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this._themeColor}`);\n }\n }\n get themeColor() {\n return this._themeColor;\n }\n /**\n * @hidden\n */\n get borderClass() {\n return this.border;\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.initDomEvents();\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.applyClasses();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n selectItem(idx, args) {\n const eventArgs = new BottomNavigationSelectEvent(Object.assign({}, args));\n this.select.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.selectedIdx = idx;\n }\n }\n applyClasses() {\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this.fill}`);\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-item-flow-${this.itemFlow}`);\n this.renderer.addClass(this._nativeHostElement, `k-pos-${this.positionMode}`);\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this.themeColor}`);\n }\n initDomEvents() {\n if (!this.hostElement) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(this._nativeHostElement, 'click', this.clickHandler.bind(this)));\n this.subscriptions.add(this.renderer.listen(this._nativeHostElement, 'keydown', this.keyDownHandler.bind(this)));\n });\n }\n clickHandler(e) {\n const itemIdx = this.getBottomNavigationItemIndex(e.target);\n const item = this.items[itemIdx];\n if (!item) {\n return;\n }\n if (item.disabled) {\n e.preventDefault();\n return;\n }\n const args = {\n index: itemIdx,\n item: item,\n originalEvent: e,\n sender: this\n };\n this.ngZone.run(() => {\n this.selectItem(itemIdx, args);\n this.changeDetector.markForCheck();\n });\n }\n keyDownHandler(e) {\n const isEnterOrSpace = e.keyCode === Keys.Enter || e.keyCode === Keys.Space;\n if (!isEnterOrSpace) {\n return;\n }\n this.clickHandler(e);\n }\n getBottomNavigationItemIndex(target) {\n const item = closestItem(target, BOTTOMNAVIGATION_ITEM_INDEX, this._nativeHostElement);\n if (item) {\n return itemIndex(item, BOTTOMNAVIGATION_ITEM_INDEX);\n }\n }\n}\nBottomNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BottomNavigationComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nBottomNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: BottomNavigationComponent, selector: \"kendo-bottomnavigation\", inputs: { items: \"items\", border: \"border\", disabled: \"disabled\", fill: \"fill\", itemFlow: \"itemFlow\", positionMode: \"positionMode\", themeColor: \"themeColor\" }, outputs: { select: \"select\" }, host: { properties: { \"class.k-hstack\": \"this.hostClass\", \"class.k-justify-content-stretch\": \"this.hostClass\", \"class.k-bottom-nav\": \"this.hostClass\", \"class.k-bottom-nav-border\": \"this.borderClass\", \"class.k-state-disabled\": \"this.disabledClass\", \"attr.role\": \"this.role\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.bottomnavigation'\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: BottomNavigationItemTemplateDirective, descendants: true }], exportAs: [\"kendoBottomNavigation\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \", isInline: true, components: [{ type: BottomNavigationItemComponent, selector: \"[kendoBottomNavigationItem]\", inputs: [\"itemTemplate\", \"item\", \"index\", \"disabledComponent\", \"selectedIdx\", \"orientation\"] }], directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1$1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BottomNavigationComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoBottomNavigation',\n selector: 'kendo-bottomnavigation',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.bottomnavigation'\n }\n ],\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { items: [{\n type: Input\n }], border: [{\n type: Input\n }], disabled: [{\n type: Input\n }], fill: [{\n type: Input\n }], itemFlow: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], select: [{\n type: Output\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-hstack']\n }, {\n type: HostBinding,\n args: ['class.k-justify-content-stretch']\n }, {\n type: HostBinding,\n args: ['class.k-bottom-nav']\n }], borderClass: [{\n type: HostBinding,\n args: ['class.k-bottom-nav-border']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-state-disabled']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], itemTemplate: [{\n type: ContentChild,\n args: [BottomNavigationItemTemplateDirective, { static: false }]\n }] } });\n\nconst templateDirectives = [BottomNavigationItemTemplateDirective];\nconst exportedComponents = [BottomNavigationComponent, ...templateDirectives];\nconst declarations = [BottomNavigationItemComponent, ...exportedComponents];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the BottomNavigation component.\n * @example\n *\n * ```ts-no-run\n * // Import the BottomNavigation module\n * import { BottomNavigationModule } from '@progress/kendo-angular-navigation';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserModule } from '@angular/platform-browser';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BottomNavigationModule], // import BottomNavigation module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass BottomNavigationModule {\n}\nBottomNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BottomNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBottomNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BottomNavigationModule, declarations: [BottomNavigationItemComponent, BottomNavigationComponent, BottomNavigationItemTemplateDirective], imports: [CommonModule], exports: [BottomNavigationComponent, BottomNavigationItemTemplateDirective] });\nBottomNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BottomNavigationModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: BottomNavigationModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedComponents],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Navigation components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Navigation module\n * import { NavigationModule } from '@progress/kendo-angular-navigation';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, NavigationModule], // import Navigation module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass NavigationModule {\n}\nNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationModule, exports: [AppBarModule,\n BreadCrumbModule,\n BottomNavigationModule] });\nNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationModule, imports: [AppBarModule,\n BreadCrumbModule,\n BottomNavigationModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n AppBarModule,\n BreadCrumbModule,\n BottomNavigationModule\n ]\n }]\n }] });\n\n// AppBar exports\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AppBarComponent, AppBarModule, AppBarSectionComponent, AppBarSpacerComponent, BottomNavigationComponent, BottomNavigationItemTemplateDirective, BottomNavigationModule, BottomNavigationSelectEvent, BreadCrumbComponent, BreadCrumbItemComponent, BreadCrumbItemTemplateDirective, BreadCrumbListComponent, BreadCrumbModule, NavigationModule };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { forwardRef, Directive, Input, EventEmitter, ViewContainerRef, Component, ViewChild, HostBinding, TemplateRef, InjectionToken, ApplicationRef, Injectable, Inject, Optional, NgModule } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1$1 from '@angular/animations';\nimport { style, animate } from '@angular/animations';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport * as i4 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\nclass NotificationSettings {\n constructor() {\n /**\n * Specifies the time in milliseconds after which the\n * Notification will hide\n * ([see example]({% slug hiding_notifications %}#toc-definig-a-delay-before-hiding)).\n * Defaults to `5000`.\n */\n this.hideAfter = 5000;\n /**\n * Defines the position of the Notification\n * ([see example]({% slug positioning_notification %})).\n *\n * The possible values are:\n * * `horizontal: 'left'|'center'|'right'`\n * * `vertical: 'top'|'bottom'`\n */\n this.position = { horizontal: 'right', vertical: 'top' };\n /**\n * Specifies the animation settings of the Notification\n * ([see example]({% slug animations_notification %})).\n *\n * The possible values are:\n * * `duration`—Accepts a number in milliseconds. Defaults to `500ms`.\n * * `type?: 'slide'| (Default) 'fade'`\n */\n this.animation = { type: 'fade', duration: 500 };\n /**\n * Specifies if the Notification will require a user action to hide.\n * If the property is set to `true`, the Notification renders a **Close** button\n * ([see example]({% slug hiding_notifications %}#toc-defining-a-closable-notification)).\n *\n * The possible values are:\n * * (Default) `false`\n * * `true`\n */\n this.closable = false;\n /**\n * Specifies the type of the Notification\n * ([see example]({% slug types_notification %})).\n *\n * The possible values are:\n * * `style: (Default) 'none'|'success'|'error'|'warning'|'info'`\n * * `icon: 'true'|'false'`\n */\n this.type = { style: 'none', icon: true };\n }\n}\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-notification',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650441322,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nfunction slideAnimation(height, duration) {\n return [\n style({ overflow: 'hidden', height: 0 }),\n animate(`${duration}ms ease-in`, style({ height: `${height}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction slideCloseAnimation(height, duration) {\n return [\n style({ height: `${height}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', height: 0 }))\n ];\n}\n/**\n * @hidden\n */\nfunction fadeAnimation(duration) {\n return [\n style({ opacity: 0 }),\n animate(`${duration}ms ease-in`, style({ opacity: 1 }))\n ];\n}\n/**\n * @hidden\n */\nfunction fadeCloseAnimation(duration) {\n return [\n style({ opacity: 1 }),\n animate(`${duration}ms ease-in`, style({ opacity: 0 }))\n ];\n}\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends ComponentMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"[kendoNotificationLocalizedMessages]\", inputs: { closeTitle: \"closeTitle\" }, providers: [\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `[kendoNotificationLocalizedMessages]`\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { closeTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n *\n */\nclass NotificationComponent {\n constructor(cdr, element, renderer, builder, localizationService) {\n this.cdr = cdr;\n this.element = element;\n this.renderer = renderer;\n this.builder = builder;\n this.localizationService = localizationService;\n this.close = new EventEmitter();\n this.width = null;\n this.height = null;\n this.defaultHideAfter = 5000;\n this.animationEnd = new EventEmitter();\n this.rtl = false;\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get containerClass() {\n return true;\n }\n get closeButtonTitle() {\n return this.closeTitle || this.localizationService.get('closeTitle');\n }\n notificationClasses() {\n return `${this.type ? this.typeClass() : ''}\n ${this.closable ? 'k-notification-closable' : ''}`;\n }\n ngOnInit() {\n clearTimeout(this.hideTimeout);\n }\n ngOnDestroy() {\n clearTimeout(this.hideTimeout);\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n ngAfterViewInit() {\n if (!this.closable && !this.animation) {\n this.setHideTimeout();\n }\n if (!this.closable && this.animation) {\n this.animationEnd.pipe(take(1))\n .subscribe(() => this.setHideTimeout());\n }\n if (this.animation) {\n this.animate(this.animation);\n }\n }\n typeClass() {\n return {\n 'none': '',\n 'success': 'k-notification-success',\n 'warning': 'k-notification-warning',\n 'error': 'k-notification-error',\n 'info': 'k-notification-info'\n }[this.type.style];\n }\n typeIconClass() {\n return {\n 'none': '',\n 'success': 'k-i-success',\n 'warning': 'k-i-warning',\n 'error': 'k-i-error',\n 'info': 'k-i-info'\n }[this.type.style];\n }\n onCloseClick() {\n clearTimeout(this.hideTimeout);\n this.hide();\n }\n hide(customComponent) {\n const elementHeight = getComputedStyle(this.element.nativeElement).height;\n if (this.animation && elementHeight) {\n this.animate(this.animation, true);\n this.animationEnd.subscribe(() => {\n this.emitClose(customComponent);\n });\n return;\n }\n this.emitClose(customComponent);\n }\n setHideTimeout() {\n const hideAfter = this.hideAfter || this.defaultHideAfter;\n this.hideTimeout = window.setTimeout(() => this.onCloseClick(), hideAfter);\n }\n emitClose(customComponent) {\n if (customComponent) {\n customComponent.destroy();\n }\n this.close.emit();\n }\n play(animation, animatedElement) {\n const factory = this.builder.build(animation);\n const element = this.element.nativeElement;\n this.renderer.addClass(element, 'k-notification-container-animating');\n let player = factory.create(animatedElement);\n player.onDone(() => {\n this.renderer.removeClass(element, 'k-notification-container-animating');\n this.animationEnd.emit();\n if (player) {\n player.destroy();\n player = null;\n }\n });\n player.play();\n }\n animate(animation, onclose) {\n const element = this.element.nativeElement;\n const duration = animation.duration;\n const height = element.offsetHeight;\n const generatedAnimation = animation.type === 'slide' ?\n this.slideAnimation(height, duration, onclose) :\n this.fadeAnimation(duration, onclose);\n this.play(generatedAnimation, element);\n }\n slideAnimation(height, duration, onclose) {\n return onclose ? slideCloseAnimation(height, duration) : slideAnimation(height, duration);\n }\n fadeAnimation(duration, onclose) {\n return onclose ? fadeCloseAnimation(duration) : fadeAnimation(duration);\n }\n}\nNotificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.AnimationBuilder }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nNotificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NotificationComponent, selector: \"kendo-notification\", inputs: { templateRef: \"templateRef\", templateString: \"templateString\", width: \"width\", height: \"height\", cssClass: \"cssClass\", hideAfter: \"hideAfter\", closable: \"closable\", type: \"type\", animation: \"animation\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class.k-notification-container\": \"this.containerClass\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.notification'\n }\n ], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `\n \n \n
    \n
    \n \n\n
    \n \n \n \n {{ templateString }}\n \n \n
    \n\n \n
    \n
    \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoNotificationLocalizedMessages]\", inputs: [\"closeTitle\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-notification',\n template: `\n \n \n
    \n
    \n \n\n
    \n \n \n \n {{ templateString }}\n \n \n
    \n\n \n
    \n
    \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.notification'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$1.AnimationBuilder }, { type: i1.LocalizationService }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], templateRef: [{\n type: Input\n }], templateString: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], hideAfter: [{\n type: Input\n }], closable: [{\n type: Input\n }], type: [{\n type: Input\n }], animation: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], containerClass: [{\n type: HostBinding,\n args: ['class.k-notification-container']\n }] } });\n\n/**\n * @hidden\n */\nclass NotificationContainerComponent {\n constructor(element, renderer, resolver) {\n this.element = element;\n this.renderer = renderer;\n this.resolver = resolver;\n this.id = '';\n this.notifications = [];\n }\n ngOnDestroy() {\n this.notifications.forEach((notification) => {\n if (notification.closeClickSubscription) {\n notification.closeClickSubscription.unsubscribe();\n }\n });\n this.notifications = [];\n }\n addNotification(settings) {\n this.position = settings.position;\n this.id = `${this.position.horizontal} ${this.position.vertical}`;\n const factory = this.resolver.resolveComponentFactory(NotificationComponent);\n const notificationRef = this.container.createComponent(factory);\n this.applySettings(notificationRef, settings);\n let customComponent = null;\n if (typeof settings.content === 'function') {\n const customFactory = this.resolver.resolveComponentFactory(settings.content);\n customComponent = notificationRef.instance.container.createComponent(customFactory);\n }\n notificationRef.changeDetectorRef.detectChanges();\n this.notifications.push(notificationRef.instance);\n if (settings.appendTo) {\n this.applyAbsolutePosition(settings.appendTo);\n }\n this.applyPosition();\n this.applyContainerWrap();\n return {\n afterHide: notificationRef.instance.close,\n hide: () => notificationRef.instance.hide(customComponent),\n notification: notificationRef,\n content: customComponent || null\n };\n }\n hide(notificationRef) {\n const instance = notificationRef.instance;\n const index = this.notifications.indexOf(instance);\n this.notifications.splice(index, 1);\n if (instance.closeClickSubscription) {\n instance.closeClickSubscription.unsubscribe();\n }\n instance.templateRef = null;\n instance.templateString = null;\n notificationRef.destroy();\n }\n applyContainerWrap() {\n const value = this.position.horizontal === 'right' ? 'wrap-reverse' : 'wrap';\n this.renderer.setStyle(this.group.nativeElement, 'flex-wrap', value);\n }\n applySettings(notificationRef, settings) {\n const notification = notificationRef.instance;\n const content = settings.content;\n const animation = settings.animation || null;\n notification.closeClickSubscription = notification.close\n .subscribe(() => this.hide(notificationRef));\n if (typeof content === 'string') {\n notification.templateString = content;\n }\n if (content instanceof TemplateRef) {\n notification.templateRef = content;\n }\n notification.animation = animation;\n let type = settings.type;\n if (type && type.style === undefined) {\n type.style = 'none';\n }\n if (type && type.icon === undefined) {\n type.icon = true;\n }\n notification.type = type;\n notification.closeTitle = settings.closeTitle;\n if (settings.cssClass) {\n notification.cssClass = settings.cssClass;\n }\n notification.closable = settings.closable;\n notification.hideAfter = settings.hideAfter;\n notification.width = settings.width;\n notification.height = settings.height;\n }\n applyAbsolutePosition(appendToContainer) {\n const appendTo = appendToContainer.element.nativeElement;\n const el = this.element.nativeElement.children[0];\n if (window.getComputedStyle(appendTo).position === 'static') {\n this.renderer.setStyle(appendTo, 'position', 'relative');\n }\n this.renderer.setStyle(el, 'position', 'absolute');\n }\n applyPosition() {\n const element = this.element.nativeElement.children[0];\n const elementHalfWidth = element.getBoundingClientRect().width / 2;\n const positionStyles = this.setContainerPosition(this.position, elementHalfWidth);\n Object.keys(positionStyles).forEach((cssStyle) => {\n element.style[cssStyle] = positionStyles[cssStyle];\n });\n }\n setContainerPosition(position, offsetMargin) {\n const positionLayout = {\n horizontal: {\n left: { left: 0, alignItems: 'flex-start' },\n right: { right: 0, alignItems: 'flex-start' },\n center: { left: '50%', marginLeft: `${-offsetMargin}px`, alignItems: 'center' }\n },\n vertical: {\n top: { top: 0 },\n bottom: { bottom: 0 }\n }\n };\n const horizontal = positionLayout.horizontal[position.horizontal];\n const vertical = positionLayout.vertical[position.vertical];\n return Object.assign({}, horizontal, vertical);\n }\n}\nNotificationContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationContainerComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });\nNotificationContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: NotificationContainerComponent, selector: \"kendo-notification-container\", inputs: { id: \"id\" }, viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"group\", first: true, predicate: [\"group\"], descendants: true, static: true }], ngImport: i0, template: `\n
    \n \n
    \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-notification-container',\n template: `\n
    \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], group: [{\n type: ViewChild,\n args: ['group', { static: true }]\n }], id: [{\n type: Input\n }] } });\n\n/**\n * Used to inject the Notification container. If not provided, the first root component of\n * the application is used.\n *\n * > The `NOTIFICATION_CONTAINER` can be used only with the [`NotificationService`]({% slug api_notification_notificationservice %}) class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Notification module\n * import { NotificationModule, NOTIFICATION_CONTAINER } from '@progress/kendo-angular-notification';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { ElementRef, NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, NotificationModule], // import Notification module\n * bootstrap: [AppComponent],\n * providers: [{\n * provide: NOTIFICATION_CONTAINER,\n * useFactory: () => {\n * //return the container ElementRef, where the notification will be injected\n * return { nativeElement: document.body } as ElementRef;\n * }\n * }]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nconst NOTIFICATION_CONTAINER = new InjectionToken('Notification Container');\n/**\n * A service for opening Notification components dynamically\n * ([see example]({% slug overview_notification %})).\n *\n * @export\n * @class NotificationService\n */\nclass NotificationService {\n /**\n * @hidden\n */\n constructor(resolver, injector, container) {\n this.resolver = resolver;\n this.injector = injector;\n this.container = container;\n this.notificationContainers = [];\n this.position = { horizontal: 'right', vertical: 'top' };\n }\n /**\n * Opens a Notification component. Created Notification are mounted\n * in the DOM directly in the root application component.\n *\n * @param {NotificationSettings} settings - The settings which define the Notification.\n *\n * @returns {NotificationRef} - A reference to the Notification object and the convenience properties.\n */\n show(settings) {\n if (!settings) {\n throw new Error('NotificationSettings settings are required');\n }\n let target = this.findGroupContainer(settings);\n const position = settings.position || this.position;\n const currentId = `${position.horizontal} ${position.vertical}`;\n let container;\n let notificationRef;\n let notificationContainer = this.notificationContainers.find(c => target.nativeElement.contains(c.element.nativeElement) && c.id === currentId);\n if (!notificationContainer) {\n container = this.resolver\n .resolveComponentFactory(NotificationContainerComponent)\n .create(this.injector);\n notificationContainer = container.instance;\n this.appRef.attachView(container.hostView);\n const hostViewElement = container.location.nativeElement;\n let groupContainer = this.findGroupContainer(settings);\n if (!groupContainer) {\n throw new Error(`\n View Container not found! Inject the NOTIFICATION_CONTAINER or define a specific ViewContainerRef via\n the appendTo option. See http://www.telerik.com/kendo-angular-ui/components/notification/api/NOTIFICATION_CONTAINER/\n for more details.\n `);\n }\n groupContainer.nativeElement.appendChild(hostViewElement);\n this.notificationContainers.push(notificationContainer);\n }\n settings.position = position;\n notificationRef = notificationContainer.addNotification(settings);\n return notificationRef;\n }\n get appRef() {\n if (!this.applicationRef) {\n this.applicationRef = this.injector.get(ApplicationRef);\n }\n return this.applicationRef;\n }\n findGroupContainer(settings) {\n let container;\n if (settings.appendTo) {\n container = settings.appendTo.element;\n }\n else if (this.container) {\n container = this.container;\n }\n else {\n const appRoot = this.appRef.components && this.appRef.components[0];\n container = appRoot ? appRoot.location : null;\n }\n return container;\n }\n}\nNotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: NOTIFICATION_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nNotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ElementRef, decorators: [{\n type: Inject,\n args: [NOTIFICATION_CONTAINER]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Notification component.\n *\n * The package exports:\n * - `NotificationService`—The Notification service class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Notification module\n * import { NotificationModule } from '@progress/kendo-angular-notification';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * _@NgModule{{\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, NotificationModule], // import NotificationModule module\n * bootstrap: [AppComponent]\n * }}\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nclass NotificationModule {\n}\nNotificationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNotificationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationModule, declarations: [NotificationComponent, NotificationContainerComponent, LocalizedMessagesDirective], imports: [CommonModule], exports: [NotificationComponent, NotificationContainerComponent] });\nNotificationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationModule, providers: [NotificationService], imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NotificationModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NotificationComponent, NotificationContainerComponent, LocalizedMessagesDirective],\n entryComponents: [NotificationComponent, NotificationContainerComponent],\n imports: [CommonModule],\n exports: [NotificationComponent, NotificationContainerComponent],\n providers: [NotificationService]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NOTIFICATION_CONTAINER, NotificationComponent, NotificationContainerComponent, NotificationModule, NotificationService, NotificationSettings };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Directive, Input, forwardRef, Component, ChangeDetectionStrategy, ViewChild, HostBinding, Optional, EventEmitter, ContentChild, Output, NgModule } from '@angular/core';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { Subject, Subscription } from 'rxjs';\nimport * as i3 from '@progress/kendo-angular-dropdowns';\nimport { DropDownListModule } from '@progress/kendo-angular-dropdowns';\nimport * as i3$1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3$2 from '@progress/kendo-angular-inputs';\nimport { NumericTextBoxComponent, NumericTextBoxModule } from '@progress/kendo-angular-inputs';\nimport * as i5 from '@progress/kendo-angular-common';\nimport { Keys, anyChanged, ResizeSensorComponent, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `pageSizeChange` event. The `pageSizeChange` event fires when the page size\n * is changed from the UI. If you cancel the event, the change is prevented.\n */\nclass PageSizeChangeEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `pageSizeChange` event.\n * @param newPageSize - The newly selected page size.\n * @hidden\n */\n constructor(newPageSize) {\n super();\n this.newPageSize = newPageSize;\n }\n}\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, selector: \"kendoPagerMessages\", inputs: { firstPage: \"firstPage\", lastPage: \"lastPage\", previousPage: \"previousPage\", nextPage: \"nextPage\", page: \"page\", pageNumberInputTitle: \"pageNumberInputTitle\", itemsPerPage: \"itemsPerPage\", of: \"of\", items: \"items\", selectPage: \"selectPage\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendoPagerMessages'\n }]\n }], propDecorators: { firstPage: [{\n type: Input\n }], lastPage: [{\n type: Input\n }], previousPage: [{\n type: Input\n }], nextPage: [{\n type: Input\n }], page: [{\n type: Input\n }], pageNumberInputTitle: [{\n type: Input\n }], itemsPerPage: [{\n type: Input\n }], of: [{\n type: Input\n }], items: [{\n type: Input\n }], selectPage: [{\n type: Input\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug pager_globalization %}#toc-messages)).\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-datapager-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-datapager-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"[kendoDataPagerLocalizedMessages]\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: '[kendoDataPagerLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass PagerContextService {\n constructor() {\n this.changes = new Subject();\n this.pageChange = new Subject();\n this.pageSizeChange = new Subject();\n }\n get currentPage() {\n return this.skip / this.pageSize;\n }\n notifyChanges(changes) {\n this.total = changes.total;\n this.pageSize = changes.pageSize;\n this.skip = changes.skip;\n this.changes.next(changes);\n }\n changePage(page) {\n this.pageChange.next({ skip: page * this.pageSize, take: this.pageSize });\n }\n changePageSize(event) {\n this.pageSizeChange.next(event);\n }\n nextPage() {\n const nextPage = this.currentPage + 1;\n if (nextPage * this.pageSize <= this.total) {\n this.changePage(nextPage);\n }\n }\n prevPage() {\n const prevPage = this.currentPage - 1;\n if (prevPage * this.pageSize >= 0) {\n this.changePage(prevPage);\n }\n }\n}\n\n/**\n * @hidden\n */\nclass PagerElementComponent {\n constructor(localization, pagerContext, cd) {\n this.localization = localization;\n this.pagerContext = pagerContext;\n this.cd = cd;\n this.total = this.pagerContext.total;\n this.skip = this.pagerContext.skip;\n this.pageSize = this.pagerContext.pageSize;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerElementComponent\n */\n get currentPage() {\n return Math.floor((this.skip || 0) / this.pageSize) + 1;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerElementComponent\n */\n get totalPages() {\n return Math.ceil((this.total || 0) / this.pageSize);\n }\n /**\n * @hidden\n *\n * @param {string} key\n * @returns {string}\n *\n * @memberOf PagerElementComponent\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n *\n * @param {number} page\n *\n * @memberOf PagerElementComponent\n */\n changePage(page) {\n this.pagerContext.changePage(page);\n return false;\n }\n /**\n * @hidden\n *\n * @memberOf PagerElementComponent\n */\n ngOnInit() {\n this.subscriptions = this.pagerContext.changes.subscribe(this.onChanges.bind(this));\n this.subscriptions.add(this.localization.changes.subscribe(() => this.cd.markForCheck()));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n}\nPagerElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerElementComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nPagerElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerElementComponent, selector: \"kendo-pager-element\", ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerElementComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-pager-element',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }]; } });\n\n// eslint-disable no-access-missing-member\n/**\n * Displays buttons for navigating to the first and to the previous page ([see example]({% slug pager_settings %})).\n */\nclass PagerPrevButtonsComponent extends PagerElementComponent {\n constructor(localization, pagerContext, cd) {\n super(localization, pagerContext, cd);\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerPrevButtonsComponent\n */\n get disabled() {\n return this.currentPage === 1 || !this.total;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerPrevButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPrevButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nPagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerPrevButtonsComponent, selector: \"kendo-datapager-prev-buttons\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-datapager-prev-buttons',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Displays a drop-down list for the page size selection ([see example]({% slug pager_settings %})).\n */\nclass PagerPageSizesComponent extends PagerElementComponent {\n constructor(localization, cd, pagerContext) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n this._pageSizes = [];\n }\n /**\n * The page sizes collection. Can contain numbers and [PageSizeItem]({% slug api_pager_pagesizeitem %}) objects.\n *\n * @example\n * {% meta height:400 %}\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * {{item.ProductID}}. \n * {{item.ProductName}}\n *
    \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public data: any[] = products;\n * public pagedData = [];\n * public skip = 0;\n * public pageSize = 2;\n * public total = products.length;\n * public pagesizes = [{text: 'One', value: 1}, {text: 'Two', value: 2}, {text: 'All', value : 'all'}];\n *\n * public ngOnInit() {\n * this.pageData();\n * }\n *\n * public onPageChange(e) {\n * this.skip = e.skip;\n * this.pageSize = e.take;\n * this.pageData();\n * }\n *\n * private pageData() {\n * this.pagedData = this.data.slice(this.skip, this.skip + this.pageSize);\n * }\n * }\n *\n * const products = [{\n * 'ProductID' : 1,\n * 'ProductName' : \"Chai\",\n * 'SupplierID' : 1,\n * 'CategoryID' : 1,\n * 'QuantityPerUnit' : \"10 boxes x 20 bags\",\n * 'UnitPrice' : 18.0000,\n * 'UnitsInStock' : 39,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 10,\n * 'Discontinued' : false\n *\n * }, {\n * 'ProductID' : 2,\n * 'ProductName' : \"Chang\",\n * 'SupplierID' : 1,\n * 'CategoryID' : 1,\n * 'QuantityPerUnit' : \"24 - 12 oz bottles\",\n * 'UnitPrice' : 19.0000,\n * 'UnitsInStock' : 17,\n * 'UnitsOnOrder' : 40,\n * 'ReorderLevel' : 25,\n * 'Discontinued' : false\n * }, {\n * 'ProductID' : 3,\n * 'ProductName' : \"Aniseed Syrup\",\n * 'SupplierID' : 1,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"12 - 550 ml bottles\",\n * 'UnitPrice' : 10.0000,\n * 'UnitsInStock' : 13,\n * 'UnitsOnOrder' : 70,\n * 'ReorderLevel' : 25,\n * 'Discontinued' : false\n * }, {\n * 'ProductID' : 4,\n * 'ProductName' : \"Chef Anton\\'s Cajun Seasoning\",\n * 'SupplierID' : 2,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"48 - 6 oz jars\",\n * 'UnitPrice' : 22.0000,\n * 'UnitsInStock' : 53,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 0,\n * 'Discontinued' : false\n * }, {\n * 'ProductID' : 5,\n * 'ProductName' : \"Chef Anton\\'s Gumbo Mix\",\n * 'SupplierID' : 2,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"36 boxes\",\n * 'UnitPrice' : 21.3500,\n * 'UnitsInStock' : 0,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 0,\n * 'Discontinued' : true\n * }, {\n * 'ProductID' : 6,\n * 'ProductName' : \"Grandma\\'s Boysenberry Spread\",\n * 'SupplierID' : 3,\n * 'CategoryID' : 2,\n * 'QuantityPerUnit' : \"12 - 8 oz jars\",\n * 'UnitPrice' : 25.0000,\n * 'UnitsInStock' : 120,\n * 'UnitsOnOrder' : 0,\n * 'ReorderLevel' : 25,\n * 'Discontinued' : false\n * }];\n * ```\n * {% endmeta %}\n */\n set pageSizes(pageSizes) {\n let normalizedItems = [];\n if (Array.isArray(pageSizes)) {\n pageSizes.forEach(item => {\n if (typeof item === 'number') {\n normalizedItems.push({\n text: item.toString(),\n value: item\n });\n }\n else {\n normalizedItems.push(item);\n }\n });\n }\n if (this.pageSize && !normalizedItems.some(item => item.value === this.pageSize)) {\n normalizedItems = [{ text: this.pageSize.toString(), value: this.pageSize }, ...normalizedItems];\n }\n this._pageSizes = normalizedItems;\n }\n get pageSizes() {\n return this._pageSizes;\n }\n /**\n * @hidden\n *\n * @readonly\n */\n get classes() {\n return true;\n }\n ngAfterViewInit() {\n this.dropDownList.wrapper.nativeElement.setAttribute('aria-label', this.textFor('itemsPerPage'));\n }\n /**\n * @hidden\n */\n pageSizeChange(value, dropdownlist) {\n const event = new PageSizeChangeEvent(value);\n this.pagerContext.changePageSize(event);\n if (event.isDefaultPrevented()) {\n dropdownlist.writeValue(this.pageSize);\n }\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = typeof pageSize === 'number' ? pageSize : this.total;\n this.cd.markForCheck();\n }\n}\nPagerPageSizesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPageSizesComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });\nPagerPageSizesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerPageSizesComponent, selector: \"kendo-datapager-page-sizes\", inputs: { pageSizes: \"pageSizes\" }, host: { properties: { \"class.k-pager-sizes\": \"this.classes\", \"class.k-label\": \"this.classes\" } }, viewQueries: [{ propertyName: \"dropDownList\", first: true, predicate: [\"dropdownlist\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n {{ textFor('itemsPerPage') }}\n `, isInline: true, components: [{ type: i3.DropDownListComponent, selector: \"kendo-dropdownlist\", inputs: [\"iconClass\", \"loading\", \"data\", \"value\", \"textField\", \"valueField\", \"popupSettings\", \"listHeight\", \"defaultItem\", \"disabled\", \"itemDisabled\", \"readonly\", \"filterable\", \"virtual\", \"ignoreCase\", \"delay\", \"valuePrimitive\", \"tabindex\", \"tabIndex\", \"size\", \"rounded\", \"fillMode\", \"id\"], outputs: [\"valueChange\", \"filterChange\", \"selectionChange\", \"open\", \"opened\", \"close\", \"closed\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownList\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerPageSizesComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-datapager-page-sizes',\n template: `\n \n {{ textFor('itemsPerPage') }}\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { dropDownList: [{\n type: ViewChild,\n args: ['dropdownlist', { static: true }]\n }], pageSizes: [{\n type: Input\n }], classes: [{\n type: HostBinding,\n args: [\"class.k-pager-sizes\"]\n }, {\n type: HostBinding,\n args: [\"class.k-label\"]\n }] } });\n\n/**\n * Represents the pager template which helps to customize the pager appearance. To define a pager\n * template, nest an `` tag with the `kendoDataPagerTemplate` directive inside ``.\n *\n * The template context provides the following fields:\n * * `currentPage`—The index of the displayed page.\n * * `pageSize`—The value of the current `pageSize`.\n * * `skip`—The current skip value.\n * * `total`—The total number of records.\n * * `totalPages`—The total number of available pages.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * Current page: {{currentPage}}\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public skip = 0;\n * public pageSize = 10;\n * public total = 100;\n *\n * public onPageChange(e: any): void {\n * this.skip = e.skip;\n * this.pageSize = e.take;\n * }\n * }\n *\n * ```\n */\nclass PagerTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPagerTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPagerTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerTemplateDirective, selector: \"[kendoDataPagerTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDataPagerTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Displays numeric buttons to enable navigation between the pages.\n */\nclass PagerNumericButtonsComponent extends PagerElementComponent {\n constructor(localization, cd, pagerContext) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n this.numbersWrapClass = true;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number[]}\n * @memberOf PagerNumericButtonsComponent\n */\n get buttons() {\n let result = [];\n for (let idx = this.start; idx <= this.end; idx++) {\n result.push(idx);\n }\n return result;\n }\n /**\n * @hidden\n */\n get end() {\n return Math.min((this.start + this.buttonCount) - 1, this.totalPages);\n }\n /**\n * @hidden\n */\n get start() {\n const page = this.currentPage;\n const buttonCount = this.buttonCount;\n if (page > buttonCount) {\n const reminder = (page % buttonCount);\n return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;\n }\n return 1;\n }\n /**\n * @hidden\n */\n pageLabel(num) {\n const pageText = this.textFor('page');\n if (pageText) {\n return pageText + ' ' + num;\n }\n return num.toString();\n }\n /**\n * @hidden\n */\n onSelectChange(e) {\n const target = e.target;\n const valueAsNumber = Number(target.value);\n if (!Number.isNaN(valueAsNumber)) {\n this.changePage(valueAsNumber - 1);\n }\n else {\n if (target.value === 'previousButtons') {\n this.changePage(this.start - 2);\n }\n else {\n this.changePage(this.end);\n }\n }\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n get pageChooserLabel() {\n return this.textFor('selectPage');\n }\n}\nPagerNumericButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNumericButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });\nPagerNumericButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerNumericButtonsComponent, selector: \"kendo-datapager-numeric-buttons\", inputs: { buttonCount: \"buttonCount\" }, host: { properties: { \"class.k-pager-numbers-wrap\": \"this.numbersWrapClass\" } }, usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n
      \n
    • 1\">\n ...\n
    • \n
    • \n \n {{num}}\n \n
    • \n
    • \n ...\n
    • \n
    \n `, isInline: true, directives: [{ type: i3$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNumericButtonsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-datapager-numeric-buttons',\n template: `\n \n \n \n \n \n
      \n
    • 1\">\n ...\n
    • \n
    • \n \n {{num}}\n \n
    • \n
    • \n ...\n
    • \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { numbersWrapClass: [{\n type: HostBinding,\n args: ['class.k-pager-numbers-wrap']\n }], buttonCount: [{\n type: Input\n }] } });\n\n// eslint-disable no-access-missing-member\n/**\n * Displays buttons for navigating to the next and to the last page ([see example]({% slug pager_settings %})).\n */\nclass PagerNextButtonsComponent extends PagerElementComponent {\n constructor(localization, pagerContext, cd) {\n super(localization, pagerContext, cd);\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerNextButtonsComponent\n */\n get disabled() {\n return this.currentPage === this.totalPages || !this.total;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerNextButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNextButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nPagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerNextButtonsComponent, selector: \"kendo-datapager-next-buttons\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerNextButtonsComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-datapager-next-buttons',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * Displays an input element which allows the typing and rendering of page numbers.\n */\nclass PagerInputComponent extends PagerElementComponent {\n constructor(localization, pagerContext, zone, cd) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n this.zone = zone;\n /**\n * @hidden\n *\n * @param {string} value\n *\n * @memberOf PagerInputComponent\n */\n this.handleKeyDown = (event) => {\n let incomingValue = this.numericInput.value || this.current;\n // eslint-disable import/no-deprecated\n if (event.keyCode === Keys.Enter) {\n event.preventDefault();\n if (incomingValue !== this.current) {\n this.zone.run(() => {\n this.changePage(incomingValue - 1);\n });\n }\n }\n };\n /**\n * @hidden\n *\n * @param {string} value\n *\n * @memberOf PagerInputComponent\n */\n this.handleBlur = () => {\n const inputValue = this.numericInput.value;\n if (!inputValue) {\n this.numericInput.writeValue(this.current);\n return;\n }\n if (inputValue !== this.current) {\n this.zone.run(() => {\n this.changePage(inputValue - 1);\n });\n }\n };\n }\n /**\n * @hidden\n */\n get current() {\n return this.hasPages ? this.currentPage : 0;\n }\n /**\n * @hidden\n */\n get hasPages() {\n return this.totalPages !== 0;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInputComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nPagerInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerInputComponent, selector: \"kendo-datapager-input\", viewQueries: [{ propertyName: \"numericInput\", first: true, predicate: NumericTextBoxComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `\n \n {{textFor('page')}}\n \n \n {{textFor('of')}} {{totalPages}}\n \n `, isInline: true, components: [{ type: i3$2.NumericTextBoxComponent, selector: \"kendo-numerictextbox\", inputs: [\"focusableId\", \"disabled\", \"readonly\", \"title\", \"autoCorrect\", \"format\", \"max\", \"min\", \"decimals\", \"placeholder\", \"step\", \"spinners\", \"rangeValidation\", \"tabindex\", \"tabIndex\", \"changeValueOnScroll\", \"selectOnFocus\", \"value\", \"maxlength\", \"size\", \"rounded\", \"fillMode\"], outputs: [\"valueChange\", \"focus\", \"blur\"], exportAs: [\"kendoNumericTextBox\"] }], directives: [{ type: i3$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i5.EventsOutsideAngularDirective, selector: \"[kendoEventsOutsideAngular]\", inputs: [\"kendoEventsOutsideAngular\", \"scope\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInputComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-datapager-input',\n template: `\n \n {{textFor('page')}}\n \n \n {{textFor('of')}} {{totalPages}}\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { numericInput: [{\n type: ViewChild,\n args: [NumericTextBoxComponent, { static: true }]\n }] } });\n\n// eslint-disable no-access-missing-member\n/**\n * Displays information about the current page and the total number of records ([see example]({% slug pager_settings %})).\n */\nclass PagerInfoComponent extends PagerElementComponent {\n constructor(localization, cd, pagerContext) {\n super(localization, pagerContext, cd);\n this.pagerContext = pagerContext;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerInfoComponent\n */\n get maxItems() {\n return Math.min(this.currentPage * this.pageSize, this.total);\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerInfoComponent\n */\n get currentPageText() {\n return this.total ?\n (this.currentPage - 1) * this.pageSize + 1 :\n 0;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerInfoComponent\n */\n get classes() {\n return true;\n }\n onChanges({ total, skip, pageSize }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n}\nPagerInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInfoComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });\nPagerInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerInfoComponent, selector: \"kendo-datapager-info\", host: { properties: { \"class.k-pager-info\": \"this.classes\", \"class.k-label\": \"this.classes\" } }, usesInheritance: true, ngImport: i0, template: `{{currentPageText}} - {{maxItems}} {{textFor('of')}} {{total}} {{textFor('items')}}`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerInfoComponent, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kendo-datapager-info',\n template: `{{currentPageText}} - {{maxItems}} {{textFor('of')}} {{total}} {{textFor('items')}}`\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { classes: [{\n type: HostBinding,\n args: [\"class.k-pager-info\"]\n }, {\n type: HostBinding,\n args: [\"class.k-label\"]\n }] } });\n\n/**\n * @hidden\n */\nconst RESPONSIVE_BREAKPOINT_MEDIUM = 600;\n/**\n * @hidden\n */\nconst RESPONSIVE_BREAKPOINT_LARGE = 768;\n\n/**\n * @hidden\n */\nconst DEFAULT_PAGE_SIZE_VALUES = [5, 10, 20];\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-pager',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1652971451,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nclass PagerComponent {\n constructor(pagerContext, element, localization) {\n this.pagerContext = pagerContext;\n this.element = element;\n this.localization = localization;\n /**\n * Represents the total number of data items in the collection.\n */\n this.total = 0;\n /**\n * Defines the number of data items to be skipped.\n */\n this.skip = 0;\n /**\n * Sets the maximum numeric buttons count before the buttons are collapsed.\n */\n this.buttonCount = 10;\n /**\n * Toggles the information about the current page and the total number of records.\n */\n this.info = true;\n /**\n * Defines the type of the pager.\n */\n this.type = 'numeric';\n /**\n * Toggles the **Previous** and **Next** buttons.\n */\n this.previousNext = true;\n /**\n * Fires when the current page of the Pager is changed ([see example]({% slug overview_pager %}#toc-basic-usage)).\n * You have to handle the event yourself and page the data.\n */\n this.pageChange = new EventEmitter();\n /**\n * Fires when the page size of the Pager is changed.\n * You have to handle the event yourself and page the data.\n * If the event is prevented, the page size will remain unchanged ([see example]({% slug pager_events %})).\n */\n this.pageSizeChange = new EventEmitter();\n this.pagerWrapClass = true;\n this.pagerClass = true;\n this.widgetRole = 'navigation';\n this.subscriptions = new Subscription();\n this._templateContext = {};\n this._pageSizeValues = DEFAULT_PAGE_SIZE_VALUES;\n this.resizeHandler = () => {\n if (this.template) {\n return;\n }\n const element = this.element.nativeElement;\n const width = element.offsetWidth;\n if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {\n element.classList.remove('k-pager-md');\n element.classList.add('k-pager-sm');\n }\n else if (width >= RESPONSIVE_BREAKPOINT_MEDIUM && width < RESPONSIVE_BREAKPOINT_LARGE) {\n element.classList.add('k-pager-md');\n element.classList.remove('k-pager-sm');\n }\n else {\n element.classList.remove('k-pager-md');\n element.classList.remove('k-pager-sm');\n }\n };\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Shows a dropdown for selecting the page size.\n * When set to `true`, the dropdown will contain the default list of options - 5, 10, 20.\n * To customize the list of options, set `pageSizeValues` to an array of the desired values.\n * The array can contain numbers and [PageSizeItem]({% slug api_pager_pagesizeitem %}) objects.\n */\n set pageSizeValues(pageSizeValues) {\n this._pageSizeValues = Array.isArray(pageSizeValues) ? pageSizeValues : pageSizeValues ? DEFAULT_PAGE_SIZE_VALUES : false;\n }\n get dir() {\n return this.direction;\n }\n get totalPages() {\n return Math.ceil((this.total || 0) / this.pageSize);\n }\n get currentPage() {\n return Math.floor((this.skip || 0) / this.pageSize) + 1;\n }\n get pageSizeValues() {\n return this._pageSizeValues;\n }\n get templateContext() {\n const context = this._templateContext;\n context.totalPages = this.totalPages;\n context.total = this.total;\n context.skip = this.skip;\n context.pageSize = this.pageSize;\n context.currentPage = this.currentPage;\n return context;\n }\n ngOnInit() {\n this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));\n this.subscriptions.add(this.pagerContext.pageSizeChange.subscribe(this.changePageSize.bind(this)));\n this.subscriptions.add(this.resizeSensor.resize.subscribe(() => this.resizeHandler()));\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n }\n ngAfterViewInit() {\n this.resizeHandler();\n }\n ngOnChanges(changes) {\n if (anyChanged([\"pageSize\", \"skip\", \"total\"], changes, false)) {\n this.pagerContext.notifyChanges({\n pageSize: this.pageSize,\n skip: this.skip,\n total: this.total\n });\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n changePage(event) {\n this.pageChange.emit(event);\n }\n /**\n * @hidden\n */\n changePageSize(event) {\n this.pageSizeChange.emit(event);\n if (!event.isDefaultPrevented()) {\n if (event.newPageSize === 'all') {\n this.pageChange.emit({ skip: 0, take: this.total });\n }\n else {\n this.pageChange.emit({ skip: 0, take: event.newPageSize });\n }\n }\n }\n /**\n * @hidden\n */\n onPageSizeChange(event) {\n this.pageSizeChange.emit(event);\n if (!event.isDefaultPrevented()) {\n this.pageChange.emit({ skip: this.skip, take: event.newPageSize });\n }\n }\n}\nPagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerComponent, deps: [{ token: PagerContextService }, { token: i0.ElementRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nPagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PagerComponent, selector: \"kendo-datapager\", inputs: { total: \"total\", skip: \"skip\", pageSize: \"pageSize\", buttonCount: \"buttonCount\", info: \"info\", type: \"type\", pageSizeValues: \"pageSizeValues\", previousNext: \"previousNext\" }, outputs: { pageChange: \"pageChange\", pageSizeChange: \"pageSizeChange\" }, host: { properties: { \"class.k-pager-wrap\": \"this.pagerWrapClass\", \"class.k-pager\": \"this.pagerClass\", \"attr.role\": \"this.widgetRole\", \"attr.dir\": \"this.dir\" } }, providers: [\n LocalizationService,\n PagerContextService\n ], queries: [{ propertyName: \"template\", first: true, predicate: PagerTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"resizeSensor\", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }], exportAs: [\"kendoDataPager\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n 0\"\n [buttonCount]=\"buttonCount\">\n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: PagerPrevButtonsComponent, selector: \"kendo-datapager-prev-buttons\" }, { type: PagerNumericButtonsComponent, selector: \"kendo-datapager-numeric-buttons\", inputs: [\"buttonCount\"] }, { type: PagerInputComponent, selector: \"kendo-datapager-input\" }, { type: PagerNextButtonsComponent, selector: \"kendo-datapager-next-buttons\" }, { type: PagerInfoComponent, selector: \"kendo-datapager-info\" }, { type: PagerPageSizesComponent, selector: \"kendo-datapager-page-sizes\", inputs: [\"pageSizes\"] }, { type: i5.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoDataPagerLocalizedMessages]\" }, { type: i3$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-datapager',\n exportAs: 'kendoDataPager',\n providers: [\n LocalizationService,\n PagerContextService\n ],\n template: `\n \n \n \n \n \n \n 0\"\n [buttonCount]=\"buttonCount\">\n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: PagerContextService }, { type: i0.ElementRef }, { type: i1.LocalizationService }]; }, propDecorators: { resizeSensor: [{\n type: ViewChild,\n args: [ResizeSensorComponent, { static: true }]\n }], template: [{\n type: ContentChild,\n args: [PagerTemplateDirective, { static: false }]\n }], total: [{\n type: Input\n }], skip: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], buttonCount: [{\n type: Input\n }], info: [{\n type: Input\n }], type: [{\n type: Input\n }], pageSizeValues: [{\n type: Input\n }], previousNext: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], pageSizeChange: [{\n type: Output\n }], pagerWrapClass: [{\n type: HostBinding,\n args: ['class.k-pager-wrap']\n }], pagerClass: [{\n type: HostBinding,\n args: ['class.k-pager']\n }], widgetRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\nconst importedModules = [\n CommonModule,\n NumericTextBoxModule,\n DropDownListModule,\n EventsModule,\n ResizeSensorModule\n];\nconst INTERNAL_COMPONENTS = [\n PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent\n];\nconst providers = [\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.pager'\n }\n];\n/**\n * @hidden\n */\nclass PagerModule {\n static exports() {\n return [\n PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective\n ];\n }\n}\nPagerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPagerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, declarations: [PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent], imports: [CommonModule,\n NumericTextBoxModule,\n DropDownListModule,\n EventsModule,\n ResizeSensorModule], exports: [PagerComponent,\n PagerPrevButtonsComponent,\n PagerNextButtonsComponent,\n PagerNumericButtonsComponent,\n PagerInputComponent,\n PagerInfoComponent,\n PagerPageSizesComponent,\n PagerTemplateDirective,\n LocalizedMessagesDirective,\n CustomMessagesComponent] });\nPagerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, providers: [providers], imports: [[...importedModules]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PagerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [INTERNAL_COMPONENTS],\n exports: [INTERNAL_COMPONENTS],\n imports: [...importedModules],\n providers: [providers]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CustomMessagesComponent, LocalizedMessagesDirective, PageSizeChangeEvent, PagerComponent, PagerInfoComponent, PagerInputComponent, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, Optional, EventEmitter, isDevMode, Component, Input, Output, ViewChild, TemplateRef, NgModule } from '@angular/core';\nimport { siblingContainer, parents, addScroll, align, boundingOffset, offset, positionWithScroll, removeScroll, restrictToView, scrollPosition, getWindowViewPort } from '@progress/kendo-popup-common';\nimport * as i7 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, hasObservers, ResizeSensorComponent, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { fromEvent, merge, from } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\nimport * as i1 from '@angular/animations';\nimport { style, animate } from '@angular/animations';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i8 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nconst eitherRect = (rect, offset) => {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n return rect;\n};\n/**\n * @hidden\n */\nconst replaceOffset = (rect, offset) => {\n if (!offset) {\n return rect;\n }\n const result = {\n height: rect.height,\n left: offset.left,\n top: offset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\nconst removeStackingOffset = (rect, stackingOffset) => {\n if (!stackingOffset) {\n return rect;\n }\n const result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\nconst isDifferentOffset = (oldOffset, newOffset) => {\n const { left: oldLeft, top: oldTop } = oldOffset;\n const { left: newLeft, top: newTop } = newOffset;\n return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nconst hasBoundingRect = (elem) => !!elem.getBoundingClientRect;\n/**\n * @hidden\n */\nconst OVERFLOW_REGEXP = /auto|scroll/;\nconst overflowElementStyle = (element) => {\n return `${element.style.overflow}${element.style.overflowX}${element.style.overflowY}`;\n};\nconst overflowComputedStyle = (element) => {\n const styles = window.getComputedStyle(element);\n return `${styles.overflow}${styles.overflowX}${styles.overflowY}`;\n};\nconst overflowStyle = (element) => {\n return overflowElementStyle(element) || overflowComputedStyle(element);\n};\n/**\n * @hidden\n */\nconst scrollableParents = (element) => {\n const parentElements = [];\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return parentElements;\n }\n let parent = element.parentElement;\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent)) || parent.hasAttribute('data-scrollable')) {\n parentElements.push(parent);\n }\n parent = parent.parentElement;\n }\n parentElements.push(window);\n return parentElements;\n};\n/**\n * @hidden\n */\nconst FRAME_DURATION = 1000 / 60; //1000ms divided by 60fps\nfunction memoize(fun) {\n let result;\n let called = false;\n return (...args) => {\n if (called) {\n return result;\n }\n result = fun(...args);\n called = true;\n return result;\n };\n}\n/**\n * @hidden\n */\nconst hasRelativeStackingContext = memoize(() => {\n if (!isDocumentAvailable() && document.body !== null) {\n return false;\n }\n const top = 10;\n const parent = document.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
    child
    `;\n document.body.appendChild(parent);\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n});\n/**\n * @hidden\n */\nconst zIndex = (anchor, container) => {\n if (!anchor || !isDocumentAvailable() || !isWindowAvailable()) {\n return null;\n }\n const sibling = siblingContainer(anchor, container);\n if (!sibling) {\n return null;\n }\n const result = [anchor].concat(parents(anchor, sibling)).reduce((index, p) => {\n const zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n const current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n }, 0);\n return result ? (result + 1) : null;\n};\n/**\n * @hidden\n */\nconst scaleRect = (rect, scale) => {\n if (!rect || scale === 1) {\n return rect;\n }\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\n/**\n * Used to set the document scale when using a [scale transform](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale).\n *\n * The document or container scale is required to compute the popup position correctly. Detecting the scale is not reliable and must be set by providing a value for SCALE. See [Support for Document Scale]({% slug documentscale_popup %}).\n *\n * > Using this token is not necessary for user-applied browser zoom.\n *\n * {% meta height:300 %}\n * {% embed_file scale/app.component.ts preview %}\n * {% embed_file shared/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n *\n *\n */\nconst SCALE = new InjectionToken('Popup Document Scale');\n\nconst STYLES = [\n 'font-size',\n 'font-family',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'line-height'\n];\n/**\n * @hidden\n */\nclass DOMService {\n addOffset(current, addition) {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n }\n addScroll(rect, scroll) {\n return addScroll(rect, scroll);\n }\n align(settings) {\n return align(settings);\n }\n boundingOffset(el) {\n return boundingOffset(el);\n }\n getFontStyles(el) {\n const window = this.getWindow();\n if (!window || !el) {\n return [];\n }\n const computedStyles = window.getComputedStyle(el);\n return STYLES.map(font => ({ key: font, value: computedStyles[font] }));\n }\n getWindow() {\n return isWindowAvailable() ? window : null;\n }\n hasOffsetParent(el) {\n if (!el) {\n return false;\n }\n return !!this.nativeElement(el).offsetParent;\n }\n offset(el) {\n if (!el) {\n return null;\n }\n return offset(el);\n }\n offsetAtPoint(el, currentLocation) {\n if (!el) {\n return null;\n }\n const element = this.nativeElement(el);\n const { left, top, transition } = element.style;\n element.style.transition = 'none';\n element.style.left = `${currentLocation.left}px`;\n element.style.top = `${currentLocation.top}px`;\n const currentOffset = offset(element);\n element.style.left = left;\n element.style.top = top;\n // prevents elements with transition to be animated because of the change\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight;\n element.style.transition = transition;\n return currentOffset;\n }\n nativeElement(el) {\n if (!el) {\n return null;\n }\n return el.nativeElement || el;\n }\n position(element, popup, scale = 1) {\n if (!element || !popup) {\n return null;\n }\n return positionWithScroll(element, this.nativeElement(popup), scale);\n }\n removeScroll(rect, scroll) {\n return removeScroll(rect, scroll);\n }\n restrictToView(settings) {\n return restrictToView(settings);\n }\n scrollPosition(el) {\n return scrollPosition(this.nativeElement(el));\n }\n scrollableParents(el) {\n return scrollableParents(el);\n }\n stackingElementOffset(el) {\n const relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return null;\n }\n return offset(relativeContextElement);\n }\n stackingElementScroll(el) {\n const relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return { x: 0, y: 0 };\n }\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n }\n getRelativeContextElement(el) {\n if (!el || !hasRelativeStackingContext()) {\n return null;\n }\n let parent = this.nativeElement(el).parentElement;\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n parent = parent.parentElement;\n }\n return null;\n }\n useRelativePosition(el) {\n return !!this.getRelativeContextElement(el);\n }\n windowViewPort(el) {\n return getWindowViewPort(this.nativeElement(el));\n }\n zIndex(anchor, container) {\n return zIndex(anchor, this.nativeElement(container));\n }\n zoomLevel() {\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return 1;\n }\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2)) || 1;\n }\n isZoomed() {\n return this.zoomLevel() > 1;\n }\n}\nDOMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DOMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDOMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DOMService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DOMService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass AlignService {\n constructor(_dom, scale = 1) {\n this._dom = _dom;\n this.scale = scale;\n }\n alignElement(settings) {\n const { anchor, element, anchorAlign, elementAlign, margin, offset, positionMode } = settings;\n const scale = this.scale || 1;\n const fixedMode = positionMode === 'fixed' || !this._dom.hasOffsetParent(element);\n const anchorRect = fixedMode ? this.absoluteRect(anchor, element, offset, scale) : this.relativeRect(anchor, element, offset, scale);\n const elementRect = scaleRect(this._dom.offset(element.nativeElement), scale);\n const result = this._dom.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: elementRect,\n margin\n });\n return result;\n }\n absoluteRect(anchor, element, offset, scale) {\n const scrollPos = this.elementScrollPosition(anchor, element);\n const rect = eitherRect(this._dom.offset(anchor), offset);\n const stackScale = 2 * scale;\n const stackScroll = this._dom.stackingElementScroll(element);\n if (scale !== 1 && stackScroll) {\n stackScroll.x /= stackScale;\n stackScroll.y /= stackScale;\n }\n const stackOffset = this._dom.stackingElementOffset(element);\n if (scale !== 1 && stackOffset) {\n stackOffset.left /= stackScale;\n stackOffset.top /= stackScale;\n }\n return this._dom.removeScroll(this._dom.addScroll(removeStackingOffset(scaleRect(rect, scale), stackOffset), stackScroll), scrollPos);\n }\n elementScrollPosition(anchor, element) {\n return anchor ? { x: 0, y: 0 } : this._dom.scrollPosition(element);\n }\n relativeRect(anchor, element, offset, scale) {\n const rect = eitherRect(this._dom.position(anchor, element, scale), offset);\n return scaleRect(rect, scale);\n }\n}\nAlignService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AlignService, deps: [{ token: DOMService }, { token: SCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nAlignService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AlignService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AlignService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: undefined, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass PositionService {\n constructor(_dom, scale = 1) {\n this._dom = _dom;\n this.scale = scale;\n }\n positionElement(settings) {\n const { anchor, currentLocation, element, anchorAlign, elementAlign, collisions, margin } = settings;\n const dom = this._dom;\n const scale = this.scale || 1;\n const elementOffset = dom.offsetAtPoint(element, currentLocation);\n const elementRect = scaleRect(elementOffset, scale);\n const anchorOffset = scaleRect(dom.offset(anchor), scale);\n const anchorRect = eitherRect(anchorOffset, currentLocation);\n const viewPort = settings.viewPort || dom.windowViewPort(element);\n viewPort.width = viewPort.width / scale;\n viewPort.height = viewPort.height / scale;\n const result = dom.restrictToView({\n anchorAlign,\n anchorRect,\n collisions,\n elementAlign,\n elementRect,\n margin,\n viewPort\n });\n const offset = dom.addOffset(currentLocation, result.offset);\n return {\n flip: result.flip,\n flipped: result.flipped,\n offset: offset\n };\n }\n}\nPositionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PositionService, deps: [{ token: DOMService }, { token: SCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPositionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PositionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PositionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: undefined, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ResizeService {\n constructor(_dom, _zone) {\n this._dom = _dom;\n this._zone = _zone;\n }\n subscribe(callback) {\n if (!isDocumentAvailable()) {\n return;\n }\n this._zone.runOutsideAngular(() => {\n this.subscription = fromEvent(this._dom.getWindow(), \"resize\")\n .pipe(auditTime(FRAME_DURATION))\n .subscribe(() => callback());\n });\n }\n unsubscribe() {\n if (!this.subscription) {\n return;\n }\n this.subscription.unsubscribe();\n }\n isUnsubscribed() {\n return this.subscription && this.subscription.closed;\n }\n}\nResizeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService, deps: [{ token: DOMService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nResizeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ResizeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nconst THRESHOLD_DIFF = 1;\n/**\n * @hidden\n */\nclass ScrollableService {\n constructor(_dom, _zone) {\n this._dom = _dom;\n this._zone = _zone;\n }\n forElement(element) {\n this.unsubscribe();\n this.element = element;\n return this;\n }\n subscribe(callback) {\n if (!callback || !isDocumentAvailable() || !this.element) {\n return;\n }\n const parents = this._dom.scrollableParents(this.element);\n this._zone.runOutsideAngular(() => {\n const observables = parents.map(p => fromEvent(p, \"scroll\").pipe(auditTime(FRAME_DURATION)));\n const subscriber = (e) => {\n const target = e.target;\n const isParent = parents.filter(p => p === target).length > 0;\n const isDocument = target === document;\n const isWindow = target === window;\n if (isParent || isDocument || isWindow) {\n callback(this.isVisible(this.element, target));\n }\n };\n this.subscription = merge(...observables).subscribe(subscriber);\n });\n }\n unsubscribe() {\n if (!this.subscription) {\n return;\n }\n this.subscription.unsubscribe();\n }\n isVisible(elem, container) {\n const elemRect = this._dom.boundingOffset(elem);\n const containerRect = this._dom.boundingOffset(this._dom.nativeElement(container));\n if (THRESHOLD_DIFF < (containerRect.top - elemRect.bottom)) {\n return false;\n }\n if (THRESHOLD_DIFF < (elemRect.top - containerRect.bottom)) {\n return false;\n }\n if (THRESHOLD_DIFF < (elemRect.left - containerRect.right)) {\n return false;\n }\n if (THRESHOLD_DIFF < (containerRect.left - elemRect.right)) {\n return false;\n }\n return true;\n }\n}\nScrollableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollableService, deps: [{ token: DOMService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollableService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ScrollableService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: i0.NgZone }]; } });\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst DOWN = 'down';\nconst UP = 'up';\nconst DEFAULT_TYPE = 'slide';\nconst DEFAULT_DURATION = 100;\nconst animationTypes = {};\nanimationTypes.expand = (direction) => {\n const scale = direction === UP || direction === DOWN ? 'scaleY' : 'scaleX';\n const startScale = 0;\n const endScale = 1;\n let origin;\n if (direction === DOWN) {\n origin = 'top';\n }\n else if (direction === LEFT) {\n origin = RIGHT;\n }\n else if (direction === RIGHT) {\n origin = LEFT;\n }\n else {\n origin = 'bottom';\n }\n return {\n start: { transform: `${scale}(${startScale})`, transformOrigin: origin },\n end: { transform: `${scale}(${endScale})` }\n };\n};\nanimationTypes.slide = (direction) => {\n const translate = direction === LEFT || direction === RIGHT ? 'translateX' : 'translateY';\n const start = direction === RIGHT || direction === DOWN ? -100 : 100;\n const end = 0;\n return {\n start: { transform: `${translate}(${start}%)` },\n end: { transform: `${translate}(${end}%)` }\n };\n};\nanimationTypes.fade = () => {\n return {\n start: { opacity: 0 },\n end: { opacity: 1 }\n };\n};\nanimationTypes.zoom = () => {\n const start = 0;\n const end = 1;\n return {\n start: { transform: `scale(${start})` },\n end: { transform: `scale(${end})` }\n };\n};\n/**\n * @hidden\n */\nclass AnimationService {\n constructor(animationBuilder) {\n this.animationBuilder = animationBuilder;\n this.start = new EventEmitter();\n this.end = new EventEmitter();\n }\n play(element, options, flip) {\n if (!this.flip || this.flip.horizontal !== flip.horizontal ||\n this.flip.vertical !== flip.vertical) {\n this.flip = flip;\n const type = options.type || DEFAULT_TYPE;\n const statesFn = animationTypes[type];\n if (statesFn) {\n const direction = this.getDirection(flip, options);\n const states = statesFn(direction);\n this.playStates(element, states, options);\n }\n else if (isDevMode()) {\n throw new Error(`Unsupported animation type: \"${type}\". The supported types are slide, expand, fade and zoom.`);\n }\n }\n }\n ngOnDestroy() {\n this.stopPlayer();\n }\n playStates(element, states, options) {\n this.stopPlayer();\n const duration = options.duration || DEFAULT_DURATION;\n const factory = this.animationBuilder.build([\n style(states.start),\n animate(`${duration}ms ease-in`, style(states.end))\n ]);\n const player = this.player = factory.create(element);\n player.onDone(() => {\n this.end.emit();\n this.stopPlayer();\n });\n this.start.emit();\n player.play();\n }\n getDirection(flip, options) {\n let direction = options.direction || DOWN;\n if (flip.horizontal) {\n if (direction === LEFT) {\n direction = RIGHT;\n }\n else if (direction === RIGHT) {\n direction = LEFT;\n }\n }\n if (flip.vertical) {\n if (direction === DOWN) {\n direction = UP;\n }\n else if (direction === UP) {\n direction = DOWN;\n }\n }\n return direction;\n }\n stopPlayer() {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n}\nAnimationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AnimationService, deps: [{ token: i1.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Injectable });\nAnimationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AnimationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AnimationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.AnimationBuilder }]; } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-popup',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650440793,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nconst DEFAULT_OFFSET = { left: -10000, top: 0 };\nconst ANIMATION_CONTAINER = 'k-animation-container';\nconst ANIMATION_CONTAINER_FIXED = 'k-animation-container-fixed';\n/**\n * Represents the [Kendo UI Popup component for Angular]({% slug overview_popup %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Popup content!\n * \n * `\n * })\n * class AppComponent {\n * public show: boolean = false;\n * }\n * ```\n */\nclass PopupComponent {\n constructor(container, _alignService, domService, _positionService, _resizeService, _scrollableService, animationService, _renderer, _zone) {\n this.container = container;\n this._alignService = _alignService;\n this.domService = domService;\n this._positionService = _positionService;\n this._resizeService = _resizeService;\n this._scrollableService = _scrollableService;\n this.animationService = animationService;\n this._renderer = _renderer;\n this._zone = _zone;\n /**\n * Controls the Popup animation. By default, the opening and closing animations\n * are enabled ([see example]({% slug animations_popup %})).\n */\n this.animate = true;\n /**\n * Specifies the anchor pivot point\n * ([see example]({% slug alignmentpositioning_popup %}#toc-positioning)).\n */\n this.anchorAlign = { horizontal: 'left', vertical: 'bottom' };\n /**\n * Configures the collision behavior of the Popup\n * ([see example]({% slug viewportboundarydetection_popup %})).\n */\n this.collision = { horizontal: 'fit', vertical: 'flip' };\n /**\n * Specifies the pivot point of the Popup\n * ([see example]({% slug alignmentpositioning_popup %}#toc-positioning)).\n */\n this.popupAlign = { horizontal: 'left', vertical: 'top' };\n /**\n * Controls whether the component will copy the `anchor` font styles.\n */\n this.copyAnchorStyles = false;\n /**\n * Specifies the position mode of the component. By default, the Popup uses fixed positioning.\n * To make the Popup acquire absolute positioning, set this option to `absolute`.\n *\n * > If you need to support mobile browsers with the zoom option,\n * use the `absolute` positioning of the Popup.\n *\n * @example\n * ```html\n * \n * ```\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * Position mode:\n * \n * \n *
    \n *
    \n * Append to\n * \n * \n * \n *
    \n *
    \n *
    \n *
    \n * \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n * Bottom/Right\n *
    \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n * Bottom/Right\n *
    \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n *
    \n * `\n * })\n * class AppComponent {\n * public checked: number = 3;\n * public mode: string = 'absolute';\n * public show: boolean = true;\n * }\n * ```\n */\n this.positionMode = 'fixed';\n /**\n * Specifies the absolute position of the element\n * ([see example]({% slug alignmentpositioning_popup %}#toc-aligning-to-absolute-points)).\n * The Popup opens next to that point. The Popup pivot point is defined by the `popupAlign` configuration option.\n * The boundary detection is applied by using the window viewport.\n */\n this.offset = DEFAULT_OFFSET;\n /**\n * Fires when the anchor is scrolled outside the screen boundaries.\n * ([see example]({% slug closing_popup %}#toc-after-leaving-the-viewport)).\n */\n this.anchorViewportLeave = new EventEmitter();\n /**\n * Fires after the component is closed.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the component is opened and the opening animation ends.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the component is opened and the Popup is positioned.\n */\n this.positionChange = new EventEmitter();\n this.resolvedPromise = Promise.resolve(null);\n this.initialCheck = true;\n validatePackage(packageMetadata);\n this._renderer.addClass(container.nativeElement, ANIMATION_CONTAINER);\n this.updateFixedClass();\n }\n ngOnInit() {\n this.reposition = this.reposition.bind(this);\n this._resizeService.subscribe(this.reposition);\n this.animationSubscriptions = this.animationService.start.subscribe(this.onAnimationStart.bind(this));\n this.animationSubscriptions.add(this.animationService.end.subscribe(this.onAnimationEnd.bind(this)));\n this._scrollableService.forElement(this.domService.nativeElement(this.anchor) || this.container.nativeElement).subscribe(this.onScroll.bind(this));\n this.currentOffset = DEFAULT_OFFSET;\n this.setZIndex();\n this.copyFontStyles();\n this.updateFixedClass();\n this.reposition();\n }\n ngOnChanges(changes) {\n if (changes.copyAnchorStyles) {\n this.copyFontStyles();\n }\n if (changes.positionMode) {\n this.updateFixedClass();\n }\n }\n ngAfterViewInit() {\n if (!this.animate) {\n this.resolvedPromise.then(() => {\n this.onAnimationEnd();\n });\n }\n }\n ngAfterViewChecked() {\n if (this.initialCheck) {\n this.initialCheck = false;\n return;\n }\n this._zone.runOutsideAngular(() => {\n // workarounds https://github.com/angular/angular/issues/19094\n // uses promise because it is executed synchronously after the content is updated\n // does not use onStable in case the current zone is not the angular one.\n this.unsubscribeReposition();\n this.repositionSubscription = from(this.resolvedPromise)\n .subscribe(this.reposition);\n });\n }\n ngOnDestroy() {\n this.anchorViewportLeave.complete();\n this.positionChange.complete();\n this.close.emit();\n this.close.complete();\n this._resizeService.unsubscribe();\n this._scrollableService.unsubscribe();\n this.animationSubscriptions.unsubscribe();\n this.unsubscribeReposition();\n }\n /**\n * @hidden\n */\n onResize() {\n this.reposition();\n }\n onAnimationStart() {\n this._renderer.removeClass(this.container.nativeElement, 'k-animation-container-shown');\n }\n onAnimationEnd() {\n this._renderer.addClass(this.container.nativeElement, 'k-animation-container-shown');\n this.open.emit();\n this.open.complete();\n }\n get currentOffset() {\n return this._currentOffset;\n }\n set currentOffset(offset) {\n this.setContainerStyle('left', `${offset.left}px`);\n this.setContainerStyle('top', `${offset.top}px`);\n this._currentOffset = offset;\n }\n setZIndex() {\n if (this.anchor) {\n this.setContainerStyle('z-index', String(this.domService.zIndex(this.domService.nativeElement(this.anchor), this.container)));\n }\n }\n reposition() {\n if (!isDocumentAvailable()) {\n return;\n }\n const { flip, offset } = this.position();\n if (!this.currentOffset || isDifferentOffset(this.currentOffset, offset)) {\n this.currentOffset = offset;\n if (hasObservers(this.positionChange)) {\n this._zone.run(() => this.positionChange.emit({ offset, flip }));\n }\n }\n if (this.animate) {\n this.animationService.play(this.contentContainer.nativeElement, this.animate, flip);\n }\n this.resizeSensor.acceptSize();\n }\n position() {\n const alignedOffset = this._alignService.alignElement({\n anchor: this.domService.nativeElement(this.anchor),\n anchorAlign: this.anchorAlign,\n element: this.container,\n elementAlign: this.popupAlign,\n margin: this.margin,\n offset: this.offset,\n positionMode: this.positionMode\n });\n return this._positionService.positionElement({\n anchor: this.domService.nativeElement(this.anchor),\n anchorAlign: this.anchorAlign,\n collisions: this.collision,\n currentLocation: alignedOffset,\n element: this.container,\n elementAlign: this.popupAlign,\n margin: this.margin\n });\n }\n onScroll(isInViewPort) {\n const hasLeaveObservers = hasObservers(this.anchorViewportLeave);\n if (isInViewPort || !hasLeaveObservers) {\n this.reposition();\n }\n else if (hasLeaveObservers) {\n this._zone.run(() => {\n this.anchorViewportLeave.emit();\n });\n }\n }\n copyFontStyles() {\n if (!this.anchor || !this.copyAnchorStyles) {\n return;\n }\n this.domService.getFontStyles(this.domService.nativeElement(this.anchor))\n .forEach(s => this.setContainerStyle(s.key, s.value));\n }\n updateFixedClass() {\n const action = this.positionMode === 'fixed' ? 'addClass' : 'removeClass';\n this._renderer[action](this.container.nativeElement, ANIMATION_CONTAINER_FIXED);\n }\n setContainerStyle(name, value) {\n this._renderer.setStyle(this.container.nativeElement, name, value);\n }\n unsubscribeReposition() {\n if (this.repositionSubscription) {\n this.repositionSubscription.unsubscribe();\n }\n }\n}\nPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupComponent, deps: [{ token: i0.ElementRef }, { token: AlignService }, { token: DOMService }, { token: PositionService }, { token: ResizeService }, { token: ScrollableService }, { token: AnimationService }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: PopupComponent, selector: \"kendo-popup\", inputs: { animate: \"animate\", anchor: \"anchor\", anchorAlign: \"anchorAlign\", collision: \"collision\", popupAlign: \"popupAlign\", copyAnchorStyles: \"copyAnchorStyles\", popupClass: \"popupClass\", positionMode: \"positionMode\", offset: \"offset\", margin: \"margin\" }, outputs: { anchorViewportLeave: \"anchorViewportLeave\", close: \"close\", open: \"open\", positionChange: \"positionChange\" }, providers: [AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService], viewQueries: [{ propertyName: \"contentContainer\", first: true, predicate: [\"container\"], descendants: true, static: true }, { propertyName: \"resizeSensor\", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }], exportAs: [\"kendo-popup\"], usesOnChanges: true, ngImport: i0, template: `\n
    \n \n \n \n \n
    \n `, isInline: true, components: [{ type: i7.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i8.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i8.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendo-popup',\n providers: [AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService],\n selector: 'kendo-popup',\n template: `\n
    \n \n \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AlignService }, { type: DOMService }, { type: PositionService }, { type: ResizeService }, { type: ScrollableService }, { type: AnimationService }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { animate: [{\n type: Input\n }], anchor: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], collision: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], copyAnchorStyles: [{\n type: Input\n }], popupClass: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], offset: [{\n type: Input\n }], margin: [{\n type: Input\n }], anchorViewportLeave: [{\n type: Output\n }], close: [{\n type: Output\n }], open: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], contentContainer: [{\n type: ViewChild,\n args: ['container', { static: true }]\n }], resizeSensor: [{\n type: ViewChild,\n args: [ResizeSensorComponent, { static: true }]\n }] } });\n\nconst removeElement = (element) => {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n};\n/**\n * Used to inject the Popup container. If not provided, the first root component of\n * the application is used.\n *\n * > The `POPUP_CONTAINER` can be used only with the [`PopupService`]({% slug service_popup %}) class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Popup module\n * import { PopupModule, POPUP_CONTAINER } from '@progress/kendo-angular-popup';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { ElementRef, NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, PopupModule], // import Popup module\n * bootstrap: [AppComponent],\n * providers: [{\n * provide: POPUP_CONTAINER,\n * useFactory: () => {\n * //return the container ElementRef, where the popup will be injected\n * return { nativeElement: document.body } as ElementRef;\n * }\n * }]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nconst POPUP_CONTAINER = new InjectionToken('Popup Container');\n/**\n * A service for opening Popup components dynamically\n * ([see example]({% slug service_popup %})).\n *\n * @export\n * @class PopupService\n */\nclass PopupService {\n constructor(applicationRef, componentFactoryResolver, injector, container) {\n this.applicationRef = applicationRef;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n this.container = container;\n }\n /**\n * Gets the root view container into which the component will be injected.\n *\n * @returns {ComponentRef}\n */\n get rootViewContainer() {\n // https://github.com/angular/angular/blob/4.0.x/packages/core/src/application_ref.ts#L571\n const rootComponents = this.applicationRef.components || [];\n if (rootComponents[0]) {\n return rootComponents[0];\n }\n throw new Error(`\n View Container not found! Inject the POPUP_CONTAINER or define a specific ViewContainerRef via the appendTo option.\n See http://www.telerik.com/kendo-angular-ui/components/popup/api/POPUP_CONTAINER/ for more details.\n `);\n }\n /**\n * Sets or gets the HTML element of the root component container.\n *\n * @returns {HTMLElement}\n */\n get rootViewContainerNode() {\n return this.container ? this.container.nativeElement : this.getComponentRootNode(this.rootViewContainer);\n }\n /**\n * Opens a Popup component. Created Popups are mounted\n * in the DOM directly in the root application component.\n *\n * @param {PopupSettings} options - The options which define the Popup.\n * @returns {ComponentRef} - A reference to the Popup object.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * Popup content\n * \n * \n * `\n * })\n * export class AppComponent {\n * public popupRef: PopupRef;\n *\n * constructor( private popupService: PopupService ) {}\n *\n * public open(anchor: ElementRef, template: TemplateRef): void {\n * if (this.popupRef) {\n * this.popupRef.close();\n * this.popupRef = null;\n * return;\n * }\n *\n * this.popupRef = this.popupService.open({\n * anchor: anchor,\n * content: template\n * });\n * }\n * }\n * ```\n */\n open(options = {}) {\n const { component, nodes } = this.contentFrom(options.content);\n const popupComponentRef = this.appendPopup(nodes, options.appendTo);\n const popupInstance = popupComponentRef.instance;\n this.projectComponentInputs(popupComponentRef, options);\n popupComponentRef.changeDetectorRef.detectChanges();\n if (component) {\n component.changeDetectorRef.detectChanges();\n }\n const popupElement = this.getComponentRootNode(popupComponentRef);\n return {\n close: () => {\n if (component) {\n component.destroy();\n }\n popupComponentRef.destroy();\n // Angular will not remove the element unless the change detection is triggered\n removeElement(popupElement);\n },\n content: component,\n popup: popupComponentRef,\n popupAnchorViewportLeave: popupInstance.anchorViewportLeave,\n popupClose: popupInstance.close,\n popupElement: popupElement,\n popupOpen: popupInstance.open,\n popupPositionChange: popupInstance.positionChange\n };\n }\n appendPopup(nodes, container) {\n const popupComponentRef = this.createComponent(PopupComponent, nodes, container);\n if (!container) {\n this.rootViewContainerNode.appendChild(this.getComponentRootNode(popupComponentRef));\n }\n return popupComponentRef;\n }\n /**\n * Gets the HTML element for a component reference.\n *\n * @param {ComponentRef} componentRef\n * @returns {HTMLElement}\n */\n getComponentRootNode(componentRef) {\n return componentRef.location.nativeElement;\n }\n /**\n * Gets the `ComponentFactory` instance by its type.\n *\n * @param {*} componentClass\n * @param {*} nodes\n * @returns {ComponentRef}\n */\n getComponentFactory(componentClass) {\n return this.componentFactoryResolver.resolveComponentFactory(componentClass);\n }\n /**\n * Creates a component reference from a `Component` type class.\n *\n * @param {*} componentClass\n * @param {*} nodes\n * @returns {ComponentRef}\n */\n createComponent(componentClass, nodes, container) {\n const factory = this.getComponentFactory(componentClass);\n if (container) {\n return container.createComponent(factory, undefined, this.injector, nodes);\n }\n else {\n const component = factory.create(this.injector, nodes);\n this.applicationRef.attachView(component.hostView);\n return component;\n }\n }\n /**\n * Projects the inputs on the component.\n *\n * @param {ComponentRef} component\n * @param {*} options\n * @returns {ComponentRef}\n */\n projectComponentInputs(component, options) {\n Object.getOwnPropertyNames(options)\n .filter(prop => prop !== 'content' || options.content instanceof TemplateRef)\n .map((prop) => {\n component.instance[prop] = options[prop];\n });\n return component;\n }\n /**\n * Gets the component and the nodes to append from the `content` option.\n *\n * @param {*} content\n * @returns {any}\n */\n contentFrom(content) {\n if (!content || content instanceof TemplateRef) {\n return { component: null, nodes: [[]] };\n }\n const component = this.createComponent(content);\n const nodes = component ? [component.location.nativeElement] : [];\n return {\n component: component,\n nodes: [\n nodes // \n ]\n };\n }\n}\nPopupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupService, deps: [{ token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: POPUP_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPopupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ElementRef, decorators: [{\n type: Inject,\n args: [POPUP_CONTAINER]\n }, {\n type: Optional\n }] }]; } });\n\nconst POPUP_DIRECTIVES = [PopupComponent];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Popup component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Popup module\n * import { PopupModule } from '@progress/kendo-angular-popup';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, PopupModule], // import Popup module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass PopupModule {\n}\nPopupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPopupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, declarations: [PopupComponent], imports: [CommonModule, ResizeSensorModule], exports: [PopupComponent] });\nPopupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, providers: [PopupService], imports: [[CommonModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: PopupModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [POPUP_DIRECTIVES],\n entryComponents: [POPUP_DIRECTIVES],\n exports: [POPUP_DIRECTIVES],\n imports: [CommonModule, ResizeSensorModule],\n providers: [PopupService]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { POPUP_CONTAINER, PopupComponent, PopupModule, PopupService, SCALE };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Injectable, Component, Input, Output, HostListener, Directive, forwardRef, ViewContainerRef, ContentChildren, ViewChild, ViewChildren, HostBinding, ElementRef, NgModule } from '@angular/core';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { take, filter, takeUntil } from 'rxjs/operators';\nimport * as i6 from '@progress/kendo-angular-common';\nimport { Keys, isDocumentAvailable, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { Subject, Subscription, merge, fromEvent } from 'rxjs';\nimport * as i2 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1$1 from '@progress/kendo-angular-buttons';\nimport { DropDownButtonComponent, ButtonsModule } from '@progress/kendo-angular-buttons';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-toolbar',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1650441416,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * @hidden\n */\nclass RefreshService {\n constructor() {\n this.onRefresh = new EventEmitter();\n }\n refresh(tool) {\n this.onRefresh.emit(tool);\n }\n}\nRefreshService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RefreshService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nRefreshService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RefreshService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RefreshService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst focusableRegex = /^(?:a|input|select|textarea|button|object)$/i;\n/**\n * @hidden\n */\nfunction outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseFloat(style.marginLeft) || 0 + parseFloat(style.marginRight) || 0;\n return width;\n}\n/**\n * @hidden\n */\nfunction innerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width -= parseFloat(style.paddingLeft) || 0 + parseFloat(style.borderLeftWidth) || 0;\n width -= parseFloat(style.paddingRight) || 0 + parseFloat(style.borderRightWidth) || 0;\n return width;\n}\n/**\n * @hidden\n */\nfunction outerHeight(element) {\n var width = element.offsetHeight;\n var style = getComputedStyle(element);\n width += parseFloat(style.marginTop) || 0 + parseFloat(style.marginBottom) || 0;\n return width;\n}\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n const hasSize = rect.width > 0 && rect.height > 0;\n const hasPosition = rect.x !== 0 && rect.y !== 0;\n // Elements can have zero size due to styling, but they should still count as visible.\n // For example, the selection checkbox has no size, but is made visible through styling.\n return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n/**\n * @hidden\n */\nconst findElement = (node, predicate, matchSelf = true) => {\n if (!node) {\n return;\n }\n if (matchSelf && predicate(node)) {\n return node;\n }\n node = node.firstChild;\n while (node) {\n if (node.nodeType === 1) {\n const element = findElement(node, predicate);\n if (element) {\n return element;\n }\n }\n node = node.nextSibling;\n }\n};\n/**\n * @hidden\n */\nconst isFocusable = (element, checkVisibility = true) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n let focusable = tabIndex !== null;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled;\n }\n return focusable && (!checkVisibility || isVisible(element));\n }\n return false;\n};\n/**\n * @hidden\n */\nconst findFocusable = (element, checkVisibility = true) => {\n return findElement(element, node => isFocusable(node, checkVisibility));\n};\n/**\n * @hidden\n */\nconst findFocusableChild = (element, checkVisibility = true) => {\n return findElement(element, node => isFocusable(node, checkVisibility), false);\n};\n/**\n * @hidden\n */\nconst findFocusableSibling = (element, checkVisibility = true, reverse) => {\n let node = reverse ? element.prevSibling : element.nextSibling;\n while (node) {\n if (node.nodeType === 1) {\n const result = findElement(node, el => isFocusable(el, checkVisibility));\n if (result) {\n return result;\n }\n }\n node = reverse ? node.prevSibling : node.nextSibling;\n }\n};\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst makePeeker = (collection) => (index) => isPresent(collection[index]);\n/**\n * @hidden\n */\nconst getIndexOfFocused = (prevKeyCode, nextKeyCode, collection) => (ev) => {\n switch (ev.type) {\n case 'keydown':\n if (ev.keyCode === prevKeyCode) {\n return collection.length - 1;\n }\n if (ev.keyCode === nextKeyCode) {\n return 0;\n }\n break;\n case 'click':\n return collection.findIndex(be => be === ev.target || be.contains(ev.target));\n case 'focus':\n return 0;\n default:\n return 0;\n }\n};\n/**\n * @hidden\n */\nconst seekFocusedIndex = (prevKeyCode, nextKeyCode, seeker) => (startIndex, ev) => {\n switch (ev.keyCode) {\n case prevKeyCode:\n return seeker(startIndex - 1) ? startIndex - 1 : startIndex;\n case nextKeyCode:\n return seeker(startIndex + 1) ? startIndex + 1 : startIndex;\n default:\n return startIndex;\n }\n};\n/**\n * @hidden\n */\nconst areEqual = (first) => (second) => first === second;\n/**\n * @hidden\n */\nconst getNextKey = (rtl = false) => (overflows = true) => overflows ? Keys.ArrowDown : rtl ? Keys.ArrowLeft : Keys.ArrowRight;\n/**\n * @hidden\n */\nconst getPrevKey = (rtl = false) => (overflows = true) => overflows ? Keys.ArrowUp : rtl ? Keys.ArrowRight : Keys.ArrowLeft;\n/**\n * @hidden\n */\nconst getValueForLocation = (property, displayMode, overflows) => {\n switch (displayMode) {\n case 'toolbar':\n return overflows ? undefined : property;\n case 'overflow':\n return overflows ? property : undefined;\n default:\n return property;\n }\n};\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(zone) {\n this.zone = zone;\n this.focused = { renderedTool: null, index: -1 };\n this.renderedTools = [];\n this.isPopupFocused = false;\n this.isOverflowButtonFocused = false;\n }\n setRenderedTools(rts) {\n this.renderedTools = [...rts];\n }\n click({ context, event: ev }) {\n if (this.focused.renderedTool !== context && ev) {\n this.focus(context, ev);\n }\n }\n moveFocusToToolBar() {\n this.isPopupFocused = false;\n this.focusOverflowButton();\n }\n moveFocusToPopup() {\n this.isPopupFocused = true;\n this.blurOverflowButton();\n this.focus();\n }\n focusNext(ev) {\n if (!this.isOverflowButtonFocused && this.focused.renderedTool && !this.focused.renderedTool.tool.handleKey(ev)) {\n const nextRT = this.getFocusableTools().slice(this.focused.index + 1)[0];\n if (nextRT) {\n this.focus(nextRT, ev);\n }\n else {\n if (this.isOverflowButtonVisible() && !this.isPopupFocused) {\n this.focusOverflowButton();\n }\n }\n }\n }\n focusPrev(ev) {\n if (this.isOverflowButtonFocused) {\n const lastFocusableRT = this.getFocusableTools().reverse()[0];\n this.focus(lastFocusableRT, ev);\n }\n else if (this.focused.renderedTool && !this.focused.renderedTool.tool.handleKey(ev)) {\n const prevRT = this.getFocusableTools()\n .slice(0, this.focused.index)\n .reverse()[0];\n if (prevRT) {\n this.focus(prevRT, ev);\n }\n }\n }\n resetNavigation() {\n this.blurOverflowButton();\n this.focused.renderedTool = null;\n this.focused.index = -1;\n }\n focusFirst(ev) {\n const firstTool = this.getFocusableTools()[0];\n const overFlowButton = this.overflowButton;\n if (firstTool) {\n this.focused.renderedTool = firstTool;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === firstTool);\n this.focus(firstTool, ev);\n }\n else if (overFlowButton) {\n overFlowButton.nativeElement.focus();\n }\n }\n getFocusableTools() {\n return this.renderedTools.filter(rt => rt.tool.overflows === this.isPopupFocused && rt.tool.canFocus());\n }\n focus(renderedTool, ev) {\n // running the code below in onStable fixes issue #2939\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n if (!renderedTool) {\n const focusableRTs = this.getFocusableTools();\n const lastFocusedRT = focusableRTs.find(rt => rt === this.focused.renderedTool) || focusableRTs[0];\n // guard against only disabled tools\n if (lastFocusedRT) {\n this.focused.renderedTool = lastFocusedRT;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === lastFocusedRT);\n // if event is undefined, then this means that the tool is the first one in the overflow popup\n lastFocusedRT.tool.focus(ev);\n }\n }\n else if (renderedTool.tool.canFocus && renderedTool.tool.canFocus()) {\n this.focused.renderedTool = renderedTool;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === renderedTool);\n renderedTool.tool.focus(ev);\n this.blurOverflowButton();\n }\n });\n }\n blurOverflowButton() {\n if (this.overflowButton) {\n this.isOverflowButtonFocused = false;\n this.overflowButton.nativeElement.tabIndex = -1;\n }\n }\n focusOverflowButton() {\n this.isOverflowButtonFocused = true;\n this.overflowButton.nativeElement.tabIndex = 0;\n this.overflowButton.nativeElement.focus();\n }\n isOverflowButtonVisible() {\n return (isPresent(this.overflowButton) &&\n window.getComputedStyle(this.overflowButton.nativeElement).getPropertyValue('visibility') === 'visible');\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * Represents the Base ToolBar Tool component for Angular.\n * Extend this class to create custom tools.\n */\nclass ToolBarToolComponent {\n constructor() {\n this.tabIndex = -1; //Focus movement inside the toolbar is managed using roving tabindex.\n this.overflows = true;\n // this should be replaced with showTool: DisplayMode = 'both';\n /**\n * @hidden\n */\n this.responsive = true;\n }\n get toolbarDisplay() {\n return this.overflows ? 'none' : 'inline-block';\n }\n get overflowDisplay() {\n return this.overflows ? 'block' : 'none';\n }\n /**\n * Determines if the tool can be focused.\n * If the returned value is `false`, the tool will not be part of the keyboard navigation.\n * @returns `true` if the tool should take part in keyboard navigation.\n */\n canFocus() {\n return false;\n }\n /**\n * Called when the tool is focused.\n * The method accepts as argument the original browser event, which can be a `KeyboardEvent`, `MouseEvent` or `FocusEvent`.\n * @param {Event} ev - This is the event that caused the tool to be focused.\n */\n // @ts-ignore\n focus(ev) {\n /* noop */\n }\n /**\n * Called when the tool is focused and one of the arrow keys is pressed.\n * The returned boolean value determines whether the `ToolBarComponent` will move the focus to the next/previous `ToolBarToolComponent`\n * ([see example]({% slug customcontroltypes_toolbar %}#toc-adding-keyboard-navigation)).\n * @param {KeyboardEvent} ev - The last pressed arrow key\n * @returns\n */\n // @ts-ignore\n handleKey(ev) {\n return false;\n }\n}\nToolBarToolComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarToolComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarToolComponent, selector: \"toolbar-tool\", inputs: { responsive: \"responsive\" }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarToolComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'toolbar-tool',\n template: ``\n }]\n }], propDecorators: { responsive: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nconst defaultPopupWidth = '150px';\n\n/**\n * @hidden\n */\nclass RendererService {\n getElement() {\n return this.element.nativeElement;\n }\n querySelector(selector) {\n return this.element.nativeElement.querySelector(selector);\n }\n querySelectorAll(selector) {\n return this.element.nativeElement.querySelectorAll(selector);\n }\n findFocusable() {\n return findFocusable(this.element.nativeElement, false);\n }\n findFocusableChild(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableChild(element, false);\n }\n findNextFocusableSibling(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableSibling(element, false);\n }\n findPrevFocusableSibling(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableSibling(element, false, true);\n }\n setAttribute(element, attr, value) {\n this.renderer.setAttribute(element, attr, value);\n }\n}\nRendererService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nRendererService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RendererService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: RendererService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nclass ToolBarRendererComponent {\n constructor(element, renderer, rendererService, refreshService) {\n this.element = element;\n this.renderer = renderer;\n this.rendererService = rendererService;\n this.refreshService = refreshService;\n this.rendererClick = new EventEmitter();\n this.rendererService.element = element;\n this.rendererService.renderer = this;\n this.refreshSubscription = this.refreshService.onRefresh.subscribe((tool) => {\n if (this.tool === tool) {\n this.refresh();\n }\n });\n }\n onClick(ev) {\n this.rendererClick.emit({ context: this, event: ev });\n }\n ngOnInit() {\n if (this.resizable) {\n if (this.location === 'toolbar') {\n this.template = this.tool.toolbarTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'hidden');\n this.renderer.setStyle(this.element.nativeElement, 'display', 'none');\n }\n else {\n this.template = this.tool.popupTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'display', 'none');\n }\n }\n else {\n this.tool.overflows = false;\n this.template = this.tool.toolbarTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'display');\n this.renderer.setStyle(this.element.nativeElement, 'display', 'inline-block');\n }\n }\n ngOnDestroy() {\n this.refreshSubscription.unsubscribe();\n }\n ngAfterViewInit() {\n if (this.resizable) {\n this.refresh();\n }\n }\n /**\n * @hidden\n */\n get width() {\n return this.tool.overflows ? 0 : outerWidth(this.element.nativeElement);\n }\n /**\n * @hidden\n */\n isDisplayed() {\n return this.element.nativeElement.style.display !== 'none';\n }\n /**\n * @hidden\n */\n refresh() {\n if (this.resizable) {\n if (this.location === 'toolbar') {\n this.renderer.setStyle(this.element.nativeElement, 'visibility', this.tool.visibility);\n this.renderer.setStyle(this.element.nativeElement, 'display', this.tool.toolbarDisplay);\n }\n else {\n this.renderer.setStyle(this.element.nativeElement, 'display', this.tool.overflowDisplay);\n }\n }\n }\n /**\n * @hidden\n */\n setAttribute(element, attr, value) {\n this.renderer.setAttribute(element, attr, value);\n }\n}\nToolBarRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarRendererComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: RendererService }, { token: RefreshService }], target: i0.ɵɵFactoryTarget.Component });\nToolBarRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarRendererComponent, selector: \"kendo-toolbar-renderer\", inputs: { tool: \"tool\", location: \"location\", resizable: \"resizable\" }, outputs: { rendererClick: \"rendererClick\" }, host: { listeners: { \"click\": \"onClick($event)\" } }, providers: [RendererService], exportAs: [\"kendoToolBarRenderer\"], ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarRendererComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarRenderer',\n providers: [RendererService],\n selector: 'kendo-toolbar-renderer',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: RendererService }, { type: RefreshService }]; }, propDecorators: { tool: [{\n type: Input\n }], location: [{\n type: Input\n }], resizable: [{\n type: Input\n }], rendererClick: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass ToolbarMessages extends ComponentMessages {\n}\nToolbarMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nToolbarMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarMessages, selector: \"kendo-toolbar-messages-base\", inputs: { moreToolsTitle: \"moreToolsTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-toolbar-messages-base'\n }]\n }], propDecorators: { moreToolsTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedToolbarMessagesDirective extends ToolbarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedToolbarMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedToolbarMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedToolbarMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedToolbarMessagesDirective, selector: \"[kendoToolbarLocalizedMessages]\", providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => LocalizedToolbarMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedToolbarMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => LocalizedToolbarMessagesDirective)\n }\n ],\n selector: '[kendoToolbarLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst getInitialPopupSettings = (isRtl) => ({\n animate: true,\n anchorAlign: { horizontal: isRtl ? 'left' : 'right', vertical: 'bottom' },\n popupAlign: { horizontal: isRtl ? 'left' : 'right', vertical: 'top' }\n});\n/**\n * Represents the [Kendo UI ToolBar component for Angular]({% slug overview_toolbar %}).\n */\nclass ToolBarComponent {\n constructor(localization, popupService, refreshService, navigationService, element, zone, renderer, _cdr) {\n this.localization = localization;\n this.popupService = popupService;\n this.refreshService = refreshService;\n this.navigationService = navigationService;\n this.element = element;\n this.zone = zone;\n this.renderer = renderer;\n this._cdr = _cdr;\n /**\n * Hides the overflowing tools in a popup.\n */\n this.overflow = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the ToolBar.\n */\n this.tabindex = 0;\n /**\n * Fires when the overflow popup of the ToolBar is opened.\n */\n this.open = new EventEmitter();\n /**\n * Fires when the overflow popup of the ToolBar is closed.\n */\n this.close = new EventEmitter();\n this.hostClasses = true;\n this.cancelRenderedToolsSubscription$ = new Subject();\n this.subscriptions = new Subscription();\n this.popupSubs = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * @hidden\n */\n set resizable(value) {\n this.overflow = value;\n }\n get resizable() {\n return this.overflow;\n }\n /**\n * Configures the popup of the ToolBar drop-down list.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, getInitialPopupSettings(this.localization.rtl), settings);\n }\n get popupSettings() {\n return this._popupSettings || getInitialPopupSettings(this.localization.rtl);\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n set popupOpen(open) {\n if (this.popupOpen === open) {\n return;\n }\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n this.toggle(open);\n }\n get popupOpen() {\n return this._open;\n }\n /**\n * @hidden\n */\n onFocus(ev) {\n this.navigationService.resetNavigation();\n this.navigationService.focusFirst(ev);\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n }\n /**\n * @hidden\n */\n onFocusOut(event) {\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n if (closest(event.relatedTarget, (el) => el === this.element.nativeElement)) {\n this.element.nativeElement.setAttribute('tabindex', '-1');\n return;\n }\n this.element.nativeElement.setAttribute('tabindex', this.tabindex.toString());\n }\n get getRole() {\n return 'toolbar';\n }\n get getDir() {\n return this.direction;\n }\n get resizableClass() {\n return this.overflow;\n }\n ngAfterViewInit() {\n const element = this.element.nativeElement;\n if (!element.getAttribute('tabindex')) {\n this.element.nativeElement.setAttribute('tabindex', '0');\n }\n this.zone.runOutsideAngular(() => {\n this.toolbarKeydownListener = this.renderer.listen(this.element.nativeElement, 'keydown', (ev) => {\n switch (ev.keyCode) {\n case Keys.ArrowLeft:\n this.zone.run(() => {\n ev.preventDefault();\n if (this.direction === 'ltr') {\n this.navigationService.focusPrev(ev);\n }\n else {\n this.navigationService.focusNext(ev);\n }\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n });\n break;\n case Keys.ArrowRight:\n this.zone.run(() => {\n ev.preventDefault();\n if (this.direction === 'ltr') {\n this.navigationService.focusNext(ev);\n }\n else {\n this.navigationService.focusPrev(ev);\n }\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n });\n break;\n case Keys.Tab:\n this.zone.run(() => this.navigationService.resetNavigation());\n break;\n case Keys.Escape:\n this.zone.run(() => this.toggle(false));\n break;\n default:\n break;\n }\n });\n });\n if (this.overflow) {\n this.subscriptions.add(merge(this.resizeSensor.resize, this.renderedTools.changes).subscribe(() => { this.onResize(); }));\n // because of https://github.com/telerik/kendo-angular-buttons/pull/276\n // calling onResize twice is the trade-off for removing the manual ChangeDetection\n // triggering altogether - it ensures correct layout and calculations\n // when some tools need overflow on initial rendering\n this.zone.runOutsideAngular(() => setTimeout(() => { this.onResize(); this.onResize(); }));\n this.navigationService.overflowButton = this.overflowButton;\n }\n this.navigationService.setRenderedTools(this.renderedTools.toArray());\n this.subscriptions.add(this.renderedTools.changes.subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray())));\n }\n ngOnInit() {\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n if (isDocumentAvailable()) {\n this.zone.runOutsideAngular(() => this.subscriptions.add(fromEvent(document, 'click')\n .pipe(filter(() => !!this.popupRef), filter((ev) => !this.popupRef.popup.instance.container.nativeElement.contains(ev.target)), filter((ev) => !this.overflowButton.nativeElement.contains(ev.target)))\n .subscribe(() => {\n this.zone.run(() => {\n this.popupOpen = false;\n });\n })));\n }\n }\n ngOnChanges(changes) {\n if (changes.tabindex) {\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', changes.tabindex.currentValue.toString());\n }\n }\n ngOnDestroy() {\n this.destroyPopup();\n if (this.toolbarKeydownListener) {\n this.toolbarKeydownListener();\n }\n this.cancelRenderedToolsSubscription$.next();\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n get moreToolsTitle() {\n return this.localization.get('moreToolsTitle');\n }\n /**\n * @hidden\n */\n get cdr() {\n return this._cdr;\n }\n /**\n * @hidden\n */\n onRendererClick(data) {\n this.navigationService.click(data);\n this.element.nativeElement.setAttribute('tabindex', '-1');\n }\n /**\n * @hidden\n */\n showPopup() {\n this.popupOpen = !this.popupOpen;\n this.navigationService.click({ context: undefined, event: undefined });\n }\n /**\n * Toggles the visibility of the overflow popup.\n */\n toggle(popupOpen) {\n this._open = popupOpen !== undefined ? popupOpen : !this.popupOpen;\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n if (this.popupOpen) {\n this.popupRef = this.popupService.open({\n anchor: this.overflowButton,\n anchorAlign: this.popupSettings.anchorAlign,\n popupAlign: this.popupSettings.popupAlign,\n content: this.popupTemplate,\n appendTo: this.appendTo,\n animate: this.popupSettings.animate,\n popupClass: this.popupSettings.popupClass,\n positionMode: 'absolute'\n });\n this.setPopupContentDimensions();\n this.popupSubs.add(this.popupRef.popupOpen.subscribe(this.onPopupOpen.bind(this)));\n this.popupSubs.add(this.popupRef.popupClose.subscribe(this.onPopupClose.bind(this)));\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (isDocumentAvailable()) {\n const containerWidth = innerWidth(this.element.nativeElement) - this.overflowAnchorWidth;\n this.shrink(containerWidth, this.childrenWidth);\n this.stretch(containerWidth, this.childrenWidth);\n this.displayAnchor();\n this.resizeSensor.acceptSize();\n }\n }\n /**\n * @hidden\n */\n onPopupOpen() {\n this.zone.runOutsideAngular(() => {\n this.overflowKeydownListener = this.renderer.listen(this.popupRef.popupElement, 'keydown', (ev) => {\n switch (ev.keyCode) {\n case Keys.ArrowUp:\n this.zone.run(() => {\n ev.preventDefault();\n this.navigationService.focusPrev(ev);\n });\n break;\n case Keys.ArrowDown:\n this.zone.run(() => {\n ev.preventDefault();\n this.navigationService.focusNext(ev);\n });\n break;\n case Keys.Escape:\n this.zone.run(() => this.toggle(false));\n break;\n case Keys.Tab:\n this.zone.run(() => {\n this.toggle(false);\n this.navigationService.resetNavigation();\n });\n break;\n default:\n break;\n }\n });\n });\n this.cancelRenderedToolsSubscription$.next();\n this.navigationService.moveFocusToPopup();\n this.navigationService.setRenderedTools(this.overflowRenderedTools.toArray());\n this.overflowRenderedTools.changes\n .pipe(takeUntil(this.cancelRenderedToolsSubscription$))\n .subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray()));\n }\n /**\n * @hidden\n */\n onPopupClose() {\n this.cancelRenderedToolsSubscription$.next();\n this.navigationService.setRenderedTools(this.renderedTools.toArray());\n this.renderedTools.changes\n .pipe(takeUntil(this.cancelRenderedToolsSubscription$))\n .subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray()));\n this.navigationService.moveFocusToToolBar();\n if (this.overflowKeydownListener) {\n this.overflowKeydownListener();\n }\n }\n displayAnchor() {\n const visibility = this.allTools.filter(t => t.overflows && t.responsive).length > 0 ? 'visible' : 'hidden';\n this.renderer.setStyle(this.overflowButton.nativeElement, 'visibility', visibility);\n }\n get popupWidth() {\n if (!this.popupSettings || !this.popupSettings.width) {\n return defaultPopupWidth;\n }\n return isNaN(this.popupSettings.width) ? this.popupSettings.width : `${this.popupSettings.width}px`;\n }\n get popupHeight() {\n if (!this.popupSettings || !this.popupSettings.height) {\n return;\n }\n return isNaN(this.popupSettings.height) ? this.popupSettings.height : `${this.popupSettings.height}px`;\n }\n get overflowAnchorWidth() {\n if (!this.overflow) {\n return 0;\n }\n if (!this.cachedOverflowAnchorWidth) {\n this.cachedOverflowAnchorWidth = outerWidth(this.overflowButton.nativeElement);\n }\n return this.cachedOverflowAnchorWidth;\n }\n get gap() {\n if (isPresent(this.cachedGap)) {\n return this.cachedGap;\n }\n const computedGap = getComputedStyle(this.element.nativeElement).gap;\n this.cachedGap = isPresent(computedGap) ? parseInt(computedGap, 10) : 0;\n return this.cachedGap;\n }\n get childrenWidth() {\n const width = this.renderedTools.reduce((totalWidth, tool) => tool.width + totalWidth + (tool.isDisplayed() ? this.gap : 0), 0);\n return Math.ceil(width);\n }\n get visibleTools() {\n return this.allTools.filter((tool) => {\n return tool.overflows === false;\n });\n }\n get overflowTools() {\n return this.allTools.filter((tool) => {\n return tool.overflows === true;\n });\n }\n shrink(containerWidth, childrenWidth) {\n let width;\n if (containerWidth < childrenWidth) {\n for (var i = this.visibleTools.length - 1; i >= 0; i--) {\n if (containerWidth > childrenWidth) {\n break;\n }\n else {\n width = this.hideLastVisibleTool();\n childrenWidth -= width;\n }\n }\n }\n }\n stretch(containerWidth, childrenWidth) {\n let width;\n if (containerWidth > childrenWidth) {\n for (var i = this.overflowTools.length - 1; i >= 0; i--) {\n width = this.showFirstHiddenTool(containerWidth, childrenWidth);\n if (width) {\n childrenWidth += width;\n }\n else {\n break;\n }\n }\n }\n }\n hideLastVisibleTool() {\n const tool = this.visibleTools[this.visibleTools.length - 1];\n const renderedElement = this.renderedTools.find((r) => {\n return r.tool === tool;\n });\n const width = renderedElement.width;\n tool.overflows = true;\n this.refreshService.refresh(tool);\n return width;\n }\n showFirstHiddenTool(containerWidth, childrenWidth) {\n const tool = this.overflowTools[0];\n const renderedElement = this.renderedTools.find(r => r.tool === tool);\n tool.overflows = false;\n tool.visibility = 'hidden';\n this.refreshService.refresh(tool);\n if (containerWidth > childrenWidth + renderedElement.width) {\n tool.visibility = 'visible';\n this.refreshService.refresh(tool);\n }\n else {\n tool.overflows = true;\n this.refreshService.refresh(tool);\n }\n return renderedElement.width; // returns 0 if `overflows` is true\n }\n setPopupContentDimensions() {\n const popupContentContainer = this.popupRef.popup.instance.contentContainer.nativeElement;\n popupContentContainer.style.width = this.popupWidth;\n popupContentContainer.style.height = this.popupHeight;\n popupContentContainer.style.overflow = 'auto';\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupSubs.unsubscribe();\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n}\nToolBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarComponent, deps: [{ token: i1.LocalizationService }, { token: i2.PopupService }, { token: RefreshService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nToolBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarComponent, selector: \"kendo-toolbar\", inputs: { overflow: \"overflow\", resizable: \"resizable\", popupSettings: \"popupSettings\", tabindex: \"tabindex\", tabIndex: \"tabIndex\" }, outputs: { open: \"open\", close: \"close\" }, host: { listeners: { \"focus\": \"onFocus($event)\", \"focusout\": \"onFocusOut($event)\" }, properties: { \"class.k-widget\": \"this.hostClasses\", \"class.k-toolbar\": \"this.hostClasses\", \"attr.role\": \"this.getRole\", \"attr.dir\": \"this.getDir\", \"class.k-toolbar-resizable\": \"this.resizableClass\" } }, providers: [\n RefreshService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.toolbar'\n }\n ], queries: [{ propertyName: \"allTools\", predicate: ToolBarToolComponent }], viewQueries: [{ propertyName: \"overflowButton\", first: true, predicate: [\"overflowButton\"], descendants: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"resizeSensor\", first: true, predicate: [\"resizeSensor\"], descendants: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"renderedTools\", predicate: [\"toolbarRenderer\"], descendants: true }, { propertyName: \"overflowRenderedTools\", predicate: [\"overflowRenderer\"], descendants: true }], exportAs: [\"kendoToolBar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n
      \n \n
    • \n \n
    • \n
      \n
    \n
    \n \n \n `, isInline: true, components: [{ type: ToolBarRendererComponent, selector: \"kendo-toolbar-renderer\", inputs: [\"tool\", \"location\", \"resizable\"], outputs: [\"rendererClick\"], exportAs: [\"kendoToolBarRenderer\"] }, { type: i6.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedToolbarMessagesDirective, selector: \"[kendoToolbarLocalizedMessages]\" }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBar',\n providers: [\n RefreshService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.toolbar'\n }\n ],\n selector: 'kendo-toolbar',\n template: `\n \n \n \n \n \n \n \n \n \n
      \n \n
    • \n \n
    • \n
      \n
    \n
    \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i2.PopupService }, { type: RefreshService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { overflow: [{\n type: Input\n }], resizable: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: ['tabIndex']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], allTools: [{\n type: ContentChildren,\n args: [ToolBarToolComponent]\n }], overflowButton: [{\n type: ViewChild,\n args: ['overflowButton', { static: false }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], resizeSensor: [{\n type: ViewChild,\n args: ['resizeSensor', { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], renderedTools: [{\n type: ViewChildren,\n args: ['toolbarRenderer']\n }], overflowRenderedTools: [{\n type: ViewChildren,\n args: ['overflowRenderer']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-toolbar']\n }], onFocus: [{\n type: HostListener,\n args: ['focus', ['$event']]\n }], onFocusOut: [{\n type: HostListener,\n args: ['focusout', ['$event']]\n }], getRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], getDir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], resizableClass: [{\n type: HostBinding,\n args: ['class.k-toolbar-resizable']\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar Button tool for Angular]({% slug controltypes_toolbar %}#toc-buttons).\n */\nclass ToolBarButtonComponent extends ToolBarToolComponent {\n constructor() {\n super();\n // showText and showIcon showIcon should be declared first\n /**\n * Specifies where button text should be displayed\n */\n this.showText = 'both';\n /**\n * Specifies where button icon should be displayed\n */\n this.showIcon = 'both';\n /**\n * Provides visual styling that indicates if the Button is active\n * ([see example]({% slug controltypes_toolbar %}#toc-toggle-buttons)).\n * By default, `toggleable` is set to `false`.\n */\n this.toggleable = false;\n /**\n * Sets the selected state of the Button.\n */\n this.selected = false;\n /**\n * The fillMode property specifies the background and border styles of the Button.\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `null`\n */\n this.fillMode = 'solid';\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `null` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Fires each time the Button is clicked.\n */\n this.click = new EventEmitter();\n /**\n * Fires when the Button [pointerdown](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/pointerdown_event) event is triggered.\n */\n this.pointerdown = new EventEmitter();\n /**\n * Fires each time the selected state of a Toggle Button is changed.\n * The event argument is the new selected state (Boolean).\n */\n this.selectedChange = new EventEmitter();\n this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n }\n /**\n * Specifies the text of the Button ([see example]({% slug controltypes_toolbar %}#toc-buttons)).\n */\n set text(text) {\n this.toolbarOptions.text = getValueForLocation(text, this.showText, false);\n this.overflowOptions.text = getValueForLocation(text, this.showText, true);\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.fillMode = look === 'default' ? 'solid' : look;\n }\n }\n /**\n * @hidden\n */\n get togglable() {\n return this.toggleable;\n }\n set togglable(value) {\n this.toggleable = value;\n }\n /**\n * Defines the name for an existing icon in a Kendo UI theme\n * ([see example]({% slug controltypes_toolbar %}#toc-buttons)).\n * The icon is rendered inside the Button by a `span.k-icon` element.\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines a CSS class—or multiple classes separated by spaces—\n * which are applied to a `span` element inside the Button. Allows the usage of custom icons.\n */\n set iconClass(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\n }\n /**\n * Defines a URL which is used for an `img` element inside the Button.\n * The URL can be relative or absolute. If relative, it is evaluated with relation to the web page URL.\n */\n set imageUrl(imageUrl) {\n this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\n }\n /**\n * @hidden\n */\n onBlur() {\n this.getButton().tabIndex = -1;\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev) {\n // guard against focusing twice on mousedown.\n if (!ev || ev.type === 'focus' || ev.type === 'keydown') {\n this.getButton().focus();\n }\n this.getButton().tabIndex = 0;\n }\n /**\n * @hidden\n */\n handleKey() {\n this.getButton().tabIndex = -1;\n return false;\n }\n getButton() {\n return (this.overflows ? this.overflowButtonElement : this.toolbarButtonElement).nativeElement;\n }\n}\nToolBarButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarButtonComponent, selector: \"kendo-toolbar-button\", inputs: { showText: \"showText\", showIcon: \"showIcon\", text: \"text\", style: \"style\", className: \"className\", title: \"title\", disabled: \"disabled\", toggleable: \"toggleable\", look: \"look\", togglable: \"togglable\", selected: \"selected\", fillMode: \"fillMode\", themeColor: \"themeColor\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\" }, outputs: { click: \"click\", pointerdown: \"pointerdown\", selectedChange: \"selectedChange\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toolbarButtonElement\", first: true, predicate: [\"toolbarButton\"], descendants: true, read: ElementRef }, { propertyName: \"overflowButtonElement\", first: true, predicate: [\"overflowButton\"], descendants: true, read: ElementRef }], exportAs: [\"kendoToolBarButton\"], usesInheritance: true, ngImport: i0, template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n {{ overflowOptions.text }}\n \n \n `, isInline: true, directives: [{ type: i1$1.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarButton',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonComponent) }],\n selector: 'kendo-toolbar-button',\n template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n {{ overflowOptions.text }}\n \n \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], text: [{\n type: Input\n }], style: [{\n type: Input\n }], className: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], toggleable: [{\n type: Input\n }], look: [{\n type: Input\n }], togglable: [{\n type: Input\n }], selected: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], click: [{\n type: Output\n }], pointerdown: [{\n type: Output\n }], selectedChange: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toolbarButtonElement: [{\n type: ViewChild,\n args: ['toolbarButton', { read: ElementRef, static: false }]\n }], overflowButtonElement: [{\n type: ViewChild,\n args: ['overflowButton', { read: ElementRef, static: false }]\n }] } });\n\n/**\n * Represents the Kendo UI Toolbar ButtonGroup for Angular.\n */\nclass ToolBarButtonGroupComponent extends ToolBarToolComponent {\n constructor(localization) {\n super();\n this.localization = localization;\n /**\n * By default, the selection mode of the ButtonGroup is set to `multiple`.\n */\n this.selection = 'multiple';\n this.focusedIndex = -1;\n this.getNextKey = getNextKey(this.localization.rtl);\n this.getPrevKey = getPrevKey(this.localization.rtl);\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.buttonComponents.forEach(b => b.fillMode = look === 'default' ? 'solid' : look);\n }\n }\n get buttonElements() {\n return this.getButtonGroup()\n .buttons.filter(b => !b.isDisabled)\n .map(b => b.element);\n }\n /**\n * @hidden\n */\n onFocus() {\n // triggered on tabin\n this.focusedIndex = 0;\n }\n /**\n * @hidden\n */\n onNavigate(ev) {\n ev.preventDefault();\n }\n /**\n * @hidden\n */\n selectedChangeHandler(state, button) {\n button.selected = state;\n button.selectedChange.emit(state);\n }\n /**\n * @hidden\n */\n onButtonClick(ev) {\n this.focusedIndex = this.buttonElements.findIndex(be => be === ev.target || be.contains(ev.target));\n this.focusButton(this.focusedIndex, ev);\n }\n /**\n * @hidden\n */\n canFocus() {\n return !(this.disabled || this.buttonElements.length === 0);\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n const nextKey = this.getNextKey(this.overflows);\n const prevKey = this.getPrevKey(this.overflows);\n this.focusedIndex = getIndexOfFocused(prevKey, nextKey, this.buttonElements)(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n const nextKey = this.getNextKey(this.overflows);\n const prevKey = this.getPrevKey(this.overflows);\n const peekAtIndex = makePeeker(this.buttonElements);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(prevKey, nextKey, peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n getButtonGroup() {\n return this.overflows ? this.overflowButtonGroup : this.toolbarButtonGroup;\n }\n focusButton(index, ev) {\n // Guard against focusing twice on mousedown.\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown') {\n this.buttonElements[index].focus();\n }\n }\n}\nToolBarButtonGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonGroupComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nToolBarButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarButtonGroupComponent, selector: \"kendo-toolbar-buttongroup\", inputs: { disabled: \"disabled\", selection: \"selection\", width: \"width\", look: \"look\" }, providers: [LocalizationService, { provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonGroupComponent) }], queries: [{ propertyName: \"buttonComponents\", predicate: i0.forwardRef(function () { return ToolBarButtonComponent; }) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toolbarButtonGroup\", first: true, predicate: [\"toolbarButtonGroup\"], descendants: true }, { propertyName: \"overflowButtonGroup\", first: true, predicate: [\"overflowButtonGroup\"], descendants: true }], exportAs: [\"kendoToolBarButtonGroup\"], usesInheritance: true, ngImport: i0, template: `\n \n \n \n {{ button.toolbarOptions.text }}\n \n \n \n \n \n \n {{ button.overflowOptions.text }}\n \n \n \n `, isInline: true, components: [{ type: i1$1.ButtonGroupComponent, selector: \"kendo-buttongroup\", inputs: [\"disabled\", \"selection\", \"width\", \"tabIndex\"], outputs: [\"navigate\"], exportAs: [\"kendoButtonGroup\"] }], directives: [{ type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonGroupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarButtonGroup',\n providers: [LocalizationService, { provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonGroupComponent) }],\n selector: 'kendo-toolbar-buttongroup',\n template: `\n \n \n \n {{ button.toolbarOptions.text }}\n \n \n \n \n \n \n {{ button.overflowOptions.text }}\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { disabled: [{\n type: Input\n }], selection: [{\n type: Input\n }], width: [{\n type: Input\n }], look: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], buttonComponents: [{\n type: ContentChildren,\n args: [forwardRef(() => ToolBarButtonComponent)]\n }], toolbarButtonGroup: [{\n type: ViewChild,\n args: ['toolbarButtonGroup', { static: false }]\n }], overflowButtonGroup: [{\n type: ViewChild,\n args: ['overflowButtonGroup', { static: false }]\n }] } });\n\n/**\n * @hidden\n */\nclass ToolBarButtonListComponent {\n constructor() {\n this.disabled = false;\n this.fillMode = 'solid';\n this.themeColor = 'base';\n this.itemClick = new EventEmitter();\n }\n getText(dataItem) {\n if (dataItem) {\n return this.textField ? dataItem[this.textField] : dataItem.text || dataItem;\n }\n return undefined;\n }\n onClick(item, index) {\n const dataItem = this.data[index];\n if (item.click) {\n item.click(dataItem);\n }\n this.itemClick.emit(dataItem);\n }\n}\nToolBarButtonListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarButtonListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarButtonListComponent, selector: \"kendo-toolbar-buttonlist\", inputs: { data: \"data\", textField: \"textField\", disabled: \"disabled\", fillMode: \"fillMode\", themeColor: \"themeColor\" }, outputs: { itemClick: \"itemClick\" }, viewQueries: [{ propertyName: \"buttons\", predicate: [\"button\"], descendants: true }], ngImport: i0, template: `\n \n {{ getText(item) }}\n \n `, isInline: true, directives: [{ type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarButtonListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-toolbar-buttonlist',\n template: `\n \n {{ getText(item) }}\n \n `\n }]\n }], propDecorators: { data: [{\n type: Input\n }], textField: [{\n type: Input\n }], disabled: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], buttons: [{\n type: ViewChildren,\n args: ['button']\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar DropDownButton for Angular]({% slug controltypes_toolbar %}#toc-dropdownbuttons).\n */\nclass ToolBarDropDownButtonComponent extends ToolBarToolComponent {\n constructor() {\n super();\n // showText and showIcon showIcon should be declared first\n /**\n * Defines the location of the button text that will be displayed.\n */\n this.showText = 'both';\n /**\n * Defines the location of the button icon that will be displayed.\n */\n this.showIcon = 'both';\n /**\n * The fillMode property specifies the background and border styles of the Button.\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `null`\n */\n this.fillMode = 'solid';\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `null` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Fires each time the user clicks a DropDownButton item.\n * The event data contains the data item that is bound to the clicked list item.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this._popupSettings = { animate: true, popupClass: '' };\n this.focusedIndex = -1;\n this.getNextKey = getNextKey();\n this.getPrevKey = getPrevKey();\n }\n /**\n * Sets the text of the DropDownButton\n * ([see example]({% slug controltypes_toolbar %}#toc-dropdownbuttons).\n */\n set text(text) {\n this.toolbarOptions.text = getValueForLocation(text, this.showText, false);\n this.overflowOptions.text = getValueForLocation(text, this.showText, true);\n }\n /**\n * Defines an icon that will be rendered next to the button text.\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines an icon with a custom CSS class that will be rendered next to the button text.\n */\n set iconClass(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\n }\n /**\n * Defines the location of an image that will be displayed next to the button text.\n */\n set imageUrl(imageUrl) {\n this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\n }\n /**\n * Configures the popup of the DropDownButton.\n *\n * The available options are:\n * - `animate:Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass:String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true, popupClass: '' }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.fillMode = look === 'default' ? 'solid' : look;\n }\n }\n /**\n * @hidden\n */\n set primary(primary) {\n this.themeColor = primary ? 'primary' : 'base';\n }\n /**\n * Sets the data of the DropDownButton\n * ([see example]({% slug controltypes_toolbar %}#toc-dropdownbuttons)).\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n if (!this._data) {\n this.data = [];\n }\n return this._data;\n }\n get overflowButtons() {\n return [...this.overflowDropDownButtonButtonList.buttons.toArray().filter(b => !b.nativeElement.disabled)];\n }\n /**\n * @hidden\n */\n onButtonListClick(ev) {\n this.focusedIndex = this.overflowDropDownButtonButtonList.buttons\n .toArray()\n .findIndex(b => b.nativeElement.contains(ev.target));\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n if (!this.overflows) {\n if (ev.type === 'focus' || ev.type === 'keydown') {\n this.toolbarDropDownButton.focus();\n }\n }\n else if (this.overflowButtons.length > 0) {\n this.focusedIndex = getIndexOfFocused(this.getPrevKey(), this.getNextKey(), this.overflowButtons.map(ob => ob.nativeElement))(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n if (!this.overflows && (ev.keyCode === this.getPrevKey(this.overflows) || ev.keyCode === this.getNextKey(this.overflows))) {\n return false;\n }\n if (this.overflows) {\n const peekAtIndex = makePeeker(this.overflowButtons);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(this.getPrevKey(), this.getNextKey(), peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n }\n focusButton(index, ev) {\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown') {\n this.overflowButtons[index].nativeElement.focus();\n }\n }\n}\nToolBarDropDownButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarDropDownButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarDropDownButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarDropDownButtonComponent, selector: \"kendo-toolbar-dropdownbutton\", inputs: { showText: \"showText\", showIcon: \"showIcon\", text: \"text\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", popupSettings: \"popupSettings\", look: \"look\", primary: \"primary\", fillMode: \"fillMode\", themeColor: \"themeColor\", buttonClass: \"buttonClass\", textField: \"textField\", disabled: \"disabled\", data: \"data\" }, outputs: { itemClick: \"itemClick\", open: \"open\", close: \"close\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarDropDownButtonComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"dropdownButton\", first: true, predicate: [\"dropdownButton\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"dropDownButtonComponent\", first: true, predicate: DropDownButtonComponent, descendants: true }, { propertyName: \"toolbarDropDownButton\", first: true, predicate: [\"toolbarDropDownButton\"], descendants: true }, { propertyName: \"overflowDropDownButtonButtonList\", first: true, predicate: [\"overflowDropDownButtonButtonList\"], descendants: true }], exportAs: [\"kendoToolBarDropDownButton\"], usesInheritance: true, ngImport: i0, template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n {{ overflowOptions.text }}\n \n \n \n \n `, isInline: true, components: [{ type: i1$1.DropDownButtonComponent, selector: \"kendo-dropdownbutton\", inputs: [\"icon\", \"iconClass\", \"imageUrl\", \"popupSettings\", \"textField\", \"disabled\", \"data\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"buttonClass\", \"tabIndex\"], outputs: [\"itemClick\", \"open\", \"close\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownButton\"] }, { type: ToolBarButtonListComponent, selector: \"kendo-toolbar-buttonlist\", inputs: [\"data\", \"textField\", \"disabled\", \"fillMode\", \"themeColor\"], outputs: [\"itemClick\"] }], directives: [{ type: i1$1.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarDropDownButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarDropDownButton',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarDropDownButtonComponent) }],\n selector: 'kendo-toolbar-dropdownbutton',\n template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n {{ overflowOptions.text }}\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], text: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], look: [{\n type: Input\n }], primary: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], textField: [{\n type: Input\n }], disabled: [{\n type: Input\n }], data: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], dropdownButton: [{\n type: ViewChild,\n args: ['dropdownButton', { read: ElementRef, static: true }]\n }], dropDownButtonComponent: [{\n type: ViewChild,\n args: [DropDownButtonComponent, { static: false }]\n }], toolbarDropDownButton: [{\n type: ViewChild,\n args: ['toolbarDropDownButton', { static: false }]\n }], overflowDropDownButtonButtonList: [{\n type: ViewChild,\n args: ['overflowDropDownButtonButtonList', { static: false }]\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar SplitButton for Angular]({% slug controltypes_toolbar %}#toc-splitbuttons).\n */\nclass ToolBarSplitButtonComponent extends ToolBarToolComponent {\n constructor() {\n super();\n // showText and showIcon showIcon should be declared first\n /**\n * Specifies where button text should be displayed\n */\n this.showText = 'both';\n /**\n * Specifies where button icon should be displayed\n */\n this.showIcon = 'both';\n /**\n * The fillMode property specifies the background and border styles of the Button.\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `null`\n */\n this.fillMode = 'solid';\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly.\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `null` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Specifies the name of the [font icon]({% slug icons %}#toc-list-of-font-icons) that will\n * be rendered for the button which opens the popup.\n */\n this.arrowButtonIcon = 'arrow-s';\n /**\n * Configures the text field of the button-list popup.\n */\n this.textField = 'text';\n /**\n * Fires each time the user clicks the main button.\n */\n this.buttonClick = new EventEmitter();\n /**\n * Fires each time the user clicks the drop-down list.\n * The event data contains the data item that is bound to the clicked list item.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n imageUrl: ''\n };\n this._popupSettings = { animate: true, popupClass: '' };\n this.focusedIndex = -1;\n this.getNextKey = getNextKey();\n this.getPrevKey = getPrevKey();\n }\n /**\n * Sets the text of the SplitButton ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons).\n */\n set text(text) {\n this.toolbarOptions.text = getValueForLocation(text, this.showText, false);\n this.overflowOptions.text = getValueForLocation(text, this.showText, true);\n }\n /**\n * Defines the icon that will be rendered next to the button text\n * ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons)).\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines an icon with a custom CSS class that will be rendered next to the button text.\n */\n set iconClass(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\n }\n /**\n * Defines the location of an image that will be displayed next to the button text.\n */\n set imageUrl(imageUrl) {\n this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\n }\n /**\n * Configures the popup of the SplitButton.\n *\n * The available options are:\n * - `animate:Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass:String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(value) {\n this._popupSettings = value;\n }\n get popupSettings() {\n if (!this._popupSettings) {\n this._popupSettings = { animate: true, popupClass: '' };\n }\n return this._popupSettings;\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.fillMode = look === 'default' ? 'solid' : look;\n }\n }\n /**\n * Sets the data of the SplitButton ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons)).\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n if (!this._data) {\n this.data = [];\n }\n return this._data;\n }\n get overflowButtons() {\n return [this.overflowSplitButton, ...this.overflowSplitButtonButtonList.buttons.toArray().filter(b => !b.nativeElement.disabled)];\n }\n /**\n * @hidden\n */\n onButtonListClick(ev) {\n this.focusedIndex = this.overflowButtons.findIndex(b => b.nativeElement.contains(ev.target));\n }\n /**\n * @hidden\n */\n onMainButtonClick(ev) {\n this.buttonClick.emit(ev);\n this.focusedIndex = 0;\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n if (!this.overflows) {\n if (ev.type === 'focus' || ev.type === 'keydown') {\n this.toolbarSplitButton.focus();\n }\n }\n else if (this.overflowButtons.length > 0) {\n this.focusedIndex = getIndexOfFocused(this.getPrevKey(), this.getNextKey(), this.overflowButtons.map(ob => ob.nativeElement))(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n if (!this.overflows && (ev.keyCode === this.getPrevKey(this.overflows) || ev.keyCode === this.getNextKey(this.overflows))) {\n return false;\n }\n if (this.overflows) {\n const peekAtIndex = makePeeker(this.overflowButtons);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(this.getPrevKey(), this.getNextKey(), peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n }\n focusButton(index, ev) {\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown' || ev.type === 'click') {\n this.overflowButtons[index].nativeElement.focus();\n }\n }\n}\nToolBarSplitButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarSplitButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarSplitButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarSplitButtonComponent, selector: \"kendo-toolbar-splitbutton\", inputs: { showText: \"showText\", showIcon: \"showIcon\", text: \"text\", icon: \"icon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", disabled: \"disabled\", popupSettings: \"popupSettings\", fillMode: \"fillMode\", themeColor: \"themeColor\", look: \"look\", buttonClass: \"buttonClass\", arrowButtonClass: \"arrowButtonClass\", arrowButtonIcon: \"arrowButtonIcon\", textField: \"textField\", data: \"data\" }, outputs: { buttonClick: \"buttonClick\", itemClick: \"itemClick\", open: \"open\", close: \"close\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSplitButtonComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toolbarSplitButton\", first: true, predicate: [\"toolbarSplitButton\"], descendants: true }, { propertyName: \"overflowSplitButton\", first: true, predicate: [\"overflowSplitButton\"], descendants: true, read: ElementRef }, { propertyName: \"overflowSplitButtonButtonList\", first: true, predicate: [\"overflowSplitButtonButtonList\"], descendants: true }], exportAs: [\"kendoToolBarSplitButton\"], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n \n \n {{ overflowOptions.text }}\n \n \n \n \n `, isInline: true, components: [{ type: i1$1.SplitButtonComponent, selector: \"kendo-splitbutton\", inputs: [\"text\", \"icon\", \"iconClass\", \"type\", \"imageUrl\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"disabled\", \"popupSettings\", \"tabIndex\", \"textField\", \"data\", \"buttonClass\", \"arrowButtonClass\", \"arrowButtonIcon\"], outputs: [\"buttonClick\", \"itemClick\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendoSplitButton\"] }, { type: ToolBarButtonListComponent, selector: \"kendo-toolbar-buttonlist\", inputs: [\"data\", \"textField\", \"disabled\", \"fillMode\", \"themeColor\"], outputs: [\"itemClick\"] }], directives: [{ type: i1$1.ButtonDirective, selector: \"button[kendoButton], span[kendoButton]\", inputs: [\"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"icon\", \"iconClass\", \"imageUrl\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarSplitButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarSplitButton',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSplitButtonComponent) }],\n selector: 'kendo-toolbar-splitbutton',\n template: `\n \n \n \n \n \n \n {{ overflowOptions.text }}\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], text: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], disabled: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], look: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], arrowButtonClass: [{\n type: Input\n }], arrowButtonIcon: [{\n type: Input\n }], textField: [{\n type: Input\n }], data: [{\n type: Input\n }], buttonClick: [{\n type: Output\n }], itemClick: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toolbarSplitButton: [{\n type: ViewChild,\n args: ['toolbarSplitButton', { static: false }]\n }], overflowSplitButton: [{\n type: ViewChild,\n args: ['overflowSplitButton', { read: ElementRef, static: false }]\n }], overflowSplitButtonButtonList: [{\n type: ViewChild,\n args: ['overflowSplitButtonButtonList', { static: false }]\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar Separator for Angular]({% slug controltypes_toolbar %}#toc-separators).\n */\nclass ToolBarSeparatorComponent extends ToolBarToolComponent {\n constructor() {\n super();\n }\n /**\n * @hidden\n */\n canFocus() {\n return false;\n }\n // If this is not here, the docs display info from its parent(ToolBarToolComponent).\n /**\n * @hidden\n */\n focus() {\n /* noop */\n }\n // If this is not here, the docs display info from its parent(ToolBarToolComponent).\n /**\n * @hidden\n */\n handleKey() {\n return false;\n }\n ngAfterViewInit() {\n if (!this.popupTemplate) {\n this.popupTemplate = this.toolbarTemplate;\n }\n }\n}\nToolBarSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolBarSeparatorComponent, selector: \"kendo-toolbar-separator\", providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSeparatorComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"separator\", first: true, predicate: [\"separator\"], descendants: true }], exportAs: [\"kendoToolBarSeparator\"], usesInheritance: true, ngImport: i0, template: `\n \n
    \n
    \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarSeparatorComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarSeparator',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSeparatorComponent) }],\n selector: 'kendo-toolbar-separator',\n template: `\n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], separator: [{\n type: ViewChild,\n args: ['separator', { static: false }]\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass ToolbarCustomMessagesComponent extends ToolbarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nToolbarCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nToolbarCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: ToolbarCustomMessagesComponent, selector: \"kendo-toolbar-messages\", providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => ToolbarCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolbarCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => ToolbarCustomMessagesComponent)\n }\n ],\n selector: 'kendo-toolbar-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst TOOLBAR_TOOLS = [\n ToolBarToolComponent,\n ToolBarButtonComponent,\n ToolBarButtonGroupComponent,\n ToolBarDropDownButtonComponent,\n ToolBarSplitButtonComponent,\n ToolBarSeparatorComponent\n];\nconst TOOLBAR_COMMON = [\n ToolBarRendererComponent,\n ToolBarButtonListComponent,\n ToolbarCustomMessagesComponent,\n LocalizedToolbarMessagesDirective\n];\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }}) definition for the ToolBar component.\n *\n * The package exports:\n * - `ToolBarComponent`—The ToolBarComponent class.\n * - `ToolBarToolComponent`—The base Tool component class.\n * - `ToolBarButtonComponent`—The Button Tool component class.\n * - `ToolBarButtonGroupComponent`—The ButtonGroup Tool component class.\n * - `ToolBarDropDownButtonComponent`—The DropDownButton Tool component class.\n * - `ToolBarSplitButtonComponent`—The SplitButton Tool component class.\n * - `ToolBarSeparatorComponent`—The Separator Tool component class.\n */\nclass ToolBarModule {\n}\nToolBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToolBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarModule, declarations: [ToolBarComponent, ToolBarToolComponent,\n ToolBarButtonComponent,\n ToolBarButtonGroupComponent,\n ToolBarDropDownButtonComponent,\n ToolBarSplitButtonComponent,\n ToolBarSeparatorComponent, ToolBarRendererComponent,\n ToolBarButtonListComponent,\n ToolbarCustomMessagesComponent,\n LocalizedToolbarMessagesDirective], imports: [CommonModule, ButtonsModule, PopupModule, ResizeSensorModule], exports: [ToolBarComponent, ToolBarToolComponent,\n ToolBarButtonComponent,\n ToolBarButtonGroupComponent,\n ToolBarDropDownButtonComponent,\n ToolBarSplitButtonComponent,\n ToolBarSeparatorComponent, ToolbarCustomMessagesComponent, LocalizedToolbarMessagesDirective] });\nToolBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarModule, imports: [[CommonModule, ButtonsModule, PopupModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: ToolBarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ToolBarComponent, TOOLBAR_TOOLS, TOOLBAR_COMMON],\n exports: [ToolBarComponent, TOOLBAR_TOOLS, ToolbarCustomMessagesComponent, LocalizedToolbarMessagesDirective],\n imports: [CommonModule, ButtonsModule, PopupModule, ResizeSensorModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LocalizedToolbarMessagesDirective, ToolBarButtonComponent, ToolBarButtonGroupComponent, ToolBarComponent, ToolBarDropDownButtonComponent, ToolBarModule, ToolBarSeparatorComponent, ToolBarSplitButtonComponent, ToolBarToolComponent, ToolbarCustomMessagesComponent };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2021 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders, HttpRequest, HttpEventType, HttpResponse } from '@angular/common/http';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Injectable, Directive, Input, HostBinding, HostListener, Component, ViewChildren, forwardRef, Inject, ContentChild, ViewChild, Output, isDevMode, NgModule } from '@angular/core';\nimport { guid, Keys, isDocumentAvailable, KendoInput, isChanged } from '@progress/kendo-angular-common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i1$1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { fromEvent, merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i4 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Lists the possible states of a file.\n */\nvar FileState;\n(function (FileState) {\n /**\n * The file upload process has failed.\n */\n FileState[FileState[\"Failed\"] = 0] = \"Failed\";\n /**\n * An initially selected fake file without a set state.\n */\n FileState[FileState[\"Initial\"] = 1] = \"Initial\";\n /**\n * The file is selected.\n */\n FileState[FileState[\"Selected\"] = 2] = \"Selected\";\n /**\n * The file is successfully uploaded.\n */\n FileState[FileState[\"Uploaded\"] = 3] = \"Uploaded\";\n /**\n * The file is in the process of uploading.\n */\n FileState[FileState[\"Uploading\"] = 4] = \"Uploading\";\n /**\n * The file upload process has been paused.\n */\n FileState[FileState[\"Paused\"] = 5] = \"Paused\";\n})(FileState || (FileState = {}));\n\n/**\n * @hidden\n */\nclass FileMap {\n constructor() {\n this._files = {};\n }\n add(file) {\n let uid = file.uid;\n if (this.has(uid)) {\n if (file.validationErrors && file.validationErrors.length > 0) {\n this._files[uid].unshift(file);\n }\n else {\n this._files[uid].push(file);\n }\n }\n else {\n this._files[uid] = [file];\n }\n }\n remove(uid) {\n if (this.has(uid)) {\n this._files[uid] = null;\n delete this._files[uid];\n }\n }\n clear() {\n let allFiles = this._files;\n for (let uid in allFiles) {\n if (allFiles.hasOwnProperty(uid)) {\n for (let file of allFiles[uid]) {\n if (file.httpSubscription) {\n file.httpSubscription.unsubscribe();\n }\n }\n allFiles[uid] = null;\n delete allFiles[uid];\n }\n }\n }\n has(uid) {\n return uid in this._files;\n }\n get(uid) {\n return this._files[uid];\n }\n setFilesState(files, state) {\n for (let file of files) {\n this.setFilesStateByUid(file.uid, state);\n }\n }\n setFilesStateByUid(uid, state) {\n this.get(uid).forEach((f) => {\n f.state = state;\n });\n }\n get count() {\n return Object.getOwnPropertyNames(this._files).length;\n }\n get files() {\n let initial = this._files;\n let transformed = [];\n for (let uid in initial) {\n if (initial.hasOwnProperty(uid)) {\n transformed.push(initial[uid]);\n }\n }\n return transformed;\n }\n get filesFlat() {\n let initial = this._files;\n let transformed = [];\n for (let uid in initial) {\n if (initial.hasOwnProperty(uid)) {\n let current = initial[uid];\n current.forEach((file) => {\n transformed.push(file);\n });\n }\n }\n return transformed;\n }\n get filesToUpload() {\n let files = this._files;\n let notUploaded = [];\n for (let uid in files) {\n if (files.hasOwnProperty(uid)) {\n let currentFiles = files[uid];\n let currentFilesValid = true;\n for (let file of currentFiles) {\n if (file.state !== FileState.Selected || (file.validationErrors && file.validationErrors.length > 0)) {\n currentFilesValid = false;\n }\n }\n if (currentFilesValid) {\n notUploaded.push(currentFiles);\n }\n }\n }\n return notUploaded;\n }\n get firstFileToUpload() {\n let files = this._files;\n for (let uid in files) {\n if (files.hasOwnProperty(uid)) {\n let currentFiles = files[uid];\n let currentFilesValid = true;\n for (let file of currentFiles) {\n if (file.state !== FileState.Selected || (file.validationErrors && file.validationErrors.length > 0)) {\n currentFilesValid = false;\n }\n }\n if (currentFilesValid) {\n return currentFiles;\n }\n }\n }\n return null;\n }\n getFilesWithState(state) {\n return this.filesFlat.filter(file => file.state === state);\n }\n hasFileWithState(fileStates) {\n let files = this._files;\n for (let uid in files) {\n if (files.hasOwnProperty(uid)) {\n let currentFiles = files[uid];\n for (let file of currentFiles) {\n if (fileStates.indexOf(file.state) >= 0) {\n return true;\n }\n }\n }\n }\n return false;\n }\n}\n\n/**\n * Arguments for the `cancel` event. The `cancel` event fires when\n * the user cancels the process of uploading a file or a batch of files.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n *

    Click the icon during upload to trigger the event

    \n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * cancelEventHandler(e: CancelEvent) {\n * console.log('Canceling file upload', e.files);\n * }\n * }\n * ```\n */\nclass CancelEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `cancel` event.\n * @param files - The list of the files that were going to be uploaded.\n */\n constructor(files) {\n this.files = files;\n }\n}\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `clear` event. The `clear` event fires when\n * the **Clear** button is clicked. At this point, the selected files are about to be cleared.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * clearEventHandler(e: ClearEvent) {\n * console.log('Clearing the file upload');\n * }\n * }\n * ```\n */\nclass ClearEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `clear` event.\n */\n constructor() { super(); }\n}\n\n/**\n * Arguments for the `error` event. The `error` event fires when\n * an `upload` or `remove` operation fails.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * errorEventHandler(e: ErrorEvent) {\n * console.log('An error occurred');\n * }\n * }\n * ```\n */\nclass ErrorEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `error` event.\n *\n * @param files - The list of the files that failed to be uploaded or removed.\n * @param operation - The operation type (`upload` or `remove`).\n * @param response - The response object returned by the server.\n */\n constructor(files, operation, response) {\n this.files = files;\n this.operation = operation;\n this.response = response;\n }\n}\n\n/**\n * Arguments for the `pause` event. The `pause` event fires when the user\n * pauses a file that is currently uploading.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * pauseEventHandler(ev: PauseEvent) {\n * console.log('File paused');\n * }\n * }\n * ```\n *\n */\nclass PauseEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `pause` event.\n * @param file - The file that is going to be paused.\n */\n constructor(file) {\n this.file = file;\n }\n}\n\n/**\n * Arguments for the `remove` event. The `remove` event fires when an uploaded\n * or selected file is about to be removed. If you cancel the event, the removal is prevented.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * removeEventHandler(e: RemoveEvent) {\n * console.log('Removing a file');\n * }\n * }\n * ```\n */\nclass RemoveEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `remove` event.\n * @param files - The list of the files that will be removed.\n * @param headers - The headers of the request.\n */\n constructor(files, headers) {\n super();\n this.files = files;\n this.headers = headers;\n }\n}\n\n/**\n * Arguments for the `resume` event. The `resume` event fires when the user\n * resumes the upload of a file that has been previously paused.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * resumeEventHandler(ev: ResumeEvent) {\n * console.log('File resumed');\n * }\n * }\n * ```\n *\n */\nclass ResumeEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `resume` event.\n * @param file - The file that is going to be resumed.\n */\n constructor(file) {\n this.file = file;\n }\n}\n\n/**\n * Arguments for the `select` event. The `select` event fires when the user\n * selects a file or multiple files for upload. If you cancel the event, the selection is prevented.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * selectEventHandler(e: SelectEvent) {\n * console.log('File selected');\n * }\n * }\n * ```\n */\nclass SelectEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `select` event.\n * @param files - The list of the selected files.\n */\n constructor(files) {\n super();\n this.files = files;\n }\n}\n\n/**\n * Arguments for the `success` event. The `success` event fires when\n * the selected files are successfully uploaded or removed.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * successEventHandler(e: SuccessEvent) {\n * console.log('The ' + e.operation + ' was successful!');\n * }\n * }\n * ```\n */\nclass SuccessEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `success` event.\n * @param files - The list of the files that were uploaded or removed.\n * @param operation - The operation type (`upload` or `remove`).\n * @param response - The response object returned by the server.\n */\n constructor(files, operation, response) {\n super();\n this.files = files;\n this.operation = operation;\n this.response = response;\n }\n}\n\n/**\n * Arguments for the `upload` event. The `upload` event fires when one or more files are about\n * to be uploaded. If you cancel the event, the upload is prevented. You can add headers to the request.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * uploadEventHandler(e: UploadEvent) {\n * e.headers = e.headers.append('X-Foo', 'Bar');\n * }\n * }\n * ```\n */\nclass UploadEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `upload` event.\n * @param files - The list of the files that will be uploaded.\n * @param headers - The headers of the request.\n */\n constructor(files, headers) {\n super();\n this.files = files;\n this.headers = headers;\n }\n}\n\n/**\n * Arguments for the `uploadprogress` event. The `uploadprogress` event\n * fires when the files are in the process of uploading.\n *\n * ```ts-no-run\n * @Component({\n * selector: 'my-upload',\n * template: `\n * \n * \n * `\n * })\n * export class UploadComponent {\n * uploadSaveUrl = 'saveUrl'; // should represent an actual API endpoint\n * uploadRemoveUrl = 'removeUrl'; // should represent an actual API endpoint\n *\n * uploadProgressEventHandler(e: UploadProgressEvent) {\n * console.log(e.files[0].name + ' is ' + e.percentComplete + ' uploaded');\n * }\n * }\n * ```\n */\nclass UploadProgressEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `uploadprogress` event.\n * @param files - The list of files that are being uploaded.\n * @param percentComplete - The portion that has been uploaded.\n */\n constructor(files, percentComplete) {\n this.files = files;\n this.percentComplete = percentComplete;\n }\n}\n\n/**\n * @hidden\n */\nconst fileGroupMap = {\n audio: [\n \".aif\", \".iff\", \".m3u\", \".m4a\", \".mid\", \".mp3\", \".mpa\", \".wav\", \".wma\", \".ogg\", \".wav\", \".wma\", \".wpl\"\n ],\n video: [\n \".3g2\", \".3gp\", \".avi\", \".asf\", \".flv\", \".m4u\", \".rm\", \".h264\", \".m4v\", \".mkv\", \".mov\", \".mp4\", \".mpg\", \".rm\", \".swf\", \".vob\", \".wmv\"\n ],\n image: [\n \".ai\", \".dds\", \".heic\", \".jpe\", \"jfif\", \".jif\", \".jp2\", \".jps\", \".eps\", \".bmp\", \".gif\", \".jpeg\", \".jpg\", \".png\", \".ps\", \".psd\", \".svg\", \".svgz\", \".tif\", \".tiff\"\n ],\n txt: [\n \".doc\", \".docx\", \".log\", \".pages\", \".tex\", \".wpd\", \".wps\", \".odt\", \".rtf\", \".text\", \".txt\", \".wks\"\n ],\n presentation: [\n \".key\", \".odp\", \".pps\", \".ppt\", \".pptx\"\n ],\n data: [\n \".xlr\", \".xls\", \".xlsx\"\n ],\n programming: [\n \".tmp\", \".bak\", \".msi\", \".cab\", \".cpl\", \".cur\", \".dll\", \".dmp\", \".drv\", \".icns\", \".ico\", \".link\", \".sys\", \".cfg\",\n \".ini\", \".asp\", \".aspx\", \".cer\", \".csr\", \".css\", \".dcr\", \".htm\", \".html\", \".js\", \".php\", \".rss\", \".xhtml\"\n ],\n pdf: [\n \".pdf\"\n ],\n config: [\n \".apk\", \".app\", \".bat\", \".cgi\", \".com\", \".exe\", \".gadget\", \".jar\", \".wsf\"\n ],\n zip: [\n \".7z\", \".cbr\", \".gz\", \".sitx\", \".arj\", \".deb\", \".pkg\", \".rar\", \".rpm\", \".tar.gz\", \".z\", \".zip\", \".zipx\"\n ],\n discImage: [\n \".dmg\", \".iso\", \".toast\", \".vcd\", \".bin\", \".cue\", \".mdf\"\n ]\n};\n\n/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nconst getTotalFilesSizeMessage = (files) => {\n let totalSize = 0;\n let i;\n if (typeof files[0].size === \"number\") {\n for (i = 0; i < files.length; i++) {\n if (files[i].size) {\n totalSize += files[i].size;\n }\n }\n }\n else {\n return \"\";\n }\n totalSize /= 1024;\n if (totalSize < 1024) {\n return totalSize.toFixed(2) + \" KB\";\n }\n else {\n return (totalSize / 1024).toFixed(2) + \" MB\";\n }\n};\nconst stripPath = (name) => {\n let slashIndex = name.lastIndexOf(\"\\\\\");\n return (slashIndex !== -1) ? name.substr(slashIndex + 1) : name;\n};\nconst getFileExtension = (fileName) => {\n const rFileExtension = /\\.([^\\.]+)$/;\n const matches = fileName.match(rFileExtension);\n return matches ? matches[0] : \"\";\n};\n/**\n * @hidden\n */\nconst validateInitialFileInfo = (file) => {\n if (file instanceof Object && file.hasOwnProperty(\"name\")) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst validateInitialFileSelectFile = (file) => {\n if (file instanceof File || validateInitialFileInfo(file)) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst getInitialFileInfo = (fakeFile) => {\n fakeFile.extension = fakeFile.extension || getFileExtension(fakeFile.name);\n fakeFile.name = fakeFile.name;\n fakeFile.size = fakeFile.size || 0;\n if (!fakeFile.hasOwnProperty(\"state\")) {\n fakeFile.state = FileState.Initial;\n }\n if (!fakeFile.hasOwnProperty(\"uid\")) {\n fakeFile.uid = guid();\n }\n return fakeFile;\n};\n/**\n * @hidden\n */\nconst convertFileToFileInfo = (file) => {\n let fileInfo = getFileInfo(file);\n fileInfo.uid = guid();\n // Used to differentiate initial FileInfo objects and actual Files\n fileInfo.state = FileState.Selected;\n return fileInfo;\n};\nconst getFileInfo = (rawFile) => {\n const fileName = rawFile.name;\n const fileSize = rawFile.size;\n return {\n extension: getFileExtension(fileName),\n name: fileName,\n rawFile: rawFile,\n size: fileSize,\n state: FileState.Selected\n };\n};\n/**\n * @hidden\n */\nconst getAllFileInfo = (rawFiles) => {\n let allFileInfo = new Array();\n let i;\n for (i = 0; i < rawFiles.length; i++) {\n allFileInfo.push(getFileInfo(rawFiles[i]));\n }\n return allFileInfo;\n};\n/**\n * @hidden\n */\nconst fileHasValidationErrors = (file) => {\n if (file.validationErrors && file.validationErrors.length > 0) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst filesHaveValidationErrors = (files) => {\n for (let file of files) {\n if (fileHasValidationErrors(file)) {\n return true;\n }\n }\n return false;\n};\n/**\n * @hidden\n */\nconst inputFiles = (input) => {\n if (input.files) {\n return getAllFileInfo(input.files);\n }\n else {\n //Required for testing\n let fileNames = input.value.split(\"|\").map((file, index) => {\n let fileName = file.trim();\n return {\n extension: getFileExtension(fileName),\n name: stripPath(fileName),\n rawFile: null,\n size: (index + 1) * 1000,\n state: FileState.Selected\n };\n });\n return fileNames;\n }\n};\n/**\n * @hidden\n */\nconst assignGuidToFiles = (files, isUnique) => {\n const uid = guid();\n return files.map((file) => {\n file.uid = isUnique ? guid() : uid;\n return file;\n });\n};\n/**\n * @hidden\n */\nconst supportsFormData = () => {\n return typeof (FormData) !== \"undefined\";\n};\n/**\n * @hidden\n */\nconst userAgent = () => {\n return navigator.userAgent;\n};\nconst focusableRegex = /^(?:a|input|select|textarea|button|object)$/i;\n/**\n * @hidden\n */\nconst IGNORE_TARGET_CLASSES = 'k-icon k-select k-input k-multiselect-wrap';\n/**\n * @hidden\n */\nconst UPLOAD_CLASSES = 'k-upload-button k-clear-selected k-upload-selected k-upload-action';\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n return !!(rect.width && rect.height) && window.getComputedStyle(element).visibility !== 'hidden';\n};\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));\n};\n/**\n * @hidden\n */\nconst isFocusable = (element, checkVisibility = true) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const validTabIndex = tabIndex !== null && !isNaN(tabIndex) && tabIndex > -1;\n let focusable = false;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled;\n }\n else {\n focusable = validTabIndex;\n }\n return focusable && (!checkVisibility || isVisible(element));\n }\n return false;\n};\n/**\n * @hidden\n */\nconst getFileGroupCssClass = (fileExtension) => {\n const initial = 'k-i-file';\n for (let group in fileGroupMap) {\n if (fileGroupMap[group].indexOf(fileExtension) >= 0) {\n return `${initial}-${group}`;\n }\n }\n return initial;\n};\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n\n/**\n * @hidden\n */\nclass ChunkMap {\n constructor() {\n this._files = {};\n }\n add(uid, totalChunks) {\n const initialChunkInfo = {\n index: 0,\n position: 0,\n retries: 0,\n totalChunks: totalChunks\n };\n this._files[uid] = initialChunkInfo;\n return initialChunkInfo;\n }\n remove(uid) {\n if (this.has(uid)) {\n this._files[uid] = null;\n delete this._files[uid];\n }\n }\n has(uid) {\n return uid in this._files;\n }\n get(uid) {\n return this._files[uid];\n }\n}\n\n/**\n * @hidden\n */\nclass UploadService {\n constructor(http) {\n this.http = http;\n this.cancelEvent = new EventEmitter();\n this.clearEvent = new EventEmitter();\n this.completeEvent = new EventEmitter();\n this.errorEvent = new EventEmitter();\n this.pauseEvent = new EventEmitter();\n this.removeEvent = new EventEmitter();\n this.resumeEvent = new EventEmitter();\n this.selectEvent = new EventEmitter();\n this.successEvent = new EventEmitter();\n this.uploadEvent = new EventEmitter();\n this.uploadProgressEvent = new EventEmitter();\n /**\n * Required for the `ControlValueAccessor` integration\n */\n this.changeEvent = new EventEmitter();\n /**\n * Default async settings\n */\n this.async = {\n autoUpload: true,\n batch: false,\n chunk: false,\n concurrent: true,\n removeField: \"fileNames\",\n removeHeaders: new HttpHeaders(),\n removeMethod: \"POST\",\n removeUrl: \"\",\n responseType: \"json\",\n saveField: \"files\",\n saveHeaders: new HttpHeaders(),\n saveMethod: \"POST\",\n saveUrl: \"\",\n withCredentials: true\n };\n /**\n * Default chunk settings\n */\n this.chunk = {\n autoRetryAfter: 100,\n size: 1024 * 1024,\n maxAutoRetries: 1,\n resumable: true\n };\n this.component = 'Upload';\n this.chunkMap = new ChunkMap();\n this.fileList = new FileMap();\n }\n get files() {\n return this.fileList;\n }\n setChunkSettings(settings) {\n if (settings !== false) {\n this.async.chunk = true;\n if (typeof settings === \"object\") {\n this.chunk = Object.assign({}, this.chunk, settings);\n }\n }\n }\n onChange() {\n let files = this.fileList.filesFlat.filter((file) => {\n return file.state === FileState.Initial ||\n file.state === FileState.Uploaded;\n });\n this.changeEvent.emit(files.length > 0 ? files : null);\n }\n addFiles(files) {\n let selectEventArgs = new SelectEvent(files);\n this.selectEvent.emit(selectEventArgs);\n if (!selectEventArgs.isDefaultPrevented()) {\n for (let file of files) {\n this.fileList.add(file);\n }\n if (this.async.autoUpload) {\n this.uploadFiles();\n }\n }\n if (this.component === 'FileSelect') {\n const flatFiles = this.fileList.filesFlat;\n this.changeEvent.emit(flatFiles.length > 0 ? flatFiles : null);\n }\n }\n addInitialFiles(initialFiles) {\n this.fileList.clear();\n initialFiles.forEach((file) => {\n let fakeFile = getInitialFileInfo(file);\n this.fileList.add(fakeFile);\n });\n }\n addInitialFileSelectFiles(initialFiles) {\n this.fileList.clear();\n initialFiles.forEach((file) => {\n if (file instanceof File) {\n this.fileList.add(convertFileToFileInfo(file));\n }\n else {\n this.fileList.add(getInitialFileInfo(file));\n }\n });\n }\n resumeFile(uid) {\n const fileToResume = this.fileList.get(uid);\n this.resumeEvent.emit(new ResumeEvent(fileToResume[0]));\n this.fileList.setFilesStateByUid(uid, FileState.Uploading);\n this._uploadFiles([fileToResume]);\n }\n pauseFile(uid) {\n let pausedFile = this.fileList.get(uid)[0];\n this.pauseEvent.emit(new PauseEvent(pausedFile));\n this.fileList.setFilesStateByUid(uid, FileState.Paused);\n }\n removeFiles(uid) {\n let removedFiles = this.fileList.get(uid);\n // Clone the Headers so that the default ones are not overridden\n let removeEventArgs = new RemoveEvent(removedFiles, this.cloneRequestHeaders(this.async.removeHeaders));\n this.removeEvent.emit(removeEventArgs);\n if (!removeEventArgs.isDefaultPrevented()) {\n if (this.component === 'Upload' &&\n (removedFiles[0].state === FileState.Uploaded ||\n removedFiles[0].state === FileState.Initial)) {\n this.performRemove(removedFiles, removeEventArgs);\n }\n else {\n this.fileList.remove(uid);\n if (this.component === 'FileSelect') {\n const flatFiles = this.fileList.filesFlat;\n this.changeEvent.emit(flatFiles.length > 0 ? flatFiles : null);\n }\n }\n }\n }\n cancelFiles(uid) {\n let canceledFiles = this.fileList.get(uid);\n let cancelEventArgs = new CancelEvent(canceledFiles);\n this.cancelEvent.emit(cancelEventArgs);\n for (let file of canceledFiles) {\n if (file.httpSubscription) {\n file.httpSubscription.unsubscribe();\n }\n }\n this.fileList.remove(uid);\n this.checkAllComplete();\n }\n clearFiles() {\n let clearEventArgs = new ClearEvent();\n this.clearEvent.emit(clearEventArgs);\n if (!clearEventArgs.isDefaultPrevented()) {\n let triggerChange = this.fileList.hasFileWithState([\n FileState.Initial,\n FileState.Uploaded\n ]);\n this.fileList.clear();\n if (triggerChange) {\n this.onChange();\n }\n }\n }\n uploadFiles() {\n let filesToUpload = [];\n if (this.async.concurrent) {\n filesToUpload = this.fileList.filesToUpload;\n }\n if (!this.async.concurrent && !this.fileList.hasFileWithState([FileState.Uploading])) {\n filesToUpload = this.fileList.firstFileToUpload ? [this.fileList.firstFileToUpload] : [];\n }\n if (filesToUpload && filesToUpload.length > 0) {\n this._uploadFiles(filesToUpload);\n }\n }\n retryFiles(uid) {\n let filesToRetry = [this.fileList.get(uid)];\n if (filesToRetry) {\n this._uploadFiles(filesToRetry);\n }\n }\n _uploadFiles(allFiles) {\n for (let filesToUpload of allFiles) {\n if (filesToUpload[0].state === FileState.Paused) {\n return;\n }\n // Clone the Headers so that the default ones are not overridden\n let uploadEventArgs = new UploadEvent(filesToUpload, this.cloneRequestHeaders(this.async.saveHeaders));\n this.uploadEvent.emit(uploadEventArgs);\n if (!uploadEventArgs.isDefaultPrevented()) {\n this.fileList.setFilesState(filesToUpload, FileState.Uploading);\n let httpSubcription = this.performUpload(filesToUpload, uploadEventArgs);\n filesToUpload.forEach((file) => {\n file.httpSubscription = httpSubcription;\n });\n }\n else {\n this.fileList.remove(filesToUpload[0].uid);\n }\n }\n }\n performRemove(files, removeEventArgs) {\n const async = this.async;\n let fileNames = files.map((file) => {\n return file.name;\n });\n let formData = this.populateRemoveFormData(fileNames, removeEventArgs.data);\n let options = this.populateRequestOptions(removeEventArgs.headers, false);\n let removeRequest = new HttpRequest(async.removeMethod, async.removeUrl, formData, options);\n this.http.request(removeRequest)\n .subscribe(success => {\n this.onSuccess(success, files, \"remove\");\n }, error => {\n this.onError(error, files, \"remove\");\n });\n }\n performUpload(files, uploadEventArgs) {\n const async = this.async;\n let formData = this.populateUploadFormData(files, uploadEventArgs.data);\n let options = this.populateRequestOptions(uploadEventArgs.headers);\n let uploadRequest = new HttpRequest(async.saveMethod, async.saveUrl, formData, options);\n let httpSubscription = this.http.request(uploadRequest)\n .subscribe(event => {\n if (event.type === HttpEventType.UploadProgress && !this.async.chunk) {\n this.onProgress(event, files);\n }\n else if (event instanceof HttpResponse) {\n this.onSuccess(event, files, \"upload\");\n this.checkAllComplete();\n }\n }, error => {\n this.onError(error, files, \"upload\");\n this.checkAllComplete();\n });\n return httpSubscription;\n }\n onSuccess(successResponse, files, operation) {\n if (operation === \"upload\" && this.async.chunk) {\n this.onChunkProgress(files);\n if (this.isChunkUploadComplete(files[0].uid)) {\n this.removeChunkInfo(files[0].uid);\n }\n else {\n this.updateChunkInfo(files[0].uid);\n this._uploadFiles([files]);\n return;\n }\n }\n const successArgs = new SuccessEvent(files, operation, successResponse);\n this.successEvent.emit(successArgs);\n if (operation === \"upload\") {\n this.fileList.setFilesState(files, successArgs.isDefaultPrevented() ? FileState.Failed : FileState.Uploaded);\n }\n else {\n if (!successArgs.isDefaultPrevented()) {\n this.fileList.remove(files[0].uid);\n }\n }\n if (!successArgs.isDefaultPrevented()) {\n this.onChange();\n }\n }\n onError(errorResponse, files, operation) {\n if (operation === \"upload\" && this.async.chunk) {\n const maxRetries = this.chunk.maxAutoRetries;\n const chunkInfo = this.chunkMap.get(files[0].uid);\n if (chunkInfo.retries < maxRetries) {\n chunkInfo.retries += 1;\n setTimeout(() => {\n this.retryFiles(files[0].uid);\n }, this.chunk.autoRetryAfter);\n return;\n }\n }\n const errorArgs = new ErrorEvent(files, operation, errorResponse);\n this.errorEvent.emit(errorArgs);\n if (operation === \"upload\") {\n this.fileList.setFilesState(files, FileState.Failed);\n }\n }\n onProgress(event, files) {\n const percentComplete = Math.round(100 * event.loaded / event.total);\n const progressArgs = new UploadProgressEvent(files, percentComplete < 100 ? percentComplete : 100);\n this.uploadProgressEvent.emit(progressArgs);\n }\n onChunkProgress(files) {\n const chunkInfo = this.chunkMap.get(files[0].uid);\n let percentComplete = 0;\n if (chunkInfo) {\n if (chunkInfo.index === chunkInfo.totalChunks - 1) {\n percentComplete = 100;\n }\n else {\n percentComplete = Math.round(((chunkInfo.index + 1) / chunkInfo.totalChunks) * 100);\n }\n }\n const progressArgs = new UploadProgressEvent(files, percentComplete < 100 ? percentComplete : 100);\n this.uploadProgressEvent.emit(progressArgs);\n }\n checkAllComplete() {\n if (!this.fileList.hasFileWithState([\n FileState.Uploading,\n FileState.Paused\n ]) && this.areAllSelectedFilesHandled()) {\n this.completeEvent.emit();\n }\n else if (this.shouldUploadNextFile()) {\n this.uploadFiles();\n }\n }\n shouldUploadNextFile() {\n return !this.async.concurrent &&\n this.fileList.hasFileWithState([FileState.Selected]) &&\n !this.fileList.hasFileWithState([FileState.Uploading]);\n }\n areAllSelectedFilesHandled() {\n const validSelectedFiles = this.fileList.getFilesWithState(FileState.Selected).filter(file => !file.validationErrors);\n return validSelectedFiles.length === 0;\n }\n cloneRequestHeaders(headers) {\n let cloned = {};\n if (headers) {\n headers.keys().forEach((key) => {\n cloned[key] = headers.get(key);\n });\n }\n return new HttpHeaders(cloned);\n }\n populateRequestOptions(headers, reportProgress = true) {\n return {\n headers: headers,\n reportProgress: reportProgress,\n responseType: this.async.responseType,\n withCredentials: this.async.withCredentials\n };\n }\n populateUploadFormData(files, clientData) {\n const saveField = this.async.saveField;\n let data = new FormData();\n this.populateClientFormData(data, clientData);\n if (this.async.chunk) {\n data.append(saveField, this.getNextChunk(files[0]));\n data.append(\"metadata\", this.getChunkMetadata(files[0]));\n }\n else {\n for (let file of files) {\n data.append(saveField, file.rawFile);\n }\n }\n return data;\n }\n populateRemoveFormData(fileNames, clientData) {\n let data = new FormData();\n this.populateClientFormData(data, clientData);\n for (let fileName of fileNames) {\n data.append(this.async.removeField, fileName);\n }\n return data;\n }\n populateClientFormData(data, clientData) {\n for (var key in clientData) {\n if (clientData.hasOwnProperty(key)) {\n data.append(key, clientData[key]);\n }\n }\n }\n /* Chunking Helper Methods Section */\n getNextChunk(file) {\n const info = this.getChunkInfo(file);\n const newPosition = info.position + this.chunk.size;\n return file.rawFile.slice(info.position, newPosition);\n }\n getChunkInfo(file) {\n let chunkInfo = this.chunkMap.get(file.uid);\n if (!chunkInfo) {\n const totalChunks = Math.ceil(file.size / this.chunk.size);\n chunkInfo = this.chunkMap.add(file.uid, totalChunks);\n }\n return chunkInfo;\n }\n updateChunkInfo(uid) {\n const chunkInfo = this.chunkMap.get(uid);\n if (chunkInfo.index < chunkInfo.totalChunks - 1) {\n chunkInfo.index += 1;\n chunkInfo.position += this.chunk.size;\n chunkInfo.retries = 0;\n }\n }\n removeChunkInfo(uid) {\n this.chunkMap.remove(uid);\n }\n getChunkMetadata(file) {\n const chunkInfo = this.chunkMap.get(file.uid);\n const chunkMetadata = {\n chunkIndex: chunkInfo.index,\n contentType: file.rawFile.type,\n fileName: file.name,\n fileSize: file.size,\n fileUid: file.uid,\n totalChunks: chunkInfo.totalChunks\n };\n return JSON.stringify(chunkMetadata);\n }\n isChunkUploadComplete(uid) {\n const chunkInfo = this.chunkMap.get(uid);\n if (chunkInfo) {\n return chunkInfo.index + 1 === chunkInfo.totalChunks;\n }\n return false;\n }\n}\nUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\nUploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(uploadService) {\n this.uploadService = uploadService;\n this.onActionButtonAction = new EventEmitter();\n this.onActionButtonFocus = new EventEmitter();\n this.onFileAction = new EventEmitter();\n this.onFileFocus = new EventEmitter();\n this.onTab = new EventEmitter();\n this.onWrapperFocus = new EventEmitter();\n this.onSelectButtonFocus = new EventEmitter();\n this.actionButtonsVisible = false;\n this.focused = false;\n this._focusedIndex = -1;\n }\n action(event) {\n const key = event.keyCode;\n return this.keyBindings[key];\n }\n process(event) {\n const handler = this.action(event);\n if (handler) {\n handler(event.shiftKey);\n }\n }\n computeKeys(direction) {\n this.keyBindings = {\n [Keys.Enter]: () => this.handleEnter(),\n [Keys.Escape]: () => this.handleEscape(),\n [Keys.Delete]: () => this.handleDelete(),\n [Keys.Tab]: (shifted) => this.handleTab(shifted),\n [Keys.ArrowUp]: () => this.handleUp(),\n [Keys.ArrowDown]: () => this.handleDown(),\n [this.invertKeys(direction, Keys.ArrowLeft, Keys.ArrowRight)]: () => this.handleLeft(),\n [this.invertKeys(direction, Keys.ArrowRight, Keys.ArrowLeft)]: () => this.handleRight()\n };\n }\n invertKeys(direction, original, inverted) {\n return direction === 'rtl' ? inverted : original;\n }\n focusSelectButton() {\n this.focused = true;\n this._focusedIndex = -1;\n this.onSelectButtonFocus.emit();\n }\n handleEnter() {\n if (this.lastIndex >= 0) {\n if (this.focusedIndex <= this.lastFileIndex) {\n this.onFileAction.emit(Keys.Enter);\n return;\n }\n if (this.actionButtonsVisible && this.focusedIndex <= this.lastIndex) {\n this.onActionButtonAction.emit(this.focusedIndex < this.lastIndex ? \"clear\" : \"upload\");\n }\n }\n }\n handleDelete() {\n if (this.focusedIndex >= 0 && this.focusedIndex <= this.lastFileIndex) {\n this.onFileAction.emit(Keys.Delete);\n }\n }\n handleEscape() {\n if (this.focusedIndex >= 0 && this.focusedIndex <= this.lastFileIndex) {\n this.onFileAction.emit(Keys.Escape);\n }\n }\n handleLeft() {\n if (this.actionButtonsVisible && this.focusedIndex === this.lastIndex) {\n this.focusedIndex -= 1;\n this.onActionButtonFocus.emit(\"clear\");\n }\n }\n handleRight() {\n if (this.actionButtonsVisible && this.focusedIndex === this.lastIndex - 1) {\n this.focusedIndex += 1;\n this.onActionButtonFocus.emit(\"upload\");\n }\n }\n handleTab(shifted) {\n if (this.focusedIndex >= 0 && shifted) {\n this.focusedIndex = -1;\n return;\n }\n this.onTab.emit();\n }\n handleDown() {\n if (this.lastIndex >= 0 && this.focusedIndex < this.lastIndex) {\n if (this.focusedIndex < this.lastFileIndex) {\n this.focusedIndex += 1;\n this.onFileFocus.emit(this.focusedIndex);\n return;\n }\n if (this.actionButtonsVisible && this.focusedIndex === this.lastFileIndex) {\n this.focusedIndex += 1;\n this.onActionButtonFocus.emit(\"clear\");\n }\n }\n }\n handleUp() {\n if (this.lastIndex >= 0 && this.focusedIndex > -1) {\n this.focusedIndex -= 1;\n if (this.focusedIndex === -1) {\n this.onSelectButtonFocus.emit();\n return;\n }\n if (this.focusedIndex <= this.lastFileIndex) {\n this.onFileFocus.emit(this.focusedIndex);\n return;\n }\n if (this.actionButtonsVisible && this.focusedIndex <= this.lastIndex) {\n this.focusedIndex = this.lastFileIndex;\n this.onFileFocus.emit(this.focusedIndex);\n }\n }\n }\n get focusedIndex() {\n return this._focusedIndex;\n }\n set focusedIndex(index) {\n if (!this.focused) {\n this.onWrapperFocus.emit();\n }\n this._focusedIndex = index;\n this.focused = true;\n if (this._focusedIndex >= 0 && this._focusedIndex <= this.lastFileIndex) {\n this.onFileFocus.emit(index);\n }\n }\n get lastFileIndex() {\n return this.actionButtonsVisible ? this.lastIndex - 2 : this.lastIndex;\n }\n get lastIndex() {\n const fileCount = this.uploadService.files.count;\n return this.actionButtonsVisible ? fileCount + 1 : fileCount - 1;\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, deps: [{ token: UploadService }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: UploadService }]; } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-upload',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1652971767,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Used to customize the rendering of the files in the list ([see example]({% slug templates_upload %}#toc-file-template)).\n */\nclass FileTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFileTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nFileTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileTemplateDirective, selector: \"[kendoUploadFileTemplate], [kendoFileSelectFileTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoUploadFileTemplate], [kendoFileSelectFileTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nlet components = {};\n/**\n * @hidden\n */\nclass DropZoneService {\n addComponent(component, zoneId) {\n if (this.has(zoneId)) {\n components[zoneId].push(component);\n }\n else {\n components[zoneId] = [component];\n }\n }\n getComponents(zoneId) {\n return components[zoneId];\n }\n has(id) {\n return id in components;\n }\n}\nDropZoneService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDropZoneService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Used to customize the rendering of the file info section in the list. All other elements of the default template, such as file icon, action buttons, upload progress etc. will be preserved in place. ([see example]({% slug templates_upload %}#toc-file-info-template)).\n */\nclass FileInfoTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nFileInfoTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileInfoTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nFileInfoTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileInfoTemplateDirective, selector: \"[kendoUploadFileInfoTemplate], [kendoFileSelectFileInfoTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileInfoTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoUploadFileInfoTemplate], [kendoFileSelectFileInfoTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass FileListItemDirective {\n constructor(el, navigationService, uploadService) {\n this.navigationService = navigationService;\n this.uploadService = uploadService;\n this.fileClass = true;\n this.focused = false;\n this.element = el;\n }\n focus() {\n this.element.nativeElement.focus();\n }\n get uidAttribute() {\n return this.files[0].uid;\n }\n get tabIndex() {\n return \"-1\";\n }\n get kFileError() {\n return this.files[0].state === FileState.Failed;\n }\n get kFileInvalid() {\n return filesHaveValidationErrors(this.files);\n }\n get kFileProgress() {\n return this.files[0].state === FileState.Uploading ||\n this.files[0].state === FileState.Paused;\n }\n get kFileSuccess() {\n if (this.uploadService.component === 'Upload') {\n return this.files[0].state === FileState.Uploaded ||\n this.files[0].state === FileState.Initial;\n }\n return false;\n }\n get kStateFocused() {\n return this.focused;\n }\n onFocus() {\n this.focused = true;\n }\n onBlur() {\n this.focused = false;\n }\n onClick(event) {\n if (!isFocusable(event.target) && !hasClasses(event.target, IGNORE_TARGET_CLASSES)) {\n this.navigationService.focusedIndex = this.index;\n }\n }\n}\nFileListItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemDirective, deps: [{ token: i0.ElementRef }, { token: NavigationService }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Directive });\nFileListItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListItemDirective, selector: \"[kendoUploadFileListItem]\", inputs: { files: \"files\", index: \"index\" }, host: { listeners: { \"focus\": \"onFocus()\", \"blur\": \"onBlur()\", \"click\": \"onClick($event)\" }, properties: { \"class.k-file\": \"this.fileClass\", \"attr.data-uid\": \"this.uidAttribute\", \"attr.tabIndex\": \"this.tabIndex\", \"class.k-file-error\": \"this.kFileError\", \"class.k-file-invalid\": \"this.kFileInvalid\", \"class.k-file-progress\": \"this.kFileProgress\", \"class.k-file-success\": \"this.kFileSuccess\", \"class.k-state-focused\": \"this.kStateFocused\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoUploadFileListItem]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NavigationService }, { type: UploadService }]; }, propDecorators: { files: [{\n type: Input\n }], index: [{\n type: Input\n }], fileClass: [{\n type: HostBinding,\n args: ['class.k-file']\n }], uidAttribute: [{\n type: HostBinding,\n args: ['attr.data-uid']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], kFileError: [{\n type: HostBinding,\n args: ['class.k-file-error']\n }], kFileInvalid: [{\n type: HostBinding,\n args: ['class.k-file-invalid']\n }], kFileProgress: [{\n type: HostBinding,\n args: ['class.k-file-progress']\n }], kFileSuccess: [{\n type: HostBinding,\n args: ['class.k-file-success']\n }], kStateFocused: [{\n type: HostBinding,\n args: ['class.k-state-focused']\n }], onFocus: [{\n type: HostListener,\n args: [\"focus\"]\n }], onBlur: [{\n type: HostListener,\n args: [\"blur\"]\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass FileListItemBase {\n constructor(uploadService) {\n this.uploadService = uploadService;\n this.progressComplete = 0;\n }\n subscribeUploadProgress(uploadProgressHandler) {\n this.uploadProgressSubscription = this.uploadService.uploadProgressEvent.subscribe(uploadProgressHandler);\n }\n fileHasValidationErrors(file) {\n return fileHasValidationErrors(file);\n }\n filesHaveValidationErrors(files) {\n return filesHaveValidationErrors(files);\n }\n ngOnDestroy() {\n this.uploadProgressSubscription.unsubscribe();\n }\n getFileValidationMessage(file) {\n let validationMessage;\n if (file.validationErrors && file.validationErrors.length > 0) {\n validationMessage = this.localization.get(file.validationErrors[0]);\n }\n return validationMessage;\n }\n getTotalFilesSizeMessage(files) {\n return getTotalFilesSizeMessage(files);\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nFileListItemBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemBase, deps: [{ token: UploadService }], target: i0.ɵɵFactoryTarget.Component });\nFileListItemBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListItemBase, selector: \"ng-component\", ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemBase, decorators: [{\n type: Component,\n args: [{ template: '' }]\n }], ctorParameters: function () { return [{ type: UploadService }]; } });\n\n/**\n * @hidden\n */\nclass FileListItemActionButtonComponent {\n constructor(uploadService, localization, navigation) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.navigation = navigation;\n this.actionFocused = false;\n this.retryFocused = false;\n this.pauseResumeFocused = false;\n }\n onFocus(type) {\n if (type === 'action') {\n this.actionFocused = true;\n }\n if (type === 'retry') {\n this.retryFocused = true;\n }\n if (type === 'pauseResume') {\n this.pauseResumeFocused = true;\n }\n }\n onBlur(type) {\n if (type === 'retry') {\n this.retryFocused = false;\n }\n if (type === 'action') {\n this.actionFocused = false;\n }\n if (type === 'pauseResume') {\n this.pauseResumeFocused = false;\n }\n }\n onRetryClick() {\n if (this.disabled) {\n return;\n }\n this.uploadService.retryFiles(this.file.uid);\n }\n onRemoveCancelClick(event) {\n if (this.disabled) {\n return;\n }\n event.stopImmediatePropagation();\n const uid = this.file.uid;\n if (this.file.state === FileState.Uploading) {\n this.uploadService.cancelFiles(uid);\n }\n else {\n this.uploadService.removeFiles(uid);\n }\n this.navigation.focusSelectButton();\n }\n onPauseResumeClick() {\n if (this.disabled) {\n return;\n }\n const uid = this.file.uid;\n if (this.file.state === FileState.Paused) {\n this.uploadService.resumeFile(uid);\n }\n else {\n this.uploadService.pauseFile(uid);\n }\n }\n get actionButtonTitle() {\n if (this.file.state === FileState.Uploading) {\n return this.localization.get('cancel');\n }\n return this.localization.get('remove');\n }\n get retryButtonTitle() {\n return this.localization.get('retry');\n }\n get pauseResumeButtonTitle() {\n if (this.file.state === FileState.Uploading) {\n return this.localization.get('pause');\n }\n return this.localization.get('resume');\n }\n get isUploading() {\n return this.file.state === FileState.Uploading;\n }\n get isFailed() {\n return this.file.state === FileState.Failed;\n }\n get isPaused() {\n return this.file.state === FileState.Paused;\n }\n get isResumable() {\n const service = this.uploadService;\n const isResumable = service.async.chunk && service.chunk.resumable;\n const isUploading = (this.file.state === FileState.Paused) || (this.file.state === FileState.Uploading);\n return isResumable && isUploading;\n }\n get isActionButtonVisible() {\n if ((this.file.state === FileState.Uploaded || this.file.state === FileState.Initial) &&\n !this.uploadService.async.removeUrl && this.uploadService.component === 'Upload') {\n return false;\n }\n return true;\n }\n}\nFileListItemActionButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemActionButtonComponent, deps: [{ token: UploadService }, { token: i1$1.LocalizationService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nFileListItemActionButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListItemActionButtonComponent, selector: \"kendo-upload-file-list-item-action-button\", inputs: { file: \"file\", disabled: \"disabled\", progress: \"progress\" }, ngImport: i0, template: `\n \n {{progress}}%\n\n \n\n \n\n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListItemActionButtonComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-upload-file-list-item-action-button',\n template: `\n \n {{progress}}%\n\n \n\n \n\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: i1$1.LocalizationService }, { type: NavigationService }]; }, propDecorators: { file: [{\n type: Input\n }], disabled: [{\n type: Input\n }], progress: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TemplateContextDirective {\n constructor(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n set templateContext(context) {\n if (this.insertedViewRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));\n this.insertedViewRef = undefined;\n }\n if (context.templateRef) {\n this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\n }\n }\n}\nTemplateContextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nTemplateContextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: TemplateContextDirective, selector: \"[templateContext]\", inputs: { templateContext: \"templateContext\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: TemplateContextDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[templateContext]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateContext: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass FileListSingleItemComponent extends FileListItemBase {\n constructor(localization, uploadService) {\n super(uploadService);\n this.localization = localization;\n this.subscribeUploadProgress((args) => {\n if (args.files[0].uid === this.file.uid) {\n this.progressComplete = args.percentComplete;\n }\n });\n }\n get fileStatusText() {\n const errors = this.file.validationErrors;\n if (this.file.state === FileState.Uploaded) {\n return `${this.textFor('fileStatusUploaded')}`;\n }\n if (this.file.state === FileState.Failed) {\n return `${this.textFor('fileStatusFailed')}`;\n }\n if (!isPresent(errors)) {\n return this.getTotalFilesSizeMessage([this.file]);\n }\n return this.getFileValidationMessage(this.file);\n }\n get showProgress() {\n const showProgress = this.file.state === FileState.Uploading || this.file.state === FileState.Paused;\n return showProgress ? 'active' : 'inactive';\n }\n get fileGroupClass() {\n return getFileGroupCssClass(this.file.extension ? this.file.extension : '');\n }\n get isUploadSuccessful() {\n return this.file.state === FileState.Uploaded;\n }\n get isUploadFailed() {\n return this.file.state === FileState.Failed;\n }\n get isNotYetUploaded() {\n return !this.isUploadFailed && !this.isUploadSuccessful;\n }\n}\nFileListSingleItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListSingleItemComponent, deps: [{ token: i1$1.LocalizationService }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Component });\nFileListSingleItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListSingleItemComponent, selector: \"kendo-upload-file-list-single-item\", inputs: { disabled: \"disabled\", file: \"file\", fileInfoTemplate: \"fileInfoTemplate\" }, usesInheritance: true, ngImport: i0, template: `\n
    \n \n
    \n \n \n \n \n \n {{ file.name }}\n {{fileStatusText}}\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FileListItemActionButtonComponent, selector: \"kendo-upload-file-list-item-action-button\", inputs: [\"file\", \"disabled\", \"progress\"] }], directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }], animations: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListSingleItemComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ],\n selector: 'kendo-upload-file-list-single-item',\n template: `\n
    \n \n
    \n \n \n \n \n \n {{ file.name }}\n {{fileStatusText}}\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: UploadService }]; }, propDecorators: { disabled: [{\n type: Input\n }], file: [{\n type: Input\n }], fileInfoTemplate: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass FileListMultipleItemsComponent extends FileListItemBase {\n constructor(localization, uploadService) {\n super(uploadService);\n this.localization = localization;\n this.subscribeUploadProgress((args) => {\n if (args.files[0].uid === this.files[0].uid) {\n this.progressComplete = args.percentComplete;\n }\n });\n }\n get showProgress() {\n const showProgress = this.files[0].state === FileState.Uploading || this.files[0].state === FileState.Paused;\n return showProgress ? 'active' : 'inactive';\n }\n ngOnInit() {\n this.filesHaveErrors = super.filesHaveValidationErrors(this.files);\n }\n fileStatusText(file) {\n const errors = file.validationErrors;\n if (!isPresent(errors)) {\n return this.getTotalFilesSizeMessage([file]);\n }\n return this.getFileValidationMessage(file);\n }\n get batchStatusText() {\n const state = this.files[0].state;\n const fileCount = this.files.length;\n if (state === FileState.Uploaded) {\n return `${fileCount} ${this.textFor('filesBatchStatusUploaded')}`;\n }\n if (state === FileState.Failed) {\n return `${fileCount} ${this.textFor('filesBatchStatusFailed')}`;\n }\n return `${fileCount} ${this.textFor('filesBatchStatus')}`;\n }\n get isUploadSuccessful() {\n return this.files[0].state === FileState.Uploaded;\n }\n get isUploadFailed() {\n return this.files[0].state === FileState.Failed;\n }\n}\nFileListMultipleItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListMultipleItemsComponent, deps: [{ token: i1$1.LocalizationService }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Component });\nFileListMultipleItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListMultipleItemsComponent, selector: \"kendo-upload-file-list-multiple-items\", inputs: { disabled: \"disabled\", files: \"files\", fileInfoTemplate: \"fileInfoTemplate\" }, usesInheritance: true, ngImport: i0, template: `\n
    \n \n
    \n \n \n \n \n \n \n \n {{file.name}}\n \n {{fileStatusText(file)}}\n \n {{batchStatusText}}\n \n \n \n \n \n \n `, isInline: true, components: [{ type: FileListItemActionButtonComponent, selector: \"kendo-upload-file-list-item-action-button\", inputs: [\"file\", \"disabled\", \"progress\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }], animations: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListMultipleItemsComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('progressState', [\n state('active', style({ opacity: 1 })),\n state('inactive', style({ opacity: 0 })),\n transition('void => active', style({ opacity: 0 })),\n transition('inactive => active', style({ opacity: 1 })),\n transition('active => inactive', animate('1s 2s ease-out'))\n ])\n ],\n selector: 'kendo-upload-file-list-multiple-items',\n template: `\n
    \n \n
    \n \n \n \n \n \n \n \n {{file.name}}\n \n {{fileStatusText(file)}}\n \n {{batchStatusText}}\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: UploadService }]; }, propDecorators: { disabled: [{\n type: Input\n }], files: [{\n type: Input\n }], fileInfoTemplate: [{\n type: Input\n }] } });\n\n/* eslint-disable @angular-eslint/component-selector */\n/**\n * @hidden\n */\nclass FileListComponent {\n constructor(uploadService, navigation) {\n this.uploadService = uploadService;\n this.navigation = navigation;\n this.onItemFocus();\n this.onItemAction();\n }\n onItemFocus() {\n this.focusSubscription = this.navigation.onFileFocus.subscribe((index) => {\n this.fileListItems.toArray()[index].focus();\n });\n }\n onItemAction() {\n this.actionSubscription = this.navigation.onFileAction.subscribe((key) => {\n this.itemActionHandler(key);\n });\n }\n itemActionHandler(key) {\n let index = this.navigation.focusedIndex;\n let item = this.fileListItems.toArray()[index];\n let uid = item.uidAttribute;\n let files = this.uploadService.files.get(uid);\n if (key === Keys.Escape && files[0].state === FileState.Uploading) {\n this.uploadService.cancelFiles(uid);\n this.navigation.focusSelectButton();\n return;\n }\n if (key === Keys.Enter && files[0].state === FileState.Failed) {\n this.uploadService.retryFiles(uid);\n return;\n }\n if (key === Keys.Delete) {\n if (files[0].state === FileState.Uploading) {\n this.uploadService.cancelFiles(uid);\n }\n else if (this.hasDelete(item)) {\n this.uploadService.removeFiles(uid);\n }\n this.navigation.focusSelectButton();\n }\n }\n hasDelete(item) {\n return item.element.nativeElement.getElementsByClassName('k-delete').length > 0;\n }\n ngOnDestroy() {\n this.focusSubscription.unsubscribe();\n this.actionSubscription.unsubscribe();\n }\n}\nFileListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListComponent, deps: [{ token: UploadService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nFileListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileListComponent, selector: \"[kendo-upload-file-list]\", inputs: { disabled: \"disabled\", fileList: \"fileList\", fileTemplate: \"fileTemplate\", fileInfoTemplate: \"fileInfoTemplate\" }, viewQueries: [{ propertyName: \"fileListItems\", predicate: FileListItemDirective, descendants: true }], ngImport: i0, template: `\n \n
  • \n \n \n \n \n \n
  • \n \n `, isInline: true, components: [{ type: FileListSingleItemComponent, selector: \"kendo-upload-file-list-single-item\", inputs: [\"disabled\", \"file\", \"fileInfoTemplate\"] }, { type: FileListMultipleItemsComponent, selector: \"kendo-upload-file-list-multiple-items\", inputs: [\"disabled\", \"files\", \"fileInfoTemplate\"] }], directives: [{ type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: FileListItemDirective, selector: \"[kendoUploadFileListItem]\", inputs: [\"files\", \"index\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: TemplateContextDirective, selector: \"[templateContext]\", inputs: [\"templateContext\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileListComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[kendo-upload-file-list]',\n template: `\n \n
  • \n \n \n \n \n \n
  • \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: NavigationService }]; }, propDecorators: { disabled: [{\n type: Input\n }], fileList: [{\n type: Input\n }], fileTemplate: [{\n type: Input\n }], fileInfoTemplate: [{\n type: Input\n }], fileListItems: [{\n type: ViewChildren,\n args: [FileListItemDirective]\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: Messages, inputs: { cancel: \"cancel\", clearSelectedFiles: \"clearSelectedFiles\", dropFilesHere: \"dropFilesHere\", externalDropFilesHere: \"externalDropFilesHere\", filesBatchStatus: \"filesBatchStatus\", filesBatchStatusFailed: \"filesBatchStatusFailed\", filesBatchStatusUploaded: \"filesBatchStatusUploaded\", fileStatusFailed: \"fileStatusFailed\", fileStatusUploaded: \"fileStatusUploaded\", headerStatusPaused: \"headerStatusPaused\", headerStatusUploaded: \"headerStatusUploaded\", headerStatusUploading: \"headerStatusUploading\", invalidFileExtension: \"invalidFileExtension\", invalidMaxFileSize: \"invalidMaxFileSize\", invalidMinFileSize: \"invalidMinFileSize\", pause: \"pause\", remove: \"remove\", resume: \"resume\", retry: \"retry\", select: \"select\", uploadSelectedFiles: \"uploadSelectedFiles\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: Messages, decorators: [{\n type: Directive\n }], propDecorators: { cancel: [{\n type: Input\n }], clearSelectedFiles: [{\n type: Input\n }], dropFilesHere: [{\n type: Input\n }], externalDropFilesHere: [{\n type: Input\n }], filesBatchStatus: [{\n type: Input\n }], filesBatchStatusFailed: [{\n type: Input\n }], filesBatchStatusUploaded: [{\n type: Input\n }], fileStatusFailed: [{\n type: Input\n }], fileStatusUploaded: [{\n type: Input\n }], headerStatusPaused: [{\n type: Input\n }], headerStatusUploaded: [{\n type: Input\n }], headerStatusUploading: [{\n type: Input\n }], invalidFileExtension: [{\n type: Input\n }], invalidMaxFileSize: [{\n type: Input\n }], invalidMinFileSize: [{\n type: Input\n }], pause: [{\n type: Input\n }], remove: [{\n type: Input\n }], resume: [{\n type: Input\n }], retry: [{\n type: Input\n }], select: [{\n type: Input\n }], uploadSelectedFiles: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: LocalizedMessagesDirective, selector: \"\\n [kendoUploadLocalizedMessages],\\n [kendoFileSelectLocalizedMessages],\\n [kendoUploadDropZoneLocalizedMessages]\\n \", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `\n [kendoUploadLocalizedMessages],\n [kendoFileSelectLocalizedMessages],\n [kendoUploadDropZoneLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nconst INVALIDMAXFILESIZE = \"invalidMaxFileSize\";\n/**\n * @hidden\n */\nconst INVALIDMINFILESIZE = \"invalidMinFileSize\";\n/**\n * @hidden\n */\nconst INVALIDFILEEXTENSION = \"invalidFileExtension\";\nconst validateFileExtension = (file, allowedExtensions) => {\n if (allowedExtensions.length > 0) {\n if (allowedExtensions.indexOf(file.extension.toLowerCase()) < 0) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDFILEEXTENSION) < 0) {\n file.validationErrors.push(INVALIDFILEEXTENSION);\n }\n }\n }\n};\nconst validateFileSize = (file, minFileSize, maxFileSize) => {\n if (minFileSize !== 0 && file.size < minFileSize) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDMINFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMINFILESIZE);\n }\n }\n if (maxFileSize !== 0 && file.size > maxFileSize) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDMAXFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMAXFILESIZE);\n }\n }\n};\nconst parseAllowedExtensions = (extensions) => {\n const allowedExtensions = extensions.map((ext) => {\n var parsedExt = (ext.substring(0, 1) === \".\") ? ext : (\".\" + ext);\n return parsedExt.toLowerCase();\n });\n return allowedExtensions;\n};\n/**\n * @hidden\n */\nconst validateFiles = (files, restrictionInfo) => {\n const allowedExtensions = parseAllowedExtensions(restrictionInfo.allowedExtensions);\n const maxFileSize = restrictionInfo.maxFileSize;\n const minFileSize = restrictionInfo.minFileSize;\n let i;\n for (i = 0; i < files.length; i++) {\n validateFileExtension(files[i], allowedExtensions);\n validateFileSize(files[i], minFileSize, maxFileSize);\n }\n};\n\n/**\n * @hidden\n */\nclass DropZoneBase {\n constructor(element, renderer, cssClass) {\n this.element = element;\n this.renderer = renderer;\n this.hideIntervalElement = null;\n this.hoverClass = cssClass;\n }\n /**\n * @hidden\n */\n onElementDragEnterListener() {\n this.addClass(this.hoverClass);\n this.lastDragElement = new Date();\n if (!this.hideIntervalElement) {\n this.hideIntervalElement = setInterval(() => {\n if (this.calculateTimeDiff(this.lastDragElement) < 100) {\n return;\n }\n this.removeClass(this.hoverClass);\n clearInterval(this.hideIntervalElement);\n this.hideIntervalElement = null;\n }, 100);\n }\n return false;\n }\n /**\n * @hidden\n */\n onElementDragOverListener() {\n this.lastDragElement = new Date();\n return false;\n }\n calculateTimeDiff(prevEvent) {\n return new Date().getTime() - prevEvent.getTime();\n }\n addClass(className) {\n this.renderer.addClass(this.element.nativeElement, className);\n }\n removeClass(className) {\n this.renderer.removeClass(this.element.nativeElement, className);\n }\n}\nDropZoneBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneBase, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: 'hoverClass' }], target: i0.ɵɵFactoryTarget.Directive });\nDropZoneBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropZoneBase, host: { listeners: { \"dragenter\": \"onElementDragEnterListener()\", \"dragover\": \"onElementDragOverListener()\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Inject,\n args: ['hoverClass']\n }] }]; }, propDecorators: { onElementDragEnterListener: [{\n type: HostListener,\n args: ['dragenter']\n }], onElementDragOverListener: [{\n type: HostListener,\n args: ['dragover']\n }] } });\n\n/**\n * @hidden\n */\nclass DropZoneInternalDirective extends DropZoneBase {\n constructor(element, renderer, ngZone, uploadService) {\n super(element, renderer, 'k-dropzone-hover');\n this.ngZone = ngZone;\n this.uploadService = uploadService;\n this.initialClassName = true;\n this.hideIntervalDocument = null;\n this.activeClass = 'k-dropzone-active';\n this.ngZone.runOutsideAngular(() => {\n this.unsubscribeDocumentDragEnter = this.renderer.listen('document', 'dragenter', () => this.onDocumentDragEnter());\n this.unsubscribeDocumentDragOver = this.renderer.listen('document', 'dragover', () => this.onDocumentDragOver());\n });\n }\n ngOnDestroy() {\n this.ngZone.runOutsideAngular(() => {\n if (this.unsubscribeDocumentDragEnter) {\n this.unsubscribeDocumentDragEnter();\n }\n if (this.unsubscribeDocumentDragOver) {\n this.unsubscribeDocumentDragOver();\n }\n });\n }\n onDocumentDragEnter() {\n this.addClass(this.activeClass);\n this.lastDragDocument = new Date();\n if (!this.hideIntervalDocument) {\n this.hideIntervalDocument = setInterval(() => {\n if (this.calculateTimeDiff(this.lastDragDocument) < 100) {\n return;\n }\n this.removeClass(this.activeClass);\n clearInterval(this.hideIntervalDocument);\n this.hideIntervalDocument = null;\n }, 100);\n }\n return false;\n }\n /**\n * @hidden\n */\n onDocumentDragOver() {\n this.lastDragDocument = new Date();\n return false;\n }\n onDropListener(event) {\n let droppedFiles = event.dataTransfer.files;\n if (droppedFiles.length > 0 && !this.disabled) {\n let files = getAllFileInfo(droppedFiles);\n files = assignGuidToFiles(files, !this.uploadService.async.batch);\n if (!this.multiple) {\n files.splice(1, files.length - 1);\n this.uploadService.clearFiles();\n }\n validateFiles(files, this.restrictions);\n this.uploadService.addFiles(files);\n }\n return false;\n }\n}\nDropZoneInternalDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneInternalDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Directive });\nDropZoneInternalDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: DropZoneInternalDirective, selector: \"\\n [kendoUploadInternalDropZone],\\n [kendoFileSelectInternalDropZone]\\n \", inputs: { disabled: \"disabled\", multiple: \"multiple\", restrictions: \"restrictions\" }, host: { listeners: { \"drop\": \"onDropListener($event)\" }, properties: { \"class.k-dropzone\": \"this.initialClassName\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: DropZoneInternalDirective, decorators: [{\n type: Directive,\n args: [{\n selector: `\n [kendoUploadInternalDropZone],\n [kendoFileSelectInternalDropZone]\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: UploadService }]; }, propDecorators: { disabled: [{\n type: Input\n }], multiple: [{\n type: Input\n }], restrictions: [{\n type: Input\n }], initialClassName: [{\n type: HostBinding,\n args: ['class.k-dropzone']\n }], onDropListener: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass FileSelectDirective {\n constructor(uploadService, navigation, el) {\n this.uploadService = uploadService;\n this.navigation = navigation;\n this.type = \"file\";\n this.autocomplete = \"off\";\n this.tabIndex = -1;\n this.element = el;\n }\n get nameAttribute() {\n return this.uploadService.async.saveField;\n }\n get multipleAttribute() {\n return this.multiple ? \"multiple\" : null;\n }\n get dirAttribute() {\n return this.dir;\n }\n get disabledAttribute() {\n return this.disabled ? \"true\" : null;\n }\n onInputChange(event) {\n const ua = navigator.userAgent;\n const webkit = /(webkit)[ \\/]([\\w.]+)/i;\n const ie = /(windows)[ \\/]([\\w.]+)/i;\n let selectedFiles = inputFiles(event.target);\n selectedFiles = assignGuidToFiles(selectedFiles, !this.uploadService.async.batch);\n validateFiles(selectedFiles, this.restrictions);\n if (!this.multiple) {\n this.uploadService.clearFiles();\n }\n this.uploadService.addFiles(selectedFiles);\n /*\n Chrome, IE, Edge and Safari do not trigger a `change` event\n when a file with the same name is selected a number of consecutive times.\n As a workaround, clear the input value after handling the file.\n */\n const native = this.element.nativeElement;\n if (ua.match(webkit) || ua.match(ie)) {\n native.type = \"\";\n native.type = \"file\";\n }\n setTimeout(() => {\n this.navigation.focusedIndex = -1;\n });\n }\n}\nFileSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectDirective, deps: [{ token: UploadService }, { token: NavigationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nFileSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileSelectDirective, selector: \"[kendoFileSelect]\", inputs: { dir: \"dir\", disabled: \"disabled\", multiple: \"multiple\", restrictions: \"restrictions\" }, host: { listeners: { \"change\": \"onInputChange($event)\" }, properties: { \"attr.type\": \"this.type\", \"attr.autocomplete\": \"this.autocomplete\", \"attr.tabindex\": \"this.tabIndex\", \"attr.name\": \"this.nameAttribute\", \"attr.multiple\": \"this.multipleAttribute\", \"attr.dir\": \"this.dirAttribute\", \"attr.disabled\": \"this.disabledAttribute\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFileSelect]'\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: NavigationService }, { type: i0.ElementRef }]; }, propDecorators: { dir: [{\n type: Input\n }], disabled: [{\n type: Input\n }], multiple: [{\n type: Input\n }], restrictions: [{\n type: Input\n }], type: [{\n type: HostBinding,\n args: [\"attr.type\"]\n }], autocomplete: [{\n type: HostBinding,\n args: [\"attr.autocomplete\"]\n }], tabIndex: [{\n type: HostBinding,\n args: [\"attr.tabindex\"]\n }], nameAttribute: [{\n type: HostBinding,\n args: [\"attr.name\"]\n }], multipleAttribute: [{\n type: HostBinding,\n args: [\"attr.multiple\"]\n }], dirAttribute: [{\n type: HostBinding,\n args: [\"attr.dir\"]\n }], disabledAttribute: [{\n type: HostBinding,\n args: [\"attr.disabled\"]\n }], onInputChange: [{\n type: HostListener,\n args: [\"change\", [\"$event\"]]\n }] } });\n\n/**\n * @hidden\n */\nconst FILESELECT_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileSelectComponent)\n};\nclass FileSelectComponent {\n constructor(uploadService, localization, navigation, dropZoneService, ngZone, renderer, cdr, wrapper) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.navigation = navigation;\n this.dropZoneService = dropZoneService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.cdr = cdr;\n /**\n * Disables the FileSelect.\n * The default value is `false`.\n */\n this.disabled = false;\n /**\n * Enables the selection of multiple files\n * ([see example]({% slug fileprocessing_upload %}#toc-upload-of-sinlge-or-multiple-files)).\n * If set to `false`, only one file can be selected at a time.\n */\n this.multiple = true;\n /**\n * Toggles the visibility of the file list.\n */\n this.showFileList = true;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the FileSelect.\n */\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Fires when the user navigates outside the component.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the component is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when files are selected. If prevented, the selected files will not be added to the list.\n */\n this.select = new EventEmitter();\n /**\n * Fires when a file is about to be removed. If prevented, the file will remain in the list.\n */\n this.remove = new EventEmitter();\n /**\n * Fires when the value of the component has changed as a result of a successful `select` or `remove` operation.\n */\n this.valueChange = new EventEmitter();\n this.hostDefaultClasses = true;\n /**\n * @hidden\n */\n this._restrictions = {\n allowedExtensions: [],\n maxFileSize: 0,\n minFileSize: 0\n };\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n validatePackage(packageMetadata);\n this.wrapper = wrapper.nativeElement;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n this.fileList = this.uploadService.files;\n this.localizationChangeSubscription = localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n });\n this.subscribeBlur();\n this.subscribeFocus();\n this.attachEventHandlers();\n this.setDefaultSettings();\n }\n /**\n * Sets the `name` attribute of the `input` element of the FileSelect.\n */\n set name(name) {\n this.uploadService.async.saveField = name;\n }\n get name() {\n return this.uploadService.async.saveField;\n }\n /**\n * Sets the restrictions for selected files.\n */\n set restrictions(restrictions) {\n let parsedRestrictions = Object.assign({}, this._restrictions, restrictions);\n this._restrictions = parsedRestrictions;\n }\n get restrictions() {\n return this._restrictions;\n }\n get hostDisabledClass() {\n return this.disabled;\n }\n get dir() {\n return this.direction;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper, \"tabindex\");\n if (this.zoneId) {\n this.dropZoneService.addComponent(this, this.zoneId);\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * Focuses the underlying input element.\n */\n focus() {\n setTimeout(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n ngOnDestroy() {\n this.fileList.clear();\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n }\n if (this.wrapperFocusSubscription) {\n this.wrapperFocusSubscription.unsubscribe();\n }\n if (this.selectButtonFocusSubscription) {\n this.selectButtonFocusSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n if (this.disabled) {\n return;\n }\n if ((event.keyCode === Keys.Enter || event.keyCode === Keys.Space) &&\n event.target === this.fileSelectButton.nativeElement) {\n event.preventDefault();\n this.fileSelect.nativeElement.click();\n return;\n }\n if (hasClasses(event.target, UPLOAD_CLASSES) ||\n (!isFocusable(event.target) && !hasClasses(event.target, IGNORE_TARGET_CLASSES))) {\n this.navigation.process(event);\n }\n }\n /**\n * @hidden\n */\n writeValue(newValue) {\n let isValid = true;\n if (newValue instanceof Array) {\n newValue.forEach((file) => {\n if (!validateInitialFileSelectFile(file)) {\n isValid = false;\n }\n });\n if (isValid) {\n this.uploadService.addInitialFileSelectFiles(newValue);\n }\n }\n if (newValue === null) {\n this.fileList.clear();\n }\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * Removes specific file from the file list.\n */\n removeFileByUid(uid) {\n this.uploadService.removeFiles(uid);\n }\n /**\n * Visually clears all files from the UI.\n */\n clearFiles() {\n this.uploadService.clearFiles();\n }\n /**\n * @hidden\n * Used to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * @hidden\n * Used by the external dropzone to add files to the FileSelect\n */\n addFiles(files) {\n this.uploadService.addFiles(files);\n }\n /**\n * @hidden\n */\n get selectButtonTabIndex() {\n return this.disabled ? undefined : this.tabindex;\n }\n /**\n * @hidden\n */\n onFileSelectButtonFocus(_event) {\n this.renderer.addClass(this.fileSelectButton.nativeElement, 'k-focus');\n if (!this.navigation.focused) {\n this.navigation.focusedIndex = -1;\n }\n }\n /**\n * @hidden\n */\n onFileSelectButtonBlur(_event) {\n this.renderer.removeClass(this.fileSelectButton.nativeElement, 'k-focus');\n }\n subscribeBlur() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.documentClick = fromEvent(document, 'click').pipe(filter((event) => {\n return !(this.wrapper !== event.target && this.wrapper.contains(event.target));\n }));\n this.blurSubscription = merge(this.documentClick, this.navigation.onTab).subscribe(() => {\n if (this.navigation.focused) {\n this.ngZone.run(() => {\n this.navigation.focused = false;\n this.onTouchedCallback();\n this.onBlur.emit();\n });\n }\n });\n });\n }\n subscribeFocus() {\n this.wrapperFocusSubscription = this.navigation.onWrapperFocus.subscribe(() => {\n this.onFocus.emit();\n });\n this.selectButtonFocusSubscription = this.navigation.onSelectButtonFocus.subscribe(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n attachEventHandlers() {\n this.subs = this.uploadService.changeEvent.subscribe((files) => {\n let model = [];\n if (files !== null) {\n files.forEach((file) => {\n if (file.state === FileState.Initial) {\n model.push(file);\n }\n if (file.state === FileState.Selected && file.rawFile && !file.validationErrors) {\n model.push(file.rawFile);\n }\n });\n }\n if (model.length === 0) {\n model = null;\n }\n this.onChangeCallback(model);\n this.valueChange.emit(model);\n });\n this.subs.add(this.uploadService.removeEvent.subscribe((args) => {\n this.remove.emit(args);\n }));\n this.subs.add(this.uploadService.selectEvent.subscribe((args) => {\n this.select.emit(args);\n }));\n }\n setDefaultSettings() {\n this.uploadService.async.autoUpload = false;\n this.uploadService.component = 'FileSelect';\n }\n}\nFileSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectComponent, deps: [{ token: UploadService }, { token: i1$1.LocalizationService }, { token: NavigationService }, { token: DropZoneService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nFileSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: FileSelectComponent, selector: \"kendo-fileselect\", inputs: { accept: \"accept\", disabled: \"disabled\", multiple: \"multiple\", name: \"name\", showFileList: \"showFileList\", tabindex: \"tabindex\", restrictions: \"restrictions\", zoneId: \"zoneId\", focusableId: \"focusableId\" }, outputs: { onBlur: \"blur\", onFocus: \"focus\", select: \"select\", remove: \"remove\", valueChange: \"valueChange\" }, host: { listeners: { \"keydown\": \"handleKeydown($event)\" }, properties: { \"class.k-widget\": \"this.hostDefaultClasses\", \"class.k-upload\": \"this.hostDefaultClasses\", \"class.k-disabled\": \"this.hostDisabledClass\", \"attr.dir\": \"this.dir\" } }, providers: [\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n FILESELECT_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.fileselect'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FileSelectComponent)\n }\n ], queries: [{ propertyName: \"fileTemplate\", first: true, predicate: FileTemplateDirective, descendants: true }, { propertyName: \"fileInfoTemplate\", first: true, predicate: FileInfoTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"fileSelect\", first: true, predicate: [\"fileSelect\"], descendants: true, static: true }, { propertyName: \"fileSelectButton\", first: true, predicate: [\"fileSelectButton\"], descendants: true, static: true }], exportAs: [\"kendoFileSelect\"], ngImport: i0, template: `\n \n \n
    \n
    \n \n {{textFor('select')}}\n
    \n
    {{textFor('dropFilesHere')}}
    \n
    \n
      0\"\n [disabled]=\"disabled\"\n [fileList]=\"fileList.files\"\n [fileTemplate]=\"fileTemplate\"\n [fileInfoTemplate]=\"fileInfoTemplate\">\n
    \n `, isInline: true, components: [{ type: FileListComponent, selector: \"[kendo-upload-file-list]\", inputs: [\"disabled\", \"fileList\", \"fileTemplate\", \"fileInfoTemplate\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoUploadLocalizedMessages],\\n [kendoFileSelectLocalizedMessages],\\n [kendoUploadDropZoneLocalizedMessages]\\n \" }, { type: DropZoneInternalDirective, selector: \"\\n [kendoUploadInternalDropZone],\\n [kendoFileSelectInternalDropZone]\\n \", inputs: [\"disabled\", \"multiple\", \"restrictions\"] }, { type: FileSelectDirective, selector: \"[kendoFileSelect]\", inputs: [\"dir\", \"disabled\", \"multiple\", \"restrictions\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoFileSelect',\n providers: [\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n FILESELECT_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.fileselect'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FileSelectComponent)\n }\n ],\n selector: 'kendo-fileselect',\n template: `\n \n \n
    \n
    \n \n {{textFor('select')}}\n
    \n
    {{textFor('dropFilesHere')}}
    \n
    \n
      0\"\n [disabled]=\"disabled\"\n [fileList]=\"fileList.files\"\n [fileTemplate]=\"fileTemplate\"\n [fileInfoTemplate]=\"fileInfoTemplate\">\n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: i1$1.LocalizationService }, { type: NavigationService }, { type: DropZoneService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { accept: [{\n type: Input\n }], disabled: [{\n type: Input\n }], multiple: [{\n type: Input\n }], name: [{\n type: Input\n }], showFileList: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], restrictions: [{\n type: Input\n }], zoneId: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], fileTemplate: [{\n type: ContentChild,\n args: [FileTemplateDirective, { static: false }]\n }], fileInfoTemplate: [{\n type: ContentChild,\n args: [FileInfoTemplateDirective, { static: false }]\n }], fileSelect: [{\n type: ViewChild,\n args: ['fileSelect', { static: true }]\n }], fileSelectButton: [{\n type: ViewChild,\n args: ['fileSelectButton', { static: true }]\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], select: [{\n type: Output\n }], remove: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], hostDefaultClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-upload']\n }], hostDisabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n\n/**\n * Custom component messages override default component messages ([more information and example]({% slug globalization_upload %})).\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * ```\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: CustomMessagesComponent, selector: \"kendo-upload-messages, kendo-fileselect-messages, kendo-uploaddropzone-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-upload-messages, kendo-fileselect-messages, kendo-uploaddropzone-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass UploadStatusTotalComponent {\n constructor(localization) {\n this.localization = localization;\n }\n ngDoCheck() {\n this.isPaused = this.fileList.hasFileWithState([FileState.Paused]);\n this.isFailed = this.fileList.hasFileWithState([FileState.Failed]);\n this.isUploading = this.fileList.hasFileWithState([FileState.Uploading]);\n if (this.isPaused && !this.isUploading) {\n this.statusText = this.localization.get('headerStatusPaused');\n }\n else {\n this.statusText = this.isUploading ? this.localization.get('headerStatusUploading')\n : this.localization.get('headerStatusUploaded');\n }\n }\n}\nUploadStatusTotalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadStatusTotalComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nUploadStatusTotalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: UploadStatusTotalComponent, selector: \"kendo-upload-status-total\", inputs: { fileList: \"fileList\" }, ngImport: i0, template: `\n \n \n {{statusText}}\n `, isInline: true, directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadStatusTotalComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-upload-status-total',\n template: `\n \n \n {{statusText}}\n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; }, propDecorators: { fileList: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass UploadActionButtonsComponent {\n constructor(uploadService, localization, navigation) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.navigation = navigation;\n this.hostDefaultClass = true;\n this.onAction();\n this.onFocus();\n }\n get actionButtonsEndClassName() {\n return this.actionsLayout === 'end';\n }\n get actionButtonsStretchedClassName() {\n return this.actionsLayout === 'stretched';\n }\n get actionButtonsStartClassName() {\n return this.actionsLayout === 'start';\n }\n get actionButtonsCenterClassName() {\n return this.actionsLayout === 'center';\n }\n onAction() {\n this.actionSubscription = this.navigation.onActionButtonAction.subscribe((button) => {\n if (button === \"clear\") {\n this.clearFiles();\n }\n else {\n this.performUpload();\n }\n });\n }\n onFocus() {\n this.focusSubscription = this.navigation.onActionButtonFocus.subscribe((button) => {\n this.focusButton(button);\n });\n }\n focusButton(button) {\n const el = (button === \"clear\") ? this.clearButton : this.uploadButton;\n el.nativeElement.focus();\n }\n ngOnDestroy() {\n this.actionSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n }\n onUploadButtonClick(event) {\n event.stopImmediatePropagation();\n this.performUpload();\n }\n performUpload() {\n if (!this.disabled) {\n this.uploadService.uploadFiles();\n this.navigation.focusSelectButton();\n }\n }\n onClearButtonClick(event) {\n event.stopImmediatePropagation();\n this.clearFiles();\n }\n clearFiles() {\n if (!this.disabled) {\n this.uploadService.clearFiles();\n this.navigation.focusSelectButton();\n }\n }\n textFor(key) {\n return this.localization.get(key);\n }\n}\nUploadActionButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadActionButtonsComponent, deps: [{ token: UploadService }, { token: i1$1.LocalizationService }, { token: NavigationService }], target: i0.ɵɵFactoryTarget.Component });\nUploadActionButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: UploadActionButtonsComponent, selector: \"kendo-upload-action-buttons\", inputs: { disabled: \"disabled\", actionsLayout: \"actionsLayout\" }, host: { properties: { \"class.k-actions\": \"this.hostDefaultClass\", \"class.k-actions-end\": \"this.actionButtonsEndClassName\", \"class.k-actions-stretched\": \"this.actionButtonsStretchedClassName\", \"class.k-actions-start\": \"this.actionButtonsStartClassName\", \"class.k-actions-center\": \"this.actionButtonsCenterClassName\" } }, viewQueries: [{ propertyName: \"clearButton\", first: true, predicate: [\"clearButton\"], descendants: true, static: true }, { propertyName: \"uploadButton\", first: true, predicate: [\"uploadButton\"], descendants: true, static: true }], ngImport: i0, template: `\n \n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadActionButtonsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-upload-action-buttons',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: i1$1.LocalizationService }, { type: NavigationService }]; }, propDecorators: { disabled: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], clearButton: [{\n type: ViewChild,\n args: ['clearButton', { static: true }]\n }], uploadButton: [{\n type: ViewChild,\n args: ['uploadButton', { static: true }]\n }], hostDefaultClass: [{\n type: HostBinding,\n args: ['class.k-actions']\n }], actionButtonsEndClassName: [{\n type: HostBinding,\n args: ['class.k-actions-end']\n }], actionButtonsStretchedClassName: [{\n type: HostBinding,\n args: ['class.k-actions-stretched']\n }], actionButtonsStartClassName: [{\n type: HostBinding,\n args: ['class.k-actions-start']\n }], actionButtonsCenterClassName: [{\n type: HostBinding,\n args: ['class.k-actions-center']\n }] } });\n\n/**\n * @hidden\n */\nconst UPLOAD_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UploadComponent)\n};\n/**\n * Represents the [Kendo UI Upload component for Angular]({% slug overview_upload %}).\n */\nclass UploadComponent {\n constructor(uploadService, localization, navigation, dropZoneService, _ngZone, renderer, cdr, wrapper) {\n this.uploadService = uploadService;\n this.localization = localization;\n this.navigation = navigation;\n this.dropZoneService = dropZoneService;\n this._ngZone = _ngZone;\n this.renderer = renderer;\n this.cdr = cdr;\n /**\n * Enables the chunk functionality of the Upload.\n *\n * The default value is `false`.\n */\n this.chunkable = false;\n /**\n * Enables the selection of multiple files\n * ([see example]({% slug fileprocessing_upload %}#toc-upload-of-sinlge-or-multiple-files)).\n * If set to `false`, only one file can be selected at a time.\n */\n this.multiple = true;\n /**\n * Disables the Upload ([see example]({% slug disabledstate_upload %})).\n * The default value is `false`.\n */\n this.disabled = false;\n /**\n * Toggles the visibility of the file list.\n */\n this.showFileList = true;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Specifies the possible layout of the action buttons.\n */\n this.actionsLayout = 'end';\n /**\n * Fires when the user navigates outside the component.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the upload is canceled while in progress.\n */\n this.cancel = new EventEmitter();\n /**\n * Fires when the file list is about to be cleared. If prevented, the files will not be cleared.\n */\n this.clear = new EventEmitter();\n /**\n * Fires when all active uploads are completed either successfully or with errors.\n */\n this.complete = new EventEmitter();\n /**\n * Fires when an `upload` or `remove` operation has failed.\n */\n this.error = new EventEmitter();\n /**\n * Fires when the component is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when the upload of a file has been paused.\n */\n this.pause = new EventEmitter();\n /**\n * Fires when an uploaded file is about to be removed. If prevented, the files will remain in the list.\n */\n this.remove = new EventEmitter();\n /**\n * Fires when the upload of a file has been resumed.\n */\n this.resume = new EventEmitter();\n /**\n * Fires when files are selected. If prevented, the selected files will not be added to the list.\n */\n this.select = new EventEmitter();\n /**\n * Fires when an `upload` or `remove` operation is successfully completed.\n */\n this.success = new EventEmitter();\n /**\n * Fires when one or more files are about to be uploaded. If prevented, the files will neither be uploaded, nor added to the file list.\n */\n this.upload = new EventEmitter();\n /**\n * Fires when one or more files are being uploaded.\n */\n this.uploadProgress = new EventEmitter();\n /**\n * Fires when the value of the component has changed as a result of a successful `upload`, `remove` or `clear` operation.\n */\n this.valueChange = new EventEmitter();\n this.hostDefaultClasses = true;\n /**\n * @hidden\n */\n this._restrictions = {\n allowedExtensions: [],\n maxFileSize: 0,\n minFileSize: 0\n };\n this.onTouchedCallback = (_) => { };\n this.onChangeCallback = (_) => { };\n validatePackage(packageMetadata);\n this.fileList = this.uploadService.files;\n this.localizationChangeSubscription = localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n });\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.navigation.computeKeys(this.direction);\n this.wrapper = wrapper.nativeElement;\n this.subscribeBlur();\n this.subscribeFocus();\n this.attachEventHandlers();\n }\n /**\n * By default, the selected files are immediately uploaded\n * ([see example]({% slug fileprocessing_upload %}#toc-automatic-upload-of-files)).\n * To change this behavior, set `autoUpload` to `false`.\n */\n set autoUpload(autoUpload) {\n this.uploadService.async.autoUpload = autoUpload;\n }\n get autoUpload() {\n return this.uploadService.async.autoUpload;\n }\n /**\n * When enabled, all files in the selection are uploaded in one request\n * ([see example]({% slug fileprocessing_upload %}#toc-upload-of-batches-of-files)).\n * Any files that are selected one after the other are uploaded in separate requests.\n */\n set batch(batch) {\n this.uploadService.async.batch = batch;\n }\n get batch() {\n return this.uploadService.async.batch;\n }\n /**\n * Configures whether credentials (cookies, headers) will be sent for cross-site requests\n * ([see example]({% slug credentials_upload %}#toc-attaching-credentials-to-requests)).\n * The default values is `true`. Setting `withCredentials` has no effect on same-site requests.\n * To add credentials to the request, use the `saveHeaders` or `removeHeaders` property,\n * or the [`upload`]({% slug api_upload_uploadevent %}) event.\n */\n set withCredentials(withCredentials) {\n this.uploadService.async.withCredentials = withCredentials;\n }\n get withCredentials() {\n return this.uploadService.async.withCredentials;\n }\n /**\n * Sets the [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key which contains the files submitted to `saveUrl`.\n * The default value is `files`.\n */\n set saveField(saveField) {\n this.uploadService.async.saveField = saveField;\n }\n get saveField() {\n return this.uploadService.async.saveField;\n }\n /**\n * Configures the [`HttpHeaders`](https://angular.io/api/common/http/HttpHeaders)\n * that are attached to each upload request.\n */\n set saveHeaders(saveHeaders) {\n this.uploadService.async.saveHeaders = saveHeaders;\n }\n get saveHeaders() {\n return this.uploadService.async.saveHeaders;\n }\n /**\n * Sets the [`RequestMethod`](https://angular.io/api/http/RequestMethod) of the upload request.\n * The default value is `POST`.\n */\n set saveMethod(saveMethod) {\n this.uploadService.async.saveMethod = saveMethod;\n }\n get saveMethod() {\n return this.uploadService.async.saveMethod;\n }\n /**\n * Sets the URL of the endpoint for the upload request.\n * The request [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key is named after the `saveField` property.\n * It contains the list of files to be uploaded.\n */\n set saveUrl(saveUrl) {\n this.uploadService.async.saveUrl = saveUrl;\n }\n get saveUrl() {\n return this.uploadService.async.saveUrl;\n }\n /**\n * Sets the expected [`response type`](https://angular.io/api/common/http/HttpRequest#responseType) of the server.\n * It is used to parse the response appropriately.\n * The default value is `json`.\n */\n set responseType(responseType) {\n this.uploadService.async.responseType = responseType;\n }\n get responseType() {\n return this.uploadService.async.responseType;\n }\n /**\n * Sets the [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key\n * which contains the list of file names that are submitted to `removeUrl`.\n * The default value is `fileNames`.\n */\n set removeField(removeField) { this.uploadService.async.removeField = removeField; }\n get removeField() { return this.uploadService.async.removeField; }\n /**\n * Configures the [`HttpHeaders`](https://angular.io/api/common/http/HttpHeaders)\n * that are attached to each `remove` request.\n */\n set removeHeaders(removeHeaders) {\n this.uploadService.async.removeHeaders = removeHeaders;\n }\n get removeHeaders() {\n return this.uploadService.async.removeHeaders;\n }\n /**\n * Sets the [`RequestMethod`](https://angular.io/api/http/RequestMethod) of the `remove` request.\n * The default value is `POST`.\n */\n set removeMethod(removeMethod) {\n this.uploadService.async.removeMethod = removeMethod;\n }\n get removeMethod() {\n return this.uploadService.async.removeMethod;\n }\n /**\n * Sets the URL of the endpoint for the `remove` request.\n * The [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) request key is named after the `removeField` property.\n * It contains the list of file names which will be removed.\n */\n set removeUrl(removeUrl) {\n this.uploadService.async.removeUrl = removeUrl;\n }\n get removeUrl() {\n return this.uploadService.async.removeUrl;\n }\n /**\n * Specifies if the selected files are uploaded simultaneously or one by one.\n *\n * The default value is `true`.\n */\n set concurrent(concurrent) {\n this.uploadService.async.concurrent = concurrent;\n }\n get concurrent() {\n return this.uploadService.async.concurrent;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the restrictions for selected files ([see example]({% slug api_upload_filerestrictions %})).\n */\n set restrictions(restrictions) {\n let parsedRestrictions = Object.assign({}, this._restrictions, restrictions);\n this._restrictions = parsedRestrictions;\n }\n get restrictions() {\n return this._restrictions;\n }\n get hostDisabledClass() {\n return this.disabled;\n }\n get dir() {\n return this.direction;\n }\n ngOnInit() {\n this.verifySettings();\n this.renderer.removeAttribute(this.wrapper, \"tabindex\");\n this.uploadService.setChunkSettings(this.chunkable);\n if (this.zoneId) {\n this.dropZoneService.addComponent(this, this.zoneId);\n }\n }\n ngOnChanges(changes) {\n if (isChanged(\"chunkable\", changes)) {\n const newChunkable = changes.chunkable.currentValue;\n if (typeof newChunkable === 'boolean') {\n this.uploadService.async.chunk = newChunkable;\n }\n if (typeof newChunkable === \"object\" && newChunkable !== null) {\n this.uploadService.async.chunk = true;\n this.uploadService.chunk = Object.assign({}, this.uploadService.chunk, newChunkable);\n }\n }\n }\n ngOnDestroy() {\n this.fileList.clear();\n if (this.blurSubscription) {\n this.blurSubscription.unsubscribe();\n }\n if (this.wrapperFocusSubscription) {\n this.wrapperFocusSubscription.unsubscribe();\n }\n if (this.selectButtonFocusSubscription) {\n this.selectButtonFocusSubscription.unsubscribe();\n }\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n if (this.disabled) {\n return;\n }\n if ((event.keyCode === Keys.Enter || event.keyCode === Keys.Space) &&\n event.target === this.fileSelectButton.nativeElement) {\n event.preventDefault();\n this.fileSelect.nativeElement.click();\n return;\n }\n if (hasClasses(event.target, UPLOAD_CLASSES) ||\n (!isFocusable(event.target) && !hasClasses(event.target, IGNORE_TARGET_CLASSES))) {\n this.navigation.process(event);\n }\n }\n /**\n * @hidden\n */\n writeValue(newValue) {\n let isValid = true;\n if (newValue instanceof Array) {\n newValue.forEach((file) => {\n if (!validateInitialFileInfo(file)) {\n isValid = false;\n }\n });\n if (isValid) {\n this.uploadService.addInitialFiles(newValue);\n }\n }\n if (newValue === null) {\n this.fileList.clear();\n }\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get selectButtonTabIndex() {\n return this.disabled ? undefined : this.tabIndex;\n }\n /**\n * @hidden\n */\n onFileSelectButtonFocus(_event) {\n this.renderer.addClass(this.fileSelectButton.nativeElement, 'k-focus');\n if (!this.navigation.focused) {\n this.navigation.focusedIndex = -1;\n }\n }\n /**\n * @hidden\n */\n onFileSelectButtonBlur(_event) {\n this.renderer.removeClass(this.fileSelectButton.nativeElement, 'k-focus');\n }\n /**\n * @hidden\n */\n get showActionButtons() {\n let areVisible = false;\n if (!this.autoUpload) {\n const hasFilesToUpload = this.fileList.filesToUpload.length > 0;\n const uploadingFiles = this.fileList.hasFileWithState([FileState.Uploading]);\n if (this.concurrent && hasFilesToUpload) {\n areVisible = true;\n }\n if (!this.concurrent && hasFilesToUpload && !uploadingFiles) {\n areVisible = true;\n }\n }\n this.navigation.actionButtonsVisible = areVisible;\n return areVisible;\n }\n /**\n * @hidden\n */\n get showTotalStatus() {\n const states = [\n FileState.Uploaded,\n FileState.Uploading,\n FileState.Failed,\n FileState.Paused\n ];\n if (this.fileList.hasFileWithState(states)) {\n return true;\n }\n return false;\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * Focuses the underlying input element.\n */\n focus() {\n setTimeout(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n /**\n * @hidden\n * @deprecated\n */\n focusComponent() {\n this.focus();\n }\n /**\n * Blurs the Upload if it was previously focused.\n */\n blur() {\n if (this.navigation.focused) {\n this.navigation.focused = false;\n document.activeElement.blur();\n this.onBlur.emit();\n }\n }\n /**\n * @hidden\n * @deprecated\n */\n blurComponent() {\n this.blur();\n }\n /**\n * Pauses the upload process of a file that is currently uploading.\n * The `pauseFileByUid` method requires the `chunkable` option of the Upload to be enabled.\n *\n * @param uid - The `uid` of the file that will be paused.\n */\n pauseFileByUid(uid) {\n this.uploadService.pauseFile(uid);\n }\n /**\n * Resumes the upload process for a file that has been previously paused.\n * The `resumeFileByUid` method requires the `chunkable` option of the Upload to be enabled.\n *\n * @param uid - The `uid` of the file that will be resumed.\n */\n resumeFileByUid(uid) {\n this.uploadService.resumeFile(uid);\n }\n /**\n * Triggers the removal of a file or a batch of files.\n * @param uid - The `uid` of the file or a batch of files that will be removed.\n */\n removeFilesByUid(uid) {\n this.uploadService.removeFiles(uid);\n }\n /**\n * Triggers another upload attempt of an unsuccessfully uploaded file or a batch of files.\n * @param uid - The `uid` of the file or a batch of files to be retried.\n */\n retryUploadByUid(uid) {\n this.uploadService.retryFiles(uid);\n }\n /**\n * Cancels the upload of a file or a batch of files.\n * @param uid - The `uid` of the file or a batch of files that will be canceled.\n */\n cancelUploadByUid(uid) {\n this.uploadService.cancelFiles(uid);\n }\n /**\n * Uploads the currently selected files which pass the set restrictions.\n */\n uploadFiles() {\n if (this.fileList.filesToUpload.length) {\n this.uploadService.uploadFiles();\n }\n }\n /**\n * Visually clears all files from the UI without issuing requests to the remove handler.\n */\n clearFiles() {\n this.uploadService.clearFiles();\n }\n /**\n * @hidden\n * Used by the external dropzone to add files to the Upload\n */\n addFiles(files) {\n this.uploadService.addFiles(files);\n }\n /**\n * @hidden\n * Used to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n verifySettings() {\n if (isDevMode()) {\n if (this.batch && this.chunkable !== false) {\n throw new Error('The file chunking functionality requires the batch setting to be disabled.');\n }\n }\n }\n subscribeBlur() {\n if (!isDocumentAvailable()) {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n this.documentClick = fromEvent(document, 'click').pipe(filter((event) => {\n return !(this.wrapper !== event.target && this.wrapper.contains(event.target));\n }));\n this.blurSubscription = merge(this.documentClick, this.navigation.onTab).subscribe(() => {\n if (this.navigation.focused) {\n this._ngZone.run(() => {\n this.navigation.focused = false;\n this.onTouchedCallback();\n this.onBlur.emit();\n });\n }\n });\n });\n }\n subscribeFocus() {\n this.wrapperFocusSubscription = this.navigation.onWrapperFocus.subscribe(() => {\n this.onFocus.emit();\n });\n this.selectButtonFocusSubscription = this.navigation.onSelectButtonFocus.subscribe(() => {\n this.fileSelectButton.nativeElement.focus();\n });\n }\n attachEventHandlers() {\n this.subs = this.uploadService.cancelEvent.subscribe((args) => {\n this.cancel.emit(args);\n });\n this.subs.add(this.uploadService.changeEvent.subscribe((files) => {\n this.onChangeCallback(files);\n this.valueChange.emit(files);\n }));\n this.subs.add(this.uploadService.clearEvent.subscribe((args) => {\n this.clear.emit(args);\n }));\n this.subs.add(this.uploadService.completeEvent.subscribe(() => {\n this.complete.emit();\n }));\n this.subs.add(this.uploadService.errorEvent.subscribe((args) => {\n this.error.emit(args);\n }));\n this.subs.add(this.uploadService.pauseEvent.subscribe((args) => {\n this.pause.emit(args);\n }));\n this.subs.add(this.uploadService.removeEvent.subscribe((args) => {\n this.remove.emit(args);\n }));\n this.subs.add(this.uploadService.resumeEvent.subscribe((args) => {\n this.resume.emit(args);\n }));\n this.subs.add(this.uploadService.selectEvent.subscribe((args) => {\n this.select.emit(args);\n }));\n this.subs.add(this.uploadService.successEvent.subscribe((args) => {\n this.success.emit(args);\n }));\n this.subs.add(this.uploadService.uploadEvent.subscribe((args) => {\n this.upload.emit(args);\n }));\n this.subs.add(this.uploadService.uploadProgressEvent.subscribe((args) => {\n this.uploadProgress.emit(args);\n }));\n }\n}\nUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadComponent, deps: [{ token: UploadService }, { token: i1$1.LocalizationService }, { token: NavigationService }, { token: DropZoneService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: UploadComponent, selector: \"kendo-upload\", inputs: { autoUpload: \"autoUpload\", batch: \"batch\", withCredentials: \"withCredentials\", saveField: \"saveField\", saveHeaders: \"saveHeaders\", saveMethod: \"saveMethod\", saveUrl: \"saveUrl\", responseType: \"responseType\", removeField: \"removeField\", removeHeaders: \"removeHeaders\", removeMethod: \"removeMethod\", removeUrl: \"removeUrl\", chunkable: \"chunkable\", concurrent: \"concurrent\", multiple: \"multiple\", disabled: \"disabled\", showFileList: \"showFileList\", tabindex: \"tabindex\", zoneId: \"zoneId\", tabIndex: \"tabIndex\", accept: \"accept\", restrictions: \"restrictions\", focusableId: \"focusableId\", actionsLayout: \"actionsLayout\" }, outputs: { onBlur: \"blur\", cancel: \"cancel\", clear: \"clear\", complete: \"complete\", error: \"error\", onFocus: \"focus\", pause: \"pause\", remove: \"remove\", resume: \"resume\", select: \"select\", success: \"success\", upload: \"upload\", uploadProgress: \"uploadProgress\", valueChange: \"valueChange\" }, host: { listeners: { \"keydown\": \"handleKeydown($event)\" }, properties: { \"class.k-widget\": \"this.hostDefaultClasses\", \"class.k-upload\": \"this.hostDefaultClasses\", \"class.k-disabled\": \"this.hostDisabledClass\", \"attr.dir\": \"this.dir\" } }, providers: [\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n UPLOAD_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.upload'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => UploadComponent)\n }\n ], queries: [{ propertyName: \"fileTemplate\", first: true, predicate: FileTemplateDirective, descendants: true }, { propertyName: \"fileInfoTemplate\", first: true, predicate: FileInfoTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"fileSelect\", first: true, predicate: [\"fileSelect\"], descendants: true, static: true }, { propertyName: \"fileSelectButton\", first: true, predicate: [\"fileSelectButton\"], descendants: true, static: true }], exportAs: [\"kendoUpload\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
    \n
    \n \n {{textFor('select')}}\n
    \n \n \n
    {{textFor('dropFilesHere')}}
    \n
    \n
      0\"\n class=\"k-upload-files k-reset\"\n [disabled]=\"disabled\"\n [fileList]=\"fileList.files\"\n [fileTemplate]=\"fileTemplate\"\n [fileInfoTemplate]=\"fileInfoTemplate\">\n
    \n \n \n `, isInline: true, components: [{ type: UploadStatusTotalComponent, selector: \"kendo-upload-status-total\", inputs: [\"fileList\"] }, { type: FileListComponent, selector: \"[kendo-upload-file-list]\", inputs: [\"disabled\", \"fileList\", \"fileTemplate\", \"fileInfoTemplate\"] }, { type: UploadActionButtonsComponent, selector: \"kendo-upload-action-buttons\", inputs: [\"disabled\", \"actionsLayout\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoUploadLocalizedMessages],\\n [kendoFileSelectLocalizedMessages],\\n [kendoUploadDropZoneLocalizedMessages]\\n \" }, { type: DropZoneInternalDirective, selector: \"\\n [kendoUploadInternalDropZone],\\n [kendoFileSelectInternalDropZone]\\n \", inputs: [\"disabled\", \"multiple\", \"restrictions\"] }, { type: FileSelectDirective, selector: \"[kendoFileSelect]\", inputs: [\"dir\", \"disabled\", \"multiple\", \"restrictions\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoUpload',\n providers: [\n LocalizationService,\n NavigationService,\n UploadService,\n DropZoneService,\n UPLOAD_VALUE_ACCESSOR,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.upload'\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => UploadComponent)\n }\n ],\n selector: 'kendo-upload',\n template: `\n \n \n
    \n
    \n \n {{textFor('select')}}\n
    \n \n \n
    {{textFor('dropFilesHere')}}
    \n
    \n
      0\"\n class=\"k-upload-files k-reset\"\n [disabled]=\"disabled\"\n [fileList]=\"fileList.files\"\n [fileTemplate]=\"fileTemplate\"\n [fileInfoTemplate]=\"fileInfoTemplate\">\n
    \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: UploadService }, { type: i1$1.LocalizationService }, { type: NavigationService }, { type: DropZoneService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { autoUpload: [{\n type: Input\n }], batch: [{\n type: Input\n }], withCredentials: [{\n type: Input\n }], saveField: [{\n type: Input\n }], saveHeaders: [{\n type: Input\n }], saveMethod: [{\n type: Input\n }], saveUrl: [{\n type: Input\n }], responseType: [{\n type: Input\n }], removeField: [{\n type: Input\n }], removeHeaders: [{\n type: Input\n }], removeMethod: [{\n type: Input\n }], removeUrl: [{\n type: Input\n }], chunkable: [{\n type: Input\n }], concurrent: [{\n type: Input\n }], multiple: [{\n type: Input\n }], disabled: [{\n type: Input\n }], showFileList: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], zoneId: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: ['tabIndex']\n }], accept: [{\n type: Input\n }], restrictions: [{\n type: Input\n }], focusableId: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], fileTemplate: [{\n type: ContentChild,\n args: [FileTemplateDirective, { static: false }]\n }], fileInfoTemplate: [{\n type: ContentChild,\n args: [FileInfoTemplateDirective, { static: false }]\n }], fileSelect: [{\n type: ViewChild,\n args: ['fileSelect', { static: true }]\n }], fileSelectButton: [{\n type: ViewChild,\n args: ['fileSelectButton', { static: true }]\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], cancel: [{\n type: Output\n }], clear: [{\n type: Output\n }], complete: [{\n type: Output\n }], error: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], pause: [{\n type: Output\n }], remove: [{\n type: Output\n }], resume: [{\n type: Output\n }], select: [{\n type: Output\n }], success: [{\n type: Output\n }], upload: [{\n type: Output\n }], uploadProgress: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], hostDefaultClasses: [{\n type: HostBinding,\n args: ['class.k-widget']\n }, {\n type: HostBinding,\n args: ['class.k-upload']\n }], hostDisabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], handleKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n\nclass UploadDropZoneDirective {\n constructor(dropZoneService) {\n this.dropZoneService = dropZoneService;\n }\n /**\n * @hidden\n */\n onElementDragEnter() {\n return false;\n }\n /**\n * @hidden\n */\n onElementDragOver() {\n return false;\n }\n /**\n * @hidden\n */\n onDropListener(event) {\n const components = this.componentInstance;\n if (!isPresent(components)) {\n return;\n }\n components.forEach((component) => {\n let droppedFiles = event.dataTransfer.files;\n if (droppedFiles.length > 0 && !component.disabled) {\n let files = getAllFileInfo(droppedFiles);\n if (component instanceof UploadComponent) {\n files = assignGuidToFiles(files, !component.batch);\n }\n else {\n files = assignGuidToFiles(files, true);\n }\n if (!component.multiple) {\n files.splice(1, files.length - 1);\n component.clearFiles();\n }\n validateFiles(files, component.restrictions);\n component.addFiles(files);\n }\n });\n return false;\n }\n /**\n * @hidden\n */\n get componentInstance() {\n return this.dropZoneService.getComponents(this.zoneId);\n }\n}\nUploadDropZoneDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadDropZoneDirective, deps: [{ token: DropZoneService }], target: i0.ɵɵFactoryTarget.Directive });\nUploadDropZoneDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"12.2.16\", type: UploadDropZoneDirective, selector: \"[kendoUploadDropZone], [kendoFileSelectDropZone]\", inputs: { zoneId: [\"kendoUploadDropZone\", \"zoneId\"] }, host: { listeners: { \"dragenter\": \"onElementDragEnter()\", \"dragover\": \"onElementDragOver()\", \"drop\": \"onDropListener($event)\" } }, providers: [\n DropZoneService\n ], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadDropZoneDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n DropZoneService\n ],\n selector: '[kendoUploadDropZone], [kendoFileSelectDropZone]'\n }]\n }], ctorParameters: function () { return [{ type: DropZoneService }]; }, propDecorators: { zoneId: [{\n type: Input,\n args: ['kendoUploadDropZone']\n }], onElementDragEnter: [{\n type: HostListener,\n args: ['dragenter']\n }], onElementDragOver: [{\n type: HostListener,\n args: ['dragover']\n }], onDropListener: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }] } });\n\n/**\n * Represents the [Kendo UI UploadDropZone component for Angular]({% slug overview_upload %}).\n */\nclass UploadDropZoneComponent extends DropZoneBase {\n constructor(element, renderer, localization) {\n super(element, renderer, 'k-external-dropzone-hover');\n this.localization = localization;\n this.hostClass = true;\n this.localizationChangeSubscription = this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get dirAttribute() {\n return this.direction;\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n get iconClasses() {\n if (this.icon) {\n return `k-icon k-i-${this.icon}`;\n }\n if (this.iconClass) {\n return `${this.iconClass}`;\n }\n return 'k-icon k-i-upload';\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n}\nUploadDropZoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadDropZoneComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nUploadDropZoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: UploadDropZoneComponent, selector: \"kendo-uploaddropzone\", inputs: { zoneId: \"zoneId\", icon: \"icon\", iconClass: \"iconClass\" }, host: { properties: { \"class.k-external-dropzone\": \"this.hostClass\", \"attr.dir\": \"this.dirAttribute\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.uploaddropzone'\n }\n ], exportAs: [\"kendoUploadDropZone\"], usesInheritance: true, ngImport: i0, template: `\n \n \n
    \n \n {{ textFor('externalDropFilesHere') }}\n \n \n \n
    \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoUploadLocalizedMessages],\\n [kendoFileSelectLocalizedMessages],\\n [kendoUploadDropZoneLocalizedMessages]\\n \" }, { type: UploadDropZoneDirective, selector: \"[kendoUploadDropZone], [kendoFileSelectDropZone]\", inputs: [\"kendoUploadDropZone\"] }, { type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadDropZoneComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoUploadDropZone',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.uploaddropzone'\n }\n ],\n selector: 'kendo-uploaddropzone',\n template: `\n \n \n
    \n \n {{ textFor('externalDropFilesHere') }}\n \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-external-dropzone']\n }], dirAttribute: [{\n type: HostBinding,\n args: ['attr.dir']\n }], zoneId: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst SHARED_DECLARATIONS = [\n DropZoneInternalDirective,\n FileListComponent,\n FileListItemDirective,\n FileListItemActionButtonComponent,\n FileListMultipleItemsComponent,\n FileListSingleItemComponent,\n FileSelectDirective,\n LocalizedMessagesDirective,\n TemplateContextDirective\n];\n/**\n * @hidden\n */\nconst PUBLIC_DIRECTIVES = [\n FileTemplateDirective,\n FileInfoTemplateDirective,\n CustomMessagesComponent,\n UploadDropZoneDirective,\n UploadDropZoneComponent\n];\n/**\n * @hidden\n */\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, declarations: [FileTemplateDirective,\n FileInfoTemplateDirective,\n CustomMessagesComponent,\n UploadDropZoneDirective,\n UploadDropZoneComponent, DropZoneInternalDirective,\n FileListComponent,\n FileListItemDirective,\n FileListItemActionButtonComponent,\n FileListMultipleItemsComponent,\n FileListSingleItemComponent,\n FileSelectDirective,\n LocalizedMessagesDirective,\n TemplateContextDirective], imports: [CommonModule], exports: [FileTemplateDirective,\n FileInfoTemplateDirective,\n CustomMessagesComponent,\n UploadDropZoneDirective,\n UploadDropZoneComponent, DropZoneInternalDirective,\n FileListComponent,\n FileListItemDirective,\n FileListItemActionButtonComponent,\n FileListMultipleItemsComponent,\n FileListSingleItemComponent,\n FileSelectDirective,\n LocalizedMessagesDirective,\n TemplateContextDirective, CommonModule] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, imports: [[CommonModule], CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n PUBLIC_DIRECTIVES,\n SHARED_DECLARATIONS\n ],\n exports: [\n PUBLIC_DIRECTIVES,\n SHARED_DECLARATIONS,\n CommonModule\n ],\n imports: [CommonModule]\n }]\n }] });\n\nconst FILESELECT_DECLARATIONS = [\n FileSelectComponent\n];\n/**\n * Represents the [NgModule](https://angular.io/api/core/NgModule) definition for the FileSelect component.\n */\nclass FileSelectModule {\n}\nFileSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFileSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectModule, declarations: [FileSelectComponent], imports: [SharedModule], exports: [FileTemplateDirective, FileInfoTemplateDirective, CustomMessagesComponent, UploadDropZoneDirective, UploadDropZoneComponent, FileSelectComponent] });\nFileSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectModule, imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: FileSelectModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [FILESELECT_DECLARATIONS],\n exports: [\n PUBLIC_DIRECTIVES,\n FILESELECT_DECLARATIONS\n ],\n imports: [SharedModule]\n }]\n }] });\n\nconst UPLOAD_DECLARATIONS = [\n UploadComponent,\n UploadActionButtonsComponent,\n UploadStatusTotalComponent\n];\n/**\n * Represents the [NgModule](https://angular.io/api/core/NgModule) definition for the Upload component.\n */\nclass UploadModule {\n}\nUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadModule, declarations: [UploadComponent,\n UploadActionButtonsComponent,\n UploadStatusTotalComponent], imports: [SharedModule], exports: [FileTemplateDirective, FileInfoTemplateDirective, CustomMessagesComponent, UploadDropZoneDirective, UploadDropZoneComponent, UploadComponent,\n UploadActionButtonsComponent,\n UploadStatusTotalComponent] });\nUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadModule, imports: [[SharedModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [UPLOAD_DECLARATIONS],\n exports: [\n PUBLIC_DIRECTIVES,\n UPLOAD_DECLARATIONS\n ],\n imports: [SharedModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})\n * definition for the Uploads components.\n *\n * @example\n *\n * ```ts-no-run\n * import { UploadsModule } from '@progress/kendo-angular-upload';\n *\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { NgModule } from '@angular/core';\n *\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * declarations: [AppComponent],\n * imports: [BrowserModule, UploadsModule],\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass UploadsModule {\n}\nUploadsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nUploadsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadsModule, exports: [FileSelectModule,\n UploadModule] });\nUploadsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadsModule, imports: [FileSelectModule,\n UploadModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: UploadsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n FileSelectModule,\n UploadModule\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CancelEvent, ClearEvent, CustomMessagesComponent, ErrorEvent, FileInfoTemplateDirective, FileListComponent, FileListItemActionButtonComponent, FileListItemBase, FileListMultipleItemsComponent, FileListSingleItemComponent, FileMap, FileSelectComponent, FileSelectDirective, FileSelectModule, FileState, FileTemplateDirective, NavigationService, PauseEvent, RemoveEvent, ResumeEvent, SelectEvent, SuccessEvent, TemplateContextDirective, UploadActionButtonsComponent, UploadComponent, UploadDropZoneComponent, UploadDropZoneDirective, UploadEvent, UploadModule, UploadProgressEvent, UploadService, UploadStatusTotalComponent, UploadsModule };\n\n","/**\n * @hidden\n */\nexport const isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n","/* tslint:disable:object-literal-sort-keys max-line-length */\nimport { isWindowAvailable } from './util';\nconst agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)(\\.(\\d+(\\.\\d+)?))?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n};\nconst osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n};\nconst desktopBrowserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\nconst mobileBrowserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n};\nconst testRx = (agent, rxs, dflt) => {\n for (let rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined ? dflt : agent;\n};\n/**\n * A function that detects the mobile browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Linux; Android 8.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.3 Chrome/61.0.3163.81 Mobile Safari/537.36';\n * detectMobileOS(userAgent); // { android: true };\n * ```\n */\nexport const detectMobileOS = (ua) => {\n let minorVersion;\n let match = [];\n for (let agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (!match) {\n continue;\n }\n if (agent === 'windows' && 'plugins' in window.navigator) {\n return null;\n } // Break if not Metro/Mobile Windows\n const os = {};\n os.device = agent;\n os.browser = testRx(ua, mobileBrowserRxs, 'default');\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = match[3] ? match[3].replace('_', '.') : '.0';\n minorVersion = os.minorVersion.replace('.', '').substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion +\n (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0'));\n os.cordova = typeof window.PhoneGap !== undefined\n || typeof window.cordova !== undefined; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone\n || (/file|local|wmapp/).test(window.location.protocol)\n || os.cordova; // Use file protocol to detect appModes.\n return os;\n }\n }\n return null;\n};\n/**\n * A function that detects the desktop browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19';\n * detectDesktopBrowser(userAgent); // { chrome: true, webkit: true };\n * ```\n */\nexport const detectDesktopBrowser = (ua) => {\n let browserInfo = null;\n let match = [];\n for (let agent in desktopBrowserRxs) {\n if (desktopBrowserRxs.hasOwnProperty(agent)) {\n match = ua.match(desktopBrowserRxs[agent]);\n if (match) {\n browserInfo = {};\n browserInfo[agent] = true;\n browserInfo[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true;\n browserInfo.version = parseInt(document.documentMode || match[2], 10);\n break;\n }\n }\n }\n return browserInfo;\n};\nconst userAgent = isWindowAvailable() && window.navigator ? window.navigator.userAgent : null;\n/**\n * A constant holding the desktop browser info. The variable persists the result of the detectDesktopBrowser(window.navigator.userAgent) call.\n * If no desktop browser is detected, the constant will be `null`.\n */\nexport const browser = userAgent ? detectDesktopBrowser(userAgent) : null;\n/**\n * A constant holding the mobile OS info. The variable persists the result of the detectMobileOS(window.navigator.userAgent) call.\n * If no mobile OS is detected, the constant will be `null`.\n */\nexport const mobileOS = userAgent ? detectMobileOS(userAgent) : null;\n/**\n * A constant reporting the browser `touch` events support.\n */\nexport const touch = isWindowAvailable() && 'ontouchstart' in window;\n/**\n * @hidden\n * A constant reporting the browser `msPointers` events support.\n */\nexport const msPointers = browser && !browser.chrome && window.MSPointerEvent;\n/**\n * A constant reporting the browser `pointers` events support.\n */\nexport const pointers = browser && !browser.chrome && window.PointerEvent;\n/**\n * A constant reporting whether the browser is touch enabled.\n */\nexport const touchEnabled = mobileOS && (touch || msPointers || pointers);\n","const FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n/**\n * @hidden\n */\nexport function fieldList(field) {\n const fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : (indexAccessor || fieldName));\n });\n return fields;\n}\n","import { fieldList } from './field-list';\nconst getterCache = {};\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = obj => obj;\n/**\n * @hidden\n */\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n const fields = fieldList(field);\n getterCache[field] = function (obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}\n","import { fieldList } from './field-list';\nconst setterCache = {};\n// tslint:disable-next-line:no-string-literal\nsetterCache['undefined'] = obj => obj;\nconst defaultValue = (nextField, options) => options && options.arrays && !isNaN(Number(nextField)) ? [] : {};\n/**\n * @hidden\n */\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n const fields = fieldList(field);\n setterCache[field] = (obj, value, options) => {\n let root = obj;\n const depth = fields.length - 1;\n for (let idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || defaultValue(fields[idx + 1], options);\n }\n root[fields[depth]] = value;\n };\n return setterCache[field];\n}\n","/**\n * @hidden\n */\nexport const isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nexport const isBlank = (value) => value === null || value === undefined;\n/**\n * @hidden\n */\nexport const isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nexport const isFunction = (value) => typeof value === 'function';\n/**\n * @hidden\n */\nexport const isString = (value) => typeof value === 'string';\n/**\n * @hidden\n */\nexport const isTruthy = (value) => !!value;\n/**\n * @hidden\n */\nexport const isNullOrEmptyString = (value) => isBlank(value) || value.trim().length === 0;\n/**\n * @hidden\n */\nexport const isNotNullOrEmptyString = (value) => !isNullOrEmptyString(value);\n/**\n * @hidden\n */\nexport const isNumeric = (value) => !isNaN(value - parseFloat(value));\n/**\n * @hidden\n */\nexport const isDate = (value) => value && value.getTime;\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport const isCompositeFilterDescriptor = (source) => {\n return isPresent(source.filters);\n};\n","/**\n * @hidden\n */\nexport const ifElse = (predicate, right, left) => value => predicate(value) ? right(value) : left(value);\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport const compose = (...args) => (data) => args.reduceRight((acc, curr) => curr(acc), data);\n/**\n * @hidden\n */\nexport const constant = x => () => x;\n/**\n * @hidden\n */\nexport const identity = x => x;\n","import { isPresent } from './utils';\nconst getterCache = {};\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = obj => obj;\n/**\n * @hidden\n */\nexport const getter = (field, safe) => {\n const key = field + safe;\n if (getterCache[key]) {\n return getterCache[key];\n }\n const fields = [];\n field.replace(FIELD_REGEX, (_, index, indexAccessor, field) => {\n fields.push(isPresent(index) ? index : (indexAccessor || field));\n return undefined;\n });\n getterCache[key] = obj => {\n let result = obj;\n for (let idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n return result;\n };\n return getterCache[key];\n};\n","import { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nconst serializeSort = (orderby) => {\n const str = orderby\n .filter(sort => isPresent(sort.dir))\n .map(sort => {\n const order = sort.field.replace(/\\./g, \"/\");\n return sort.dir === \"desc\" ? order + \" desc\" : order;\n }).join(\",\");\n return str ? `$orderby=${str}` : str;\n};\nconst emptyString = constant('');\nconst concat = a => b => a + b;\nconst serializeKey = (strings, val) => ifElse(isPresent, concat(strings[0]), emptyString)(val);\nconst rules = (settings, state) => (key) => ({\n \"filter\": serializeFilter(state.filter || {}, settings),\n \"skip\": serializeKey `$skip=${state.skip}`,\n \"sort\": serializeSort(state.sort || []),\n \"take\": serializeKey `$top=${state.take}`\n}[key]);\n// tslint:enable:max-line-length\n/**\n * Converts a [State]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport const toODataString = (state, settings = {}) => (Object.keys(state)\n .map(rules(settings, state))\n .filter(isNotNullOrEmptyString)\n .join('&'));\n","import { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nconst toQueryString = values => values.reduce((acc, [key, value]) => [...acc, `${key}=${value}`], []);\nconst toObject = values => values.reduce((acc, [key, value]) => (Object.assign({}, acc, { [key]: value })), {});\nconst pairwise = key => value => [key, value];\nconst empty = () => null;\nconst isNotEmptyArray = value => isPresent(value) && isArray(value) && value.length > 0;\nconst has = accessor => value => isPresent(accessor(value));\nconst isNotEmpty = accessor => value => isNotEmptyArray(accessor(value));\nconst runOrEmpty = (predicate, fn) => ifElse(predicate, fn, empty);\nconst calcPage = ({ skip, take }) => Math.floor((skip || 0) / take) + 1;\nconst formatDescriptors = (accessor, formatter) => state => (accessor(state).map(formatter).join(\"~\"));\nconst removeAfter = (what) => (str) => str.slice(0, str.indexOf(what));\nconst replace = (patterns) => compose(...patterns.map(([left, right]) => (s) => s.replace(new RegExp(left, \"g\"), right)));\nconst sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nconst removeAfterDot = removeAfter(\".\");\nconst directionFormatter = ({ field, dir = \"asc\" }) => `${field}-${dir}`;\nconst aggregateFormatter = ({ field, aggregate }) => `${field}-${aggregate}`;\nconst take = getter(\"take\");\nconst aggregates = getter(\"aggregates\");\nconst skip = getter(\"skip\");\nconst group = getter(\"group\");\nconst sort = getter(\"sort\", true);\nconst formatSort = formatDescriptors(sort, directionFormatter);\nconst formatGroup = formatDescriptors(group, directionFormatter);\nconst formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nconst prefixDateValue = value => `datetime'${value}'`;\nconst formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nconst formatDate = ({ field, value, ignoreCase, operator }) => ({\n value: formatDateValue(value),\n field,\n ignoreCase,\n operator\n});\nconst normalizeSort = (state) => Object.assign({}, state, {\n sort: (sort(state) || []).filter(({ dir }) => isNotNullOrEmptyString(dir))\n});\nconst transformSkip = compose(pairwise('page'), calcPage);\nconst transformTake = compose(pairwise('pageSize'), take);\nconst transformGroup = compose(pairwise('group'), formatGroup);\nconst transformSort = compose(pairwise('sort'), formatSort);\nconst transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nconst serializePage = runOrEmpty(has(skip), transformSkip);\nconst serializePageSize = runOrEmpty(has(take), transformTake);\nconst serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nconst serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nconst serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nconst hasField = ({ field }) => isNotNullOrEmptyString(field);\nconst filterFormatter = ({ field, operator, value }) => `${field}~${operator}~${value}`;\nconst dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nconst typedFormatter = encode => runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter));\nconst join = ({ logic }) => `~${logic}~`;\nconst serialize = encode => serializeFilters(filter => ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter), join);\nconst serializeFilter = ({ filter }, encode) => {\n if (filter && filter.filters) {\n const filters = serialize(encode)(filter);\n if (filters.length) {\n return ['filter', filters];\n }\n }\n return null;\n};\nconst rules = (state, encode = true) => key => ({\n \"aggregates\": serializeAggregates(state),\n \"filter\": serializeFilter(state, encode),\n \"group\": serializeGroup(state),\n \"skip\": serializePage(state),\n \"sort\": serializeSort(state),\n \"take\": serializePageSize(state)\n}[key]);\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts\n * import {\n * toDataSourceRequestString,\n * translateDataSourceResultGroups,\n * translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n * private BASE_URL: string = '...';\n *\n * constructor(private http: Http) { }\n *\n * // Omitted for brevity...\n *\n * private fetch(state: DataSourceRequestState): Observable {\n * const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n * const hasGroups = state.group && state.group.length;\n *\n * return this.http\n * .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n * .map(response => response.json())\n * .map(({Data, Total, AggregateResults}) => // process the response\n * ({\n * //if there are groups convert them to compatible format\n * data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n * total: Total,\n * // convert the aggregates if such exists\n * aggregateResult: translateAggregateResults(AggregateResults)\n * })\n * );\n * }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n * return class StatefullGrid extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = { dataState: { skip: 0, take: 20 } };\n * }\n *\n * render() {\n * return (\n * \n * );\n * }\n *\n * componentDidMount() {\n * this.fetchData(this.state.dataState);\n * }\n *\n * dataStateChange = (changeEvent) => {\n * this.setState({ dataState: changeEvent.data });\n * this.fetchData(changeEvent.data);\n * }\n *\n * fetchData(dataState) {\n * const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n * const hasGroups = dataState.group && dataState.group.length;\n *\n * const base_url = 'api/Products';\n * const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n * fetch(`${base_url}?${queryStr}`, init)\n * .then(response => response.json())\n * .then(({ data, total }) => {\n * this.setState({\n * data: hasGroups ? translateDataSourceResultGroups(data) : data,\n * total,\n * dataState\n * });\n * });\n * }\n * }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport const toDataSourceRequestString = (state) => (toQueryString(Object.keys(state)\n .map(rules(state))\n .filter(isPresent)).join('&'));\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport const toDataSourceRequest = (state) => (toObject(Object.keys(state)\n .map(rules(state, false))\n .filter(isPresent)));\n","import { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport const wrapIf = predicate => (str, ...args) => predicate() ? `${str[0]}${args[0]}${str[1]}` : args[0];\n/**\n * @hidden\n */\nexport const toUTC = (date) => new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n/**\n * @hidden\n */\nexport const quote = ({ field, value, ignoreCase, operator }) => ({\n value: `'${value.replace(/'/g, \"''\")}'`,\n field,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const encodeValue = ({ field, value, ignoreCase, operator }) => ({\n value: `${encodeURIComponent(value)}`,\n field,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const toLower = ({ field, value, ignoreCase, operator }) => ({\n field: wrapIf(() => ignoreCase) `tolower(${field})`,\n value,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const normalizeField = ({ field, value, ignoreCase, operator }) => ({\n value,\n field: field.replace(/\\./g, \"/\"),\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const isStringValue = x => isString(x.value);\n/**\n * @hidden\n */\nexport const isDateValue = x => isDate(x.value);\n/**\n * @hidden\n */\nexport const serializeFilters = (map, join) => (filter) => {\n const brackets = wrapIf(() => filter.filters.length > 1);\n return brackets `(${filter.filters\n .map(map)\n .join(join(filter))})`;\n};\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nconst set = (field, target, value) => {\n target[field] = value;\n return target;\n};\nconst toCamelCase = str => str.replace(/(^[A-Z])/g, (_, g1) => g1.toLowerCase());\nconst prop = (fieldName) => (obj) => {\n const value = obj[fieldName];\n if (isPresent(value)) {\n return value;\n }\n return obj[toCamelCase(fieldName)];\n};\nconst member = prop(\"Member\");\nconst aggregateMethodName = prop(\"AggregateMethodName\");\nconst value = prop(\"Value\");\nconst convert = mapper => values => Object.keys(values).reduce(mapper.bind(null, values), {});\nconst translateAggregate = convert((source, acc, field) => set(field.toLowerCase(), acc, source[field]));\nconst translateAggregates = convert((source, acc, field) => set(field, acc, translateAggregate(source[field])));\nconst valueOrDefault = (value, defaultValue) => isPresent(value) ? value : defaultValue;\nconst normalizeGroup = group => ({\n aggregates: group.Aggregates || group.aggregates,\n field: group.Member || group.member || group.field,\n hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n items: group.Items || group.items,\n value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n});\nconst translateGroup = compose(({ field, hasSubgroups, value, aggregates, items }) => ({\n aggregates: translateAggregates(aggregates),\n field,\n items: hasSubgroups ? items.map(translateGroup) : items,\n value\n}), normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport const translateDataSourceResultGroups = (data) => data.map(translateGroup);\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport const translateAggregateResults = (data) => ((data || []).reduce((acc, x) => set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))), {}));\n","import { isPresent, isBlank } from '../utils';\nimport { getter } from '../accessor';\nconst compare = (a, b) => {\n if (isBlank(a)) {\n return a === b ? 0 : -1;\n }\n if (isBlank(b)) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : (a < b ? -1 : 0);\n};\nconst compareDesc = (a, b) => compare(b, a);\nconst descriptorAsFunc = (descriptor) => {\n const prop = getter(descriptor.field, true);\n return (a, b) => (descriptor.dir === 'asc' ? compare : compareDesc)(prop(a), prop(b));\n};\nconst initial = (_a, _b) => 0;\n// tslint:disable:max-line-length\n/**\n * Converts the `SortDescriptors` into a [Comparer]({% slug api_kendo-data-query_comparer %}) function that can be used through `Array.sort`. If multiple descriptors are provided, sorting is applied in a right-to-left order.\n * @param {SortDescriptor[]} descriptors - The descriptors which will be converted.\n * @returns {Comparer} - The produced function.\n *\n * @example\n * ```ts\n * import { composeSortDescriptors } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const comparer = composeSortDescriptors([{ field: \"name\", dir: \"asc\" }]);\n * const result = data.sort(comparer);\n * // output: [{ name: \"Beef\" }, { name: \"Pepper\" }, { name: \"Pork\" }];\n * ```\n */\n// tslint:enable:max-line-length\nexport const composeSortDescriptors = (descriptors) => (descriptors\n .filter(x => isPresent(x.dir))\n .map((descriptor) => descriptorAsFunc(descriptor))\n .reduce((acc, curr) => (a, b) => acc(a, b) || curr(a, b), initial));\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nconst valueToString = (value) => {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\nexport const groupCombinator = (field) => {\n const prop = getter(field, true);\n let position = 0;\n return (agg, value) => {\n agg[field] = agg[field] || {};\n const groupValue = prop(value);\n const key = valueToString(groupValue);\n const values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\nexport const expandAggregates = (result = {}) => {\n Object.keys(result).forEach(field => {\n const aggregates = result[field];\n Object.keys(aggregates).forEach(aggregate => {\n aggregates[aggregate] = aggregates[aggregate].result();\n });\n });\n return result;\n};\nconst aggregatesFuncs = (name) => ({\n average: () => {\n let value = 0;\n let count = 0;\n return {\n calc: (curr) => {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n }\n else {\n value = curr;\n }\n },\n result: () => isNumeric(value) ? value / count : value\n };\n },\n count: () => {\n let state = 0;\n return {\n calc: () => state++,\n result: () => state\n };\n },\n max: () => {\n let state = Number.NEGATIVE_INFINITY;\n return {\n calc: (value) => {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: () => state\n };\n },\n min: () => {\n let state = Number.POSITIVE_INFINITY;\n return {\n calc: (value) => {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: () => state\n };\n },\n sum: () => {\n let state = 0;\n return {\n calc: (value) => {\n value = isPresent(value) ? value : 0;\n state += value;\n },\n result: () => state\n };\n }\n}[name]());\n/**\n * @hidden\n */\nexport const aggregatesCombinator = (descriptors) => {\n const functions = descriptors.map(descriptor => {\n const fieldAccessor = getter(descriptor.field, true);\n const aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n const aggregateAccessor = getter(aggregateName, true);\n return (state, value) => {\n const fieldAggregates = state[descriptor.field] || {};\n const aggregateFunction = aggregateAccessor(fieldAggregates)\n || aggregatesFuncs(aggregateName);\n aggregateFunction.calc(fieldAccessor(value));\n fieldAggregates[descriptor.aggregate] = aggregateFunction;\n state[descriptor.field] = fieldAggregates;\n return state;\n };\n });\n return (state, value) => functions.reduce((agg, calc) => calc(agg, value), state);\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport const concat = (arr, value) => {\n arr.push(value);\n return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport const map = (transform) => ((reduce) => ((acc, curr, index) => reduce(acc, transform(curr, index))));\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport const filter = (predicate) => ((reduce) => ((acc, curr) => predicate(curr) ? reduce(acc, curr) : acc));\n/**\n * @hidden\n */\nexport const isTransformerResult = (source) => {\n return isPresent(source.__value);\n};\nconst reduced = (x) => {\n if (isTransformerResult(x)) {\n return x;\n }\n return {\n __value: x,\n reduced: true\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport const take = (count) => ((reduce) => ((acc, curr) => count-- > 0 ? reduce(acc, curr) : reduced(acc)));\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport const takeWhile = (predicate) => ((reduce) => ((acc, curr) => predicate(curr) ? reduce(acc, curr) : reduced(acc)));\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport const skip = (count) => ((reduce) => ((acc, curr) => count-- <= 0 ? reduce(acc, curr) : acc));\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport const exec = (transform, initialValue, data) => {\n let result = initialValue;\n for (let idx = 0, length = data.length; idx < length; idx++) {\n result = transform(result, data[idx], idx);\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n return result;\n};\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nconst identity = map(x => x);\n// tslint:disable:max-line-length\n/**\n * Applies the specified [AggregateDescriptors]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [AggregateResult]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts\n * const data = [\n * { unitPrice: 23, unitsInStock: 21 },\n * { unitPrice: 10, unitsInStock: 12 },\n * { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * // \"unitPrice\": { \"sum\": 53 },\n * // \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [aggregateresult]({% slug api_kendo-data-query_aggregateresult %}) configuration.\n */\n// tslint:enable:max-line-length\nexport const aggregateBy = (data, descriptors = [], transformers = identity) => {\n const initialValue = {};\n if (!descriptors.length) {\n return initialValue;\n }\n const result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};\n","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nconst operatorMap = (key) => ({\n \"!=\": \"neq\",\n \"<\": \"lt\",\n \"<=\": \"lte\",\n \"==\": \"eq\",\n \">\": \"gt\",\n \">=\": \"gte\",\n equal: \"eq\",\n equals: \"eq\",\n equalto: \"eq\",\n ge: \"gte\",\n greater: \"gt\",\n greaterthan: \"gt\",\n greaterthanequal: \"gte\",\n isempty: \"isempty\",\n isequalto: \"eq\",\n isgreaterthan: \"gt\",\n isgreaterthanorequalto: \"gte\",\n islessthan: \"lt\",\n islessthanorequalto: \"lte\",\n isnotempty: \"isnotempty\",\n isnotequalto: \"neq\",\n isnull: \"isnull\",\n le: \"lte\",\n less: \"lt\",\n lessthan: \"lt\",\n lessthanequal: \"lte\",\n ne: \"neq\",\n notequal: \"neq\",\n notequals: \"neq\",\n notequalto: \"neq\",\n notsubstringof: \"doesnotcontain\"\n}[key.toLowerCase()] || key);\nconst normalizeOperator = (descriptor) => {\n if (descriptor.filters) {\n descriptor.filters = descriptor.filters.map(filter => {\n const result = Object.assign({}, filter);\n if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n result.operator = operatorMap(filter.operator);\n }\n if (isCompositeFilterDescriptor(filter)) {\n normalizeOperator(result);\n }\n return result;\n });\n }\n};\nconst normalizeDescriptor = (descriptor) => {\n if (!isCompositeFilterDescriptor(descriptor)) {\n return {\n filters: isArray(descriptor) ? descriptor : [descriptor],\n logic: \"and\"\n };\n }\n return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [FilterDescriptor]({% slug api_kendo-data-query_filterdescriptor %}) into a [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport const normalizeFilters = (descriptor) => {\n if (isPresent(descriptor)) {\n descriptor = normalizeDescriptor(descriptor);\n normalizeOperator(descriptor);\n }\n return descriptor;\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nconst logic = {\n \"or\": {\n concat: (acc, fn) => a => acc(a) || fn(a),\n identity: () => false\n },\n \"and\": {\n concat: (acc, fn) => a => acc(a) && fn(a),\n identity: () => true\n }\n};\nconst operatorsMap = {\n contains: (a, b) => (a || \"\").indexOf(b) >= 0,\n doesnotcontain: (a, b) => (a || \"\").indexOf(b) === -1,\n doesnotendwith: (a, b) => (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0,\n doesnotstartwith: (a, b) => (a || \"\").lastIndexOf(b, 0) === -1,\n endswith: (a, b) => (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0,\n eq: (a, b) => a === b,\n gt: (a, b) => a > b,\n gte: (a, b) => a >= b,\n isempty: (a) => a === '',\n isnotempty: (a) => a !== '',\n isnotnull: (a) => isPresent(a),\n isnull: (a) => isBlank(a),\n lt: (a, b) => a < b,\n lte: (a, b) => a <= b,\n neq: (a, b) => a != b,\n startswith: (a, b) => (a || \"\").lastIndexOf(b, 0) === 0\n};\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nconst convertValue = (value, ignoreCase) => {\n if (value != null && isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n }\n else if (ignoreCase) {\n return value.toLowerCase();\n }\n }\n else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\nconst typedGetter = (prop, value, ignoreCase) => {\n if (!isPresent(value)) {\n return prop;\n }\n let acc = prop;\n if (isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n }\n else {\n acc = a => {\n const x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return x.toLowerCase();\n }\n else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n if (isDate(value)) {\n return a => {\n const x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\nconst transformFilter = ({ field, ignoreCase, value, operator }) => {\n field = !isPresent(field) ? a => a : field;\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n const itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n value = convertValue(value, ignoreCase);\n const op = isFunction(operator) ? operator : operatorsMap[operator];\n return a => op(itemProp(a), value, ignoreCase);\n};\n/**\n * @hidden\n */\nexport const transformCompositeFilter = (filter) => {\n const combiner = logic[filter.logic];\n return filter.filters\n .filter(isPresent)\n .map(x => isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x))\n .reduce(combiner.concat, combiner.identity);\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [Predicate]({% slug api_kendo-data-query_predicate %}) function for the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport const compileFilter = (descriptor) => {\n if (!descriptor || descriptor.filters.length === 0) {\n return () => true;\n }\n return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n * logic: 'and',\n * filters: [\n * { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n * { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n * ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport const filterBy = (data, descriptor) => {\n if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n return data;\n }\n return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport const normalizeGroups = (descriptors) => {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(x => Object.assign({ dir: \"asc\" }, x));\n};\nconst identity = map(x => x);\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array> | T[])} - The grouped data.\n *\n * @example\n * ```ts\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport const groupBy = (data, descriptors = [], transformers = identity, originalData = data) => {\n descriptors = normalizeGroups(descriptors);\n if (!descriptors.length) {\n return data;\n }\n const descriptor = descriptors[0];\n const initialValue = {};\n const view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n const result = [];\n Object.keys(view).forEach(field => {\n Object.keys(view[field]).forEach(value => {\n const group = view[field][value];\n let aggregateResult = {};\n let filteredData = originalData;\n if (isPresent(descriptor.aggregates)) {\n filteredData = filterBy(originalData, {\n field: descriptor.field,\n ignoreCase: false,\n operator: 'eq',\n value: group.value\n });\n aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n }\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ?\n groupBy(group.items, descriptors.slice(1), identity, filteredData)\n : group.items,\n value: group.value\n };\n });\n });\n return result;\n};\n","const merge = (data, left, middle, right, compare) => {\n let leftLength = middle - left;\n let rightLength = right - middle;\n const temp = [];\n for (let idx = 0; idx < leftLength; idx++) {\n temp.push(data[left + idx]);\n }\n let cursor1 = 0;\n let cursor2 = middle;\n let dest = left;\n do {\n if (compare(data[cursor2], temp[cursor1]) < 0) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n else {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n } while (rightLength > 0 && leftLength > 0);\n while (leftLength) {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n while (rightLength) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n};\n/**\n * @hidden\n */\nexport const sort = (data, start, end, compare) => {\n if (end - start < 2) {\n return;\n }\n const mid = (start + end) >>> 1; // tslint:disable-line:no-bitwise\n sort(data, start, mid, compare);\n sort(data, mid, end, compare);\n merge(data, start, mid, end, compare);\n};\n","import { isPresent, isString } from './utils';\nimport { composeSortDescriptors } from './sorting/sort-array.operator';\nimport { groupBy, normalizeGroups } from './grouping/group.operators';\nimport { normalizeFilters } from './filtering/filter.operators';\nimport { compileFilter } from './filtering/filter-expression.factory';\nimport { exec, skip, take, filter, concat } from './transducers';\nimport { getter } from './accessor';\nimport { compose } from './funcs';\nimport { sort } from './sorting/sort';\n/**\n * Orders the specified array according to the provided sort descriptors.\n *\n * @param {T[]} data - The data to be sorted.\n * @param {SortDescriptor[]} descriptors - The descriptors by which the data will be sorted.\n * @returns {T[]} - The sorted data.\n *\n * @example\n * ```ts\n * import { orderBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = orderBy(data, [{ field: \"name\", dir: \"asc\" }]);\n * ```\n */\nexport const orderBy = (data, descriptors) => {\n if (descriptors.some(x => isPresent(x.dir))) {\n data = data.slice(0);\n const comparer = composeSortDescriptors(descriptors);\n sort(data, 0, data.length, comparer);\n }\n return data;\n};\nconst defaultComparer = (a, b) => a === b;\nconst normalizeComparer = (comparer) => {\n if (isString(comparer)) {\n const accessor = getter(comparer);\n comparer = (a, b) => accessor(a) === accessor(b);\n }\n return comparer;\n};\nconst _distinct = (data, comparer) => data.filter((x, idx, xs) => xs.findIndex(comparer.bind(null, x)) === idx);\n/**\n * Reduces the provided array so it contains only unique values.\n *\n * @param {T[]} data - The array that will be reduced.\n * @param {(Comparer | string)} comparer - An optional custom comparer function or the field name that will be used for comparison.\n * @returns {T[]} - The reduced data.\n *\n * @example\n * ```ts\n * import { distinct } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = distinct(data, \"subcategory\");\n *\n * // output:\n * // result => [\n * // { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * // { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" }\n * // ];\n * ```\n */\nexport const distinct = (data, comparer = defaultComparer) => _distinct(data, normalizeComparer(comparer));\n/**\n * @hidden\n */\nexport const count = (data, predicate) => {\n let counter = 0;\n for (let idx = 0, length = data.length; idx < length; idx++) {\n if (predicate(data[idx])) {\n counter++;\n }\n }\n return counter;\n};\n/**\n * @hidden\n */\nexport const limit = (data, predicate) => {\n if (predicate) {\n return data.filter(predicate);\n }\n return data;\n};\n/**\n * Applies the specified operation descriptors to the data.\n *\n * @param {T[]} data - The data to be processed.\n * @param {State} state - The operation descriptors that will be applied to the data.\n * @returns {DataResult} - The processed data.\n *\n * @example\n * ```ts\n *\n * const result = process(data, {\n * skip: 10,\n * take: 20,\n * group: [{\n * field: 'category.categoryName',\n * aggregates: [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]\n * }],\n * sort: [{ field: 'productName', dir: 'desc' }],\n * filter: {\n * logic: \"or\",\n * filters: [\n * { field: \"discontinued\", operator: \"eq\", value: true },\n * { field: \"unitPrice\", operator: \"lt\", value: 22 }\n * ]\n * }\n * });\n *\n * ```\n */\nexport const process = (data, state) => {\n const { skip: skipCount, take: takeCount, filter: filterDescriptor, sort, group } = state;\n const sortDescriptors = [...normalizeGroups(group || []), ...sort || []];\n if (sortDescriptors.length) {\n data = orderBy(data, sortDescriptors);\n }\n const hasFilters = isPresent(filterDescriptor) && filter.length;\n const hasGroups = isPresent(group) && group.length;\n if (!hasFilters && !hasGroups) {\n return {\n data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,\n total: data.length\n };\n }\n let total;\n const transformers = [];\n let predicate;\n if (hasFilters) {\n predicate = compileFilter(normalizeFilters(filterDescriptor));\n total = count(data, predicate);\n transformers.push(filter(predicate));\n }\n else {\n total = data.length;\n }\n if (isPresent(skipCount) && isPresent(takeCount)) {\n transformers.push(skip(skipCount));\n transformers.push(take(takeCount));\n }\n if (transformers.length) {\n const transform = compose(...transformers);\n const result = hasGroups ?\n groupBy(data, group, transform, limit(data, predicate)) :\n exec(transform(concat), [], data);\n return { data: result, total: total };\n }\n return {\n data: hasGroups ? groupBy(data, group) : data,\n total: total\n };\n};\n","/**\n * Represents the list of supported [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) operators.\n * Allows restricting `FilterDescriptor.operator` definition to available values only.\n */\nexport var FilterOperator;\n(function (FilterOperator) {\n /**\n * The `contains` operator.\n */\n FilterOperator[\"Contains\"] = \"contains\";\n /**\n * The `doesnotcontain` operator.\n */\n FilterOperator[\"DoesNotContain\"] = \"doesnotcontain\";\n /**\n * The `doesnotendwith` operator.\n */\n FilterOperator[\"DoesNotEndWith\"] = \"doesnotendwith\";\n /**\n * The `doesnotstartwith` operator.\n */\n FilterOperator[\"DoesNotStartWith\"] = \"doesnotstartwith\";\n /**\n * The `endswith` operator.\n */\n FilterOperator[\"EndsWith\"] = \"endswith\";\n /**\n * The `eq` operator.\n */\n FilterOperator[\"EqualTo\"] = \"eq\";\n /**\n * The `gt` operator.\n */\n FilterOperator[\"GreaterThan\"] = \"gt\";\n /**\n * The `gte` operator.\n */\n FilterOperator[\"GreaterThanOrEqual\"] = \"gte\";\n /**\n * The `isempty` operator.\n */\n FilterOperator[\"IsEmpty\"] = \"isempty\";\n /**\n * The `isnotempty` operator.\n */\n FilterOperator[\"IsNotEmpty\"] = \"isnotempty\";\n /**\n * The `isnotnull` operator.\n */\n FilterOperator[\"IsNotNull\"] = \"isnotnull\";\n /**\n * The `isnull` operator.\n */\n FilterOperator[\"IsNull\"] = \"isnull\";\n /**\n * The `lt` operator.\n */\n FilterOperator[\"LessThan\"] = \"lt\";\n /**\n * The `lte` operator.\n */\n FilterOperator[\"LessThanOrEqual\"] = \"lte\";\n /**\n * The `neq` operator.\n */\n FilterOperator[\"NotEqualTo\"] = \"neq\";\n /**\n * The `startswith` operator.\n */\n FilterOperator[\"StartsWith\"] = \"startswith\";\n})(FilterOperator || (FilterOperator = {}));\n","const proxy = (a, b) => (e) => b(a(e));\n\nconst bind = (el, event, callback) =>\n el.addEventListener && el.addEventListener(event, callback);\n\nconst unbind = (el, event, callback) =>\n el && el.removeEventListener && el.removeEventListener(event, callback);\n\nconst noop = () => { /* empty */ };\n\nconst preventDefault = e => e.preventDefault();\n\nconst touchRegExp = /touch/;\n\n// 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\nconst IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport class Draggable {\n static supportPointerEvent() {\n return (typeof window !== 'undefined') && window.PointerEvent;\n }\n\n get document() {\n return this._element\n ? this._element.ownerDocument\n : document;\n }\n\n constructor({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = (e) => {\n if (e.touches.length === 1) {\n this._pressHandler(e);\n }\n };\n\n this._touchmove = (e) => {\n if (e.touches.length === 1) {\n this._dragHandler(e);\n }\n };\n\n this._touchend = (e) => {\n // the last finger has been lifted, and the user is not doing gesture.\n // there might be a better way to handle this.\n if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this._releaseHandler(e);\n this._ignoreMouse = true;\n setTimeout(this._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = () => {\n this._ignoreMouse = false;\n };\n\n this._mousedown = (e) => {\n const { which } = e;\n\n if ((which && which > 1) || this._ignoreMouse) {\n return;\n }\n\n bind(this.document, \"mousemove\", this._mousemove);\n bind(this.document, \"mouseup\", this._mouseup);\n this._pressHandler(e);\n };\n\n this._mousemove = (e) => {\n this._dragHandler(e);\n };\n\n this._mouseup = (e) => {\n unbind(this.document, \"mousemove\", this._mousemove);\n unbind(this.document, \"mouseup\", this._mouseup);\n this._releaseHandler(e);\n };\n\n this._pointerdown = (e) => {\n if (e.isPrimary && e.button === 0) {\n bind(this.document, \"pointermove\", this._pointermove);\n bind(this.document, \"pointerup\", this._pointerup);\n bind(this.document, \"pointercancel\", this._pointerup);\n bind(this.document, \"contextmenu\", preventDefault);\n\n this._pressHandler(e);\n }\n };\n\n this._pointermove = (e) => {\n if (e.isPrimary) {\n this._dragHandler(e);\n }\n };\n\n this._pointerup = (e) => {\n if (e.isPrimary) {\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"pointercancel\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n\n this._releaseHandler(e);\n }\n };\n }\n\n bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n this._bindToCurrent();\n }\n\n _bindToCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n }\n\n _unbindFromCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n unbind(this.document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n }\n\n _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n }\n\n update({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._mouseOnly = mouseOnly;\n }\n\n destroy() {\n this._unbindFromCurrent();\n this._element = null;\n }\n}\n\n// Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\nDraggable.default = Draggable;\n\n// Rollup won't output exports['default'] otherwise\nexport default Draggable;\n\n","export default class Class {\n // Empty base class needed for compatibility with Kendo UI for jQuery\n}\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nconst DARK_TRESHOLD = 180;\n\nclass Color extends Class {\n constructor(value) {\n super();\n\n if (arguments.length === 1) {\n const formats = Color.formats;\n const resolvedColor = this.resolveColor(value);\n\n for (let idx = 0; idx < formats.length; idx++) {\n const formatRegex = formats[idx].re;\n const processor = formats[idx].process;\n const parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n const channels = processor(parts);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n }\n\n toHex() {\n const pad = this.padDigit;\n const r = this.r.toString(16);\n const g = this.g.toString(16);\n const b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n }\n\n resolveColor(value) {\n let color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n }\n\n normalizeByte(value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n }\n\n padDigit(value) {\n return (value.length === 1) ? \"0\" + value : value;\n }\n\n brightness(value) {\n const round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n }\n\n percBrightness() {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n }\n\n isDark() {\n return this.percBrightness() < DARK_TRESHOLD;\n }\n\n static fromBytes(r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n }\n\n static fromRGB(r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n }\n\n static fromHSV(h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n }\n\n static fromHSL(h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n }\n}\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","const namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nconst browser = support.browser;\n\nlet matchNamedColor = (color) => {\n const colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n const regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = (color) => regexp.exec(color);\n\n return regexp.exec(color);\n};\n\nclass BaseColor extends Class {\n constructor() { super(); }\n toHSV() { return this; }\n\n toRGB() { return this; }\n\n toHex(options) { return this.toBytes().toHex(options); }\n\n toBytes() { return this; }\n\n toCss(options) { return \"#\" + this.toHex(options); }\n\n toCssRgba() {\n const rgb = this.toBytes();\n return `rgba(${ rgb.r }, ${ rgb.g }, ${ rgb.b }, ${ parseFloat((Number(this.a)).toFixed(3)) })`;\n }\n\n toDisplay() {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n }\n\n equals(c) {\n return c === this || c !== null && this.toCssRgba() === parseColor(c).toCssRgba();\n }\n\n diff(other) {\n if (other === null) {\n return NaN;\n }\n\n const c1 = this.toBytes();\n const c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n }\n\n clone() {\n let c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n }\n}\n\nclass RGB extends BaseColor {\n constructor(r, g, b, a) {\n super();\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n toHSV() {\n const { r, g, b } = this;\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const delta = max - min;\n const v = max;\n let h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n }\n\n toHSL() {\n const { r, g, b } = this;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n }\n\n toBytes() {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n}\n\nclass Bytes extends RGB {\n constructor(r, g, b, a) {\n super(Math.round(r), Math.round(g), Math.round(b), a);\n }\n\n toRGB() {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n }\n\n toHSV() {\n return this.toRGB().toHSV();\n }\n\n toHSL() {\n return this.toRGB().toHSL();\n }\n\n toHex(options) {\n let value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n }\n\n toBytes() {\n return this;\n }\n}\n\nfunction hex(n, width, pad = \"0\") {\n let result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nclass HSV extends BaseColor {\n constructor(h, s, v, a) {\n super();\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n\n toRGB() {\n let { h, s, v } = this;\n let r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n const i = Math.floor(h);\n const f = h - i;\n const p = v * (1 - s);\n const q = v * (1 - s * f);\n const t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n }\n\n toHSL() {\n return this.toRGB().toHSL();\n }\n\n toBytes() {\n return this.toRGB().toBytes();\n }\n}\n\nclass HSL extends BaseColor {\n constructor(h, s, l, a) {\n super();\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n\n toRGB() {\n let h = this.h / 360;\n let s = this.s / 100;\n let l = this.l / 100;\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n }\n\n toHSV() {\n return this.toRGB().toHSV();\n }\n\n toBytes() {\n return this.toRGB().toBytes();\n }\n}\n\nfunction hue2rgb(p, q, s) {\n let t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nfunction alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n let m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n let color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n","function matchUserAgent(userAgent) {\n const browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+))/i\n };\n\n let browser = {};\n\n for (let agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n const match = userAgent.match(browserRxs[agent]);\n if (match) {\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n}\n\nlet browser = null;\n\nconst support = {\n get browser() {\n if (typeof window === 'undefined' || browser) {\n return browser;\n }\n\n browser = matchUserAgent(window.navigator.userAgent);\n return browser;\n }\n};\n\nexport default support;\n","import { Class } from '../common';\n\nclass HasObservers extends Class {\n observers() {\n this._observers = this._observers || [];\n return this._observers;\n }\n\n addObserver(element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n }\n\n removeObserver(element) {\n const observers = this.observers();\n const index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n }\n\n trigger(methodName, event) {\n const observers = this._observers;\n\n if (observers && !this._suspended) {\n for (let idx = 0; idx < observers.length; idx++) {\n let observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n }\n\n optionsChange(e = {}) {\n e.element = this;\n this.trigger(\"optionsChange\", e);\n }\n\n geometryChange() {\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n\n suspend() {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n }\n\n resume() {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n }\n\n _observerField(field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n }\n}\n\nexport default HasObservers;\n\n","import { Class } from '../common';\nimport HasObservers from './has-observers';\nimport { defined } from '../util';\n\n\nconst toString = {}.toString;\n\nclass OptionsStore extends HasObservers {\n constructor(options, prefix = \"\") {\n super();\n\n this.prefix = prefix;\n\n for (let field in options) {\n let member = options[field];\n member = this._wrap(member, field);\n this[field] = member;\n }\n }\n\n get(field) {\n const parts = field.split(\".\");\n let result = this;\n\n while (parts.length && result) {\n let part = parts.shift();\n result = result[part];\n }\n\n return result;\n }\n\n set(field, value) {\n const current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n }\n\n _set(field, value) {\n const composite = field.indexOf(\".\") >= 0;\n let parentObj = this;\n let fieldName = field;\n\n if (composite) {\n const parts = fieldName.split(\".\");\n let prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n let obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n }\n\n _clear(field) {\n const current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n }\n\n _wrap(object, field) {\n const type = toString.call(object);\n let wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n }\n}\n\nexport default OptionsStore;\n","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","import HasObservers from '../core/has-observers';\nimport { deg, rad, round } from '../util';\nimport withAccessors from '../mixins/with-accessors';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\n\nconst MAX_INTERVAL = 45;\nconst pow = Math.pow;\nconst accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\nclass Arc extends withAccessors(HasObservers, accessors) {\n constructor(center = new Point(), options = {}) {\n super();\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n clone() {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n }\n\n setCenter(value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getCenter() {\n return this.center;\n }\n\n pointAt(angle) {\n const center = this.center;\n const radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n }\n\n curvePoints() {\n const startAngle = this.startAngle;\n const dir = this.anticlockwise ? -1 : 1;\n const curvePoints = [ this.pointAt(startAngle) ];\n const interval = this._arcInterval();\n const intervalAngle = interval.endAngle - interval.startAngle;\n const subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n const subIntervalAngle = intervalAngle / subIntervalsCount;\n let currentAngle = startAngle;\n let transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n\n for (let i = 1; i <= subIntervalsCount; i++) {\n const nextAngle = currentAngle + dir * subIntervalAngle;\n const points = this._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n }\n\n bbox(matrix) {\n const interval = this._arcInterval();\n const startAngle = interval.startAngle;\n const endAngle = interval.endAngle;\n const extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n const extremeX = deg(extremeAngles.x);\n const extremeY = deg(extremeAngles.y);\n const endPoint = this.pointAt(endAngle).transformCopy(matrix);\n let currentAngleX = bboxStartAngle(extremeX, startAngle);\n let currentAngleY = bboxStartAngle(extremeY, startAngle);\n let currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n let minPoint = Point.min(currentPoint, endPoint);\n let maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n let currentPointX;\n if (currentAngleX < endAngle) {\n currentPointX = this.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n let currentPointY;\n if (currentAngleY < endAngle) {\n currentPointY = this.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n }\n\n _arcInterval() {\n let { startAngle, endAngle, anticlockwise } = this;\n\n if (anticlockwise) {\n let oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n\n _intervalCurvePoints(startAngle, endAngle, transformation) {\n const p1 = this.pointAt(startAngle);\n const p2 = this.pointAt(endAngle);\n const p1Derivative = this._derivativeAt(startAngle);\n const p2Derivative = this._derivativeAt(endAngle);\n const t = (rad(endAngle) - rad(startAngle)) / 3;\n const cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n const cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n }\n\n _derivativeAt(angle) {\n const radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n }\n\n containsPoint(point) {\n const interval = this._arcInterval();\n const intervalAngle = interval.endAngle - interval.startAngle;\n const { center, radiusX, radiusY } = this;\n const distance = center.distanceTo(point);\n const angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n const pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n const startPoint = this.pointAt(this.startAngle).round(PRECISION);\n const endPoint = this.pointAt(this.endAngle).round(PRECISION);\n const intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n let containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n let angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n let inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n }\n\n _isOnPath(point, width) {\n const interval = this._arcInterval();\n const center = this.center;\n let angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n const inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n }\n\n static fromPoints(start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n const arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n }\n}\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n const cos = round((x - cx) / rx, 3);\n const sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n let { x1, y1, x2, y2, rx, ry, largeArc, swipe, rotation = 0 } = parameters;\n\n const radians = rad(rotation);\n const cosine = Math.cos(radians);\n const sine = Math.sin(radians);\n\n const xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n const yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n const sign = largeArc !== swipe ? 1 : -1;\n\n const xt2 = Math.pow(xT, 2);\n const yt2 = Math.pow(yT, 2);\n let rx2 = Math.pow(rx, 2);\n let ry2 = Math.pow(ry, 2);\n\n let delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n let constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n const cxT = constT * (rx * yT) / ry;\n const cyT = - constT * (ry * xT) / rx;\n\n const cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n const cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n const uX = (xT - cxT) / rx;\n const uY = (yT - cyT) / ry;\n const vX = -(xT + cxT) / rx;\n const vY = -(yT + cyT) / ry;\n\n const startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n const angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n let angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n let endAngle = startAngle + angle;\n const signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n}\n\nfunction bboxStartAngle(angle, start) {\n let startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n}\n\nexport default Arc;\n","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n const s1x = p1.x - p0.x;\n const s2x = p3.x - p2.x;\n const s1y = p1.y - p0.y;\n const s2y = p3.y - p2.y;\n const nx = p0.x - p2.x;\n const ny = p0.y - p2.y;\n const d = s1x * s2y - s2x * s1y;\n const s = (s1x * ny - s1y * nx) / d;\n const t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n}","import withAccessors from '../mixins/with-accessors';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport HasObservers from '../core/has-observers';\nimport { rad } from '../util';\n\n\nconst PI_DIV_2 = Math.PI / 2;\n\nclass Circle extends withAccessors(HasObservers, [ \"radius\" ]) {\n constructor(center = new Point(), radius = 0) {\n super();\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n setCenter(value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getCenter() {\n return this.center;\n }\n\n equals(other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n }\n\n clone() {\n return new Circle(this.center.clone(), this.radius);\n }\n\n pointAt(angle) {\n return this._pointAt(rad(angle));\n }\n\n bbox(matrix) {\n const extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n let minPoint = Point.maxPoint();\n let maxPoint = Point.minPoint();\n\n for (let i = 0; i < 4; i++) {\n let currentPointX = this._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n let currentPointY = this._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n let currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n }\n\n _pointAt(angle) {\n const { center, radius } = this;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n }\n\n containsPoint(point) {\n const { center, radius } = this;\n const inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n }\n\n _isOnPath(point, width) {\n const { center, radius } = this;\n const pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n }\n}\n\nexport default Circle;\n","const PRECISION = 10;\n\nexport { PRECISION };","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance = PRECISION) {\n return round(Math.abs(a - b), tolerance) === 0;\n}","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n let extremeX = 0;\n let extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n}","export default function lineIntersectionsCount(a, b, point) {\n let intersects;\n if (a.x !== b.x) {\n const minX = Math.min(a.x, b.x);\n const maxX = Math.max(a.x, b.x);\n const minY = Math.min(a.y, b.y);\n const maxY = Math.max(a.y, b.y);\n const inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n}","import { Class } from '../common';\nimport defined from '../util/defined';\nimport rad from '../util/rad';\nimport round from '../util/round';\n\nclass Matrix extends Class {\n\n constructor(a = 0, b = 0, c = 0, d = 0, e = 0, f = 0) {\n super();\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n multiplyCopy(matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n }\n\n invert() {\n const { a, b, c: d, d: e, e: g, f: h } = this;\n const det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n }\n\n clone() {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n }\n\n equals(other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n }\n\n round(precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n }\n\n toArray(precision) {\n const result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (let i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n }\n\n toString(precision, separator = \",\") {\n return this.toArray(precision).join(separator);\n }\n\n static translate(x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n }\n\n static unit() {\n return new Matrix(1, 0, 0, 1, 0, 0);\n }\n\n static rotate(angle, x, y) {\n const matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n }\n\n static scale(scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n }\n}\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;\n","import withAccessors from '../mixins/with-accessors';\nimport HasObservers from '../core/has-observers';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\n\nclass Point extends withAccessors(HasObservers, [ \"x\", \"y\" ]) {\n constructor(x, y) {\n super();\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n equals(other) {\n return other && other.x === this.x && other.y === this.y;\n }\n\n clone() {\n return new Point(this.x, this.y);\n }\n\n rotate(angle, origin) {\n const originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n }\n\n translate(x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n }\n\n translateWith(point) {\n return this.translate(point.x, point.y);\n }\n\n move(x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n }\n\n scale(scaleX, scaleY = scaleX) {\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n }\n\n scaleCopy(scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n }\n\n transform(transformation) {\n const matrix = toMatrix(transformation);\n const { x, y } = this;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n }\n\n transformCopy(transformation) {\n const point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n }\n\n distanceTo(point) {\n const dx = this.x - point.x;\n const dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n round(digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n }\n\n toArray(digits) {\n const doRound = defined(digits);\n const x = doRound ? round(this.x, digits) : this.x;\n const y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n }\n\n toString(digits, separator = \" \") {\n let { x, y } = this;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n }\n\n static create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n }\n\n static min() {\n let minX = MAX_NUM;\n let minY = MAX_NUM;\n\n for (let i = 0; i < arguments.length; i++) {\n let point = arguments[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n }\n\n static max() {\n let maxX = MIN_NUM;\n let maxY = MIN_NUM;\n\n for (let i = 0; i < arguments.length; i++) {\n const point = arguments[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n }\n\n static minPoint() {\n return new Point(MIN_NUM, MIN_NUM);\n }\n\n static maxPoint() {\n return new Point(MAX_NUM, MAX_NUM);\n }\n\n static get ZERO() {\n return new Point(0, 0);\n }\n}\n\nexport default Point;\n","import HasObservers from '../core/has-observers';\nimport Point from './point';\nimport Size from './size';\n\nclass Rect extends HasObservers {\n constructor(origin = new Point(), size = new Size(), cornerRadius = 0) {\n super();\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n clone() {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n }\n\n equals(other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n }\n\n setOrigin(value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getOrigin() {\n return this.origin;\n }\n\n setCornerRadius(radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n }\n\n getCornerRadius() {\n return this.cornerRadius;\n }\n\n setSize(value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n }\n\n getSize() {\n return this.size;\n }\n\n width() {\n return this.size.width;\n }\n\n height() {\n return this.size.height;\n }\n\n topLeft() {\n return this.origin.clone();\n }\n\n bottomRight() {\n return this.origin.clone().translate(this.width(), this.height());\n }\n\n topRight() {\n return this.origin.clone().translate(this.width(), 0);\n }\n\n bottomLeft() {\n return this.origin.clone().translate(0, this.height());\n }\n\n center() {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n }\n\n bbox(matrix) {\n const tl = this.topLeft().transformCopy(matrix);\n const tr = this.topRight().transformCopy(matrix);\n const br = this.bottomRight().transformCopy(matrix);\n const bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n }\n\n transformCopy(m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n }\n\n expand(x, y = x) {\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n }\n\n expandCopy(x, y) {\n return this.clone().expand(x, y);\n }\n\n containsPoint(point) {\n const origin = this.origin;\n const bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n }\n\n _isOnPath(point, width) {\n const rectOuter = this.expandCopy(width, width);\n const rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n }\n\n static fromPoints() {\n const topLeft = Point.min.apply(null, arguments);\n const bottomRight = Point.max.apply(null, arguments);\n const size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n }\n\n static union(a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n }\n\n static intersect(a, b) {\n const rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n const rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n }\n}\n\nexport default Rect;\n","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n const angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n const rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n}","export default function calculateCurveAt(t, field, points) {\n const t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n}","export default function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nclass ComplexNumber extends Class {\n\n constructor(real = 0, img = 0) {\n super();\n\n this.real = real;\n this.img = img;\n }\n\n add(cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n }\n\n addConstant(value) {\n return new ComplexNumber(this.real + value, this.img);\n }\n\n negate() {\n return new ComplexNumber(-this.real, -this.img);\n }\n\n multiply(cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n }\n\n multiplyConstant(value) {\n return new ComplexNumber(this.real * value, this.img * value);\n }\n\n nthRoot(n) {\n const rad = Math.atan2(this.img, this.real);\n const r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n const nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n }\n\n equals(cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n }\n\n isReal() {\n return this.img === 0;\n }\n}\n\nexport default ComplexNumber;","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n const squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n const p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n const q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n const Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n const i = new ComplexNumber(0,1);\n const b3a = -b / (3 * a);\n let x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n const result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n const polynomial = toCubicPolynomial(points, rootField);\n const roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n let intersection;\n\n for (let idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n}","import HasObservers from '../core/has-observers';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\nimport withPoints from '../mixins/with-points';\n\n\nconst points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\nclass Segment extends withPoints(HasObservers, points) {\n constructor(anchor, controlIn, controlOut) {\n super();\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n bboxTo(toSegment, matrix) {\n const segmentAnchor = this.anchor().transformCopy(matrix);\n const toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n let rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n }\n\n _lineBoundingBox(p1, p2) {\n return Rect.fromPoints(p1, p2);\n }\n\n _curveBoundingBox(p1, cp1, cp2, p2) {\n const points = [ p1, cp1, cp2, p2 ];\n const extremesX = this._curveExtremesFor(points, \"x\");\n const extremesY = this._curveExtremesFor(points, \"y\");\n const xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n const yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n }\n\n _curveExtremesFor(points, field) {\n const extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n }\n\n _curveExtremes(x1, x2, x3, x4) {\n const a = x1 - 3 * x2 + 3 * x3 - x4;\n const b = - 2 * (x1 - 2 * x2 + x3);\n const c = x1 - x2;\n const sqrt = Math.sqrt(b * b - 4 * a * c);\n let t1 = 0;\n let t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n let min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n let max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n _intersectionsTo(segment, point) {\n let intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n }\n\n _isOnCurveTo(segment, point, width, endSegment) {\n const bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n const p1 = this.anchor();\n const p2 = this.controlOut();\n const p3 = segment.controlIn();\n const p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n const points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n const rotation = transform().rotate(45, point);\n const rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n }\n\n _isOnLineTo(segment, point, width) {\n const p1 = this.anchor();\n const p2 = segment.anchor();\n const angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n const rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n }\n\n _isOnPathTo(segment, point, width, endSegment) {\n let isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n }\n}\n\nfunction arrayLimits(arr) {\n let length = arr.length;\n let min = MAX_NUM;\n let max = MIN_NUM;\n\n for (let i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexport default Segment;\n","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n const polynomial = toCubicPolynomial(points, \"x\");\n const roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n let rayIntersection, intersectsRay;\n let count = 0;\n for (let i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n}","import HasObservers from '../core/has-observers';\nimport withAccessors from '../mixins/with-accessors';\nimport { defined, round } from '../util';\n\n\nclass Size extends withAccessors(HasObservers, [ \"width\", \"height\" ]) {\n constructor(width, height) {\n super();\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n equals(other) {\n return other && other.width === this.width && other.height === this.height;\n }\n\n clone() {\n return new Size(this.width, this.height);\n }\n\n toArray(digits) {\n const doRound = defined(digits);\n const width = doRound ? round(this.width, digits) : this.width;\n const height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n }\n\n static create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n }\n\n static get ZERO() {\n return new Size(0, 0);\n }\n}\n\nexport default Size;\n","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import HasObservers from '../core/has-observers';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nclass Transformation extends HasObservers {\n constructor(matrix = Matrix.unit()) {\n super();\n\n this._matrix = matrix;\n }\n\n clone() {\n return new Transformation(\n this._matrix.clone()\n );\n }\n\n equals(other) {\n return other &&\n other._matrix.equals(this._matrix);\n }\n\n translate(x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n }\n\n scale(scaleX, scaleY = scaleX, origin = null) {\n let originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n }\n\n rotate(angle, origin) {\n const originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n }\n\n multiply(transformation) {\n const matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n }\n\n matrix(value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n }\n\n _optionsChange() {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n }\n}\n\nexport default Transformation;\n","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n}","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n}\n\nfunction defineOptionsAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}\n\nconst withOptions = (TBase, names) => {\n const result = class extends TBase {};\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withOptions;\n","import OptionsStore from '../core/options-store';\nimport withOptions from '../mixins/with-options';\nimport HasObservers from '../core/has-observers';\nimport { defined } from '../util';\n\n\nconst options = [ \"offset\", \"color\", \"opacity\" ];\n\nclass GradientStop extends withOptions(HasObservers, options) {\n constructor(offset, color, opacity) {\n super();\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n static create(arg) {\n if (defined(arg)) {\n let stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n }\n}\n\nexport default GradientStop;\n","import ElementsArray from '../shapes/elements-array';\n\nclass StopsArray extends ElementsArray {\n _change() {\n this.optionsChange({\n field: \"stops\"\n });\n }\n}\n\nexport default StopsArray;","import StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId } from '../util';\n\nclass Gradient extends HasObservers {\n get nodeType() {\n return \"Gradient\";\n }\n\n constructor(options = {}) {\n super();\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n userSpace(value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n }\n\n _createStops(stops = []) {\n const result = [];\n for (let idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n }\n\n addStop(offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n }\n\n removeStop(stop) {\n const index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n }\n\n optionsChange(e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n }\n\n geometryChange() {\n this.optionsChange();\n }\n}\n\nexport default Gradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\n\nconst points = [ \"start\", \"end\" ];\n\nclass LinearGradient extends withPoints(Gradient, points) {\n constructor(options = {}) {\n super(options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n}\n\nexport default LinearGradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\n\nclass RadialGradient extends withPoints(Gradient, [ \"center\" ]) {\n constructor(options = {}) {\n super(options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n radius(value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n }\n\n fallbackFill(value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n }\n}\n\nexport default RadialGradient;\n","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nconst IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nconst measurable = TBase => (\n class extends TBase {\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n const matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n let bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n const strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n }\n\n geometryChange() {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n }\n);\n\nexport default measurable;","import { defined } from '../util';\n\nconst GRADIENT = \"Gradient\";\n\nconst paintable = TBase => (\n class extends TBase {\n fill(color, opacity) {\n const options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n const newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n }\n\n stroke(color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n }\n}\n);\n\nexport default paintable;\n","const traversable = (TBase, childrenField) => (\n class extends TBase {\n traverse(callback) {\n const children = this[childrenField];\n\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n }\n }\n);\n\nexport default traversable;\n","function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n}\n\nfunction getAccessor(field) {\n return function() {\n return this[field];\n };\n}\n\nfunction defineAccessors(fn, fields) {\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i];\n let capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}\n\nconst withAccessors = (TBase, names) => {\n const result = class extends TBase {};\n defineAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withAccessors;\n","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n const fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction defineGeometryAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}\n\nconst withGeometry = (TBase, names = [ \"geometry\" ]) => {\n const result = class extends TBase {};\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withGeometry;\n","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n const fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction definePointAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}\n\nconst withPoints = (TBase, names) => {\n const result = class extends TBase {};\n definePointAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withPoints;\n","import Point from '../geometry/point';\nimport { last } from '../util';\n\nconst ShapeMap = {\n l: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 2) {\n let point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 6) {\n let controlOut = new Point(parameters[i], parameters[i + 1]);\n let controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n let point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n const value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n const value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 7) {\n const radiusX = parameters[i];\n const radiusY = parameters[i + 1];\n const rotation = parameters[i + 2];\n const largeArc = parameters[i + 3];\n const swipe = parameters[i + 4];\n const endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n const { parameters, position, previousCommand } = options;\n let lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (let i = 0; i < parameters.length; i += 4) {\n let controlIn = new Point(parameters[i], parameters[i + 1]);\n let endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n let controlOut;\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 4) {\n let controlPoint = new Point(parameters[i], parameters[i + 1]);\n let endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n let cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n const { parameters, position, previousCommand } = options;\n let controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n let lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (let i = 0; i < parameters.length; i += 2) {\n let endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n let cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n const insertPosition = isVertical ? 0 : 1;\n\n for (let i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n}\n\nfunction reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n}\n\nconst third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n const scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n}\n\nexport default ShapeMap;","import Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nconst SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nconst SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nconst MOVE = \"m\";\nconst CLOSE = \"z\";\n\nfunction parseParameters(str) {\n const parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n}\n\nfunction parsePath(pathInstance, str) {\n const position = new Point();\n let previousCommand;\n\n str.replace(SEGMENT_REGEX, (match, element, params, closePath) => {\n let command = element.toLowerCase();\n const isRelative = command === element;\n const parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n}\n\nexport default parsePath;\n\n","import GeometryCircle from '../geometry/circle';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport { defined } from '../util';\n\nconst DEFAULT_STROKE = \"#000\";\n\nclass Circle extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Circle\";\n }\n\n constructor(geometry = new GeometryCircle(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n rawBBox() {\n return this._geometry.bbox();\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n _containsPoint(point) {\n return this.geometry().containsPoint(point);\n }\n\n _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n}\n\nexport default Circle;\n","import OptionsStore from '../core/options-store';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\n\nclass Element extends HasObservers {\n get nodeType() {\n return \"Rect\";\n }\n\n constructor(options) {\n super();\n\n this._initOptions(options);\n }\n\n _initOptions(options = {}) {\n const { clip, transform } = options;\n\n if (transform) {\n options.transform = createTransform(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n }\n\n transform(value) {\n if (defined(value)) {\n this.options.set(\"transform\", createTransform(value));\n } else {\n return this.options.get(\"transform\");\n }\n }\n\n parentTransform() {\n let element = this;\n let parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n let transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return createTransform(parentMatrix);\n }\n }\n\n currentTransform(parentTransform = this.parentTransform()) {\n const elementTransform = this.transform();\n const elementMatrix = toMatrix(elementTransform);\n\n let parentMatrix = toMatrix(parentTransform);\n let combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return createTransform(combinedMatrix);\n }\n }\n\n visible(value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n }\n\n clip(value) {\n const options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n }\n\n opacity(value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n }\n\n clippedBBox(transformation) {\n const bbox = this._clippedBBox(transformation);\n if (bbox) {\n const clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n }\n\n containsPoint(point, parentTransform) {\n if (this.visible()) {\n const transform = this.currentTransform(parentTransform);\n let transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n }\n\n _hasFill() {\n const fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n }\n\n _hasStroke() {\n const stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n }\n\n _clippedBBox(transformation) {\n return this.bbox(transformation);\n }\n}\n\nexport default Element;\n","import HasObservers from '../core/has-observers';\n\nconst push = [].push;\nconst pop = [].pop;\nconst splice = [].splice;\nconst shift = [].shift;\nconst slice = [].slice;\nconst unshift = [].unshift;\n\nclass ElementsArray extends HasObservers {\n constructor(array = []) {\n super();\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n elements(value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n }\n\n push() {\n const elements = arguments;\n const result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n }\n\n slice() {\n return slice.call(this);\n }\n\n pop() {\n const length = this.length;\n const result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n }\n\n splice(index, howMany) {\n const elements = slice.call(arguments, 2);\n const result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n }\n\n shift() {\n const length = this.length;\n const result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n }\n\n unshift() {\n const elements = arguments;\n const result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n }\n\n indexOf(element) {\n const length = this.length;\n\n for (let idx = 0; idx < length; idx++) {\n if (this[idx] === element) {\n return idx;\n }\n }\n return -1;\n }\n\n _splice(index, howMany, elements) {\n const result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n }\n\n _add(elements) {\n this._setObserver(elements);\n this._change();\n }\n\n _remove(elements) {\n this._clearObserver(elements);\n this._change();\n }\n\n _setObserver(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this);\n }\n }\n\n _clearObserver(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this);\n }\n }\n\n _change() {}\n}\n\nexport default ElementsArray;\n","import Element from './element';\nimport traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\n\nclass Group extends traversable(Element, \"children\") {\n get nodeType() {\n return \"Group\";\n }\n\n constructor(options) {\n super(options);\n this.children = [];\n }\n\n childrenChange(action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n }\n\n append() {\n append(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n }\n\n insert(index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n }\n\n insertAt(element, index) {\n return this.insert(index, element);\n }\n\n remove(element) {\n const index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n }\n\n removeAt(index) {\n if (0 <= index && index < this.children.length) {\n let element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n }\n\n clear() {\n const items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n }\n\n bbox(transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n }\n\n rawBBox() {\n return elementsBoundingBox(this.children, false);\n }\n\n _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n }\n\n currentTransform(transformation) {\n return Element.prototype.currentTransform.call(this, transformation) || null;\n }\n\n containsPoint(point, parentTransform) {\n if (this.visible()) {\n const children = this.children;\n const transform = this.currentTransform(parentTransform);\n for (let idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n }\n\n _reparent(elements, newParent) {\n for (let i = 0; i < elements.length; i++) {\n const child = elements[i];\n const parent = child.parent;\n if (parent && parent !== this && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n }\n}\n\nexport default Group;","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\n\nclass Image extends withGeometry(Element, [ \"rect\" ]) {\n get nodeType() {\n return \"Image\";\n }\n\n constructor(src, rect = new Rect(), options = {}) {\n super(options);\n\n this.src(src);\n this.rect(rect);\n }\n\n src(value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n }\n\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n }\n\n rawBBox() {\n return this._rect.bbox();\n }\n\n _containsPoint(point) {\n return this._rect.containsPoint(point);\n }\n\n _hasFill() {\n return this.src();\n }\n}\n\nexport default Image;","import ElementsArray from './elements-array';\n\nclass GeometryElementsArray extends ElementsArray {\n _change() {\n this.geometryChange();\n }\n}\n\nexport default GeometryElementsArray;","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport parsePath from '../parsing/parse-path';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport limitValue from '../util/limit-value';\n\n\nexport class Path extends paintable(measurable(Element)) {\n static parse(str, options) {\n return MultiPath.parse(str, options);\n }\n\n get nodeType() {\n return \"Path\";\n }\n\n constructor(options) {\n super(options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set(\"stroke.lineJoin\", \"miter\");\n }\n }\n }\n\n moveTo(x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n }\n\n lineTo(x, y) {\n const point = defined(y) ? new Point(x, y) : x;\n const segment = new Segment(point);\n\n this.segments.push(segment);\n\n return this;\n }\n\n curveTo(controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n }\n\n arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const anchor = lastSegment.anchor();\n const start = rad(startAngle);\n const center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n const arc = new Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n }\n\n arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const anchor = lastSegment.anchor();\n const arc = Arc.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n }\n\n _addArcSegments(arc) {\n this.suspend();\n\n const curvePoints = arc.curvePoints();\n\n for (let i = 1; i < curvePoints.length; i += 3) {\n this.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n }\n\n close() {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n }\n\n rawBBox() {\n return this._bbox();\n }\n\n _containsPoint(point) {\n const segments = this.segments;\n const length = segments.length;\n let intersectionsCount = 0;\n let previous, current;\n\n for (let idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n\n return intersectionsCount % 2 !== 0;\n }\n\n _isOnPath(point, width) {\n const segments = this.segments;\n const length = segments.length;\n const pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, \"start\")) {\n return true;\n }\n\n for (let idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, \"end\")) {\n return true;\n }\n }\n return false;\n }\n\n _bbox(matrix) {\n const segments = this.segments;\n const length = segments.length;\n let boundingBox;\n\n if (length === 1) {\n let anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (let i = 1; i < length; i++) {\n let segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n }\n\n static fromRect(rect, options) {\n const path = new Path(options);\n let [ rx, ry ] = rect.cornerRadius;\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n const origin = rect.origin;\n const { x, y } = origin;\n const width = rect.width();\n const height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n }\n\n static fromPoints(points, options) {\n if (points) {\n const path = new Path(options);\n\n for (let i = 0; i < points.length; i++) {\n let point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n\n return path;\n }\n }\n\n static fromArc(arc, options) {\n const path = new Path(options);\n const startAngle = arc.startAngle;\n const start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n }\n}\n\nexport class MultiPath extends paintable(measurable(Element)) {\n static parse(str, options) {\n const instance = new MultiPath(options);\n return parsePath(instance, str);\n }\n\n get nodeType() {\n return \"MultiPath\";\n }\n\n constructor(options) {\n super(options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n moveTo(x, y) {\n const path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n }\n\n lineTo(x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n }\n\n curveTo(controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n\n return this;\n }\n\n arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n }\n\n arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n }\n\n close() {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n }\n\n _bbox(matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n }\n\n rawBBox() {\n return elementsBoundingBox(this.paths, false);\n }\n\n _containsPoint(point) {\n const paths = this.paths;\n\n for (let idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n }\n\n _isOnPath(point) {\n const paths = this.paths;\n const width = this.options.stroke.width;\n\n for (let idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n }\n\n _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n }\n}\n\n","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport paintable from '../mixins/paintable';\nimport withPoints from '../mixins/with-points';\nimport { defined, measureText } from '../util';\n\n\nconst DEFAULT_FONT = \"12px sans-serif\";\nconst DEFAULT_FILL = \"#000\";\n\nclass Text extends paintable(withPoints(Element, [ \"position\" ])) {\n get nodeType() {\n return \"Text\";\n }\n\n constructor(content, position = new Point(), options = {}) {\n super(options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n content(value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n }\n\n measure() {\n const metrics = measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n }\n\n rect() {\n const size = this.measure();\n const pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n }\n\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n }\n\n rawBBox() {\n return this.rect().bbox();\n }\n\n _containsPoint(point) {\n return this.rect().containsPoint(point);\n }\n}\n\nexport default Text;\n","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n let boundingBox;\n\n for (let i = 0; i < elements.length; i++) {\n let element = elements[i];\n if (element.visible()) {\n let elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n let boundingBox;\n\n for (let i = 0; i < elements.length; i++) {\n let element = elements[i];\n if (element.visible()) {\n let elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}","import { Class } from '../common';\n\nclass LRUCache extends Class {\n constructor(size) {\n super();\n\n this._size = size;\n this._length = 0;\n this._map = {};\n }\n\n put(key, value) {\n const map = this._map;\n const entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n }\n\n get(key) {\n const entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n }\n}\n\nexport default LRUCache;","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}\n","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n}\n\nconst DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\n\nlet defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n}\n\nclass TextMetrics extends Class {\n constructor(options) {\n super();\n\n this._cache = new LRUCache(1000);\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n }\n\n measure(text, style, options = {}) {\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n const styleKey = objectKey(style);\n const cacheKey = hashKey(text + styleKey);\n const cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n const size = zeroSize();\n const measureBox = options.box || defaultMeasureBox;\n const baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (let key in style) {\n let value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n const textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n }\n\n _baselineMarker() {\n const marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n }\n}\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;\n","const REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nconst SPACE = ' ';\n\nfunction normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n const parts = [];\n for (let key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n let hash = 0x811C9DC5;\n\n for (let i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","export default function append(first, second) {\n first.push.apply(first, second);\n return first;\n}","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nconst literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n const values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n let roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n}","const DEG_TO_RAD = Math.PI / 180;\nconst MAX_NUM = Number.MAX_VALUE;\nconst MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","export default function createPromise() {\n let resolveFn, rejectFn;\n const promise = new Promise((resolve, reject) => {\n resolveFn = (data) => {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n rejectFn = (data) => {\n promise._state = \"rejected\";\n reject(data);\n\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n promise.state = () => promise._state;\n\n return promise;\n}\n","const UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","let defId = 1;\n\nexport default function definitionId() {\n return \"kdef\" + defId++;\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","import { encodeUTF8 } from './encode-utf';\n\nconst KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n let output = \"\";\n let i = 0;\n\n const utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n let chr1 = utfInput.charCodeAt(i++);\n let chr2 = utfInput.charCodeAt(i++);\n let chr3 = utfInput.charCodeAt(i++);\n\n let enc1 = chr1 >> 2;\n let enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n let enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n let enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","const fromCharCode = String.fromCharCode;\n\nexport const BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n let output = \"\";\n\n for (let i = 0; i < input.length; i++) {\n let code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n const hi = code;\n const low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n}\n\nfunction encodeUnit(codeUnit) {\n return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n let output = '';\n\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n\n if (c < 0xFFFF) {\n output += encodeUnit(c);\n } else {\n const lead = ((c - 0x10000) >> 10) + 0xD800;\n const trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n output += encodeUnit(lead);\n output += encodeUnit(trail);\n }\n }\n\n return output;\n}\n","import defined from './defined';\n\nexport default function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n}","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\n}\n","function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n}\n\nexport default function round(value, precision) {\n const power = pow(precision);\n return Math.round(value * power) / power;\n}","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","export function saveAs(data, fileName, options = {}) {\n let save = postToProxy;\n\n if (options.forceProxy && !options.proxyURL) {\n throw new Error('No proxyURL is set, but forceProxy is true');\n }\n\n if (!options.forceProxy) {\n if (canDownload()) {\n save = saveAsDataURI;\n }\n\n if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(data, fileName, options);\n}\n\nconst anchor = () => document.createElement('a');\nconst canDownload = () => 'download' in anchor();\n\nfunction saveAsBlob(data, fileName) {\n let blob = data; // could be a Blob object\n\n if (typeof data === 'string') {\n const parts = data.split(';base64,');\n const contentType = parts[0];\n const base64 = atob(parts[1]);\n const array = new Uint8Array(base64.length);\n\n for (let idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n\n blob = new Blob([ array.buffer ], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n}\n\nfunction saveAsDataURI(data, fileName) {\n let dataURI = data;\n if (window.Blob && data instanceof Blob) {\n dataURI = URL.createObjectURL(data);\n }\n\n const fileSaver = anchor();\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n const e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(() => URL.revokeObjectURL(dataURI));\n}\n\nfunction postToProxy(dataURI, fileName, options) {\n if (!options.proxyURL) {\n return;\n }\n\n const form = document.createElement('form');\n form.setAttribute('action', options.proxyURL);\n form.setAttribute('method', 'POST');\n form.setAttribute('target', options.proxyTarget || '_self');\n\n const formData = options.proxyData || {};\n formData.fileName = fileName;\n\n const parts = dataURI.split(\";base64,\");\n formData.contentType = parts[0].replace(\"data:\", \"\");\n formData.base64 = parts[1];\n\n for (let name in formData) {\n if (formData.hasOwnProperty(name)) {\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', name);\n input.setAttribute('value', formData[name]);\n\n form.appendChild(input);\n }\n }\n\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}\n\n","const KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nconst fromCharCode = String.fromCharCode;\n\nexport function encodeBase64(plainText) {\n const input = encodeUTF8(plainText);\n let output = \"\";\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n let i = 0;\n\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}\n\nfunction encodeUTF8(input) {\n let output = \"\";\n\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n\n if (c < 0x80) {\n // One byte\n output += fromCharCode(c);\n } else if (c < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (c >>> 6));\n output += fromCharCode(0x80 | (c & 0x3f));\n } else if (c < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (c >>> 12));\n output += fromCharCode(0x80 | (c >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (c & 0x3f));\n }\n }\n\n return output;\n}\n","var _0x3f5f=['tMjXqw8=','ALvUuLu=','DMvYC2LVBG==','B2jQzwn0','zNvUy3rPB24=','AgfZ','CgfYC2u=','se52y2S=','CeTOB0C=','Ag9dwha=','ChjVzhvJDe5HBwu=','y29Kzq==','BgDyrK4=','zgf0yq==','DgLTzxn0yw1W','vgHLihbYB2r1y3qGAxmGBM90igLUy2X1zgvKigLUihrOzsbSAwnLBNnLlGO=','vevpChm=','CgfJA2fNzu5HBwu=','C2v0','CNzVquK=','DhLWzq==','rK9ht3q=','A29lt3C=','C2nYAxb0s2v5','D2fYBG==','lcb0AguGCgfJA2fNzsb3yxmGChvIBgLZAgvKig9Uia==','tM8GBgLJzw5ZzsbMB3vUzc4k','Dw5KzwzPBMvK','zxHWAxj5rgf0zq==','qxPWD00=','DwD0D1a=','ww91CIbSAwnLBNnLigv4CgLYzwqGB24G','BgvUz3rO','zeDetM8=','rgTIvfi=','zg9JC1vYBa==','ChjVzhvJDenVzgvZ','Dg9mB2nHBgvtDhjPBMC=','q3jhuhy=','D0f4tMu=','q09jChO=','z2v0','BgLJzw5Zzuv4CgLYyxrPB25eyxrL','BuTXu3e=','ChjVzhvJDhm=','DfrNreS=','C29YDa==','zMLUza==','u2vLia==','u2XdEfO=','uhjVz3jLC3mG','z3jVDxa=','BMfTzq==','CejABNy=','BgLJzw5ZAw5Nrg9JC1vYBa==','igzVCIbTB3jLigLUzM9YBwf0Aw9UlGO=','y29Uy2f0','ChvIBgLZAerHDgu=','z3jVDxbfBMq=','CK1fru8=','uwzXvuK=','tgLJzw5ZzsbHy3rPDMf0Aw9UigzHAwXLzcbMB3iG'];(function(_0x3ffcd8,_0x3f5fc6){var _0x4fe1c2=function(_0x228463){while(--_0x228463){_0x3ffcd8['push'](_0x3ffcd8['shift']());}};_0x4fe1c2(++_0x3f5fc6);}(_0x3f5f,0x171));var _0x4fe1=function(_0x3ffcd8,_0x3f5fc6){_0x3ffcd8=_0x3ffcd8-0x0;var _0x4fe1c2=_0x3f5f[_0x3ffcd8];if(_0x4fe1['rlqmyH']===undefined){var _0x228463=function(_0x31bd4d){var _0x1ae84e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=',_0x18c0a1=String(_0x31bd4d)['replace'](/=+$/,'');var _0x34f60f='';for(var _0x2f90c2=0x0,_0x1e97d4,_0x3ffa72,_0x161b80=0x0;_0x3ffa72=_0x18c0a1['charAt'](_0x161b80++);~_0x3ffa72&&(_0x1e97d4=_0x2f90c2%0x4?_0x1e97d4*0x40+_0x3ffa72:_0x3ffa72,_0x2f90c2++%0x4)?_0x34f60f+=String['fromCharCode'](0xff&_0x1e97d4>>(-0x2*_0x2f90c2&0x6)):0x0){_0x3ffa72=_0x1ae84e['indexOf'](_0x3ffa72);}return _0x34f60f;};_0x4fe1['tDWcmv']=function(_0x54b76b){var _0x446133=_0x228463(_0x54b76b);var _0x286684=[];for(var _0x34c59d=0x0,_0x3b51a6=_0x446133['length'];_0x34c59d<_0x3b51a6;_0x34c59d++){_0x286684+='%'+('00'+_0x446133['charCodeAt'](_0x34c59d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x286684);},_0x4fe1['GoSChA']={},_0x4fe1['rlqmyH']=!![];}var _0x2bf482=_0x4fe1['GoSChA'][_0x3ffcd8];return _0x2bf482===undefined?(_0x4fe1c2=_0x4fe1['tDWcmv'](_0x4fe1c2),_0x4fe1['GoSChA'][_0x3ffcd8]=_0x4fe1c2):_0x4fe1c2=_0x2bf482,_0x4fe1c2;};var context={data:' {\\\"timestamp\\\":1649396492,\\\"products\\\":[{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIREACT\\\",\\\"licenseExpirationDate\\\":1658285446},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUICOMPLETE\\\",\\\"licenseExpirationDate\\\":1658285446},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIVUE\\\",\\\"licenseExpirationDate\\\":1658285446},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIANGULAR\\\",\\\"licenseExpirationDate\\\":1658285446}],\\\"integrity\\\":\\\"eApTk8KZ+Fp+7LjTHq4wpZQ9ppI=\\\"} '},cache=new Map();function setScriptKey(_0x332c3f){}function validatePackage(_0x288448){if(cache[_0x4fe1('0x8')](_0x288448[_0x4fe1('0x37')])){if(_0x4fe1('0x19')===_0x4fe1('0x19'))return cache[_0x4fe1('0x2c')](_0x288448[_0x4fe1('0x37')]);else{function _0x1d633f(){_0x47c5ba={'type':0x1,'packageName':_0x404fc4,'docsUrl':_0x35fad0[_0x4fe1('0x39')]};}}}var _0x1dbcb5=_0x288448[_0x4fe1('0x5')]?'\\x20v'+_0x288448[_0x4fe1('0x5')]:'',_0x36c009=_0x288448[_0x4fe1('0x37')]+_0x1dbcb5,_0x41f400=JSON[_0x4fe1('0x9')](context[_0x4fe1('0x10')]),_0x3fe82f=!_0x41f400[_0x4fe1('0x1a')]&&!_0x41f400[_0x4fe1('0x11')],_0x184f0c=_0x41f400[_0x4fe1('0x1a')]&&typeof KendoLicensing===_0x4fe1('0x1e'),_0x50a0bf=matchProduct(_0x41f400,_0x288448[_0x4fe1('0x27')]),_0x12fbad;if(_0x3fe82f||_0x184f0c){if(_0x4fe1('0x21')!==_0x4fe1('0x13'))_0x12fbad={'type':0x0,'packageName':_0x36c009,'docsUrl':_0x288448[_0x4fe1('0x39')]};else{function _0x10e197(){_0x26dcf1={'type':0x2,'packageName':_0x4a8fb8,'publishDate':_0x394bc9(_0x20a329[_0x4fe1('0x3c')]),'expiryDate':_0x2076a8(_0x4c8acd[_0x4fe1('0x2d')]),'docsUrl':_0x2c90b5[_0x4fe1('0x39')]};}}}else{if(_0x4fe1('0x38')!==_0x4fe1('0x0')){if(!_0x50a0bf){if(_0x4fe1('0xf')!==_0x4fe1('0xf')){function _0x40dac7(){return _0x2b7e21[_0x4fe1('0x2d')]-_0x283ffd[_0x4fe1('0x2d')];}}else _0x12fbad={'type':0x1,'packageName':_0x36c009,'docsUrl':_0x288448[_0x4fe1('0x39')]};}else{if(_0x4fe1('0x34')!==_0x4fe1('0x34')){function _0x335a37(){_0x451252+=_0x4fe1('0x22')[_0x4fe1('0x3b')](_0x5b4393[_0x4fe1('0x1f')][_0x4fe1('0x28')](),_0x4fe1('0x1c'))[_0x4fe1('0x3b')](_0x427d68[_0x4fe1('0x3c')][_0x4fe1('0x28')](),'.\\x0a');}}else{if(_0x50a0bf[_0x4fe1('0x2d')]<_0x288448[_0x4fe1('0x3c')]){if(_0x4fe1('0x25')!==_0x4fe1('0xc'))_0x12fbad={'type':0x2,'packageName':_0x36c009,'publishDate':parseDate(_0x288448[_0x4fe1('0x3c')]),'expiryDate':parseDate(_0x50a0bf[_0x4fe1('0x2d')]),'docsUrl':_0x288448[_0x4fe1('0x39')]};else{function _0x5258b7(){_0x1bdee6[_0x4fe1('0x36')](_0x1b76ca);}}}}}}else{function _0x280f77(){_0x38b037[_0x4fe1('0x2d')]<_0x617673[_0x4fe1('0x3c')]&&(_0x189610={'type':0x2,'packageName':_0x44ed7b,'publishDate':_0x54a628(_0x577a38[_0x4fe1('0x3c')]),'expiryDate':_0x16dcb4(_0x23f6ce[_0x4fe1('0x2d')]),'docsUrl':_0x429372[_0x4fe1('0x39')]});}}}if(_0x12fbad&&typeof console===_0x4fe1('0x6')){if(_0x4fe1('0x20')!==_0x4fe1('0x20')){function _0x5d228a(){var _0x4230b5=_0x103455[_0x4fe1('0x2f')];if(!_0x4230b5||!_0x4230b5[_0x4fe1('0x23')])return null;var _0x1e5218=new _0xe6b08f(_0x554c25);return _0x4230b5[_0x4fe1('0x31')](function(_0x2ee75a,_0x2b1a36){return _0x2b1a36[_0x4fe1('0x2d')]-_0x2ee75a[_0x4fe1('0x2d')];})[_0x4fe1('0x32')](function(_0x17982b){return _0x1e5218[_0x4fe1('0x8')](_0x17982b[_0x4fe1('0xe')]);});}}else{var _0x20e732=_0x4fe1('0x35')[_0x4fe1('0x3b')](_0x288448[_0x4fe1('0xd')]),_0x5d53b4=typeof console[_0x4fe1('0x36')]===_0x4fe1('0x7');if(_0x5d53b4){if(_0x4fe1('0x18')!==_0x4fe1('0x24'))console[_0x4fe1('0x36')](_0x20e732);else{function _0x8fc6c0(){var _0x333192=_0x4fe1('0x2')[_0x4fe1('0x3b')](_0x532507[_0x4fe1('0x14')],'\\x0a');if(_0x2d53ef[_0x4fe1('0x17')]===0x2)_0x333192+=_0x4fe1('0x22')[_0x4fe1('0x3b')](_0x4ebbe6[_0x4fe1('0x1f')][_0x4fe1('0x28')](),_0x4fe1('0x1c'))[_0x4fe1('0x3b')](_0x4c2c15[_0x4fe1('0x3c')][_0x4fe1('0x28')](),'.\\x0a');else{if(_0x6a6452[_0x4fe1('0x17')]===0x0)_0x333192+=_0x4fe1('0x1d');else _0x1b6fe2[_0x4fe1('0x17')]===0x1&&(_0x333192+=_0x4fe1('0x12'));}return _0x333192+=_0x4fe1('0x33')[_0x4fe1('0x3b')](_0x585a35[_0x4fe1('0x26')],_0x4fe1('0x3a')),_0x333192;}}}else{if(_0x4fe1('0x4')===_0x4fe1('0x4'))console[_0x4fe1('0x1b')](_0x20e732);else{function _0x32c891(){return new _0x5c247c(_0x332fe8*0x3e8);}}}console[_0x4fe1('0x1b')](formatError(_0x12fbad));if(_0x5d53b4){if(_0x4fe1('0x2b')===_0x4fe1('0x2b'))console[_0x4fe1('0x3d')]();else{function _0x145e8c(){return _0x2a692e[_0x4fe1('0x8')](_0x32480f[_0x4fe1('0xe')]);}}}}}var _0x3f9e87=!_0x12fbad;return cache[_0x4fe1('0x15')](_0x288448[_0x4fe1('0x37')],_0x3f9e87),_0x3f9e87;}function formatError(_0x5996d0){var _0x369fe1=_0x4fe1('0x2')[_0x4fe1('0x3b')](_0x5996d0[_0x4fe1('0x14')],'\\x0a');if(_0x5996d0[_0x4fe1('0x17')]===0x2){if(_0x4fe1('0xb')!==_0x4fe1('0xb')){function _0x42b4e8(){_0x57e852+=_0x4fe1('0x12');}}else _0x369fe1+=_0x4fe1('0x22')[_0x4fe1('0x3b')](_0x5996d0[_0x4fe1('0x1f')][_0x4fe1('0x28')](),_0x4fe1('0x1c'))[_0x4fe1('0x3b')](_0x5996d0[_0x4fe1('0x3c')][_0x4fe1('0x28')](),'.\\x0a');}else{if(_0x5996d0[_0x4fe1('0x17')]===0x0){if(_0x4fe1('0x2e')!==_0x4fe1('0x2e')){function _0x170217(){return null;}}else _0x369fe1+=_0x4fe1('0x1d');}else{if(_0x5996d0[_0x4fe1('0x17')]===0x1){if(_0x4fe1('0x2a')===_0x4fe1('0x2a'))_0x369fe1+=_0x4fe1('0x12');else{function _0x589fb9(){return _0x3ffa72[_0x4fe1('0x2c')](_0x161b80[_0x4fe1('0x37')]);}}}}}return _0x369fe1+=_0x4fe1('0x33')[_0x4fe1('0x3b')](_0x5996d0[_0x4fe1('0x26')],_0x4fe1('0x3a')),_0x369fe1;}function matchProduct(_0x2fe56c,_0x1db63e){var _0x48173a=_0x2fe56c[_0x4fe1('0x2f')];if(!_0x48173a||!_0x48173a[_0x4fe1('0x23')]){if(_0x4fe1('0x29')!==_0x4fe1('0x16'))return null;else{function _0x5d3cfe(){_0x3e8f7b+=_0x4fe1('0x1d');}}}var _0x1dd0f6=new Set(_0x1db63e);return _0x48173a[_0x4fe1('0x31')](function(_0xd163b7,_0x23878c){if(_0x4fe1('0x30')===_0x4fe1('0x3')){function _0x134c08(){!_0xbcc2ed?_0xb3f5b6={'type':0x1,'packageName':_0x495d13,'docsUrl':_0x4dead0[_0x4fe1('0x39')]}:_0xa8b7ca[_0x4fe1('0x2d')]<_0x177345[_0x4fe1('0x3c')]&&(_0x2625da={'type':0x2,'packageName':_0x5e46dc,'publishDate':_0x10f6c5(_0x357f8a[_0x4fe1('0x3c')]),'expiryDate':_0x70483f(_0x32abbc[_0x4fe1('0x2d')]),'docsUrl':_0x4a4999[_0x4fe1('0x39')]});}}else return _0x23878c[_0x4fe1('0x2d')]-_0xd163b7[_0x4fe1('0x2d')];})[_0x4fe1('0x32')](function(_0x1d8f83){if(_0x4fe1('0xa')===_0x4fe1('0x1')){function _0x428ed6(){_0x34c59d={'type':0x0,'packageName':_0x3b51a6,'docsUrl':_0x3d18c6[_0x4fe1('0x39')]};}}else return _0x1dd0f6[_0x4fe1('0x8')](_0x1d8f83[_0x4fe1('0xe')]);});}function parseDate(_0x9d6621){return new Date(_0x9d6621*0x3e8);}export{setScriptKey,validatePackage};\n","export default {\n \"bottom\": \"bottom\",\n \"center\": \"center\",\n \"middle\": \"middle\",\n \"left\": \"left\",\n \"right\": \"right\",\n \"top\": \"top\"\n};\n","import point from './align-point';\n\nconst align = (options) => {\n const { anchorRect, anchorAlign, elementRect, elementAlign, margin = {} } = options;\n const anchorHorizontal = anchorAlign.horizontal;\n const anchorVertical = anchorAlign.vertical;\n const elementHorizontal = elementAlign.horizontal;\n const elementVertical = elementAlign.vertical;\n\n let horizontalMargin = margin.horizontal || 0;\n let verticalMargin = margin.vertical || 0;\n\n let top = anchorRect.top;\n let left = anchorRect.left;\n\n if (anchorVertical === point.bottom) {\n top += anchorRect.height;\n }\n\n if (anchorVertical === point.center || anchorVertical === point.middle) {\n top += Math.round(anchorRect.height / 2);\n }\n\n if (elementVertical === point.bottom) {\n top -= elementRect.height;\n verticalMargin *= -1;\n }\n\n if (elementVertical === point.center || elementVertical === point.middle) {\n top -= Math.round(elementRect.height / 2);\n verticalMargin *= -1;\n }\n\n if (anchorHorizontal === point.right) {\n left += anchorRect.width;\n }\n\n if (anchorHorizontal === point.center || anchorHorizontal === point.middle) {\n left += Math.round(anchorRect.width / 2);\n }\n\n if (elementHorizontal === point.right) {\n left -= elementRect.width;\n horizontalMargin *= -1;\n }\n\n if (elementHorizontal === point.center || elementHorizontal === point.middle) {\n left -= Math.round(elementRect.width / 2);\n horizontalMargin *= -1;\n }\n\n return {\n top: top + verticalMargin,\n left: left + horizontalMargin\n };\n};\n\nexport default align;\n","export default function addScroll(rect, scroll) {\n return {\n top: rect.top + scroll.y,\n left: rect.left + scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","export default function ownerDocument(element) {\n return element.ownerDocument || element.document || element;\n}\n","import ownerDocument from './owner-document';\n\nconst getWindow = (element) => ownerDocument(element).defaultView;\n\nexport default getWindow;\n","import ownerDocument from './owner-document';\n\nconst getDocument = (element) => ownerDocument(element).documentElement;\n\nexport default getDocument;\n","let cachedWidth = 0;\n\nexport default function scrollbarWidth() {\n if (!cachedWidth && typeof document !== 'undefined') {\n const div = document.createElement(\"div\");\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n cachedWidth = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n }\n\n return cachedWidth;\n}\n","import wnd from './window';\nimport getDocument from './document';\nimport scrollbarWidth from './scrollbar-width';\n\nexport default function windowViewport(element) {\n const win = wnd(element);\n const document = getDocument(element);\n const result = {\n height: win.innerHeight,\n width: win.innerWidth\n };\n\n if (document.scrollHeight - document.clientHeight > 0) {\n result.width -= scrollbarWidth();\n }\n\n return result;\n}\n","import windowViewport from './window-viewport';\n\nconst boundingOffset = (element) => {\n if (!element.getBoundingClientRect) {\n const viewport = windowViewport(element);\n return {\n bottom: viewport.height,\n left: 0,\n right: viewport.width,\n top: 0\n };\n }\n\n const { bottom, left, right, top } = element.getBoundingClientRect();\n\n return {\n bottom,\n left,\n right,\n top\n };\n};\n\nexport default boundingOffset;\n","const rectOfHiddenElement = (element) => {\n const { display, left, position } = element.style;\n\n element.style.display = '';\n element.style.left = '-10000px';\n element.style.position = 'absolute';\n\n const rect = element.getBoundingClientRect();\n\n element.style.display = display;\n element.style.left = left;\n element.style.position = position;\n\n return rect;\n};\n\nconst offset = (element) => {\n let rect = element.getBoundingClientRect();\n let { left, top } = rect;\n\n if (!rect.height && !rect.width) {\n rect = rectOfHiddenElement(element);\n }\n\n return {\n top: top,\n left: left,\n height: rect.height,\n width: rect.width\n };\n};\n\nexport default offset;\n","export default (element, until) => {\n const result = [];\n let next = element.parentNode;\n\n while (next) {\n result.push(next);\n\n if (next === until) { break; }\n\n next = next.parentNode;\n }\n\n return result;\n};\n","import docElement from './document';\nimport wnd from './window';\n\nexport default function scrollPosition(element) {\n const documentElement = docElement(element);\n const win = wnd(element);\n\n return {\n x: win.pageXOffset || documentElement.scrollLeft || 0,\n y: win.pageYOffset || documentElement.scrollTop || 0\n };\n}\n","import scrollPosition from './scroll-position';\n\nexport default (element) => {\n if (element === (element.ownerDocument || {}).body) {\n return scrollPosition(element);\n }\n\n return {\n x: element.scrollLeft,\n y: element.scrollTop\n };\n};\n","import documentElement from './document';\n\nconst offsetParent = (element) => {\n let offsetParent = element.offsetParent;\n\n while (offsetParent && offsetParent.style.position === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || documentElement(element);\n};\n\nexport default offsetParent;\n","import elementScrollPosition from './element-scroll-position';\nimport parentScrollPosition from './parent-scroll-position';\n\nexport default (offsetParentElement, element) => ( // eslint-disable-line no-arrow-condition\n offsetParentElement ? elementScrollPosition(offsetParentElement) : parentScrollPosition(element)\n);\n","import offsetParent from './offset-parent';\nimport elementScrollPosition from './element-scroll-position';\n\nexport default function parentScrollPosition(element) {\n const parent = offsetParent(element);\n\n return parent ? elementScrollPosition(parent) : { x: 0, y: 0 };\n}\n","import offsetParentScrollPosition from './offset-parent-scroll-position';\nimport offsetParent from './offset-parent';\nimport position from './position';\n\nexport default (element, parent, scale = 1) => {\n const offsetParentElement = parent ? offsetParent(parent) : null;\n const { top, left, height, width } = position(element, offsetParentElement);\n const { x, y } = offsetParentScrollPosition(offsetParentElement, element);\n const ownerDocument = element.ownerDocument;\n const positionScale = offsetParentElement === ownerDocument.body || offsetParentElement === ownerDocument.documentElement ? 1 : scale;\n\n return {\n top: top + y * positionScale,\n left: left + x * positionScale,\n height: height,\n width: width\n };\n};\n","import offsetParent from './offset-parent';\nimport offsetRect from './offset';\nimport wnd from './window';\n\nconst position = (element, parent) => {\n const win = wnd(element);\n const elementStyles = win.getComputedStyle(element);\n const offset = offsetRect(element);\n const parentElement = parent || offsetParent(element);\n\n const ownerDocument = element.ownerDocument;\n const useRelative = parentElement !== ownerDocument.body && parentElement !== ownerDocument.documentElement;\n\n let parentOffset = { top: 0, left: 0 };\n\n if (elementStyles.position !== \"fixed\" && useRelative) {\n const parentStyles = win.getComputedStyle(parentElement);\n\n parentOffset = offsetRect(parentElement);\n parentOffset.top += parseInt(parentStyles.borderTopWidth, 10);\n parentOffset.left += parseInt(parentStyles.borderLeftWidth, 10);\n }\n\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left,\n height: offset.height,\n width: offset.width\n };\n};\n\nexport default position;\n","export default function removeScroll(rect, scroll) {\n return {\n top: rect.top - scroll.y,\n left: rect.left - scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","export default {\n \"fit\": \"fit\",\n \"flip\": \"flip\",\n \"none\": \"none\"\n};\n","import alignPoint from './align-point';\nimport collision from './collision';\n\nconst fit = function(position, size, viewPortSize) {\n let output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n};\n\nconst flip = function({ offset, size, anchorSize, viewPortSize, anchorAlignPoint, elementAlignPoint, margin }) {\n let output = 0;\n\n const isPositionCentered = elementAlignPoint === alignPoint.center || elementAlignPoint === alignPoint.middle;\n const isOriginCentered = anchorAlignPoint === alignPoint.center || anchorAlignPoint === alignPoint.middle;\n const marginToAdd = 2 * margin; //2x to keep margin after flip\n\n if (elementAlignPoint !== anchorAlignPoint && !isPositionCentered && !isOriginCentered) {\n const isBeforeAnchor = anchorAlignPoint === alignPoint.top || anchorAlignPoint === alignPoint.left;\n if (offset < 0 && isBeforeAnchor) {\n output = size + anchorSize + marginToAdd;\n if (offset + output + size > viewPortSize) {\n output = 0; //skip flip\n }\n } else if (offset >= 0 && !isBeforeAnchor) {\n if (offset + size > viewPortSize) {\n output += -(anchorSize + size + marginToAdd);\n }\n\n if (offset + output < 0) {\n output = 0; //skip flip\n }\n }\n }\n\n return output;\n};\n\nconst restrictToView = (options) => {\n const { anchorRect, anchorAlign, elementRect, elementAlign, collisions, viewPort, margin = {} } = options;\n const { top: elementTop, left: elementLeft, height: elementHeight, width: elementWidth } = elementRect;\n const { height: viewPortHeight, width: viewPortWidth } = viewPort;\n const horizontalMargin = margin.horizontal || 0;\n const verticalMargin = margin.vertical || 0;\n\n let left = 0;\n let top = 0;\n\n const isVerticalFit = collisions.vertical === collision.fit;\n const isHorizontalFit = collisions.horizontal === collision.fit;\n const isVerticalFlip = collisions.vertical === collision.flip;\n const isHorizontalFlip = collisions.horizontal === collision.flip;\n\n if (isVerticalFit) {\n top += fit(elementTop, elementHeight, viewPortHeight);\n }\n\n if (isHorizontalFit) {\n left += fit(elementLeft, elementWidth, viewPortWidth);\n }\n\n if (isVerticalFlip) {\n top += flip({\n margin: verticalMargin,\n offset: elementTop,\n size: elementHeight,\n anchorSize: anchorRect.height,\n viewPortSize: viewPortHeight,\n anchorAlignPoint: anchorAlign.vertical,\n elementAlignPoint: elementAlign.vertical\n });\n }\n\n if (isHorizontalFlip) {\n left += flip({\n margin: horizontalMargin,\n offset: elementLeft,\n size: elementWidth,\n anchorSize: anchorRect.width,\n viewPortSize: viewPortWidth,\n anchorAlignPoint: anchorAlign.horizontal,\n elementAlignPoint: elementAlign.horizontal\n });\n }\n\n const flippedVertical = isVerticalFlip && top !== 0;\n const flippedHorizontal = isHorizontalFlip && left !== 0;\n const fittedVertical = isVerticalFit && top !== 0;\n const fittedHorizontal = isHorizontalFit && left !== 0;\n\n return {\n flipped: flippedHorizontal || flippedVertical,\n fitted: fittedVertical || fittedHorizontal,\n flip: {\n horizontal: flippedHorizontal,\n vertical: flippedVertical\n },\n fit: {\n horizontal: fittedHorizontal,\n vertical: fittedVertical\n },\n offset: {\n left: left,\n top: top\n }\n };\n};\n\nexport default restrictToView;\n","export default (element) => {\n const result = [];\n\n let sibling = element.parentNode.firstElementChild;\n\n while (sibling) {\n if (sibling !== element) {\n result.push(sibling);\n }\n\n sibling = sibling.nextElementSibling;\n }\n return result;\n};\n","/* eslint-disable no-loop-func */\n\nimport parents from './parents';\nimport siblings from './siblings';\n\nexport default (anchor, container) => {\n const parentElements = parents(anchor);\n let containerElement = container;\n let siblingElements;\n let result;\n\n while (containerElement) {\n siblingElements = siblings(containerElement);\n\n result = parentElements.reduce(\n (list, p) => list.concat(siblingElements.filter(s => s === p)),\n []\n )[0];\n\n if (result) { break; }\n\n containerElement = containerElement.parentElement;\n }\n\n return result;\n};\n\n","\nconst eitherRect = (rect, offset) => {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n\n return rect;\n};\n\nconst scaleRect = (rect, scale) => {\n if (!rect || scale === 1) {\n return rect;\n }\n\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\nconst removeStackingOffset = (rect, stackingOffset) => {\n if (!stackingOffset) { return rect; }\n\n const result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n\n return result;\n};\n\nfunction memoize(fun) {\n let result;\n let called = false;\n\n return (...args) => {\n if (called) {\n return result;\n }\n\n result = fun(...args);\n called = true;\n return result;\n };\n}\n\nconst hasRelativeStackingContext = memoize((elementSource) => {\n if (!canUseDOM()) { return false; }\n\n // Component need to pass element to make sure document owner is correct.\n // This however might be performance hit if checked for example on each drag event.\n const currentDocument = elementSource ? elementSource.ownerDocument : document;\n\n if (!currentDocument || !currentDocument.body) { return false; }\n\n const top = 10;\n const parent = currentDocument.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
    child
    `;\n\n currentDocument.body.appendChild(parent);\n\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n\n currentDocument.body.removeChild(parent);\n\n return isDifferent;\n});\n\nconst canUseDOM = () => Boolean(\n // from fbjs\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nconst utils = {\n eitherRect,\n scaleRect,\n removeStackingOffset,\n hasRelativeStackingContext,\n canUseDOM\n};\n\nexport default utils;","import utils from \"./utils\";\nimport domUtils from \"./dom-utils\";\n\nconst positionElement = (settings) => {\n const {\n anchor,\n currentLocation,\n element,\n anchorAlign,\n elementAlign,\n collisions,\n margin,\n scale\n } = settings;\n\n const currentScale = scale || 1;\n const elementOffset = domUtils.offsetAtPoint(element, currentLocation);\n const elementRect = utils.scaleRect(elementOffset, currentScale);\n const anchorOffset = utils.scaleRect(domUtils.offset(anchor), currentScale);\n const anchorRect = utils.eitherRect(anchorOffset, currentLocation);\n\n const viewPort = settings.viewPort || domUtils.windowViewPort(element);\n viewPort.width = viewPort.width / currentScale;\n viewPort.height = viewPort.height / currentScale;\n\n const result = domUtils.restrictToView({\n anchorAlign,\n anchorRect,\n collisions,\n elementAlign,\n elementRect,\n margin,\n viewPort\n });\n\n const offset = domUtils.addOffset(currentLocation, result.offset);\n\n return {\n flip: result.flip,\n flipped: result.flipped,\n offset: offset\n };\n};\n\nexport default positionElement;","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

    ' + func(text) + '

    ';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

    fred, barney, & pebbles

    '\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '